RCE漏洞
远程命令执行英文名称:RCE (remotecode execution) ,简称RCE漏洞,是指用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。 RCE漏洞分为代码执行和命令执行
代码执行
就是使用各种语言执行一些代码中的特定指令(这里以php为例)
PHP中的eval()函数把字符串按照 PHP 代码来代码执行。
例如
<?php
phpinfo();
?>
当我们在代码中执行这个代码的时候就可以执行phpinfo();的效果
我们使用eval()函数
<?
eval("phpinfo()");
?>
我们可以发现命令执行错误
但是如果我们加上一个;可以看见页面执行成功
<?php
eval("phpinfo();");
?>
这可以很好的说明,eval()函数将其中的内容当做了php语句进行执行,因为加上;是一个完整的正确的可执行php语句,但是没有分号的话就是一个错误的语句eval()函数无法正确解析
命令执行
执行的是系统命令(Linux的bash交互页面,windows的cmd命令行)
因为我环境搭建的是windows系统于是我们执行windows系统的命令就可以回显结果,这个就是系统命令执行
不过使用eval()函数也可以实现命令执行,就是在eval()里面执行system函数
我们可以看见系统命令进行了执行
eval()函数里面绕过不加"" 那么直接调用相关的命令函数也可以正常执行,但是当命令中出现空格会产生错误,为此,我们还是使用引号加分号的形式把语句当做代码去执行
漏洞发现
代码审计,查寻相关函数并寻找功能点,在这个功能点的地方可能存在着一些安全的过滤语法,为此我们需要在功能点处进行代码调试构造出可执行代码构造语句
还有一种情况就是利用已知漏洞,利用工具进行命令执行
写在最后
如有错误,请及时指出,感谢