远程代码执行漏洞
一、基础知识
命令执行漏洞就是服务器端没有对客户端用户输入的命令进行过滤,导致用户可以通过任意拼接系统命令,使服务器端成功执行任意系统命令
因为在服务器安装的web程序,web框架和web组件等外部程序有时候去需要调用执行命令的函数,所以如果没有对客户端用户输入的命令进行过滤,就会使得用户通过外部程序直接编写和执行系统的命令函数
该漏洞对攻击方有利,可在对方服务器执行任意命令,属于高危漏洞,在HW中,命令执行漏洞分数最高,相当于上万用户信息泄露。命令执行漏洞分为两个层面,一个是代码审计,一个是ping命令,该漏洞既存在于B/S(浏览器/服务端,如网页版淘宝)架构中,也存在于C/S(服务器/客户机,如淘宝APP)架构中
CTF-PTE中的命令执行漏洞涉及两种
- 代码审计方面的命令执行
- 执行命令层面,需要绕过执行需要的命令
给代码去分析代码执行的逻辑,它本身会有一个后门,一个命令执行的地方,需要用户绕过执行;一个提供ping功能的页面接口,需要bypass的命令进行执行。ping命令用于ping一个主机是否存活——给该机发包,看是否会有响应
二、ping命令
ping接口的应用场景:首先打开Pikachu,RCE,ping本机,最好不要ping公网(因为存在攻击行为),ping完会有四个包,没有丢包——如果在Pikachu上出现了乱码,可以在PS或者找到文件夹,去掉rec_ping.php里面的下列语句的注释即可
header("Content-type:text/html; charset=gbk");
运维人员配置一个网络,为了方便运维人员判断网段有没有通,有没有配好,可以ping一下网关,如果能ping通,就说明网络配置正常
命令执行和代码执行不同——文件上传的代码执行是eval,命令执行是system,两者是有本质区别的,命令执行是操作系统层面的,代码执行是执行代码层面的命令
<?php
eval("echo '666';"); //网页打印666
system( command "ls"); //mac用,Unix系统
system( command "whoami"); //windows用
?>
查看ping代码:点开PS,选择phpstudy_pro,WWW,Pikachu,vul,rce,rce_ping.php,然后分析代码:
应用场景常见于——运维和网关系统,会存在一个ping接口方便运维人员判断网络是否接通
三、攻击场景
终端可以同时执行两条命令,一般用分号分割——称为管道符,在Linux用于间隔两个命令,执行顺序有先后,但互不关心执行结果:127.0.0.1;ls用于Linux系统,Windows会显示找不到主机
本次习题——BUUCTF网,搜索exec显示出的ACTF2020新生赛,Flag在操作系统根目录:linux根目录为cd,Windows下的操作系统根目录为C、D、E盘下面
打开题目,ping一下127.0.0.1,然后点开Hackerbar,选择POST Data,直接在输入框里面输入比较方便——大多数的服务器都是linux的,因为linux本身就有天然的优势,是给IT工程师使用的。然后ping一下127.0.0.1;ls,列出目录内容,然后127.0.0.1;cat/flag,查看文件文本内容
四、管道符
由于管道符很有用,所以会在考试或者实际场景中会做一系列的限制和过滤——所以绕过限制很重要
命令操作漏洞绕过pdf:https://blog.csdn.net/weixin_72324806/article/details/131911258
五、练习
BUUCTF2019PingPingPing,首先是/?ip=,load下来,参数设置为/?ip=127.0.0.1;ls,然后cat flag.php,会发现过滤了空格,然后绕空格$IFS$9;然后会发现过滤了一个符号,换问号,换星号,如果都过滤了,可以通过/?ip=127.0.0.1;cat$IFS$9index.php读取index.php的源码,进行代码审计——此题有三种做法,具体做法在上述pdf里面