一、Web服务器配置缺陷
1. 默认密码
2. 默认内容
(1)调试与测试功能,如phpinfo.php
(2)样本功能,如Jetty 7.0.0中的Dump Servlet和Apache tomcat中的Sessions Example脚本
(3)禁止公众访问,但无意中允许了公众访问的强大功能,如war文件、JMX(JBOSS的控制台)、Oracle的PL/SQL网关等
(4)包含有用的信息的Web服务器手册
3. 目录列表
4. WebDAV方法
指用于Web分布式创作与版本控制的HTTP方法集合。WebDAV添加了大量的操纵服务器文件的方法(PUT/DELETE/COPY/MOVE/SEARCH/PROFIND-获取与指定资源有关的信息,如作者、大小与内容类型),可使用DAVtest工具进行测试。
渗透测试步骤:
(1)使用OPTIONS查看支持的方法,不同目录中激活的方法可能各不相同
(2)有时被告知有效的方法不一定能用,但是没有列出 的方法可能能用,应手动测试每一个方法
(3)如果发现一些WebDAV方法被激活,应使用激活WebDAV的客户端进行深入调查。
a. 尝试使用PUT上传一个文本文件
b. 如果上传成功,上传一个后门脚本
c. 如果扩展名被阻,尝试以.txt扩展名上传,然后通过MOVE方法重命名
d. 如果以上方法无效,尝试上传一个JAR文件,或一个浏览器会将其内容显示为HTML的文件
e. 使用davtest.pl之类的工具遍历所有目录
5. Web服务器做为代理服务器
技巧一:让代理服务器发送一个包含目标完整URL的HTTP请求,包括主机名和端口号
技巧二:使用CONNECT方法指定到目标主机和端口号
a. 使用GET与CONNECT请求,尝试用Web服务器作为代理服务器,连接因特网上的其他服务器,并获取其中的内容
b. 尝试使用以上两种技巧连接主机基础架构中不同的IP与端口
c. 尝试使用以上两种技巧,在请求中指定127.0.0.1为目标主机,连接常用端口号
6. 虚拟主机配置缺陷
容易导致安全配置 仅适用 于一台虚拟主机,而忽略默认主机。
a. 使用以下方式向根目录 提交GET请求:
正确的HOST消息头;随意HOST消息 头;HOST消息 头中的服务器IP地址;无HOST消息头
b. 对比响应,如果观察到不同的行为,使用生成不同结果的HOST消息头重复应用程序解析过程,一定要使用-vhost选项进行一次Nikto扫描。
7.保障Web服务器配置的安全
(1)修改所有默认认证信息,删除不必要的帐户
(2)在Web根目录的相关路径上应用ACL,或设置防火墙
(3)删除默认内容与功能
(4)如果需要保留默认功能,应对其进行强化,禁用不必要的选项与行为
(5)在一个控制整个服务器的配置中禁用目录列表,还可以确保每个目录包含服务器默认提供的index.html文件
(6)除GET/POST外,禁用其他方法
(7)确保没有把Web服务器做为代理服务器,如需要,则对其进行强化配置
(8)如果支持虚拟主机,则确保在默认主机上实施了所有安全强化措施,所有虚拟主机均应用了安全措施
二、易受攻击的服务器软件
1. 应用程序框架缺陷
.NET的 PKCS#5加密填充攻击(padding oracle)
2. 内存管理漏洞
(1)Apache mod_isapi悬挂指针
2010年的漏洞,在遇到错误时,系统将强制从内存中卸载mod_isapi,不过,对应的函数指针仍保留在内存中,并且可以在引用相应的ISAPI函数时被调用,从而访问内存的任意部分。
漏洞详情: www.senseofsecurity.com.au/advisories/SOS-10-002
(2)Microsoft IIS ISAPI扩展
2001年,Internet Printing Protocol和Index Server扩展存在缓冲区溢出漏洞,使攻击者能够在Local System权限下执行任意代码,完全控制计算机,并以此为基础传播Nimda 与Code Red蠕虫
IPP服务中也发现了这个漏洞,但是windows 2003和2008的大多数IIS版本默认禁用扩展不会立即受到攻击
(3)Apache 分块编码溢出
整数符号错误导致的缓冲区整数溢出,见www.securityfocus.com/bid/5033/discuss
mod_proxy在处理HTTP响应中的分块编码时存在整数溢出 ,见www.securityfocus.com/bid/37966
(4)WebDAV溢出
IIS,www.microsoft.com/technet/security/bulletin/MS03-007.mspx
Apache的mod_dav存在缓冲区溢出,http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-1452.
OPTIONS请求中的超长路径 会导致JAVA SYSTEM WEB SERVER出现溢出,见
www.exploit-db.com/exploits/14287/.
3. 编码 与规范化漏洞
(1) Apple iDisk Server 路径遍历
Apple iDisk Server是一项流行的云同步存储服务
通过使用Unicode字符从公共文件夹遍历访问私有文件:
http://idisk.mac.com/Jeremy.richards-Public/%2E%2E%2FPRIVATE.txt?disposition=download+8300
还可以首先提出WebDAV PROFIND请求来列出iDisk的内容
POST /Jeremy.richards-Public/<strong>%2E%2E%2F/<strong>?webdav-method=PROPFIND
(2)Ruby WEBrick Web 服务器
http://[server]:[port]/..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/boot.ini
参考:www.securityfocus.com/bid/28123
(3)Java Web服务器遍历
源于JVM并不解码UTF-8这一事实,使用UTF-8编码的../序列可以检索任意内容:
http://www.target.com/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
参考: http://tomcat.apache.org/security-6.html
(4)Allaire JRun目录列表漏洞
https://wahh-app.com/dir/%3f.jsp
参考:www.securityfocus.com/bid/3592
Jetty中也有一个类似的,目录名以问号结尾时会出现遍历漏洞,参考:https://www.kb.cert.org/vuls/id/402580
(5)IIS Unicode遍历漏洞
https://wahh-app.com/scripts/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af../winnt/system32/cmd.exe?/c+dir+c:\
https://wahh-app.com/scripts/..%255c..%255c..%255c..%255c..%255c..%255cwinnt/system32/cmd.exe?/c+dir+c:\
参考: www.microsoft.com/technet/security/bulletin/MS00-078.mspx www.microsoft.com/technet/security/bulletin/MS01-026.mspx
GET /prote%c0%afcted/protected.zip HTTP/1.1
Translate: f
Connection: close
Host: wahh-app.net
Translate: f用于确保该请求会由WebDAV扩展处理
以下WebDAV请求可实施相同的攻击:
PROPFIND /protec%c0%afted/ HTTP/1.1
Host: wahh-app.net
User-Agent: neo/0.12.2
Connection: TE
TE: trailers
Depth: 1
Content-Length: 288
Content-Type: application/xml
<?xml version=”1.0” encoding=”utf-8”?>
<propfind xmlns=”DAV:”><prop>
<getcontentlength xmlns=”DAV:”/>
<getlastmodified xmlns=”DAV:”/>
<executable xmlns=”http://apache.org/dav/props/”/>
<resourcetype xmlns=”DAV:”/>
<checked-in xmlns=”DAV:”/>
<checked-out xmlns=”DAV:”/>
</prop></propfind>
参考:www.securityfocus.com/bid/34993/
(6)避开Oracle PL/SQL排除列表
ORACLE创建了Exclusion List以阻止攻击者访问以某些表达式(如OWA与SYS)开头的包
绕过:
https://wahh-app.com/pls/dad/%0ASYS.package.procedure
https://wahh-app.com/pls/dad/S%FFS.package.procedure (用ÿ代表Y)
https://wahh-app.com/pls/dad/”SYS”.package.procedure (增加双引号)
https://wahh-app.com/pls/dad/<<FOO>>SYS.package.procedure (尖括号增加GOTO标签,这里FOO不知道是不是写错了,应该是GOTO)
Portal Server(Oracle Application Server的一部分)中有一个漏洞:如果攻击者具有以%0A结尾的会话ID cookie值,就可以避开“基本验证”检查
4. 查找Web服务器漏洞
自动 化扫描工具
网站:
www.exploit-db.com
www.metasploit.com/
www.grok.org.uk/full-disclosure/
http://osvdb.org/search/advsearch
5. 保障Web服务器软件安全
(1)选择记录良好的软件
(2)应用供应商发布的补丁
(3)实施安全强化
(4)监控新的漏洞
(5)使用深层防御
三、应用 WAF
推断是否有WAF:
a. 使用明确的攻击有效载荷,如果阻止,可能有WAF
b. 如果可以提交在服务器响应中返回的变量,则提供一系列模糊测试字符主这些字符串的编码形式可以确定防御行为
尝试绕过WAF:
a. 对于所有模糊测试字符串和请求,使用良性字符串作为payload,如应避免使用/etc/passwd和windows/system32/config/sam、<script>、alert()或xss作为payload
b. 如果特定请求被阻止,可以在其他位置或上下文中提交相同的参数
c. 应尝试在ASP.NET上将参数作为cookie提交,如果在查询字符串或消息主体中找不到参数foo,API Request.Params["foo"]会检索名为foo的cookie的值
d. 选择任何不受保护的方法
e. 以非标准格式提交用户输入,如串联字符串或分割字符串到多个参数中