安全简报:渗透测试
作者:网络转载 发布时间:[ 2012/10/16 11:28:59 ] 推荐标签:
除信任问题外,渗透测试人员还应监视可能出现错误或已被攻击者替换(或修改)的 DLL、二进制代码或应用程序将与之进行交互并且未受到访问控制列表 (ACL) 完全保护或者根本未受到保护的文件。测试人员还必须监视访问共享内存资源或者在注册表或临时文件中存储敏感数据的其他应用程序。后,测试人员必须考虑造成系统压力的因素(如网速较慢、内存不足等),并确定这些因素对安全功能的影响。
环境攻击方式通常是侵入不安全的环境并随后在该环境中执行应用程序来查看其反应。这是一种间接形式的测试;攻击者对应用程序的运行环境发起攻击。现在,我们来看直接测试。
输入攻击
在渗透测试中,来自不受信任来源的输入为重要。包括通信路径(如网络协议和套接字)、公开的远程功能(如 DCOM、远程过程调用 (RPC) 和 Web 服务)、数据文件(二进制文件或文本文件)、执行过程中创建的临时文件以及控制文件(如脚本和 XML),所有这些内容都可能遭到篡改。后,还必须检查允许直接用户输入的 UI 控件(包括登录屏幕、Web 前端及类似控件)。
具体来说,您需要确定是否已正确控制输入:是否接收合格的输入并拒绝不适当的输入(如长字符串、格式不正确的数据包等)?适当的输入检查和文件分析至关重要。
需执行测试来查看能不能将危险的输入项输入到 UI 控件中,并了解此时会产生什么样的后果。此类输入包括特殊字符、编码输入、脚本段、格式字符串、转义序列等。需确定嵌入到数据包字段或文件中且可能导致内存溢出的长字符串能否通过测试。协议流中损坏的数据包也是个问题。必须监视崩溃和挂起并检查堆栈是否存在可利用的内存损坏。后,必须确保当正确防御不适当的输入时,验证和出错消息之类的信息会出现在正确的位置(客户端而非服务器端)。
输入攻击实际上类似于向应用程序扔手榴弹。其中一些能正确躲避,而另一些则会导致软件崩溃。渗透团队将负责确定各种输入攻击,并启动适当的修复措施。
数据和逻辑攻击
一些错误深藏在应用程序的内部数据存储机制和算法逻辑当中。在这种情况下,似乎存在设计和编码错误,开发人员假定用户始终会按照正确的方式执行操作或忽略了用户可能用到的某些代码路径。
拒绝服务是此类攻击的主要代表,但还不是危险的攻击。如果开发人员没有针对大量用户(或连接、文件或导致资源耗尽的任意输入)做出计划,拒绝服务攻击可能成功。然而,还有大量需要测试的更加隐匿的逻辑缺陷。例如,如果导致错误消息的输入和其他生成的输出向攻击者显示了可利用的信息,可能发生信息泄漏。始终应删除此类数据,其中一个实际的示例是硬编码的测试帐户或测试 API(通常包含在内部版本中以帮助实现测试自动化)。它们可能为攻击者提供轻松的入侵点。还应执行另外两个测试:输入错误的凭据来确定内部身份验证机制是否可靠,以及选择代码路径不同的输入。通常一个代码路径是安全的,但可使用另一方式访问相同的功能(可能无意间忽略一些关键的检查)。
不要胆怯
渗透测试与传统的功能测试存在很大差异;渗透测试人员不仅缺乏适当的文档,而且还必须能够站在试图进行破坏的用户角度进行思考。这一点非常重要 — 开发人员往往假定用户都非常守规矩并且不会执行特殊的操作,因而拒绝修复错误。但实际上,您不可能如此冒险。黑客们会深入发掘各种漏洞,任意技巧、欺骗或异常测试用例都不例外。对于渗透测试人员而言,也同样适用。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11