简介:
目录遍历(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还是一个很好的东西,可以减少需要的服务器资源等作用。