1. 起由:
以前没有接触过安全测试相关的内容,前几天一个朋友问到Web 目录安全测试相关的问题,就做了一些了解,尽管不深入,但是感觉自己收获还是挺大的。
2. 原因分析:
在apache 接收到一条映射到目录的请求,检查对应的作用域下DirectoryIndex 指令是否设置当收到一个请求目录的索引时,服务器需要寻找的资源列表,如果有进行设置,那么按照设置的顺序优先返回前面的资源;如果没有设置,那么会继续看对应的作用域下,Options 指令是否设置了Indexes ,如果设置了,那么会提示禁止访问,如果没有设置那么会返回当前目录的目录结构。
设置Options 指令中有Indexes 访问http://127.0.0.1/excel/ 情况:
设置Options 指令中没有Indexes 访问http://127.0.0.1/excel/ 情况:
3. 解决方法:
该问题可以从两个方面进行解决:
针对每个Directory 域都使用Allow 、Deny 等指令设置,如:
删除Options 指令下的Indexes 设置项,例如:
注意:如果开启的话,就是“ Options Indexes MultiViews ExecCGI ”
4. 测试如何开展:
其实对于任何已经发布的web 应用,都应该进行web 目录安全的测试,因为都有可能存在该问题。
我认为该问题的验证还是比较简单的:通过浏览器访问web 服务器上的所有目录,检查是否返回目录结构,如果显示的是目录结构,那么就有可能有安全问题了;请求服务器上的所有资源文件,检查是否存在为提供访问入口的资源能被用户访问到,如果可以,那么可能存在安全问题。
5. 参考资料:
http://express.ruanko.com/ruanko-express_7/webpage/tech-overnight_1.html
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html#options
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_cgi.html
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_dir.html#directoryindex
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_authz_host.html#allow