我有带有maxlength=12的输入框,该输入框易受xss攻击。
但是,由于最大长度12,所以不可能构造任何真正有效的xss向量。用户输入存储在属性value="user input"中。当用户使用burpproxy拦截post请求时,他可以更改post参数并导致xss。
现在,我的问题是,可以从其他站点发出一个post请求,该请求绕过maxlength元素。在我的攻击尝试中,它会带我到输入框所在的页面,并切断第12个字符之后的所有内容。
是否可以伪造post请求并绕过最大长度来利用xss问题?
这是在页面上搜索最大长度的表单:
这是我试图从我的页面中利用它的方法:
当我单击“剥削页面”按钮时,它只会将我送回主页面,并在第12个字符处切断输入。
发布于 2012-06-18 16:22:33
是。这是可能的。Maxlenght是客户端浏览器的DOM对象中的html属性。
Maxlenght仅在客户端浏览器中有效,而在服务器端,除非您编码服务器端以验证输入长度,否则在服务器端没有意义。
如果您使用的是不创建DOM对象的拦截代理,则可以轻松绕过Maxlength或任何其他参数和javascripts。
绕过可以通过具有不同html属性的不同域/网页完成,该属性不对输入长度施加任何限制以导致XSS。
听起来您尝试的XSS类型是服务器端非持久性XSS缺陷-用户输入由恶意代码组成,这些恶意代码在服务器对请求的响应中被返回,它不会存储在web应用程序中,因此它是特定于该请求的。
我认为您需要改进用于利用XSS的javascript。onmouseover="alert(0)"无法利用XSS,它只是对客户端浏览器基于DOM的本地操作,onmouseover不会将输入发送到服务器以返回给客户端。您的javascript必须发送到http://www.site.rs/usersearch.php并由服务器返回。
发布于 2012-06-18 16:23:17
maxlength不是一种保护,而是为了可用性目的(而不是安全性)。有很多方法可以绕过这种保护。最简单的方法是用表单创建另一个网站,提交到您的位置。
所有的消毒/限制都不应该在客户端使用。每个JavaScript或xHTML (如maxlength)都不利于安全目的。最好的解决方案是进行服务器端验证。
https://security.stackexchange.com/questions/16187
复制相似问题