Web网络安全分析XSS漏洞原理详解

目录
  • XSS基础
    • XSS漏洞介绍
    • XSS漏洞原理
      • 反射型XSS
      • 存储型XSS
      • DOM型XSS

XSS基础

XSS漏洞介绍

跨站脚本(Cross-Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会收到影响。恶意用户利用XSS代码攻击成功后,可能得到很高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

XSS攻击可以分为三种:反射型、存储型和DOM型。

XSS漏洞原理

反射型XSS

反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。

攻击方式:攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。

存储型XSS

存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。

攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器保存下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。

例如,恶意攻击者在留言板中加入以下代码。

<script>alert(/hacked by hacker/)</script>

当其他用户访问留言板时,就会看到一个弹窗。可以看出,存储型XSS的攻击方式能够将恶意代码永久地嵌入夜歌页面中,所有访问这个页面的用户都将成为受害者。如果我们能够谨慎对待不明链接,那么反射型XSS攻击将没有多大作为,而存储型XSS则不同,由于它注入在一些我们信任的页面,因此无论我们多么小心都难免会受到攻击。

DOM型XSS

DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档内容、结构及样式。

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

HTML的标签都是节点,而这些节点组成了DOM的整体结构——节点树。通过HTML DOM,树中所有节点均可通过JavaScript进行访问。所有HTML(节点)均可被修改,也可以创建或删除节点。HTML DOM树结构如图67所示。

图67 HTML DOM树

在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document Object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器交互,它只发生在客户端处理数据的阶段。

攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

以上就是Web网络安全分析XSS漏洞原理详解的详细内容,更多关于Web网络安全XSS漏洞的资料请关注我们其它相关文章!

(0)

相关推荐

  • Web网络安全解析宽字节注入攻击原理

    目录 宽字节注入攻击 宽字节注入代码分析 宽字节注入攻击 宽字节注入攻击的测试地址:http://127.0.0.1/sqli/kuanzijie.php?id=1. 访问id=1',页面返回的结果如图46所示,程序并没有报错,反而多了一个转义符(反斜杠). 图46 单引号被转义 从返回的结果可以看出,参数id=1在数据库查询时是被单引号包围的.当传入id=1'时,传入的单引号又被转义符(反斜杠)转义,导致参数ID无法逃逸单引号的包围,所以在一般情况下,此处是不存在SQL注入漏洞的.不过有一个特

  • Web网络安全分析SQL注入绕过技术原理

    目录 SQL注入绕过技术 大小写绕过注入 双写绕过注入 编码绕过注入 内联注释绕过注入 SQL注入修复建议 过滤危险字符 使用预编译语句 SQL注入绕过技术 大小写绕过注入 使用关键字大小写的方式尝试绕过,如And 1=1(任意字母大小写都可以,如aNd 1=1,AND 1=1等),就可以看到访问id=1 And 1=1时页面返回与id=1相同的结果,访问id=1 And 1=2时页面返回与id=1不同的结果,得出存在SQL注入漏洞的结论. 使用order by查询字段数量,还是利用修改关键字大

  • Web网络安全分析Base64注入攻击原理详解

    目录 Base64注入攻击 Base64注入代码分析 Base64注入攻击 Base64攻击的测试地址:http://127.0.0.1/sqli/base64.php?id=MQ%3d%3d. 从URL中可以看出,ID参数经过Base64编码(%3d是=的URL编码格式),解码后发现ID为1,尝试加上一个单引号并一起转换成Base64编码,如图59所示. 图59 对1'进行Base64编码 当访问id=1'编码后的网址时(http://127.0.0.1/sqli/base64.php?id=

  • Web安全解析报错注入攻击原理

    目录 1.报错注入攻击 2.报错注入代码分析 1.报错注入攻击 报错注入攻击的测试地址:http://127.0.0.1/sqli/error.php?username=1. 访问该网址时,页面返回ok,如图28所示. 图28 访问username=1时页面的的结果 访问http://127.0.0.1/sqli/error.php?username=1',因为参数username的值是1',在数据库中执行SQL时,会因为多了一个单引号而报错,输出到页面的结果如图29所示. 图29 访问user

  • Web网络安全分析XFF注入攻击原理详解

    目录 XFF注入 XFF注入代码分析 XFF注入 XFF注入攻击的测试地址:http://127.0.0.1/sqli/xff.php. X-Forwarded-for简称XFF头,它代表客户端真实的IP,通过修改X-Forwarded-for的值可以伪造客户端IP.通过Burp Suite住区数据包内容,将X-Forwarded-for设置为11.22.33.44,然后访问改URL,页面返回正常,如图62所示. 图62 XFF头 将X-Forwarded-for设置为11.22.33.44',

  • Web网络安全解析cookie注入攻击原理

    目录 cookie注入攻击 cookie注入代码分析 cookie注入攻击 cookie注入攻击的测试地址:http://127.0.0.1/sqli/cookie.php. 发现URL中没有GET参数,但是页面返回正常,使用Burp Suite抓取数据包,发现cookie中存在id=1的参数,如图56所示. 图56 cookie数据 修改cookie中的id=1为id=1',然后再次访问该URL,发现页面返回错误.接下来,分别修改cookie中id=1 and 1=1和id=1 and 1=2

  • Web网络安全分析XSS漏洞原理详解

    目录 XSS基础 XSS漏洞介绍 XSS漏洞原理 反射型XSS 存储型XSS DOM型XSS XSS基础 XSS漏洞介绍 跨站脚本(Cross-Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种.它允许恶意用户将代码注入网页,其他用户在浏览网页时就会收到影响.恶意用户利用XSS代码攻击成功后,可能得到很高的权限(如执行一些操作).私密网页内容.会话和cookie等各种内容. XSS攻击可以分为三种:反射型.存储型和DOM

  • Web网络安全漏洞分析SQL注入原理详解

    目录 一.SQL注入的基础 1.1 介绍SQL注入 1.2 注入的原理 1.3 与MySQL注入相关的知识 MySQL查询语句 limit的用法 需要记住的几个函数 注释符 内联注释 一.SQL注入的基础 1.1 介绍SQL注入 SQL注入就是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作. 下面以PHP语句为例. $query = "SELECT * FROM users WH

  • Web网络安全分析Union注入攻击原理详解

    目录 1.Union注入攻击 2.Union注入代码分析 1.Union注入攻击 Union注入攻击的测试地址:http://127.0.0.1/sqli/union.php?di=1. 访问该网址时,页面返回的结果如图6所示. 图6 访问id=1时页面的结果 在URL后添加一个单引号,再次访问,如图7所示,页面返回结果与id=1的结果不同. 图7 访问id=1'时页面的结果 访问id=1 and 1=1,由于and 1=1为真,所以页面应返回与id=1相同的结果,如图8所示.访问id=1 an

  • Web网络安全分析二次注入攻击原理详解

    目录 二次注入攻击 二次注入代码分析 二次注入攻击 二次注入攻击的测试地址:http://127.0.0.1/sqli/double1.php?username=test 和 http://127.0.0.1/sqli/double2.php?id=1. 其中,double1.php页面的功能是注册用户名,也是插入SQL语句的地方:double2.php页面的功能是通过参数ID读取用户名和用户信息. 第一步,访问double1.php?username=test',如图40所示. 图40 注册用

  • Web网络安全分析存储型XSS攻击漏洞原理

    目录 存储型XSS攻击 存储型XSS代码分析 存储型XSS攻击 存储型XSS页面实现的功能是:获取用户输入的留言信息.标题和内容,然后将标题和内容插入到数据库中,并将数据库的留言信息输出到页面上,如图71所示. 图71 输入留言信息 当用户在标题处写入1,内容处写入2时,数据库中的数据如图72所示. 图72 保存留言信息到数据库 当输入标题为<img src=X οnerrοr="alert(/xss/)"/>.然后将标题输出到页面时,页面执行了<img src=X

  • web网络安全分析反射型XSS攻击原理

    目录 反射型XSS攻击 反射型XSS代码分析 反射型XSS攻击 页面http://127.0.0.1/xss/xss1.php实现的功能是在"输入"表单中输入内容,单击"提交"按钮后,将输入的内容放到"输出"表单中,例如当输入"11",单击"提交"按钮时,"11"将被输出到"输出"表单中,效果如图68所示. 图68 输入参数被输出到页面 当访问http://127.0

  • Web网络安全分析堆叠查询注入攻击原理

    目录 1.堆叠查询注入攻击 2.堆叠准入代码分析 1.堆叠查询注入攻击 堆叠查询注入攻击的测试地址:http://127.0.0.1/sqli/duidie.php?id=1. 堆叠查询可以执行多条语句,多语句之间以分好隔开.堆叠查询注入就是利用这个特点,在第二个SQL语句中构造自己要执行的语句.首先访问id=1',页面返回MySQL错误,在访问id=1'--+,页面返回正常的结果.这里可以使用Boolean注入.时间注入,也可以使用另一种注入方式--堆叠注入. 堆叠注入的语句为: ';sele

随机推荐