实验实训4

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

1、特点

(1)反射型XSS(Reflected XSS)

反射型XSS又称非持久型xss,是指攻击者在页面中插入恶意JavaScript脚本,当合法用户正常请求页面时,该恶意脚本会随着Web页面请求一并提交给服务器,服务器处理后进行响应,响应由浏览器解析后将JavaScript脚本的执行结果显示在页面中。整个过程就像是一次“客户端—服务器—客户端”的反射过程,恶意脚本没有经过服务器的过滤或处理,就被反射回客户端直接执行并显示相应的结果。

即时性:恶意代码在用户请求时被服务器即时反射并执行。

依赖用户互动:反射型XSS只有在用户点击时才会触发,且只执行一次。

无持久性:恶意代码不会被存储在服务器上,一旦页面刷新或请求结束,攻击也会随之消失。

(2)存储型XSS(Stored XSS)

存储型xss又称持久型xss,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端数据库中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到触发。

持久性:恶意代码被存储在服务器端(如数据库、文件系统),并在用户访问受影响页面时执行。

常见位置:用户留言、评论、用户昵称、用户信息等。

(3)DOM型XSS(DOM-based XSS)

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。HTML的标签都是节点,而这些节点组成了DOM的整体结构——节点树。通过HTML DOM,树中的所有结点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点。

客户端侧攻击:攻击发生在客户端,通过JavaScript操作DOM,直接在浏览器中注入恶意代码。

不依赖服务器端输出:恶意代码通常不会经过服务器,而是通过客户端脚本处理数据时注入。

依赖浏览器环境:受到浏览器版本和插件等客户端环境的影响。

2、区别总结

(1)触发方式:

反射型XSS:依赖用户点击恶意链接或提交恶意数据,代码即时反射,但经过了后端处理。

存储型XSS:恶意代码存储在服务器,影响所有访问该内容的用户。

DOM型XSS:通过客户端JavaScript脚本操作DOM触发,完全不经过后端。

(2)持久性:

反射型XSS:无持久性,攻击代码仅在请求期间有效。

存储型XSS:存入数据库,影响持久。

DOM型XSS:代码在客户端执行,通常无服务器端存储。

(3)攻击影响范围:

反射型XSS:影响单个用户,前提是点击了恶意链接。

存储型XSS:影响所有访问受感染页面的用户。

DOM型XSS:影响客户端执行特定脚本的用户,取决于客户端的环境。

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

XSS 的 fuzz 字典是一组用于探测和测试 XSS 漏洞的输入字符串集合,涵盖了常见的攻击载荷和可能导致异常行为的字符组合。使用这些字典可以帮助发现 Web 应用中的安全漏洞,确保输入处理的安全性。

GitHub上的fuzz字典:https://github.com/TheKingOfDuck/fuzzDicts

三、XSS挑战靶场打靶九关

靶场地址:https://xss.tesla-space.com/

Level1

(1)查看网站源码,可以发现get传参name的值test插入了html里头,回显了payload的长度

(2)在name参数上尝试用简单的js代码进行XSS攻击,将网址后面修改为?name=<script>alert(1)</script>

Level2

(1)尝试用简单的js代码进行XSS攻击发现没有用

(2)查看源代码

<h2 align=center>没有找到和<script>alert(1)</script>相关的结果.</h2><center>表示:<和>是HTML实体,用于表示小于号<和大于号>,这些实体使得文本 <script>alert(1)</script> 在HTML中被安全地显示为普通文本,而不会被浏览器解析为实际的HTML标签,防止XSS攻击。

<input name=keyword value="<script>alert(1)</script>">表示:如果<input> 没有对 value 属性中的内容进行适当的转义或过滤,可能会导致XSS攻击。

(3)尝试闭合当前属性的引号,然后插入自己的HTML">  <script>alert()</script>  <",发现攻击成功。

Level3

(1)尝试搜索一下,发现没有用。

(2)查看网页源代码,发现双引号(")也被转义,被过滤。

(3)尝试使用onclick事件(onclick事件是HTML和JavaScript中的一种事件处理机制,用于在用户点击一个元素时触发指定的JavaScript 函数或代码块,会出弹窗)

在网址上进行修改keyword='οnclick='alert(1),攻击成功。

Leve4

(1)分别尝试输入<script>alert(1)</script>与"> <script>alert()</script> <"然后查看源代码,结果如下,发现后者闭合标签与上一关一样。

(2)根据上一关的思路使用onclick事件,在网址上进行修改keyword="οnclick="alert(1),攻击成功

Level5

(1)尝试前几关的攻击方式,弹窗失败,于是查看源代码,发现on被替换成了o_n于是on开头的事件都不能使用了。

(2)无法使用<script>标签和事件来执行JS代码,于是尝试换一个标签来执行JS代码,使用新标签要先闭合<input>标签,尝试a href标签法

a href 标签法:一种利用<a>标签(锚点链接)中的href属性来执行恶意脚本的攻击手法。通过将恶意 JavaScript 代码嵌入到href 属性中,攻击者可以诱使用户点击链接,从而执行不安全的代码。

举例:<a href="http://example.com">Click Here</ a>

当用户点击该链接时,他们会被重定向到 Example Domain

根据前几关的综合思考,此处应当输入:

"> <a href=javascript:alert()>Click Here</a> <"

(3)点击蓝色的链接,攻击成功。

Level6

(1)尝试上一关的a href标签法发现无链接生成,于是打开网页源代码查看发现href被替换成hr_ef。

(2)尝试大小写的方法,将r替换为R,输入"> <a hRef=javascript:alert()>Click Here</a> <",发现链接生成。

(3)可尝试其他的大小写替换的<script>标签事件来执行JS代码

"> <sCript>alert()</sCript> <"

Level7

(1)分别尝试<script>标签on事件和a href标签法发现value的值都被删减

(2)既然被删减了href、script这种敏感单词,尝试插入敏感字母让其删减到剩下的值正确。

"> <a hrhrefef=javascriscriptpt:alert()>Click Here</a> <"

(3)点击生成的蓝色链接,攻击成功。

Level8

(1)输入 <a href=javascript:alert()>Click Here</a> <",无事发生,点击查看网页源代码,发现输入的值被插入了两个地方,一个是input标签,一个是href属性。

(2)分析第十七行与第二十行的代码可发现,input标签添加了html实体转化函数还把双引号也给实体化了, 添加了小写转化函数,还有过滤掉了src、data、onfocus、href、script、"

(3)其中href的隐藏属性是自动Unicode解码,利用这个隐藏属性,我们可以插入一段js伪协议:javascript:alert(),利用在线工具对其进行Unicode编码得到:

javascript:alert()

将其输入,点击添加友情链接再点击友情链接即可攻击成功。

Level9

(1)输入上一关的js伪协议再查看网页源代码,发现链接不合法。

(2)尝试在伪协议后加/*http://*/,攻击成功。

四、总结浏览器解析机制

浏览器解析机制是将 HTML、CSS 和 JavaScript 代码转换为可视化页面的过程。

1、输入网址

当我们在浏览器的地址栏输入网址并按下回车键时,浏览器首先要做的是找到这个网页所在的服务器。

DNS解析:浏览器首先会向DNS(域名系统)服务器询问这个网址对应的IP地址。

2、建立连接

找到服务器后,浏览器需要和服务器建立连接(TCP或SSL/TLS)。

TCP连接:为了确保数据能稳定传输,浏览器会和服务器建立一个TCP连接。

SSL/TLS加密:如果访问的是HTTPS网站,浏览器会与服务器协商一种加密方式,以保证接下来传输的数据不会被窃听。

3、发送请求

浏览器通过HTTP协议发送请求,表明它想要获取哪些资源,比如网页的HTML代码、图片、样式表等。

4、服务器响应

服务器收到请求后,就会打包好网页内容,通过网络发回给浏览器。(服务器的响应通常包括网页的HTML文件以及其他资源的链接。这些内容被打包成数据包,通过网络传回浏览器)

5、解析HTML

当浏览器接收到服务器发回的HTML文件,它开始解析这些代码,构建出一个网页的“骨架”。

DOM树:浏览器会将HTML代码解析成一个叫做“DOM树”的结构。DOM树可以理解为网页的“骨架”,它把HTML的各个标签像树枝一样连接起来,形成了网页的结构。

6、解析CSS

网页不仅仅有结构,还需要漂亮的外观,这就是由CSS决定的。

CSSOM树:浏览器解析CSS文件,生成一个叫做CSSOM树的结构,它决定了网页元素的样式,比如颜色、字体、大小、布局等。

7、执行JavaScript

有些网页还会包含JavaScript代码,用于实现互动效果,比如按钮点击、表单验证等。

JavaScript引擎:浏览器内置的JavaScript引擎会逐行解释并执行JavaScript代码。这些代码可能会动态修改DOM树或CSSOM树,进一步影响网页的内容和外观。

8、构建渲染树

有了DOM树和CSSOM树后,浏览器需要把它们结合起来,生成一个“渲染树”。

渲染树:渲染树结合了网页的结构和样式,是最终决定网页如何展示的模型。它包含了每个元素的大小、位置、颜色等信息。

9、布局和绘制

然后浏览器会计算出每个元素在屏幕上的具体位置,并把它们绘制到屏幕上。

布局:浏览器通过“布局”过程确定渲染树中每个元素的确切位置和大小。

绘制:布局完成后,浏览器会根据这些信息开始“绘制”,也就是把各个元素显示在屏幕上。

10、用户与页面交互

网页渲染完成后,用户就可以与页面进行交互,比如点击按钮、输入文本等。

事件处理:浏览器会监听用户的操作,并根据预先定义的JavaScript代码做出响应。这些交互可能会再次修改DOM树或触发新的HTTP请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值