渗透测试服务主要是通过模拟黑客攻击技术和手段对目标网络、应用、系统、主机在得到许可的情况下进行由浅至深入的探测,用于验证在当前的安全防护措施下网络、系统抵抗黑客攻击的能力,他类似军队里的“实战演习”。灵畅信息安全小组会利用各种主流的攻击技术并结合丰富的渗透经验进行模拟攻击测试,以发现网络、系统中存在的安全漏洞和风险点。
渗透测试的范围主要分为内网与外网,测试方法及测试内容包含但不限于以下所列项目且根据被渗透的网络架构实际情况进行调整。
渗透测试的第一步是尽可能地收集目标系统的信息,同样也是渗透测试的关键步骤。实现信息收集有很多种方法,使用搜索引擎、扫描器或发送特殊构造的HTTP请求等,都可以使服务器端的应用程序返回一些错误信息或系统运行环境的信息,通过分析获得的这些的信息,可以为后续的渗透测试工作提供如下帮助:
Web服务器和应用程序指纹探测是通过分析各种请求的返回信息,来得知Web服务器和应用程序的版本等若干信息,这些信息可以为后期渗透测试过程中选择何种测试方法和攻击手段提供重要的参考,为判断目标系统可能存在何种脆弱性提供帮助,做到有的放矢。
测试网页服务脆弱性,是找出服务器主机上存在的所有提供对外服务的程序,例如:FTP服务程序、SMTP/POP3服务程序、VNC或远程桌面等,通过这些程序的信息,恶意用户就可以利用其软件自身的脆弱点或漏洞进行攻击。
Web应用渗透测试过程中最主要的工作是要分析Web服务器上的不同Web应用程序,而从远程要获得目标系统所有Web应用程序的信息最有效的方法是通过爬网和搜索引擎,可以得到:
Web服务器做出的响应方式是Web应用渗透测试的基本分析依据,通过构建各种各样的畸形请求,让Web服务器返回错误信息,错误信息中通常会包含错误代码,它含带了极为丰富的,而且极为重要的信息,例如:应用程序的版本、打了什么补丁、存在哪些组件等。通过对这些错误代码的挖掘,有助于加深对目标系统的理解,保证渗透测试的有效性。
应用程序配置管理测试关注的是应用程序在开发阶段遗漏下来的信息,例如:测试文件、与网页服务无关的信息等。这些信息有些会对后期的渗透测试十分有价值,尤其是历史文件、日志文件和自动生成的一些信息。这些文件中会发现一些有价值的信息。如:数据库用户名、外网IP地址等信息。
应用程序配置管理测试包括:
验证是服务器与客户端建立身份和权限鉴别的过程。服务器需要客户手动或自动地提供一些信息,例如用户名、密码、IP地址等,然后经过一系列的算法得出验证结果。通常验证过程需要多个验证因素共同完成。
验证是整个网络应用中对攻击者吸引力最大的部分,渗透测试中的验证测试就是围绕验证机制展开的。
验证测试工作包括:
此类测试主要针对的是密码设置或密码强度相对较弱而产生的漏洞。采用缺省密码,或使用比较简单的密码,都可以通过密码字典来进行尝试破解,而且成功率相对较高。其中,空口令的威胁更加严重,也是测试的重点。字典攻击主要针对基于HTML表单提交的验证方式进行的。
通过SQL注入、直接页面访问等多种方式,来测试是否存在可以绕过验证机制的路径。存在验证旁路漏洞的主要原因是程序开发过程中存在错误或没有考虑全面,验证旁路绕过测试就是要发掘验证方法,分析出潜在的旁路。
通过返回上一级目录的方式进行目录改变,就可以越权访问到其它文件夹下的内容,而恶意用户的目标很可能就是存储着重要信息的文件,例如:/etc/passwd、shadow文件等。此类测试就是针对文件夹权限设置的全面测试。
对于一次会话的结束,服务器必须做完整、彻底的清理工作,注销管理和浏览器缓存管理测试就是要去发现在会话结束后,是否有信息遗留、是否可以继续利用这些信息来进行验证等安全漏洞,这些漏洞很容易被忽略,漏洞导致的结果往往又是致命的。
由于HTTP协议是无状态,所以要进行状态维持和控制用户的一次会话就需要引入其它的机制,这便是会话管理。大多数的网页应用程序环境,例如ASP和PHP等,都提供给了开发者已经架构好的会话管理函数,如何架构和管理会话令牌,就成了各个网页应用程序开发技术的相异之处,同时也成为了安全的焦点。
会话管理测试主要集中于分析出会话管理机制,并针对每个步骤的安全性、令牌的脆弱性进行测试,来检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。
会话管理测试工作:
在这个测试中,会检查Cookie与Session的令牌是否是由一种安全的、不可逆推的方法生成。可预测的会话令牌会非常容易通过修改Cookie或Session的参数,进行会话劫持,并伪装成合法用户。令牌操纵测试主要面向于令牌的算法,分析其算法的强度和随机性。
Web应用程序为了保持服务器的状态信息会在会话中显式的保存一些参数用来跟踪程序状态或验证信息,这些参数在传递过程中被截获修改,可能会绕过Web应用程序的安全处理,绕过服务器的安全审计或伪造其它合法用户的身份进行会话。暴露的会话参数测试就是针对于此的测试,它主要面向于会话令牌的交互协议。
跨站请求伪造(CSRF)是指攻击者面对一个已经被网页服务器验证的用户,通过一定的技术手段,例如网上钓鱼等,令此用户不知情的情况下执行一些恶意的代码,而致使用户当前会话中验证信息被窃取,由于受害用户仍处于一次完整的会话当中,所以攻击者就可以成功的进行的身份伪造冒充当前用户进行交易。跨站请求伪造测试便是专门针对此项漏洞的测试。
HTTP漏洞测试主要针对于HTTP头结构的攻击进行测试。
测试对象包括:
数据有效性测试集中于Web应用程序最可能出现安全漏洞的地方——用户提交的恶意数据。出于应用程序编程人员的设计、编码疏忽,或是配置管理纰漏,Web应用程序没能很好地对输入的特殊字符进行过滤,这样通过构建或插入特殊的字符就可以获取到权限之外的信息,甚至是控制权限。
数据有效性测试会测试Web应用程序和Web服务器对各种输入是否有严格的过滤机制,尤其会着重关注于可以越权浏览、提权、获得控制权的各种脆弱点或漏洞。
数据有效性测试工作包括:
跨站脚本(XSS)漏洞是目前针对WEB应用最普遍、成本最低的攻击方法之一。它的表现是构建URL请求里,加入了一部分Javascript脚本语言代码。跨站脚本测试,就是检测出潜在的跨站脚本漏洞,并分析其可能造成的最大危害。
SQL注入漏洞同样也是目前针对WEB应用中最危险、且攻击成本最低的漏洞之一。存在SQL注入漏洞的服务器,攻击者可以随意操作其数据库。SQL注入测试集中于发现网页中的注入点。
代码注入(CodeInjection)测试检查服务器是否会执行用户提供的URL中的代码。主要是针对服务器端脚本类模块,如ASP、PHP等的输入过滤和配置进行检查。
通过构建超长输入,验证服务器端对输入的长度过滤规则。溢出测试可以对服务器端所有的存在输入的应用程序进行验证。如果服务器端存在溢出漏洞,那么很可能会造成程序错误,或是崩溃。
Webservice不仅仅是在验证、会话管理、数据有效性管理等自我配置方面存在脆弱性和漏洞,由于它是由各种各样技术综合起来的,所以其它协议、技术、算法、程序的漏洞同样会深入影响到Web应用的整体安全性。Webservice脆弱性测试面向的是提供Webservice的系统层面,和协议本身的漏洞,它实际上是系统隐患级别的测试。
Webservice脆弱性测试工作包括:
不恰当的附件测试面向的是允许上传,并可以下载上传文件的网页服务,测试主要检查服务器对上传文件的处理、放置和检查。避免服务器执行恶意文件或散播,同时也避免用户上传过滤不严格的超大文件等安全隐患。
重放攻击是恶意用户截获了一次合法用户的完整交互数据,通过复制并重放此过程的交互来伪装成合法用户,意图获得验证或是对合法用户造成损害。重放攻击测试根本上就是面向于验证过程中的随机码和时间戳部分进行安全性验证。
渗透测试可以通过最真实的手段来挖掘信息系统所存在的漏洞,我们将这些漏洞及证明依据用渗透测试报告的形式呈现,并且将明确告知如果这些漏洞被利用的话将会带来什么样的影响。渗透测试是一种快速、有效的反应信息系统安全的服务,但是我们不能只依靠渗透测试来评估我们的系统安全情况,渗透测试虽说重要,但是不能说是十分全面。