RCE漏洞概述
远程命令执行/代码注入漏洞,英文全称为Reote Code/CommandExecute,简称RCE漏洞。PHPJava等Web开发语言包含命令执行和代码执行函数,攻击者可以直接向后台服务器远程执行操作系统命今或者运行注入代码,进而获取系统信息、控制后台系统或写入恶意文件Webshell,从而达到攻击网络的目的。
RCE 漏洞产生条件主要包含以下三个方面:
(1)用户可以控制前端传给后端的参数,
(2)传入的参数被漏洞函数执行。
(3)用户输入参数未被验证或有效过滤。
漏洞分类
RCE漏洞分为命令执行漏洞和代码注入漏洞,在利用RCE漏洞的时候经常使用到操作系统的管道符。
命令执行漏洞
在PHP开发语言中,包含命令执行函数:eval、assert、preg_replace、create_function、array_mapcall user fimc、call user func array、anray filter、uasort 等,这类函数可以执行系统命令,使用不当会造成命令执行漏洞。
下面我们基于pikachu平台,演示一个完整的命令执行漏洞测试过程
1.进去到pikachu训练平台打开RCEping
2.查看源码
后端对接收到的参数未做任何过滤和处理,并使用shellexec函数执行命令,从而造成远程命令执行漏洞。
if(isset($_POST['submit']) && $_POST['ipaddress']!=null){
$ip=$_POST['ipaddress'];
// $check=explode('.', $ip);可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255
if(stristr(php_uname('s'), 'windows')){
// var_dump(php_uname('s'));
$result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理
}else {
$result.=shell_exec('ping -c 4 '.$ip);
3.在编辑框输入127.0.0.1点击ping查看
4.漏洞利用
输入 ping & ipconfig
代码注入漏洞
在PHP开发语言中,包含代码执行函数:system、exec、shell exee、pentl exec、popen、proc_popenpasthmn等,这类函数可以执行PHP代码,使用不当会造成代码注入漏洞上下面基于pikachu平台,演示一个完整的代码注入漏洞测试过程
1.源码分析
使用eval函数执行命令,对后端的参数未进行过滤。
$html='';
if(isset($_POST['submit']) && $_POST['txt'] != null){
if(@!eval($_POST['txt'])){
$html.="<p>你喜欢的字符还挺奇怪的!</p>";
}