动态应用安全测试工具

信息安全 Web应用程序 自动化测试
2021-08-14 11:26:54

是否有可以在动态 html /JavaScript ajax 应用程序上运行的动态应用程序安全测试 (DAST) 工具?一个开源选项将是理想的 - 或者如果不存在,那么企业工具的一个功能将是银牌答案。

我有一个 ExtJS(JavaScript) 应用程序并尝试使用 HP Fortify,但此工具只能看到索引页面,因此无法运行应用程序分析。

我不是在寻找一种工具来单独提供保护,而是作为我工具带中的一个项目来帮助提供一些通知,表明应用程序中存在明显或明显的错误(其他工具是代码审查、渗透测试等)该工具的任何结果集都应告知存在问题,但我理解没有工具能够告知他们不存在。

此外,除了并发渗透测试之外,还可以使用任何工具。将给出您个人使用该工具的经验的示例,因为在 IBM AppScan 演示和 NTO Spider 讨论之后,我仍然没有任何具体的(不是营销材料)表明这个问题是否只是一个兔子洞。

3个回答

您正在寻找漏洞扫描的“灵丹妙药”。每个漏洞扫描器都声称支持基于 JavaScript 和 Web 服务的应用程序,这是一个完全的谎言。事实是,这是一个非常难以解决的问题,销售团队会告诉你任何让你打开钱包的事情。

我使用混合的手动和自动方法测试这些应用程序。我使用的工具是 Burp Intruder。我通过浏览器手动使用该应用程序,Burp 跟踪请求,然后将它们发送给入侵者进行模糊测试。如果您不习惯构建自己的模糊测试用例和编写漏洞利用代码,那么您可能应该聘请专业的渗透测试员。

仅仅运行一个工具并不能避免被黑客入侵。

我认为这是一个需要解决的非常复杂的问题,我们所拥有的任何工具都相对年轻。但是,我认为那里有一些不错的选择,并且有些人在这个领域开创了先河。

我认为您提出的问题有两个方面:

  • 最明显的是爬行。该工具需要能够映射整个应用程序,包括它可能发出的任何服务器请求,以实现良好的覆盖/广度。传统上,这只是通过在 HTML 页面中抓取指向更多页面的链接和表单来实现,但对于 Ajax 通信和单页面应用程序,这变得很困难。

  • 此外,客户端繁重的应用程序,在用户代理中执行应用程序逻辑的大量 Javascript 代码,更有可能在客户端代码本身中存在安全漏洞。任何使用客户端脚本的应用程序中都可能出现基于 DOM 的跨站点脚本等缺陷,因此理想情况下,工具也需要能够发现此代码中的漏洞。

一些工具已被证明具有这些能力,共同点是处理 Javascript 的能力。例如,渗透测试人员可以使用像Crawljax这样的工具来映射应用程序,方法是像在浏览器中一样实际处理每个页面(有时通过在浏览器实例中实际加载它)。我们还有很棒的实用程序,例如PhantomJS,它允许在无头模式下处理 Javascript 代码。

以下是我使用的几个工具,它们尝试实现上述目标 - 两者都是开源的:

  • OWASP Zed 攻击代理 (ZAP) - OWASP ZAP 具有 AJAX 爬虫(除了传统爬虫之外),它实际上生成浏览器实例,以呈现和处理页面并识别通过应用程序的新路径。我不认为自动扫描器会检测到很多客户端代码问题,但 ZAP 至少引入了一些很好的功能来手动测试这些问题。

  • Arachni - 这是我个人使用过的最好的自动扫描仪,我认为这是一个非常棒的项目。它似乎在抓取大多数 HTML5 应用程序方面做得非常好,它使用 PhantomJS 来处理 Javascript(无头)。对基于 DOM 的 XSS 和类似的测试似乎也很有效。

对于现代 HTML5 Web 应用程序,我认为没有任何工具特别完善,但肯定有一些进展,而且它们只会变得更好。

毋庸置疑,与渗透测试相比,自动化测试工具非常有限,尤其是在 appsec 领域,因此应该结合使用(正如 OP 所承认的那样)。我的回答假设需要一个完全自动化的解决方案。在可以不断涉及人工操作员的情况下,像 Burp Suite 这样的东西绝对是一个不错的选择。

IBM 有一个用于分析 Javascript 和 AJAX-y Web 应用程序漏洞的工具。它被称为Javascript Security Analyzer,我认为它包含在某些版本的 IBM AppScan 中。我没有个人经验,但他们的一些出版物听起来像是你正在寻找的东西。它动态爬取您的网站以查找和运行所有 Javascript 代码,然后静态分析 Javascript 和网页以查找客户端 XSS 和其他类似漏洞。

我不知道有任何这种开源工具。Web 渗透测试工具通常不具备分析 Javascript 代码中漏洞的能力,并且发现客户端 XSS 可能并非易事。