RCE漏洞
目录
RCE漏洞
一、RCE漏洞简介与危害
1. 定义
- 远程代码执行(RCE)
:用户输入的字符串被当作代码执行(如PHP的
eval()
)。 - 远程命令执行
:用户输入的字符串被当作系统命令执行(如
system()
)。 - 关键函数
:
eval()
,system()
,exec()
,shell_exec()
,passthru()
。
2. 危害
- 完全控制服务器 :执行任意代码、窃取数据、植入后门。
- 案例演示 :
http
http://localhost/1.php?x=phpinfo() #代码执行
http://localhost/2.php?x=ipconfig #命令执行
二、RCE漏洞类型
1. 远程代码执行
- 原理 :用户输入未经过滤,直接传入代码执行函数。
- 案例 :
php
// vulnerable.php
echo $_REQUEST['a']; #直接输出用户输入
- 访问 :
2. 远程命令执行
- 原理
:通过
system()
等函数执行系统命令。 - 案例 :
http
http://example.com/cmd.php?cmd=whoami 返回当前用户
三、公开漏洞利用案例
案例1:Webmin密码重置漏洞(CVE-2019-15107)
影响版本:Webmin <= 1.920
漏洞点:password_change.cgi
未过滤用户输入,导致代码执行。
利用步骤:
- 登录Webmin并拦截请求。
- 构造恶意参数触发漏洞。
- 获取服务器权限。
案例2:PbootCMS评论注入
漏洞点:评论功能未过滤eval()
参数。
利用步骤:
- 在留言内容中注入PHP代码:
{pboot:if(eval($_POST1))}III{/pboot:if}
- 通过POST请求触发代码执行。
四、CMS漏洞复现(实战案例)
案例1:SeaCMS IP设置漏洞
漏洞点:后台IP白名单配置未过滤特殊字符。
利用步骤:
- 登录后台,构造恶意IP:
127.0.0.1";phpinfo();//
- 登录后台,构造恶意IP:
- 保存配置,触发代码执行。
案例2:SeaCMS公众号设置漏洞
漏洞点:链接字段未过滤HTML标签。
利用步骤:
- 插入恶意代码:
<a href='https://www.seacms.net'>链接</a>";phpinfo();//
- 保存后直接执行PHP代码。
五、防御策略
1. 输入过滤
- 对用户输入进行严格校验(如白名单、正则匹配)。
- 禁止危险字符(如
;
,|
,&
)。
2. 禁用危险函数
- 修改
php.ini
,禁用eval()
,system()
等函数:
ini
disable_functions = eval,system,exec,passthru,shell_exec
3. 使用安全函数
- 替代
system()
:使用escapeshellcmd()
过滤命令参数。 - 替代
eval()
:避免使用,改用其他逻辑实现功能。
4. 沙箱隔离
- 对高风险功能(如代码编辑器)进行沙箱隔离,限制文件操作权限。
六、总结
RCE漏洞的核心在于用户输入可控且未过滤。防御需结合输入验证、函数管控及环境加固。实战中需关注框架/CMS的已知漏洞(如Webmin CVE-2019-15107),并及时更新补丁。
注:实验环境搭建推荐使用Vulhub或本地靶场(如DVWA),所有操作应在授权范围内进行。