从零学网络安全 - REC 漏洞简单案例
一、RCE 简介与危害
1. 什么是 RCE 漏洞
所谓 RCE 漏洞,即 Remote Code/Command Execution,远程代码执行和远程命令执行漏洞。
在很多 Web 应用中,开发人员会使用一些函数,这些函数以一些字符串为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时,就产生了 RCE 漏洞。
2. RCE 漏洞的危害
RCE 漏洞是非常严重的安全漏洞,一旦出现,就意味着攻击者可以获取服务器的命令执行权限,从而对服务器安全造成极大的影响。
下面将通过墨者学院展示两个简单案例。https://www.mozhe.cn/
二、案例一:命令注入执行分析
https://www.mozhe.cn/bug/detail/12
1. 背景介绍
某单位IT运维人员为了方便,在服务器上留了一个页面,用来ping内部服务器连通情况。安全工程师"墨者"在做月度检查时发现了这一文件,检查发现这一文件存在漏洞,要求运维人员立刻下线。
2. 实训目标
- 掌握Linux系统的基本命令
- 了解Linux中管道符的作用
3. 操作
已知信息:IP地址 : 182.44.114.36 端口 : 80 协议 : http http://182.44.114.36:46149 (tcp) -> 80
在火狐渗透版中按 F12,然后访问目标地址,获得头部信息,可知这是 Linux 系统,所以后续可用 Linux 命令。若是 Windows 系统,则用 Windows 命令。

如果在输入框中直接输入 127.0.0.1 | ls,会发现前端做了拦截

所以我们在输入框中输入 127.0.0.1,打开 Burp 代理进行拦截,点击 Ping 按钮后,在 BP 中进入重复模块

在第十三行中,我们修改一下,使用管道符,如图

点击发送,可以得到代码,在搜索栏里输入 key,可以发现这个文件,key_25637236778484.php

再次修改第十三行,使用 cat 重定向来显示 key_25637236778484.php 的内容,即 cat<key_25637236778484.php

点击发送,可以发现目标 key

三、案例二:PHP 代码分析溯源
https://www.mozhe.cn/bug/detail/13
1. 背景介绍
小明收到一个网址,打开后是一串加密的代码。小明需要你们的帮助,感受到时代在召唤了吗?
2. 实训目标
- 了解命令执行的基础知识
- 学习php代码的相关知识
- 了解加密解密的相关知识
3. 操作
已知信息:IP地址 : 182.44.114.36 端口 : 80 协议 : http http://182.44.114.36:46158 (tcp) -> 80
访问靶场,显示

复制代码,在本地新建一个 test.php 并粘贴代码。稍微修改下,把 eval 改成 print,并且括号里加双引号

启动 phpstudy,本地访问 http://127.0.0.1/test.php

REQUEST 类似于一个 GET/POST 请求,而``这对反引号中的内容会被 PHP 当作代码来执行,和单引号区别如下
如果是单引号,<?php echo 'ipconfig';?>,则会直接打印

如果是反引号,<?php echo `ipconfig`;?>,则会被当代码执行,显示

所以前面的变量 a 可以组装命令来执行,得到关键信息,http://182.44.114.36:46158/f.php?a=ls

再次组装、访问,http://182.44.114.36:46158/f.php?a=cat<key_343106225.php
右键网页,显示源代码,可以得到最终 key
