默认情况下,web应用部署在默认路径下,如IIS默认在C:\Inetpub下,如果攻击者能够猜测到文件名和存放位置,就可以直接在浏览器的地址栏里输入绝对地址和文件名来访问这些文件。
如何使用这种攻击?
在对目标系统进行了页面映射(可以使用Web crawlers、wget、BlackWindow工具)之后,就可以很容易知道页面命名转换的模式或是一些明显缺少的部分了。
如何实施这种攻击?
对于web服务器上的管理页面,通常采用两种方式进行屏蔽:
1、它们可能是应用的一个子页面,对于这种情况,一般攻击者使用常用的名称去尝试,如admin、control、cp(control panel)。
2、它们可能运行在一个特别的端口上,而不是主web服务器所使用的标准80端口。对于控制页面运行在不同端口的情况,可以使用端口扫描工具,遍历所有的端口,因为端口数(1-65535)是有限的。一般情况下,应用程序使用的端口都大于1024(1024以内的端口一般都是操作系统预留使用)。
如何防范这种攻击?
1、避免攻击者直接访问文件的首要方法是配置web服务器,使其不能提供除应用以外的其他任何文件的访问服务。
例如允许PHP页面请求而拒绝任何其他文件的访问请求,在Apache的配置文件中,可以这样配置:
<FileMatch “!\.(php|php3|php4)$”>
Order allow,deny
Deny from all
</ FileMatch >
这段代码迫使所有的请求都接受应用程序的用户认证。
2、还有一个方法可以阻止攻击者获取管理页面或其他普通用户不能访问的页面部分,就是对这些部分进行密码保护。实现密码保护的方法有很多(基本的、分类的或是基于窗口的认证),每种方法都有自己的弱点,但它们都能提供额外的安全保护。在Apache服务器上,可以再需要保护的目录下创建一个.htaccess文件,内容如下:
AuthName “admin pages”
AuthType Basic
AuthUserFile /path/to/.htpasswd
Require valid-user
然后运行htpasswd程序来创建一个密码文件,并把该文件存储到web服务器能够访问的位置,该位置下一般不要包含其他web文档,因为你总不希望有人把它下载了之后进行离线分析吧。
#htpassws –cm .htpasswd username
当用户想要访问包含这个.htaccess文件的目录获取文件时,浏览器就会弹出一个对话框,提示用户输入用户名和密码,以确认该用户是否能够访问该目录。
也可以将web服务器配置成只对指定的地址提供文件服务,或者使用防火墙来阻止那些来自内部网络之外的端口访问。
【说明】以上来自《web入侵安全与对策》一书学习笔记及摘录整理汇总,特此说明!