简介:

目录遍历(directory traversal):

通过修改URL中的参数导致读取到网站根目录以外的目录里的文件。

漏洞根源:服务器路径权限不严格。

文件包含(File include):

对服务器对输入限制不严格导致include函数包含了不必要的系统文件。有LFI(本地文件包含漏洞),RFI(远程文件包含漏洞)两种。


实际上两者利用方式差不多。(以下认为两种漏洞为同一种)

特征:

可能调用 include 函数的特征信息:

?page=a.php
?home=b.html
?file=***

类似这种包含了另一个页面的语句可能会包含文件包含漏洞。
(RFI 需要 web server 开启 allow_url_include 这一选项。存在于 php.ini 文件中。)

利用:

经典测试方法:

?file=../../../../etc/passwd 

这是通过Linux中的一个特殊目录“..”来进行文件包含。这个目录的意思是上一级目录。

 ?page=/etc/passwd 

这是通过绝对路径来访问。

 ?page=file:///etc/passwd  //这里必须为绝对路径。

这是通过文件系统访问路径。

其他方法

注入点不仅仅在URL中有,还可能在Cookie中存在。

绕过过滤:

一些服务器可能会对用户输入进行过滤。如在不以.php结尾的文件名自动加上.php。这是可以利用一些漏洞来绕过。如:
在PHP5.3之前可以通过在文件名后面加上一个“.”来绕过。

但更多时候是通过编码来绕过。

如通过“%00”来绕过这种限制。PHP在检测到%00后会认为已经输入完了,后面即使有也不读取。

随便写写

所有变量都要查看。漏洞不是只在常规的地方出现,它可能在各种意想不到的地方出现。

include函数存在漏洞,但这个漏洞是因为程序员过滤不严格导致的。(废话)但是做好安全工作的include还是一个很好的东西,可以减少需要的服务器资源等作用。

最后修改:2019 年 07 月 03 日
如果觉得我的文章对你有用,请随意赞赏