第四章—8.29—G_c

1. 总结反射型、存储型、DOM型XSS特点和区别

反射型(Reflected Cross-site Scripting)


反射型xss也称作非持久型、参数型跨站脚本。

  • 主要用于将恶意脚本附加到URL地址的参数中。
  • 产生层面:前端
  • 漏洞特征:一次性的、前端执行、不会储存在后端数据库
  • 危害等级:中
  • 反射型XSS形成的一个过程

反射型 XSS 的攻击步骤:

  1. 攻击者构造出特殊的 URL,其中包含恶意代码。
  2. 用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
  3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。


储存型(Stored Cross-site Scripting)

  • 此类XSS不需要用户单击特定URL就能执行跨站脚本。
  • 攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中。
  • 当受害者浏览包含此恶意JavaScript代码的页面就会执行恶意代码。
  • 产生层面:后端
  • 漏洞特征:持久性的、前端执行、储存在后端数据库
  • 危害等级:高
  • 存储型 XSS 常出现在网站的留言版、评论、博客日志等交互处

存储型XSS数据交互过程:
用户输入数据->后端执行php代码-> 存入数据库某张表 ->返回数据给php页面->回显前端

 函数:

  • die()//函数输出一条消息,并退出当前脚本
  • trim()//函数从字符串的两端删除空白字符和其他预定义字符
  • stripslashes()//删除反斜杠
  • mysql_real_escape_string()//转义 SQL 语句中使用的字符串中的特殊字符
  • mysql_query(query) //mysql_query() 函数执行一条 MySQL 查询
  • mysql_error()//返回上一个 MySQL 操作产生的文本错误信息

存储型 XSS 的攻击步骤:

  1. 攻击者将恶意代码提交到目标网站的数据库中。
  2. 用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
  3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指
  5. 定的操作。
  6. 这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等

DOM型XSS

  • 产生层面:前端、特殊的反射型XSS
  • 漏洞特征:一次性的、前端执行、不会储存在后端数据库、程序执行不依赖
  • 于服务器端的数据
  • web server不参与,仅仅涉及到浏览器的XSS。
  • 危害等级:中

DOM型XSS原理:

  • DOM XSS的XSS代码不需要服务端解析响应的直接参与,触发XSS的是浏览器端的DOM解析。
  • 用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤,应用程序就可能受到基于DOM的XSS攻击。

什么是DOM(Document Object Model):

  • DOM是JS操作网页的接口,全称为“文档对象模型”(Document Object Model)。它的作用是将网页转为一个JS对象,从而可以用脚本进行各种操作(比如增删内容)

DOM节点:

  1. 元素节点:在“购物清单”例子中,<body>、<p>、<ul>之类的元素在文档中的布局形成了文档的结构,它们即是元素节点。
  2. 文本节点:文档通常会包含一些内容,这些内容多数由文本提供,如前面的例子中,<p>包含着文本“欢迎购买” ,它就是一个文本节点。
  3. 属性节点:元素或多或少都有一些属性,属性用于对元素做出更具体的描述

DOM型原理:

  • XSS原理客户端的脚本程序可以通过DOM动态地检查和修改页面内容。
  • 程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行。
  • 浏览器用户可以操纵DOM中的一些对象,例如URL、location等。
  • 用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,应用程序就可能受到基于DOM的XSS攻击。

三种类型的XSS区别:


与之前两类XSS漏洞不同的是:
漏洞发生原因跟服务器解析无关,纯粹是JS代码读取了URL内容导致。
dom-xss取决于输出位置,并不取决于输出环境
因此检测JS代码中可能触发DOM型XSS的属性如下:
1、document.referer 属性
2、window.name 属性
3、location 属性
4、innerHTML 属性
5、documen.write 属性



2. 上网搜索一份XSS 的fuzz字典或字典生成工具

网上很多,这个相对全面一点:web的都有

GitHub - TheKingOfDuck/fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。



3. 到XSS挑战靶场打靶,要求通过5关以上,通关越多,加分越多。(https://xss.tesla-space.com/)

第一关:

发现提交了参数name=test,页面上又出现了test,试一下直接注入<script>alert(1)</script>

done.

第二关:

改一下输入内容:

明显的回显,直接注入试试<script>alert(1)</script>

没反应,f12看看前端代码;

试下闭合掉引号:"><script>alert(1)</script>

done

第三关:

源码一看这不和level2一样吗,试一下发现,输入的“”和<>被过滤了

于是试一下不带<>的语句,双引号使用单引号来闭合' οnmοuseοver=alert(9) '

done

第四关:

直接<script>alert(1)</script>

没反应,看看源代码发现,<>被过滤掉了,试着构造"οnmοuseοver=alert(9) "

done

第五关:

试了两个发现:o给我转成了o_;r给我转成了r_;

试试大写绕过,无用,依然被过滤了;

多换几个标签试试。。。

找到了"><a href=javascript:alert('xss')>test</a>

done



4. 总结浏览器解析机制

浏览器解析机制是指浏览器如何将用户输入的网页地址(URL)解析为实际可显示的网页内容的过程。这个过程涉及多个步骤,从用户输入URL开始,到浏览器显示网页结束。以下是浏览器解析的主要步骤:

1. URL 解析

  • 用户输入:当用户在浏览器地址栏中输入一个URL时,浏览器首先会解析这个URL,确定要访问的资源位置。URL通常包括协议(如http://https://)、域名(如www.example.com)、路径、查询参数等。
  • DNS 解析:浏览器将域名发送给DNS服务器,DNS服务器返回该域名对应的IP地址,浏览器使用这个IP地址与目标服务器建立连接。

2. 建立连接

  • TCP/IP 连接:浏览器通过TCP/IP协议与目标服务器建立连接。如果使用HTTPS协议,还会执行TLS/SSL握手以确保连接安全。
  • 请求资源:浏览器向服务器发送一个HTTP或HTTPS请求,要求获取网页资源(如HTML文件、CSS样式表、JavaScript文件等)。

3. 接收和处理响应

  • 服务器响应:服务器处理浏览器的请求,并返回相应的内容,如HTML文档、图片、视频、CSS、JavaScript等。响应还可能包含HTTP状态码,用于指示请求的结果(如200 OK,404 Not Found)。
  • 内容解码:如果服务器响应是经过压缩或编码的(如Gzip压缩),浏览器会先对其进行解码。

4. 解析与渲染

  • HTML 解析:浏览器开始解析接收到的HTML文档,构建DOM(文档对象模型)树结构。HTML文档中的标签和元素会被逐一解析,并加入到DOM树中。
  • CSS 解析:同时,浏览器还会解析与HTML相关联的CSS文件,构建CSSOM(CSS对象模型)树,以确定各个元素的样式。
  • JavaScript 执行:在解析HTML的过程中,如果遇到JavaScript代码或引用的外部JavaScript文件,浏览器会暂停HTML解析,执行JavaScript代码。JavaScript可能会动态地修改DOM和CSSOM树。
  • 布局(Layout):浏览器根据构建的DOM树和CSSOM树来计算每个元素在页面上的位置和大小,这个过程称为布局。
  • 绘制(Painting):布局完成后,浏览器将页面内容绘制到屏幕上,包括文本、图片、背景等。
  • 复合(Compositing):最终,浏览器将各个层(Layer)组合成最终的页面,并显示给用户。

5. 优化与更新

  • 渲染优化:现代浏览器会对渲染过程进行优化,例如减少重绘(Repaint)和重排(Reflow)次数,以提高页面加载和交互的性能。
  • 事件处理与交互:浏览器会持续监听用户的交互(如点击、输入等)和异步事件(如XHR、Fetch等),并实时更新页面。

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值