渗透测试在网站安全维护中的实践
季民
(北京电视台 信息网络管理部)
摘要
随着互联网的迅猛发展,人们在工作、学习和生活的方方面面都在发生着深刻的变化,出现了如移动办公室、E-LEARNING、网络购物等新事物,这使得信息资源得到最大程度的共享。要维护网站系统正常运行以及服务的无缝访问,网站安全是一项长期性的、艰巨性的工作,通过定期更新软件、不定期网络安全渗透测试、完善安全策略等持续的改进措施,才可以进一步提高网站的整体保护力度。
关键词
网站安全 渗透测试
1. 前言
随着互联网的迅猛发展,人们在工作、学习和生活的方方面面都在发生着深刻的变化,出现了如移动办公室、E-LEARNING、网络购物等新事物,这使得信息资源得到最大程度的共享。在享受快捷服务的同时,网站自身安全受到了巨大威胁。仅从CNCERT提供的年报就可见一斑:在CNCERT接收的网络安全事件(不含漏洞)中,网站安全类事件占到61.7%;境内被篡改网站数量为36612个,被公开的疑似泄露大型数据库26个,涉及帐号、密码信息2.78亿条,严重威胁了网站用户的合法权益。为了更安全地管理所辖的网站,我们在实际工作中采用了渗透测试这种方式,分析网站的安全现状,检测整个系统的漏洞,对系统的任何弱点、技术缺陷及漏洞进行主动分析,从而全面了解和掌握系统的信息安全风险,有效进行了安全调优及加固建设。
2. 渗透测试及分类
渗透测试是用于网站核心安全评估的一种方法。在实际工作中,它是一个具有可行性的、被实践证明过的测试流程。尽管渗透测试分类方法有很多种,但是当前最通用并被广泛接受的三种渗透测试方法是黑盒测试、白盒测试和灰盒测试。 2.1 黑盒测试(远程测试) 安全审计人员将在不了解任何被测试组织的内部结构和技术的情况下,从远程对其网络结构进行审计。通过使用真实世界中的黑客技术,并合理地组织各个测试阶段,渗透测试可以找出一些已知和未知的漏洞,如果不在测试过程中发现这些漏洞,这些漏洞就有可能暴露在整个公共网络中。 2.2 白盒测试(内部测试) 安全审计人员必须清楚地知道被测试环境的内部结构和技术细节。因此,这种测试方式向审计人员敞开了一扇大门,使他们能够以最小的代价来查看和评估测试目标中的安全漏洞。 2.3 灰盒测试(组合测试) 如果将白盒和黑盒测试组合使用,就能够同时从内部和外部两个视角来深入评估目标系统的安全性。这种组合称为灰盒测试。灰盒测试方法同时具有黑盒测试和白盒测试的优点。但是,灰盒测试要求测试人员只能有限地了解一些系统内部结构,从而可以不用拘泥于内部细节,从系统整体着眼,保障安全的最佳方法。我们在实际中就选取了此种方式。
3. 渗透测试的过程
3.1测试准备工作 测试准备工作一定要细致,目前的网站WEB应用系统多使用动态语言编写,并且含有大量的数据库交互操作。在进行网站页面遍历时,如果网站含有低级漏洞,在访问到涉及信息或者文件删除页面(如删除用户、论坛删帖等)时可能导致删除部分数据或文件。同时,在进行涉及数据库操作方面的渗透测试时,可能在数据库中残留临时表或视图,根据我们经验,在进行测试前做好数据备份,确保发生问题时可以及时恢复。 3.2风险等级分类 在测试之前,我们还对网站可能存在的风险进行分类评估,这是我们分析和确定渗透测试结果的基础。如表1所示:
表1:风险等级分类表
风险等级 | 等级划分依据 |
高风险 | 获得管理员权限,完全控制机器和应用系统;利用该漏洞能够实现文件上传建立目录,从中获取大量的数据库表结构信息或利用该漏洞发起的攻击直接引起应用系统服务器故障、响应异常或机密信息的泄露。 |
中风险 | 获取部分访问权限,尚未完全控制机器和应用系统;利用该漏洞间接影响应用系统运行或引起客户敏感信息外泄。 |
低风险 | 无法提前验证的风险以及需要依赖客户风险意识薄弱方可触发的风险。 |
3.3远程测试 根据网站实际的情况,在此阶段使用谷歌、百度搜索引擎进行网站信息查询,对网站公开的信息进行收集:域名查询、域名和IP地址的相互转换、主机信息收集、并以访客身份进行注册,进行相关查询。 再使用网络扫描和嗅探工具包(Nmap、Nessus、Nikto)对网站中所有的端口进行扫描。通过使用一系列端口扫描技术,如全开(full-open)扫描、半开(half-open)扫描、隐身式(stealth)扫描,可以检测端口的开放情况,就算目标主机处于防火墙或者入侵检测系统的保护下也不例外。一旦找到了有开放端口,就可以通过这些端口来枚举当前运行的服务。通过将主机上开放的端口对应到相应的服务程序,可以帮助进一步发掘目标基础设施中可能存在的漏洞。因此,该阶段为在之后的测试中发现各种网络设备漏洞打下了基础,这些漏洞都可能会造成严重危害。
3.4内部测试 内部渗透测试是一种深度扫描,以漏洞风险为导向,进行全面漏洞检测。它提供有丰富的策略包,针对各种典型的应用漏洞及网页木马检测。对各种挂马方式的网页木马进行全自动、高性能、智能化分析,并对网页木马传播的病毒类型做出准确剖析和网页木马宿主做出精确定位。如表2所示:
表2:内部渗透测试项目表
危害级别 | 漏洞扫描策略设置 | 漏洞影响 | 漏洞报告 | ||
高 | SQL注入漏洞 | 数据库信息窃取、篡改、删除 | OK | ||
高 | Cookie注入 | 数据库信息窃取、篡改、删除,控制服务器 | OK | ||
高 | 跨站脚本漏洞 | 用户证书、网站信息、用户信息被盗 | OK | ||
高 | 缓冲区溢出 | 攻陷和控制服务器 | OK | ||
高 | 表单绕过漏洞 | 攻击者访问禁止访问的目录 | OK | ||
高 | 文件上传漏洞 | 主页篡改、数据损坏和传播木马 | OK | ||
高 | 文件包含 | 服务器信息窃取、攻陷和控制服务器 | OK | ||
高 | 网页木马 | 直接控制网站主机或者借此攻击访问者客户端 | OK |
如果网站的数据库出现安全问题并被恶意利用,造成的风险是无法估量的。我们进行数据库扫描就是要充分了解数据库存在的安全隐患,提升各类数据库的抗风险能力。同时可以完成数据库建设成效评估,协助数据库安全事故的分析调查与追踪。 数据库扫描程序分为前端程序和扫描引擎两部分(如图1所示)。前端功能是与用户交互,主要功能模块包含:项目管理、扫描管理、报表管理、用户权限管理、策略管理、日志管理。引擎的主要功能是访问要扫描的数据库,执行前端提交的扫描请求,并将扫描结果返回前端。引擎和前端程序可以分开运行,它们之间采用自定义的网络协议通信,安全可靠。
- 项目管理:主要实现扫描的新建、修改/编辑、打开等操作,主要针对扫描对象的管理,包括数据库类型、IP、端口、服务名等,可以在输入用户名和密码后测试连接,如果连接成功,说明数据库的连接信息是正确的,可以马上开始扫描。
- 扫描管理:可以对数据库进行扫描的开始、暂停、停止等操作,向扫描引擎发送指令,扫描用户选中的数据库。同时可以把扫描引擎返回的扫描结果展示给用户。
- 报表管理:提供报表模板、报表内容选择、报表的预览、打印及输出功能。可以根据不同用户需求提供不同的报表模版,报表的显示内容可以灵活选择,如报表封面、项目统计信息等,并进行报表打印和导出,导出文件类型支持PDF、HTML、DOC、XLS等。
- 用户权限管理:提供系统的用户权限分配,包括角色、用户等新增、修改及删除操作。
- 策略管理:提供策略集的新增及修改,用户能选择不同的策略集做不同程度的扫描。
- 日志管理:对用户的每一步操作都会生成日志,并保存到系统中。同时,提供了日志审计功能,审计员可以查看每个用户的以往操作,比如系统管理员什么时候创建了某个名称的用户,某个用户什么时间扫描了某个数据库等。
扫描引擎负责处理前端程序发来的扫描请求,并把扫描结果返回给前端程序。扫描引擎的主要功能模块如下:
- 核心逻辑模块:提供网络操作和协议解析功能,并对扫描任务进行处理,处理前端发来的扫描请求,获取连接信息,调用不同的数据库连接引擎连接到待扫描数据库,根据扫描请求中使用的策略集扫描数据库。
- 数据库连接引擎:提供了一个高效、轻量级的数据库访问引擎,使得数据库的访问效率大大提升,支持ORACLE、MSSQL、MySQL、DB2、INFORMIX等数据库的连接。
- 数据管理模块:提供系统信息数据管理、扫描结果及策略的管理。包括用户信息、配置信息、项目信息、策略等数据的管理。
图1:数据库扫描程序分为前端程序和扫描引擎两部分
3.5渗透测试的注意事项 内部测试在进行时可能会对Web应用及数据库产生一定的负荷超载现象,严重时可能导致服务不可用。所以,回退机制也是必需的,确保发生问题时可以及时恢复。测试验证时间尽可能放在业务量最小的时间进行,我们选择了在凌晨进行。在渗透测试过程中,相关人员必须持续关注系统工作状态,在发现异常时及时终止测试工作。测试完毕后,在渗透测试工作即使未发现异常,也应检查系统文件目录和数据库内容。
4. 测试结果及加固
通过本次组合渗透测试工作,发现我们所管理的网站系统有多个潜在的安全问题。如表3、表4所示。安全问题对照风险等级表从低到高可分为低、中、高三个等级。通过对风险的分析,进行了相应的加固措施。
表3:远程渗透测试结果
检测结果 | 安全检测项 | 安全检测时间 | 风险报告 | |
远程测试 | 2012-09-08 1:00 |
| ||
1 | robots.txt 包含23处可手工查看的入口(低) | |||
2 | 1025 NFS (中) | |||
3 | 3306 mysql (中) | |||
4 | 3389 ms-term-serv (中) | |||
5 | Microsoft-IIS/6.0 版本过低 (4.0 for NT 4, 5.0 for Win2k, 最新版本为 7.5) (高) |
- robots.txt 包含23处可手工查看的入口,把Web 站点结构暴露无遗,攻击者会检索有关站点文件系统结构的信息,帮助攻击者映射此 Web 站点。删除robots.txt文件。
- 1025 端口是Windows动态分配的监听端口(listen port)。匿名接入该端口后,就可获取Windows网络的服务器信息与用户信息等。关闭端口。
- 3306 端口MySQL 数据库访问端口,但是各个版本的MySQL存在多个漏洞,可利用远程溢出代码对数据库进行攻击,造成数据库停止服务或其它问题,影响整个网站的正常访问。关闭端口。
- 3389端口是Windows 2000(2003) Server 远程桌面的服务端口,可以通过这个端口,用"远程桌面"等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑。关闭端口。
- IIS/6.0 版本过低,存在多个漏洞,升级为最新版本为 IIS/7.5。
表4:内部渗透测试结果
检测结果 | 安全检测项 | 安全检测时间 | 风险报告 | |
内部测试 | 2012-09-08 3:00 |
| ||
1 | Cookie未启用HttpOnly(中) | |||
2 | crossdomain.xml 无限制(中) | |||
3 | SERV-U7.0版本过低(高) | |||
4 | apache 2.0.63(高) | |||
5 | 弱口令漏洞(高) |
- 在IE 中Cookie 的HTTPonly设置是禁止通过客户端脚本对 Cookie 进行访问,从而减小跨站点脚本攻击成功的可能性,防止恶意用户通过XSS攻击获取用户的登录的Cookie信息,伪装用户登录。开启设置。
- crossdomain.xml 是一个策略文件,当 Web 站点的 crossdomain.xml 策略太宽松(例如,允许任何域的 Flash 文件访问站点资源)时,可能会导致“跨站点伪造请求”以及可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。请配置 crossdomain.xml 文件中 allow-access-from 实体的 domain 属性来包括特定域名,而不是任何域。如只有能访问可信的域名。
- SERV-U7.0版本过低,存在多个可被黑客攻击的利用的漏洞,如允许恶意用户绕过部分安全限制。升级为最稳定的版本为SERV-U10。
- apache 2.0.63版本过低存在被Dos 的风险,Web服务器所在的远程主机存在被拒绝服务攻击。升级为最稳定的版本为Apache2.2。
- 攻击者可利用弱口令漏洞,即可通过进行暴力猜解,获取站点的管理权限,甚至可能以该站点为跳板,获取北京电视台所有WEB应用站点的控制权限。定期对进行弱口令扫描,防止管理口弱口令的存在,并被恶意利用
5. 总结
随着网络威胁数量的日渐增加,安全性不再是一件可有可无的事情,即使是在有了保护的网站也不应当被忽视。确保网站软件和硬件组成单元的安全,对于维持系统正常运行以及服务的无缝访问都至关重要的。总之,网站安全是一个长期性的工作,通过定期更新软件、不定期网络安全测试、完善安全策略等持续的改进措施,才可以进一步提高网站的整体保护力度。
评论 点击评论