如果一个网站编码<
为<
,是否仍然可以执行跨站点脚本>
?>
您会将脚本标签包含在什么中?
例如,在我的一个网站上我可以<script>alert(1)</script>
正常使用,但是在编码发生时我怎么能做同样的事情呢?
如果一个网站编码<
为<
,是否仍然可以执行跨站点脚本>
?>
您会将脚本标签包含在什么中?
例如,在我的一个网站上我可以<script>alert(1)</script>
正常使用,但是在编码发生时我怎么能做同样的事情呢?
哦,是的!
考虑这个 HTML:
<a href="{{str}}">
并考虑如下输入:
" onmouseover="alert('GOTCHA')"
你得到图片。
如果您的 javascript 被注入到标签中,那么您不需要尖括号。我从这个类似的 S/O 帖子中借用了这个:https ://stackoverflow.com/questions/5696244/xss-is-escaping-and-sufficient
如果您对像这样的过滤器规避感兴趣,请咨询:
https://owasp.org/www-community/xss-filter-evasion-cheatsheet
这有所有常见的东西。
就安全而言:编码所有东西!你永远不知道攻击者有多聪明。
对于跨站点脚本,最重要的是上下文。它被反映或存储的上下文。我将用我的经验中的一个真实例子来证明这一点。有一次,在寻找错误时,我注意到一个 URL 参数反映在一个变量中:
http://www.example.com/blah.php?id=test&var=101011
var 的值在页面加载时反映在页面源中,大致如下格式,在脚本块内:
var a = "101011";
并注入尽可能多的'<'会将请求转移到WAF,这会引发错误页面,所以我处理这个问题的实际有效负载是:
prompt(1)";eval(a);
绕过WAF,成为反射型XSS的成功案例。因此,应根据上下文修改有效负载,您可能不需要标签。希望有帮助。