渗透测试测试报告.
XX 移动XXX 系统渗透测试报告
■ 版本变更记录 时间
版本
说明
修改人
目 录
附录A 附录B
威胁程度分级 ........................................................................................................................... 17 相关资料 ................................................................................................................................... 17
一. 摘要
经XXX 的授权,XX 科技渗透测试小组对XXX 下属XXX 系统证书版进行了渗透测试。测试结果如下:
严重问题:4个 中等问题:1个 轻度问题:1个
图 1.1 安全风险分布图
详细内容如下表:
表 1.1 发现问题详细内容
XX 科技认为被测系统当前安全状态是:远程不安全系统
二. 服务概述
本次渗透测试工作是由XX 科技的渗透测试小组独立完成的。
XX 科技渗透测试小组在2010年4月xx 日至2010年4月xx 日对XXX 的新XXX 系统进行了远程渗透测试工作。在此期间,XX 科技渗透测试小组利用部分前沿的攻击技术;使用成熟的黑客攻击手段;集合软件测试技术(标准)对指定网络、系统做入侵攻击测试,希望由此发现网站、应用系统中存在的安全漏洞和风险点。
2.1 测试流程
XX 科技渗透测试服务流程定义为如下阶段:
信息收集:此阶段中,XX 科技测试人员进行必要的信息收集,如 IP 地址、DNS 记录、软件版本信息、IP 段、Google 中的公开信息等。
渗透测试:此阶段中,XX 科技测试人员根据第一阶段获得的信息对网络、系统进行渗透测试。此阶段如果成功的话,可能获得普通权限。
缺陷利用:此阶段中,XX 科技测试人员尝试由普通权限提升为管理员权限,获得对系统的完全控制权。在时间许可的情况下,必要时从第一阶段重新进行。
成果收集:此阶段中,XX 科技测试人员对前期收集的各类弱点、漏洞等问题进行分类整理,集中展示。
威胁分析:此阶段中,XX 科技测试人员对发现的上述问题进行威胁分类和分析其影响。 输出报告:此阶段中,XX 科技测试人员根据测试和分析的结果编写直观的渗透测试服务报告。
图 2.1 渗透测试流程
2.2 风险管理及规避
为保障客户系统在渗透测试过程中稳定、安全的运转,我们将提供以下多种方式来进行风险规避。
对象的选择
为更大程度的避免风险的产生,渗透测试还可选择对备份系统进行测试。因为备份系统与在线系统所安装的应用和承载的数据差异较小,而其稳定性要求又比在线系统低,因此,选择对备份系统进行测试也是规避风险的一种常见方式。
时间的控制
从时间安排上,测试人员将将尽量避免在数据高峰时进行测试,以此来减小测试工作对被测试系统带来的压力。
另外,测试人员在每次测试前也将通过电话、邮件等方式告知相关人员,以防止测试过程中出现意外情况。
技术手段
XX 科技的渗透测试人员都具有丰富的经验和技能,在每一步测试前都会预估可能带来的后果,对于可能产生影响的测试(如:溢出攻击)将被记录并跳过,并在随后与客户协商决定是否进行测试及测试方法。
监控措施
针对每一系统进行测试前,测试人员都会告知被测试系统管理员,并且在测试过程中会随时关注目标系统的负荷等信息,一旦出现任何异常,将会停止测试。
工具的使用
在使用工具测试的过程中,测试人员会通过设置线程、插件数量等参数来减少其对系统的压力,同时还会去除任何可能对目标系统带来危害的插件,如:远程溢出攻击类插件、拒绝服务攻击类插件等等。
2.3 测试收益
通过实施渗透测试服务,可对贵方的信息化系统起到如下推进作用: 明确安全隐患点
渗透测试是一个从空间到面再到点的过程,测试人员模拟黑客的入侵,从外部整体切入最终落至某个威胁点并加以利用,最终对整个网络产生威胁,以此明确整体系统中的安全隐患点。
提高安全意识
如上所述,任何的隐患在渗透测试服务中都可能造成“千里之堤溃于蚁穴”的效果,因此渗透测试服务可有效督促管理人员杜绝任何一处小的缺陷,从而降低整体风险。
提高安全技能
在测试人员与用户的交互过程中,可提升用户的技能。另外,通过专业的渗透测试报告,也能为用户提供当前流行安全问题的参考。
三. 测试目标说明
3.1 测试对象
3.2 测试账号
3.3 时间
本份测试报告分析的各种安全风险,仅限定于在上述时间段内测试反馈信息的整理,不包括非上述时间段内的因系统调整、维护更新后出现的其他变化情况。
3.4
参与测试人员
3.5 测试环境
本次渗透测试过程中,XX 科技测试小组使用过多个互联网IP 地址开展的分析工作,在此通知XXX 新XXX 系统相关人员在对受测试的目标站点服务器、相应的网络入侵检测系统进行安全监控和日志分析时,排除以下IP 地址产生的任何违规信息,以保证分析结果的准确有效。
3.6 工具及相关资源
表 3.1 测试工具:NetCat
表 3.2 测试工具:Nmap
表 3.3 测试工具:httprint
表 3.4 测试工具:Tamper IE
表 3.5 测试工具:安全检测工具集
在具体的分析过程中,XX 科技测试小组在微软的Windows 平台上(涵盖2003/Vista),使用了IE (涵盖6.0/7.0/8.0)和Firefox 浏览器对指定的测试对象进行的分析、校验、测试。因此,漏洞分析检测到的部分安全问题可能与特定的操作系统、软件版本有具体关系,提醒后期实施漏洞修复工作的人员特别注意其中的差异。
四. 测试过程详述
4.1 目标信息探测
4.1.1 域名信息
渗透测试人员首先通过nslookup
对主机的IP 地址、NS 记录等信息的查询,对站点进行基本的信息探测:
4.1.2 Google Hacking
搜索错误的文件后缀
在此过程中,测试人员会对站点进行如下内容的搜索:
XXX 系统渗透测试报告
site:xx.xx.com inurl:jsp.bak site:xx.com filetype:sql site:xx.xx.com filetype:sql site: xx.com filetype:txt site: xx.xx.com filetype:txt site: xx.com filetype:conf site: xx.xx.com filetype:conf
件,即,某些 jsp 的备份文件。 搜索站点中是否存在 SQL 脚本文件
查找站点中是否有包含敏感信息的 txt 文 件 查找站点中是否有包含敏感信息的 conf 文件
通过上述方法测试, 测试人没有在 Google 和 Baidu 等互联网公共搜索服务商搜索出与之 相关的敏感信息。 查找第三方组件或程序 在此过程中,测试人员会对站点进行如下内容的搜索: 搜索内容 site:xx.com inurl:/fckeditor/ site:xx.xx.com inurl:/fckeditor/ site:xx.com inurl:jsp?id inurl:ewebeditor site:xx.xx.com inurl:jsp?id inurl:ewebeditor 搜索站点是否使用了 eWebEditor 说明 搜索站点是否使用了 fckeditor
通过上述方法测试, 测试人没有在 Google 和 Baidu 等互联网公共搜索服务商搜索出与之 相关的敏感信息。 搜索错误的配置 在此过程中,测试人员会对站点进行如下内容的搜索: 搜索内容 site:xx.com intitle:”index of /” site:xx.xx.com intitle:”index of /” site:xx.com intitle:"Apache Tomcat" intitle:"Error Report" site:xx.com inurl:"examples" site:xx.com inurl:"examples" 搜索站点是否存在 TOMCAT 错误信息, 通过错误信息可判断 TOMCAT 版本 搜索站点中是否存在测试代码 说明 搜索站点是否使用了列目录功能
2010 XX 科技
-9-
密级:商业机密
XXX 系统渗透测试报告
通过上述方法测试, 测试人没有在 Google 和 Baidu 等互联网公共搜索服务商搜索出与之 相关的敏感信息。
4.2 对系统的测试
4.2.1 端口扫描
通过使用 Nmap 端口扫描工具对主机在 Internet 上的端口开放情况进行检查:
图 4.1 Nmap 扫描结果 通过 Nmap 扫描报告,确认主机开放两个端口: TCP 21(用于 FTP 服务) TCP 443(用于 WEB 服务)
通过使用 nc(NetCat)对主机的 TCP 21 进行端口连接性测试,发现在连接成功后较长 时间内端口无反应:
图 4.2 使用 nc 连接 TCP 21 再次通过使用 ftp 客户端对目标系统发起 FTP 连接请求, 得到信息 “Connection closed by remote host.”:
图 4.3 使用 ftp 客户端对目标主机进行验证 由此可确认 TCP 21 虽开放,但应在网络层有相关的 ACL 限制,因此无法从 Internet 对 其 FTP 服务发起连接请求。
4.2.2 服务信息探测
通过端口扫描判断,远程目标主机仅有 TCP 443 端口(WEB 应用服务)可用,因此,后 继的渗透测试工作主要针对 WEB 应用本身及运行于 WEB 应用上的代码展开。 首先使用 httprint 对远程主机的 WEB 应用版本进行判断:
图 4.4 httprint 判断远程 WEB 应用版本 根据 httprint 输出无法判断远程主机的 WEB 应用。
2010 XX 科技 - 10 密级:商业机密
XXX 系统渗透测试报告
通过 nc 手工提交 HTTP HEAD 请求,依然无法获取到目标 WEB 应用版本信息。
图 4.5 使用 nc 提交 HTTP HEAD 请求 通过 nc 手工提交 HTTP OPTIONS 请求,依然无法获取到目标 WEB 应用版本信息。
图 4.6 使用 nc 提交 HTTP OPTIONS 请求
4.3 对应用的测试
测试人员根据 WASC 威胁分类①,对应用程序的渗透测试从五个类型的安全方面进行测 试,这五个威胁类型包括:认证和授权、命令执行、逻辑攻击、客户端攻击、信息泄露。
认证和授权类 暴力攻击 认证不充分 会话定置 会话期限不充分 凭证/会话预测 授权不充分 逻辑攻击类 功能滥用 拒绝服务 客户端攻击类 跨站点脚本编制 内容电子欺骗
命令执行类 LDAP 注入 SSI 注入 SQL 注入 Xpath 注入 操作系统命令 格式字符串攻击 缓冲区溢出 信息泄漏类 可预测资源定位 路径遍历 目录索引 信息泄露
图 4.7 WASC 威胁分类图 由于 XXX 系统区别于普通的 WEB 系统,因此,测试人员根据 XXX 系统的特点,从实 际出发采用手工测试的方法,对五大类威胁中的部分内容进行测试。
4.3.2 认证和授权类
由于 XXX 系统的特殊性①,测试人员没有对 XXX 系统登录账号进行暴力攻击的尝试,而 是采用使用证书方式对证书的有效性进行测试。
①
WASC 即 Web Application Security Consortium。是一个由安全专家、行业顾问和诸多组织的代表组成的 国际团体。他们负责为 WWW 制定被广为接受的应用安全标准。WASC 组织的关键项目之一是“Web 安全 威胁分类”,也就是将 Web 应用所受到的威胁、攻击进行说明并归纳成具有共同特征的分类。
2010 XX 科技
- 11 -
密级:商业机密
XXX 系统渗透测试报告
此次测试 XX 新 XXX 系统采用硬件 USBKey(即 XX),首先,测试人员对正常情况使 用 USBKey 登录 XXX 系统进行记录和分析。 图 4.8 使用 USBKey 登录信息 在没有插入 USBKey 的情况下,测试人员使用其他银行的“软证书”②进行登录: 图 4.9 使用其他银行“软证书”进行登录 通过使用 Tamper IE 截取登录过程提交的数据包,来对登录信息进行替换。测试人员将 使用其他银行“软证书”产生的信息替换为正常使用 USBKey 登录产生的 dn 和 sn 信息进行 欺骗。Dn 和 sn 信息如下: Dn 信息 :xx Sn 信息 :xx (威胁点)
图 4.10 替换登录过程的数据信息 经上述测试发现,XXX 证书版 USBKey 登录过程中,由 XXX 系统盾证书认证的相关信 息 SN 为固定信息,任何提交者均可通过登录认证,存在“绕过登录 XX 新 XXX 系统的漏洞” (威胁点,附录像)。 同时,测试人员通过枚举表单的方式,同样可以获取登录过程中的相关认证信息,例如: dn、sn 信息。 图 4.11 采用表单枚举的方式获取登录信息 在转账汇款测试时, 测试人员通过上述方法同样可以绕过 USBKey 的使用, 对行内转账、 跨行汇款进行成功操作。同时,在转账汇款的测试中,测试人员发现:转账汇款的最后步骤 即:“确认”操作时,由客户端向服务器端提交“签名加密代码”,该步骤存在设计缺陷, 导致“签名加密代码”只要是正确途径产生的“代码”都可以进行成功交易,而与每次交易 的信息无关。(威胁点,附录像) 测试人员第一次转账时使用 xx 的账号**7588 卡号向 xx 账号的** 9600 卡号进行汇款, 在最后确认过程中记录“sigEncryptCode”值和“randomTokenVerifyTag”值。 图 4.12 记录向 xx 账号汇款“确认”过程中相关信息
① ②
账号及密码信息错误将导致账号锁定。 通常所说的浏览器证书,非硬件 USBKey 的电子证书。
2010 XX 科技
- 12 -
密级:商业机密
XXX 系统渗透测试报告
然后, 测试人员第二次转账时使用 xx 的账号**7588 卡号向 xx 的账号的**2758 卡号进行 汇款,在最后确认过程中记录替换“sigEncryptCode”值为向 xx 账号汇款“确认”过程中记 录的“sigEncryptCode”值。测试人员发现交易能够成功完成。 由以上事实,测试人员分析认为存在两种可能:第一种可能“sigEncryptCode”信息应 为每次交易相关收款账号、金额等加密信息,若为此情况,在替换后并成功交易,测试用款 应该转到第一次操作的 xx 账号中,而目前事实是依然转移到 xx 的账号中。第二种可能是 “sigEncryptCode”信息不包含每次交易的收款账号、金额等加密信息,完全用于数字签名。 因此“sigEncryptCode”值信息在最后确认中,只要是正确途径产生均可通过签名,因此可 以任意替换。
4.3.3 命令执行类
在命令执行类的测试中,测试人员主要测试了 SQL 注入攻击。为了避免使用模糊测试给 账户及 XXX 系统带来不可预料的影响,测试人员采用手工测试的方法。 测试人员对 XX 新 XXX 系统中的输入参数进行了部分测试,下面以测试登录用户名选项 为例进行说明。 测试人员发现当前 XX 新新 XXX 系统大部分输入都只是客户端验证而非客户端服务端双 向验证。(威胁点) 测试人员通过本地浏览器截取的方式对“自定义登录名称”进行修改,成功将 zhdh 登录 名设置为下面三种情况: 情况一:“zh’||’dh”、“”;--”名称:含有 SQL 代码的违规名称; 图 4.13 设置的“zh’||’dh”登录名称
图 4.14 设置的“”;--”登录名称 情况二:“”①名称:空字符的名称字段长度少于要求的 4 字符; 图 4.15 设置的空字符登录名称 情况三:“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz”名称:52 字符 名称长度大于要求的 30 字符。 图 4.16 设置的 52 字符长登录名称
①
该处设置名称为空字符。
2010 XX 科技
- 13 -
密级:商业机密
XXX 系统渗透测试报告
经上述测试, 测试人员发现当通过违法手段绕过客户端限制成功修改登录名称后, 在 XXX 系统登录时由于使用不符合要求的登录名称将导致登录认证无法通过,造成系统的逻辑错误 只能使用证件号方式登录①。 当设置登录名空字符时,登录 XXX 系统要求输入用户名,致使无法登录;当设置超长登 录名字符时,登录 XXX 系统提示用户名不符合要求,致使无法登录。
4.3.4 客户端攻击类
测试人员在测试跨站脚本时,发现当前 XX 新 XXX 系统对跨站检测非常严格,导致在测 试时测试账号被列入黑名单,无法继续测试。 测试代码如下:"> 图 4.17 对跨站输入进行强制退出
图 4.18 测试跨站代码被列入黑名单
4.3.5 信息泄露类
测试人员在对网站其他周边信息进行检查时发现, nbank.xx.com 存在明显的 web server 默认页面,该处泄露了当前服务器 web 信息。如下: 图 4.19 Web server 默认页面
五.
发现问题与建议
5.1 发现的问题
在本次渗透测试的新 XXX 系统中,XX 科技渗透测试小组发现了部分严重等级风险漏洞, 这一级别的漏洞将深刻威胁到系统安全性。已发现的 XX 新 XXX 系统主要安全问题如下: XX 新 XXX 系统发现的问题: 编号 1 发现问题 登录 XXX 系统 USBKey 认 漏洞描述 不使用 USBKey 可通过截取 key 信息进 威胁程度 严重
①
由于登录认证采用双向检测因此服务端不接受不符合条件的登录名称。
2010 XX 科技
- 14 -
密级:商业机密
XXX 系统渗透测试报告
证可绕过漏洞 2 3 4 5 6 转账汇款 USBKey 认证可绕 过漏洞 转账汇款数字签名设计缺陷 输入验证机制设计缺陷 缺少第二信道认证 信息泄露
行登录 不使用 USBKey 可通过截取 key 信息进 行登录 任意合法数字签名信息均可完成汇款, 数 字签名信息可任意替换。 仅由客户端验证用户输入导致易绕过造 成 SQL 注入 仅依靠 USBKey 进行身份识别没有其他 认证手段 xx.xx.com 存在默认 web server 泄露信息 严重 严重 严重 中等 轻度
5.2 安全建议
针对上述发现的安全问题,XX 科技建议立即采取措施进行修补,以避免发生安全问题, 下面的安全建议措施可供参考: 编号 1 2 3 4 5 6 发现问题 登录 XXX 系统 USBKey 认 证可绕过漏洞 转账汇款 USBKey 认证可绕 过漏洞 转账汇款数字签名设计缺陷 输入验证机制设计缺陷 缺少第二信道认证 信息泄露 安全建议 更改当前 USBKey 实现机制 更改当前 USBKey 实现机制 在签名信息中加入动态信息, 例如短信验 证码、随机验证码、账号、金额等信息。 采用客户端服务器端双向验证 增加第二信道认证途径,例如,手机短信 验证码 删除默认 web server 页面, 屏蔽默认 web server 版本信息 备注
5.3 其他建议
针对 WEB 平台的渗透测试及定期的评估扫描等方式,均以暴露问题为目标,属于被动的 安全手段,而这些方式也大大的增加开发和维护的成本,因此建议 XXX 针对如 WEB 程序这 类个性化产品开发前就应做好安全的相关工作,建议 XXX 对定制开发的产品从以下几个方面 进行相关的考察和关注: 制定以功能和安全兼顾的产品开发需求 将安全作为产品开发项目中的重要参考指标
- 15 密级:商业机密
2010 XX 科技
XXX 系统渗透测试报告
产品开发过程中的人员安全意识和技能培训 完善的安全开发手册及通用的安全的代码库 在开发每阶段完成后的定期代码审计和扫描 产品整体上线前的审计工作和远程评估工作
六.
测试结论
经过本次远程渗透测试,我们对此远程系统的安全评价是 远程不安全系统。
安全等级 1.
资源内容描述 存在一个或一个以上严重的安全问题,可直接导致系统 受到破坏; 2. 与其他非安全系统连接,同时存在相互信任关系(或帐 号互通)的主机; 3. 4. 5. 发现已经被人入侵且留下远程后门的主机; 存在 3 个以上中等安全问题的主机; 与其他非安全系统在一个共享网络中,同时远程维护明 文传输口令; 6. 1. 2. 完全不能抵抗小规模的拒绝服务攻击 存在一个或一个以上中等安全问题的主机; 开放过多服务,同时可能被利用来进行拒绝服务的主机; 与其他非安全系统直接连接,但暂时不存在直接信任(或 帐号互通)关系; 4. 5. 6. 远程维护通过明文的方式传递信息; 存在三个以上轻度安全问题的主机; 只能抵御最低级的拒绝服务攻击; 最多存在 1-2 个轻度安全问题;
远程不安全系统 (符合任何一个条件)
远程一般安全系统 (符合任何一个条件)
3.
远程安全系统
1.
2010 XX 科技
- 16 -
密级:商业机密
XXX 系统渗透测试报告
(符合全部条件)
2. 3. 4.
远程维护方式安全; 与不安全或一般安全系统相对独立; 能抵挡一定规模的拒绝服务攻击。 表 6.1 安全等级评定
七. 感谢
在本次远程渗透测试过程中,XX 科技感谢 XXXXXX 系统部门的相关人员和在渗透测试 过程中进行沟通、协调的相关部门和人员的大力配合,感谢相关人员对我们的测试提供 XXX 系统注册账号、等测试环境,以使得我们的工作能够顺利完成。对于您的大力支持我们深表 感谢。
附录A 威胁程度分级
威胁程度的分级方式说明如下: 严重:直接导致系统被入侵或数据被破坏,一旦发生,就是严重的安全事件。 中等:可能导致重要信息的泄漏或有较高可能导致系统被入侵控制。 轻度:敏感信息泄漏或存在轻微安全问题,一般不会产生严重的安全事件。
附录B 相关资料
《绕过登录 XX 新 XXX 系统的漏洞》录像 《绕过转账及数字签名设计缺陷》录像
2010 XX 科技
- 17 -
密级:商业机密