网络安全从入门到精通 (第六章-1) XSS的原理分析与解剖

本文内容:

  • 什么是XSS?
  • XSS类型
  • XSS主要拼接是什么?
  • XSS判断是否存在方法
  • XSS能做什么
  • 如何打XSS
  • XSS主流防御方法
  • XSS常见场景
  • XSS绕过方法

1,什么是XSS?

  XSS:HTML代码注入。

  HTML代码注入:

    用户的输入会被当做HTML等前端代码执行。

    并不止是HTML代码,是前端的所有语言,如:JS、HTML、CSS。

  两个关键条件:

    1.用户能够控制输入。

    2.原本程序要执行的代码,拼接了用户输入的数据。

2,XSS主要拼接的是什么?

  SQL注入拼接的是操作数据库的SQL语句。

  SQL注入用户的输入会被当做SQL语句执行。

  XSS拼接的是网页HTML代码。

  XSS主要就是调用js。

3,XSS判断是否存在方法:

  业内一般把弹窗函数作为一个存在XSS的认定。

  最经典的判断方法:<script>alert(1)</script>

  一般证明XSS存在,就是在正常页面传参,然后构建函数让它弹窗,就是存在XSS了。

  弹窗证明具有XSS,不弹窗也不能证明不具有XSS,只是一种判断方法。

  为什么通过弹窗判断XSS?

    因为XSS攻击如果需要达到真正的利用,需要调用JS。

4,XSS能够做什么?
  盗取COOKIE(使用最频繁)[打哪偷那]

  获取内网IP

  获取浏览器保存的明文密码

  截取网页屏幕

  网页上键盘记录

5,如何打XSS:

  首先:因为达到各种各样的效果需要比较 复杂的代码,所以XSS平台应运而生。

  XSS平台:

    xsspt.com(开放注册)

    XSS9.com(填写邀请码)

    XSS平台大大方便了XSS攻击,只需要引入一个平台外部链接就可以实现功能了。

  打XSS:

    我们写入的代码,要当做JS执行

    在进行sql注入时,我们使用了0x标示,告诉数据库这个是十六进制。

    在进行XSS注入时,我们也需要使用标示,告诉浏览器这个是JS代码,而不是HTML之类的。

    触发JS方法有三种:
      1.标签:<script>alert(1)</script>

      2.伪协议:<a href=javascript:alert(1)>test</a>

      3.事件型:

        事件也是可以执行JS的。

        在HTML里面有一些标签它拥有事件

        事件:当满足了条件就可以触发。

      例如:

        onerror=alert(1)在加载文档或图像时,发生错误。<img src='a' onerror=alert(1)/>

        常用的有:onerror(失败加载执行)、onload(成功加载执行)、oninput(有输入框、输入的时候触发),onfocus获取焦点

       注意:

        第一种方法用的最多,被拦截的可能性最大。

        第二种方法触发的几率比较小,比较鸡肋,特殊的时候才能使用。

        第三种方法常用的

6,XSS防御方法:

  1.过滤尖括号,单引号、双引号。

  2.实体化编码。

7,XSS类型:

  反射型:XSS:提交的数据成功实现XSS,但是仅仅对本次访问有有效,非持久性攻击。

  存储型:XSS:提交的数据成功实现XSS,存入数据库每次访问有效,持久性攻击。

  DOM型:XSS:原本不存在XSS,经过JS处理之后产生了XSS。

    反射型XSS经过js处理变成放射Dom型Xss。

    存储型XSS经过js处理变成存储Dom型Xss。

8,XSS常见场景:

  重灾区:评论区、留言区、个人信息、订单信息等。

  针对型:站内信、网页即时通讯、私信、意见反馈

  存在风险:搜索框、当前目录、图片属性等。

9,XSS绕过方法:

  改变大小写:<ScRipt>ALeRt(“XSS”);</sCRipT>

  关闭标签:“><script>alert(“Hi”);</script>

  使用hex编码绕过。

  绕过magic_quotes_gpc。

  对标签属性值进行转码。

  事件型。

posted @ 2020-04-17 16:54  TheHIde  阅读(342)  评论(0编辑  收藏  举报