

XXX公司
二О一七年七月
文档控制
| 文档基本信息 | ||||||
|---|---|---|---|---|---|---|
| 项目名称 | ||||||
| 文档名称 | ||||||
| 创建者 | 审核 | |||||
| 创建时间 | 2017年X月XX日 | 审核时间 | 2017年X月XX日 | |||
| 文档修订信息 | ||||||
| 版本 | 修正章节 | 日期 | 作者 | 变更记录 | ||
| 1.0 | 全部 | 创建 | ||||
| 1.1 | 部分 | 增加 | ||||
目 录
目 录 3
一. 概述 5
1.1 背景 5
1.2 范围 5
1.3 原则 5
1.4 目的 5
1.5 所用工具 6
二. 测试概述 8
三. 渗透测试结果 9
3.1 HTTP慢速拒绝服务攻击 9
1) 漏洞简介 9
2) URL/IP 9
3) 漏洞验证 9
4) 风险分析 10
5) 风险等级 10
6) 安全建议 10
3.2 XSS 13
1) 漏洞简介 13
2) URL/IP 14
3) 漏洞验证 14
4) 风险分析 14
5) 风险等级 14
6) 安全建议 15
3.3 受诫礼(BAR-MITZVAH)攻击 16
1) 漏洞简介 16
2) URL/IP 16
3) 漏洞验证 16
4) 风险分析 17
5) 风险等级 17
6) 安全建议 17
3.4 目录便利 17
1) 漏洞简介 17
2) URL/IP 18
3) 漏洞验证 18
4) 风险分析 18
5) 风险等级 18
6) 安全建议 18
3.5 内网IP地址泄露 19
1) 漏洞简介 19
2) URL/IP 19
3) 漏洞验证 19
4) 风险分析 20
5) 风险等级 20
6) 安全建议 20
四. 整体风险评价 20
| 对象名称 | 域名或IP |
|---|---|
| XXX | http://1 http://2 http://3 |
0.3 原则3
渗透测试具有一定的风险,为把风险降至最低,需遵守一定原则,这也是本次测试中测试组所遵守的最高准则,一切测试行为都是在不违背此原则的情况下进行的。该原则具体如下:
保证测试操作在不影响目标业务正常运营的情况下进行,对目标(包括目标配置信息、数据库信息、文件信息等)只进行读取操作,禁止进行写入操作,或者只在负责人允许的范围内进行写入操作。
但由于本次测试是在黑盒模式下进行,程序逻辑对于测试人员不透明,因此,测试人员只在已知的逻辑范围内遵守以上原则,同时也承认风险的存在。
0.4 目的
通过模拟黑客的渗透测试,评估目标系统是否存在可以被攻击者真实利用的漏洞以及由此引起的风险大小,为制定相应的安全措施与解决方案提供实际的依据。
本次渗透测试验证目标系统抵御非法入侵和攻击行为的能力,并非完整的安全测试或漏洞审计。因此,本次测试所涉及的漏洞是网站所有漏洞的子集,而非全部。
0.5 所用工具
| 工具名称 | 工具简介 |
|---|---|
| IBM AppScan | 是一个面向 Web 应用安全检测的自动化工具,使用它可以自动化检测 Web 应用的安全漏洞,比如跨站点脚本攻击(Cross Site Scripting Flaws)、注入式攻击(Injection Flaws)、失效的访问控制(Broken Access Control)、缓存溢出问题(Buffer Overflows)等等。这些安全漏洞大多包括在 OWASP(Open Web Application Security Project,开放式 Web 应用程序安全项目)所公布的 Web 应用安全漏洞中。 |
| WWWSCAN | 一款优秀的网站目录扫描工具。虽然扫描速度并不快,但是运行相当稳定。配合渗透测试团队多年积累的数据字典,挖掘隐藏目录的能力非常强大。 |
| Nosec Pangolin | 诺赛科技出品的一款强大的SQL注入工具,支持多种网站环境。另外附带了MD5破解,网站后台扫描功能。 |
| Nessus | 一款B/S构架的系统漏洞扫描工具,它的运行依赖于插件,扫描速度快,更新及时。 |
| NSFOCUS RSAS | 绿盟远程安全评估系统(简称:NSFOCUS RSAS)是绿盟科技开发的漏洞管理产品,通过该产品能够发现信息系统存在的安全漏洞、安全配置问题、应用系统安全漏洞,检查系统存在的弱口令,收集系统不必要开放的账号、服务、端口,并形成整体安全风险报告。 |
| AWVS | Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。 |
| Jsky | 提供网站漏洞扫描服务,能够有效的查找出网站中的漏洞;并提供网站漏洞检测服务。 |
| Sqlmap | 一款高级渗透测试用的自动化SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入漏洞。 |
| Burpsuite | 是用于攻击WEB应用程序的继承平台,它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。 |
| Metasploit | Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现 |
- 测试概述
本次针对XXX进行的渗透测试工作共发现存在安全漏洞6个,其中高风险漏洞3个,中风险漏洞1个,低风险漏洞2个。建议根据本次测试结果中的安全建议进行整改加固,以提高网络的整体安全性。
| 序号 | 应用 | 漏洞名称 | 风险分析 | 数量 | 级别 |
|---|---|---|---|---|---|
| 1 | XXX | HTTP慢速拒绝服务攻击 | 堵塞web服务,让所有浏览该网站的人无法正常访问该网站,影响请求当前应用服务的所有用户已经当前应用服务本身。 | 1 | 高 |
| 2 | XSS | 影响目标网站用户,易造成账户失窃;数据信息被读取、篡改、添加或者删除;非法转账;强制发送电子邮件;受控向其他网站发起攻击等。 | 1 | 高 | |
| 3 | 受诫礼(BAR-MITZVAH)攻击 | 明文窃取通过SSL和TLS协议传输的机密数据,诸如银行卡号码,密码和其他敏感信息。 | 1 | 高 | |
| 4 | 目录便利 | 攻击者可以直接访问网站的目录,从而可以了解网站整体框架,降低攻击成本。 | 1 | 中 | |
| 5 | 内网IP地址泄露 | 使得攻击者能够进一步的内网业务及应用,从而降低攻击成本。 | 2 | 低 |
- 渗透测试结果
3.1 HTTP慢速拒绝服务攻击
1 漏洞简介
拒绝服务攻击即攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。2 URL/IP
- http://
3 漏洞验证

图1 漏洞证明截图
图2 漏洞证明截图4 风险分析
堵塞web服务,让所有浏览该网站的人无法正常访问该网站,影响请求当前应用服务的所有用户已经当前应用服务本身。严重情况可导致服务器宕机。5 风险等级
高6 安全建议
购买必要的防ddos攻击硬件设备
针对不同的Server其对慢速http拒绝服务攻击防范方法也不同,建议使用以下措施防范慢速http拒绝服务攻击:
WebSphere
========
1、限制 HTTP 数据的大小
在WebSphere Application Server 中进行如下设置:
任何单个 HTTP 头的默认最大大小为 32768 字节。可以将它设置为不同的值。
HTTP 头的默认最大数量为 50。可以将它设置为不同的限制值。
另一种常见的 DOS 攻击是发送一个请求,这个请求会导致一个长期运行的 GET 请求。WebSphere Application Server Plug-in 中的 ServerIOTimeoutRetry 属性可限制任何请求的重试数量。这可以降低这种长期运行的请求的影响。
设置限制任何请求正文的最大大小。详见参考链接。
2、设置keepalive参数
打开ibm http server安装目录,打开文件夹conf,打开文件httpd.conf,查找KeepAlive值,改ON为OFF,其默认为ON。
这个值说明是否保持客户与HTTP SERVER的连接,如果设置为ON,则请求数到达MaxKeepAliveRequests设定值时请求将排队,导致响应变慢。
Weblogic
============
1、在配置管理界面中的协议->一般信息下设置 完成消息超时时间小于400
2、在配置管理界面中的协议->HTTP下设置 POST 超时、持续时间、最大 POST 大小为安全值范围。
Nginx
============
1、通过调整$request_method,配置服务器接受http包的操作限制;
2、在保证业务不受影响的前提下,调整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要时可以适当的增加;
3、对于会话或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule参数去限制请求量或者并发连接数;
4、根据CPU和负载的大小,来配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。
Apache
============
建议使用mod_reqtimeout和mod_qos两个模块相互配合来防护。
1、mod_reqtimeout用于控制每个连接上请求发送的速率。配置例如:
#请求头部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slowloris型的慢速攻击。
RequestReadTimeout header=10-40,minrate=500
#请求正文部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slow message body型的慢速攻击。
RequestReadTimeout body=10-40,minrate=500
需注意,对于HTTPS站点,需要把初始超时时间上调,比如调整到20秒。
2、mod_qos用于控制并发连接数。配置例如:
# 当服务器并发连接数超过600时,关闭keepalive
QS_SrvMaxConnClose 600
# 限制每个源IP最大并发连接数为50
QS_SrvMaxConnPerIP 50
这两个数值可以根据服务器的性能调整。
IHS服务器
============
请您先安装最新补丁包,然后启用mod_reqtimeout模块,在配置文件中加入:
LoadModule reqtimeout_module modules/mod_reqtimeout.so
为mod_reqtimeout模块添加配置:
RequestReadTimeout header=10-40,MinRate=500 body=10-40,MinRate=500
对于HTTPS站点,建议header=20-40,MinRate=500。
参见:http://www-01.ibm.com/support/docview.wss?uid=swg21652165
F5负载均衡修复建议
============
F5负载均衡设备有相应的防护模块,如无购买可参考附件中的详细配置过程。
关于F5的慢速攻击防护配置,请参考以下链接:
https://support.f5.com/kb/en-us/solutions/public/10000/200/sol10260.html
https://devcentral.f5.com/articles/mitigating-slow-http-post-ddos-attacks-with-irules-ndash-follow-up
3.2 XSS
7 漏洞简介
跨站脚本(cross-site scripting,XSS)是一种安全攻击,其中,攻击者在看上去来源可靠的链接中恶意嵌入译码。当有人点击链接,嵌入程序作为客户网络要求的一部分提交并且会在用户电脑上执行,一般来说会被攻击者盗取信息。
动态回复包括用户输入数据在内的错误信息这种网络形式使得攻击者可能改变控制结构和/或页面的行为。攻击者用多种方式进行攻击,如通过在论坛信息或垃圾邮件信息链接中嵌入密码。攻击者可能用电邮诈骗假装可信来源。
8 URL/IP
-
9 漏洞验证
10 风险分析
为了搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。每天都有大量的XSS攻击的恶意代码出现。
三部曲
1.HTML注入。所有HTML注入范例只是注入一个JavaScript弹出式的警告框:alert(1)。
2.做坏事。如果您觉得警告框还不够刺激,当受害者点击了一个被注入了HTML代码的页面链接时攻击者能作的各种的恶意事情。
3.诱捕受害者。11 风险等级
12 安全建议
来自应用安全国际组织OWASP的建议,对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。具体如下:
输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。
输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。
明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。
注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如”<” “>”或类似”script”的关键字),很容易被XSS变种攻击绕过验证机制。
警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。
建议过滤出所有以下字符:
[1] |(竖线符号)
[2] & (& 符号)
[3];(分号)
[4] $(美元符号)
[5] %(百分比符号)
[6] @(at 符号)
[7] ‘(单引号)
[8] “(引号)
[9] \’(反斜杠转义单引号)
[10] \”(反斜杠转义引号)
[11] <>(尖括号)
[12] ()(括号)
[13] +(加号)
[14] CR(回车符,ASCII 0x0d)
[15] LF(换行,ASCII 0x0a)
[16] ,(逗号)
[17] \(反斜杠)3.3 受诫礼(BAR-MITZVAH)攻击
13 漏洞简介
Bar Mitzvah攻击实际上是利用了”不变性漏洞”,这是RC4算法中的一个缺陷,它能够在某些情况下泄露SSL/TLS加密流量中的密文,从而将账户用户名密码,信用卡数据和其他敏感信息泄露给黑客。
14 URL/IP
-
15 漏洞验证

图4 漏洞证明截图(绿色的代表安全、黄色的代表警告、红色的代表危险)
图5 漏洞证明截图16 风险分析
作为浏览器的使用者,你可以让浏览器只能访问支持TLS 1.2协议的站点,以获得更好的安全性,以及更差的体验。作为服务器的维护者,似乎将最强壮的Cipher排在前面是正确的选择。SSL证书部署成功后, 检查服务器端的加密套件,在安全检查中,常常被报出的问题之一就是服务器默认的Cipher太弱(RC4-based)。
17 风险等级
18 安全建议
更换加密算法,不推荐使用RC4加密算法(2015年就已经被成功破解)。
3.4 目录便利
19 漏洞简介
目录遍历漏洞就是程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../,也可以是../的ASCII编码或者unicode编码等。
20 URL/IP
-
21 漏洞验证
22 风险分析
攻击者可以直接访问网站的目录,从而可以了解网站整体框架,降低攻击成本。严重的目录便利漏洞甚至可以跨目录访问数据库文件直接下载数据库,可以得到管理员的账户密码和各种各样的敏感信息。甚至还能访问到cmd目录下进行命令执行,对服务器造成严重的危害。
23 风险等级
24 安全建议
防范目录遍历攻击漏洞,最有效的办法就是权限控制,谨慎处理传向文件系统API的参数。最好的防范方法就是组合使用下面两条:
1、净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
2、web应用程序可以使用chrooted环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,时使其即使越权也在访问目录之内。www目录就是一个chroot应用。3.5 内网IP地址泄露
25 漏洞简介
内网IP地址泄露即在外网的已经上线的相关应用上泄露了内网的相关应用的IP地址。
26 URL/IP
http://5
- http://6
27 漏洞验证

图7 漏洞证明截图28 风险分析
如果可以依据时间找到其他漏洞配合(如csrf、ssrf),在已经了解当前网段的情况下,可以根据网段内容发送邮件给内部人员点击或直接到达单位内网里面连接到内网访问内网里面的业务有可能拿到内网的数据等风险。29 风险等级
低30 安全建议
不要把在外网业务上的链接写成链接到内网业务上去的地址。
- 整体风险评价
从理论上讲,只要攻击者投入足够多的甚至无限多的成本,他一定能突破防御体系,获得成功。但实际上,当攻击者所投入的成本因为强壮的防御体系而不断增加,直到与入侵成功后所获得的利益相等后,他便会对目标失去兴趣,从而放弃入侵。该原则是我们下面计算防御值和防御等级的一个重要依据。
渗透测试是安全专业人员模拟黑客入侵,对待测系统或网站进行的较安全的渗透性测试。旨在检测待测系统或网站应对通常意义的黑客入侵的防御能力,最终评定其防御级别,以下过程阐述了防御等级的鉴定算法(本次评价结果依据公司自有评价方法,整体风险评价结果仅供参考)。
下表表示了本次渗透测试的成果,及其对应的成果总价值。
表1 脆弱性赋值原则
| 是否取得 | 入侵成果 | 成果价值 | 总价值 |
|---|---|---|---|
| 未获取任何权限 | 0 | 22 | |
| 获取少量的目标配置信息(3条以下) | 1 | ||
| 获取很多目标配置信息 | 2 | ||
| √ | 获取了敏感的目标配置信息 | 3 | |
| √ | 影响目标系统服务的可用性(拒绝服务) | 6 | |
| 获取了数据库的部分控制权限 | 10 | ||
| 获取了数据库的最高控制权限 | 15 | ||
| 获取了网站后台的管理权限 | 7 | ||
| 获取了网站目录的部分读写权限 | 5 | ||
| √ | 目标网站可以进行跨站(盗取用户数据) | 7 | |
| √ | 获取了目标网站的列目录权限 | 6 | |
| 获取了控制网站目录的权限 | 8 | ||
| 可查看目标网站少量源代码 | 3 | ||
| 可下载目标网站的数据库 | 15 | ||
| 目标网站存在SQL注入 | 10 | ||
| 能够对目标服务器造成损害 | 10 | ||
| 能够使目标服务器宕机(拒绝服务) | 15 | ||
| 获得了服务器的任意命令执行权限 | 20 | ||
| 获取了控制数据库服务器的最高权限 | 15 | ||
| 获取了控制整个网站的最高权限 | 15 | ||
| 获取了域控制器的部分控制权限 | 25 | ||
| 获取了域控制器的最高权限 | 30 |
下表表示了本次入侵所投入的总成本,计算方法为:投入成本=投入人数*工作时间。
| 投入人数 | 时间段 | 持续时间累计(时) | 投入成本 |
|---|---|---|---|
| 1 |
防御值是最终评定防御等级的标准。计算方法为:防御值=成果总价值/总成本,并且依据下表赋值,得出相应的防御等级。
| 防御值 | 防御等级 | 描述 |
|---|---|---|
| 7≤,<无限大 | 极为脆弱 | 水平较低的攻击者使用开源免费的黑客工具即可对待测网站造成威胁。 |
| 4.5≤,<7 | 脆弱 | 一般水平的攻击者使用免费开源的工具投入不多的精力即可对待测网站造成威胁 |
| 3≤,<4.5 | 弱 | 一般水平的攻击者使用免费开源的工具需投入较大的精力才能对目标网站造成威胁 |
| 2≤,<3 | 一般 | 具备一定水平的攻击者使用自己开发的工具或收费工具花费不大的精力便可以对目标网站造成威胁。 |
| 1≤,<2 | 强 | 具备相当实力的攻击者使用自我编写的、收费的或少范围内使用的工具花费不大的精力才能对待测网站造成威胁 |
| 0≤,<1 | 健壮 | 具备相当实力的攻击者使用零日漏洞或投入大量的精力才能对待测网站造成威胁。 |
根据先前计算出的入侵的“成果总价值”与投入的“总成本”,算出目标系统的防御值为2.2,依据上表规定,该系统的防御等级为:一般。


