是否可以在输入框中伪造发布请求并绕过 maxlength?

信息安全 xss
2021-08-17 13:54:01

我有带有 的输入框maxlength=12,并且该输入框容易受到 xss 的攻击。

但是由于 maxlength 12 不可能构造任何真正有效的 xss 向量。用户输入存储在属性中value="user input"当用户用burpproxy拦截post请求时,可以更改post参数,导致xss。

现在我的问题是是否可以从绕过 maxlength 元素的其他站点发出发布请求。在我的漏洞利用尝试中,它会将我带到输入框所在的页面,并切断第 12 个字符之后的所有内容。

是否可以伪造该帖子请求并绕过 maxlength 以利用 xss 问题?

这是带有 maxlength 的页面上的表单搜索:

这是我尝试从我的页面利用它:

当我单击漏洞利用页面按钮时,它只会将我发送回主页,并且输入在第 12 个字符处被切断。

2个回答

是的。有可能的。Maxlenght 是客户端浏览器的 DOM 对象中的一个 html 属性。

Maxlenght 仅在客户端浏览器中很重要,它在服务器端并不重要,除非您对服务器端进行编码以验证输入长度。

如果您使用不创建 DOM 对象的拦截代理,也可以轻松绕过 Maxlength 或任何其他参数和 javascript。

绕过可以通过具有不同 html 属性的不同域/网页来完成,该属性不对输入长度施加任何限制以导致 XSS。

听起来您尝试的 XSS 类型是服务器端非持久性 XSS 缺陷 - 用户输入包含在服务器对请求的响应中返回的恶意代码,它不会存储在 Web 应用程序中,因此它特定于那个请求。

我认为您需要改进用于利用 XSS 的 javascript。onmouseover="alert(0)"不能利用 XSS,它只是对客户端浏览器的基于 DOM 的本地操作,onmouseover不会将输入发送到服务器以返回给客户端。您的 javascript 必须发送到http://www.site.rs/usersearch.php服务器并由服务器返回。

maxlength不是保护,而是出于可用性目的(而不是安全性)。有很多方法可以绕过这种保护。最简单的方法是使用表单创建另一个网站,该网站提交到您的位置。

不应在客户端使用每个清理/限制。每个 JavaScript 或 xHTML(如maxlength)都不利于安全目的。最好的解决方案是进行服务器端验证。