软件测试与(Web)渗透测试

信息安全 Web应用程序 应用安全 渗透测试 源代码 软件
2021-08-22 21:56:58

我想问一下软件测试和Web应用程序渗透测试之间的区别。

我知道在软件测试(JIRA/Selenium)和 Web 应用程序渗透测试(BurpSuite、SQLMap 等)这两个学科中使用不同的工具。

另外我想知道这两个学科是否交叉并且软件测试员可以成为一个好的Web App Pentester,反之亦然?

非常感谢。

4个回答

我将对你关于学科交叉的问题的第二部分稍作不同的解释,因为我在我的职业生涯中有过这样做的经验。

一个好的渗透测试员有黑客的心态。他们努力通过他们可用的任何创造性手段和他们的知识集来破坏已经实施的安全保护。一个好的 PenTester 不会像最终用户那样思考,而是以一种绕过规则、限制和障碍的方式思考。他们不测试已实施的安全保护措施是否正常工作;他们正在寻找 IT 系统的设计未能解决和缓解漏洞的地方。

软件测试员通常专注于测试软件是否根据要求正确执行。它主要是繁重的工作,希望使用工具来自动化测试。由于完美的软件测试以某种方式测试每一行代码,因此创建越来越多的测试程序以覆盖所有代码行需要大量繁重的工作。请注意,在大多数情况下,传统软件测试不会执行很多“负面”/“失败”测试用例,它确保最终用户正确使用软件时软件也正确执行。人们通常很少发现最终用户何时错误地使用该软件以及该软件如何处理该问题的测试。

您会发现还有系统安全测试员软件安全测试员等专业这个人通常有一种思维方式和知识基础,介于以一致性为中心的软件测试人员和渗透测试人员的打破它的极端之间。通常,系统/软件安全测试将验证安全功能的正确使用将允许授权最终用户按计划与软件交互。并且通常会测试一组预定义的和众所周知的安全功能的错误使用,这会导致日志和块的错误使用。

所以总结一下:

  • 软件测试员和系统/软件安全测试员通常有相当多的交叉,因为他们通常知道系统/软件的全部细节,他们知道在正确使用时它应该如何正确运行,并且他们可以测试许多常见的最终用户不当行为。
  • 然而,一个好的渗透测试人员的想法确实与其他两个不同......他们不关心系统/软件的正确行为......他们很狡猾,寻找没有缓解的一小部分漏洞。

我想说你应该这样看待这三种活动之间的关系:渗透测试是安全测试的子类型,而安全测试又是软件测试的子类型。安全测试处理非常特定类型的缺陷:安全缺陷;那些可能导致系统受损、声誉受损、公众形象受损或网络应用程序所有者直接经济损失的问题。

关于你问题的第二部分 - 这取决于。安全测试主要处理发生在 Web 服务“幕后”的过程,无论是其客户端部分还是后端部分。因此,如果您主要处理 GUI/本地化/可用性/等测试,我不希望这种经验可以帮助您成为精通安全测试人员。功能测试是一个不同的问题。事实上,根据 OWASP 方法,存在一组安全缺陷——业务逻辑缺陷——需要与用于典型功能测试的方法相同的方法。所以边缘比较模糊。

但是,总的来说,安全测试涉及的技术知识比功能测试通常要多得多。尽管后者仍然可以为您提供坚实的基础,学习实施系统的任务方法,培养预先计划您的活动的能力并获得一些通用的 IT 相关知识,但我不能说它们真的“交叉”结束”这么多。

我将通过解释它们的实际作用,用相当简单的语言进行解释。

让我们从渗透测试开始,因为我是一个人!

渗透测试人员通常被分配一个项目(在您的情况下是 Web 应用程序)进行测试,他们浏览网站,进行一些侦察并尝试找到 Web 应用程序的重要功能,例如对于电子商务网站,它可能是购物车或支付网关。因此,Penttesters 试图绕过 Web 应用程序中的正常程序并利用安全漏洞来确定是否可以访问或完成最终用户无权执行的某些操作。最后,他们记录调查结果,制作详细报告并将其提供给客户。请注意,渗透测试人员仅建议需要进行哪些更改以及开发人员的工作。

另一方面,软件测试人员具有更好的编码知识,他们试图在开发人员使用的逻辑中找到错误。他们可能会使用工具或手动完成,但重点是改进逻辑和不良代码以及兼容性问题。

因此,这两个领域可能听起来相似但彼此非常不同。现在就交叉而言,软件测试员可以成为应用程序安全测试员,就像他们可以测试应用程序代码的安全漏洞一样,但渗透测试员所需的技能完全不同。

一个简短而甜蜜的答案是:软件测试围绕代码审查和遵守安全编码实践。渗透测试利用各种方法来模拟一个攻击和充分利用一个目标系统/网络。

它们是相关的,因为渗透测试人员可能会通过网络上的可利用软件(即缓冲区溢出)访问您的系统。