RCE(远程代码/命令执行)漏洞
目录
前言
个人观点,若有误请指教
简介
- RCE(Remote Code/Command Execute)为远程代码/命令执行的漏洞
- 漏洞产生的原因:在Web应用中开发者为了灵活性,简洁性等会让应用去调用代码或者系统命令执行函数去处理。同时没有考虑用户是否可以控制这些函数的参数问题(若不能控制这些参数,自然也没有这个漏洞;若能控制这些参数,也可能出现考虑了但没有完全防住或者压根没考虑 😕),以至于这个漏洞的产生。
漏洞挖掘
- 白盒测试,查看命令执行函数是否做过滤。命令执行函数如下:
PHP代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()
PHP系统执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()
注1:若代码执行函数的输入参数被``反引号包含时,则此时相当于系统执行函数,如输入值为echo (反引号)dir(反引号);
注2:由反引号括起来的字符串被当做shell命令执行,其标准输出结果取代整个反引号部分。
注3:反引号不区分操作系统,无论Window还是Linux都有这个现象。
- 黑盒检测
①漏洞扫描工具。
②公开漏洞。
③手工看参数及其功能,根据其特点来判断有没有漏洞。
代码命令执行函数利用
- 这里以最普通的eval函数为例,下面给出php漏洞代码
<?php
$code = $_GET['x'];
echo $code;