8

OWASP 的 ZAP 的结果对于消除我网站的易受攻击部分非常有用。

但是,我发现了很多我根本无法修复的结果。例如,它已放入javascript:alert(1);变量的 get 参数之一。这个变量然后由 PHP 在隐藏元素的value属性中输出。所以最终的 HTML 看起来像:

<input type="hidden" name="someName" id="someID" value="javascript:alert(1);"/>

此值通常用于使用 JavaScript 填充下拉列表。如果为 1,则显示可选的搜索过滤器,如果为 0,则不显示任何内容。所以它只用于失败的字符串比较。

我认为没有办法利用这一点,警报不会像 ZAP 向我展示的其他攻击那样运行。输出经过编码,因此它们无法通过"/>像以前发现的攻击一样提前结束引号或元素来注入 HTML,因为这些字符成为它们的 HTML 实体对应物。

这是否只是 ZAP 与页面源中的输入字符串匹配的误报,因为编码javascript:alert(1);仍然等于完全相同javascript:alert(1);

4

3 回答 3

3

该漏洞意味着 ZAP 设法将任意代码插入该输入字段。这意味着您很可能不会在应用程序的某处验证用户输入。

您应该更加小心地生成该输入字段,并确保用于生成它的 GET 参数得到相应的验证。

请记住,安全总比抱歉(即您的应用程序受到威胁)要好。

于 2015-03-04T08:17:33.007 回答
2

是的,OWASP 的 ZAP 会尝试在您的网站上查找漏洞,并且它会自动运行。

如果成功地将任何部分代码添加到您的网站中,则该网站将自动被视为易受攻击。

如果您的网站只接受“0”或“1”作为隐藏输入的值,并且没有在任何地方保存或提示该值(甚至没有到 cookie),这不是安全漏洞,您是安全的。

于 2015-03-01T12:45:44.510 回答
1

您的 HTML 对我来说看起来很安全。但是,考虑一个类似的情况:

<a href="javascript:alert(1);">test</a>

这将生成一个执行 JavaScript 的链接。可能是 ZAP 格外小心,这样的案件才会被处理。

对于这种特定情况,您应该将用户提供的链接中允许的 URL 方案列入白名单。例如只允许 http、https、mailto 等。

于 2017-03-20T05:29:07.637 回答