Pikachu靶场之RCE
一、概述
RCE的英文全称:remote command/code execute,分为远程命令执行ping和远程代码执行eval
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
出现漏洞原因:没有在输入口做输入处理
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或代码。
具体后端代码如下:
1 | $result.=shell_exec('ping'.$ip); |
二、拓展知识
ping
基本概念:ping是一个基本且重要的TCP/IP网络工具,也是检测网络故障的基本工具
主要作用:
- 通常用于检测网络的连通情况和测试网络速度
- 根据域名得到相应主机的IP地址
- 根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量
简单用法:
在命令提示符下输入:
ping 对方IP地址
其他用法:
命令执行漏洞常用的命令
Windows
1 | dir ----查看文件目录 |
Linux
1 | cat /etc/passwd ----查看passwd文件 |
命令执行漏洞使用的特殊字符
Windows
符号 | 描述 | 示例 |
---|---|---|
| | 直接执行后面的语句 | ping 127.0.0.1 |
|| | 前面出错执行后面的,前面为假 | ping 2 |
& | 前面的语句为假则执行后面的 ,前面可真可假 | ping 127.0.0.1&whoami |
&& | 前面的语句为假则直接出错,后面的也不执行,前面只能为真 | ping 127.0.0.1&&whoami |
Linux
符号 | 描述 | 示例 |
---|---|---|
; | 前面的执行完执行后面的 | ping 127.0.0.1;whoami |
| | 管道符,显示后面的执行结果 | ping 127.0.0.1|whoami |
|| | 当前面的执行出错时执行后面的 | ping 1||whoami |
& | 前面的语句为假则执行后面的,前面可真可假 | ping 127.0.0.1&whoami |
&& | 前面的语句为假则直接出错,后面的也不执行,前面只能为真 | ping 127.0.0.1&&whoami |
三、实战
进入pikachu靶场:
exec”ping”
先查看后端源代码:
远程命令执行ping和远程代码执行eval的源代码都对输入没有做特殊的处理,说明可能存在RCE漏洞
先ping一下本机:
再输入:
我们查看后端源代码:
1 | if(stristr(php_uname('s'), 'windows')){ |
发现源码只是做简单的拼接,并没有做严格的漏洞处理。
exec”eval”
随便输入字符:
输入phpinfo();
查看后端源代码:
1 | if(isset($_POST['submit']) && $_POST['txt'] != null){ |
可以看到不存在任何校验,直接将输入内容放进eval里。
。。。。。。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 linlimei!