9

我正在寻找一种自动化的方式来模糊我的应用程序或扫描它的漏洞。请假设我的黑客知识为 0。而且源在我的本地主机上,所以我需要一种方法来在本地对其进行模糊测试,而不依赖于互联网连接。一些安全专家可以给我一些提示或建议吗?我不确定哪些选项是最好的。

编辑:

感谢您努力回答,但到目前为止似乎没有人明白这一点。我想更具体一点(因为它有助于解决问题),但不会影响意见或听起来像是在宣传特定产品。我正在寻找类似wapiti之类的东西(很抱歉提及名称,但不得不这样做,因为到目前为止,诸如了解 sql 注入、xss 等的答案显然不是这个问题的真正“专家”答案。我已经知道这些(认真,这个问题听起来像是不知道安全的人会问吗?

我不是在问我是否应该测试,我是在问我应该如何测试。我已经决定加入自动化(除非有人给我一个证明它无用的专家答案,否则这个决定没有回头路),所以请尊重我想要自动化的决定。我不想浏览每一个编译的 xss、sql 注入等黑客列表,并亲自针对我的网站手动尝试(即使黑客也不会那样破解)。超级加分给任何得到问题的人。

有人问为什么不学习。 最佳实践(我知道)与了解黑客攻击不同。有些人想争辩说他们是抛硬币,但我绝对不同意 :) 因此我需要一个具有“黑客心态”的人提供的保护工具。这会有什么伤害,事实上,您也应该尝试一下;)请知道的人提供专家答案。

4

7 回答 7

7

有些服务会自动扫描漏洞。他们不会抓住一切,但会帮助您发现问题。您最好的选择是使用其中一项服务并学习一些安全最佳实践。

开始学习sql 注入跨站点脚本。这些是最大且最容易修复的漏洞。

防御性编程是恕我直言,每个程序员都应该学习的技能。

没有什么可以替代您自己理解这些问题。

于 2009-10-20T18:40:19.853 回答
3

要严格回答您的问题,您应该测试的方式是使用工具。您可以使用两种主要类型的工具,一种是主动探测正在运行的网站的安全扫描器,另一种是在您用于构建 Web 应用程序的源代码上运行的静态分析工具。

简短的回答是你想要一个像 wapiti 或 burp 这样的安全扫描工具。像这样的工具会为您的站点动态构建和执行唯一的安全测试。您可以手动尝试利用自己的站点,但这会花费大量时间并且不会提供任何价值。浏览已知 xss 或 sql 注入问题的列表对您来说毫无用处,因为每个问题对于它所适用的站点都是唯一的。此外,这些工具可以更好地攻击您的网站,然后您可以为您提供更严格的安全压力测试。

您可以使用 2 个主要工具,静态分析工具和动态分析工具。静态分析工具读取您的源代码,找出数据流经应用程序的方式并查找安全问题。从根本上讲,大多数安全问题是允许用户控制一些流入应用程序不适当部分的数据,因此即使应用程序没有运行并且您遇到了停止问题,“猜测”和尝试的静态分析方法每条代码路径都可以产生良好的效果。静态分析工具依赖于语言,而且大多数都很昂贵。一些免费的有 fxcop (C#)、PMD 和 findbugs (java),参见http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

动态分析工具(通常称为“安全扫描器”)需要您设置您的 web 应用程序,以便它可以针对它运行测试,这听起来更像您想要的。我最喜欢的工具是 burp,一些免费的工具包括 wapiti,它也很好。这些工具将查看您的应用程序如何处理数据,查找输入并用恶意数据填充它们以尝试触发漏洞。一个示例测试将用于测试反射的跨站点脚本,扫描程序将查看页面并将 javascript 插入每个查询字符串值、cookie 值、表单值等,然后呈现页面以查看是否将恶意 javascript 回显到页。

您可能不需要或不需要模糊器。当有很多解析代码时,模糊测试工具主要帮助你,所以模糊测试器不是最适合 web 应用程序的,但它非常适合你正在制作的协议。上面列出的安全扫描工具中的模糊测试功能有限,您可能不需要更多。Fuzzers 也需要时间来构建。Fuzzers 经常在 c/c++ 代码中找到更多的东西,因为已经在做正确的事情的内置库更少,在 webapp 的情况下,可以说“fuzzers 发挥的空间”更少。

于 2009-10-20T23:32:03.130 回答
0

如果你知道 C,你可以使用尖峰,手动检查最终用户可能接触到的任何内容的溢出总是好的,通常的 %x%x%x 测试格式字符串攻击,只是勤于进行静态分析。

PeachFuzz 和 SPIKE 都有很好的文档记录。

如果做不到这一点,自己编写是微不足道的。

于 2009-10-20T19:02:49.747 回答
0

了解什么是 fuzzing 以及您可能希望如何处理并不一定能获得彻底测试和评估您的软件的漏洞和缺陷所需的技能。您需要使用自动化测试,但要以一种经过调整的方式,在您发现新的输入路径、交互等时修改工具正在执行的测试。

基本上,我要说的是,如果你想让它成为真正的增值,你需要知道你在做什么。你不能只选择一个工具,运行它,然后期望得到好的结果。您需要进行此类测试的人与您合作或为您工作。工具是有用的,但只有在本领域技术人员使用时才能产生有用的结果。

于 2009-10-26T23:44:20.257 回答
0

多年来,我一直在为自己的应用程序研究这个主题,最近发现了一个基于 PAROS 的出色工具(请参阅上面的其他答案)

它来自 OWASP 的 ZAP,是鸭子的坚果。

您可以做的最好的事情之一就是将 ZAP 集成到您的项目自动化/构建中,这样每当您进行构建时,测试就会运行。

更好的是,你可以把它放在你的 selenium 自动化测试旁边来“收集”你测试的页面,然后......把它们扫描出来!

它确实有很好的文档记录,但是您需要一台快速的 PC,因为它每页运行数百个测试。如果你正在做一个完整的网站,它可能需要一些时间。

您可能还需要考虑其他一些工具

我发现这个工具......非常易于使用且非常全面。

每当我用 ZAP 得到我认为的“误报”时,我会用 SQLmap 扫描页面(你必须弄清楚如何使用 Python——这很简单,花了几个小时),SQLmap 要么验证误报或找到漏洞。

于 2012-09-13T20:07:15.067 回答
0

在你对自动化发疯之前(这可能会产生你可能无法理解的结果),我建议你阅读编写安全代码的文章,并学会识别你做错的事情。以下是一些帮助您入门的教程:

http://php.net/manual/en/security.php

如果做不到这一点,我建议如果您负担得起,请将您的代码外包给安全公司。

祝你好运!

于 2009-10-20T18:41:16.957 回答
0

我使用过 Paros - http://www.parosproxy.org/ - 它免费、易于使用,并显示了错误的原因、可能的修复方法以及如何复制它(通常是一个链接)。

它易于配置和蜘蛛您的整个站点 - 它还可以蜘蛛本地安装。

它也有一个gui。

它很旧,但它又好又容易。

我尝试配置 WAPITI,但这对我来说太难了。

于 2012-07-30T17:36:15.220 回答