网安实训Day4>_<

一、反射型、存储型、DOM型XSS特点及区别

XSS属于注入类漏洞,其本质是:在前端代码中用户可以控制内容的地方(简称可控点),拼接上一段可被浏览器执行的新语句。这里可被浏览器执行是关键,不管你正在测试的点是否有漏洞,首先拼接上去的脚本同上下文看来,需要一定程度的符合前端代码的语法结构。

(一)反射型XSS

1.反射型跨站脚本也称作非持久型、参数型跨站脚本、这类型的脚本是最常见的 ,也是使用最为广泛的一种,主要用于将恶意的脚本附加到URL地址的参数中。

如:http://www.test.com/search.php?key="><script>alert("xss")</script>"

2.攻击流程:

(1)黑客向用户发送带有XSS恶意脚本的链接

(2)用户点击恶意链接访问目标服务器

(3)网站将XSS连同正常页面返回到用户浏览器

(4)用户浏览器解析了XSS恶意代码,向恶意服务器发送请求

(5)黑客在自己搭建的恶意服务器获取用户提交的信息

(二)存储型XSS

1.存储型XSS:持久性,代码是存储在web服务器中的,比如在个人信息或发表文章等地方插入代码,如果没有过滤或者过滤不严,那么这些代码将存储在服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫、盗窃cookie。每一个访问特定页面的用户,都会受到攻击。

2.攻击流程:

(1)黑客在目标服务器上构造xss恶意脚本保存在数据库中

(2)用户在网站登录状态下访问了目标服务器,查看了存在恶意脚本的页面

(3)网站将XSS同正常页面返回到用户浏览器

(4)用户浏览器解析了XSS恶意代码,向恶意服务器发起请求

(5)黑客从自己搭建的恶意服务器中获取用户提交的信息

(三)DOM型XSS

1.基于DOM(Document Object Model,文档对象模型)的跨站脚本攻击是一种更高级的攻击形式,通过篡改DOM注入恶意脚本。DOM提供对文档结构化的描述,并将HTML页面与脚本、程序语言联系起来,当网页被加载时,浏览器会创建页面的文档对象模型DOM。Web程序的客户端侧JavaScript脚本可以对DOM进行编辑从而动态修改网页内容,也就是从DOM获取数据然后在用户本地执行。在这个过程中,如果数据处理不当,攻击者就可以将恶意脚本注入DOM,然后读取DOM数据时触发攻击。基于DOM的跨站脚本攻击与反射型、存储型跨站脚本攻击有很大不同,整个攻击过程均在用户侧浏览器执行,无需Web服务器端进行解析和响应访问请求。这种类型的攻击比较难排查,WAF设备无法获取通信流量,可能难以发现攻击。

二、一份XSS字典(不止XSS字典)

(这个的作者还在不定期更新)

GitHub地址:TheKingOfDuck/fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。 (github.com)

内容包括:参数Fuzz字典 Xss Fuzz字典 用户名字典 密码字典 目录字典 sql-fuzz字典 ssrf-fuzz字典 XXE字典 ctf字典 Api字典 路由器后台字典 文件后缀Fuzz js文件字典 子域名字典

三、XSS挑战靶场打靶(https://xss.tesla-space.com/

(一)level1

1.看到payload长度为4,尝试修改url中name=admin,下方payload值也发生改变

2.F12检查网页查看发现get传参name的值admin插入了html里还回显了payload的长度

3.直接payload:name=name=<script>alert()</script>

(二)level2

1.还是先尝试修改url中keyword=admin

2.尝试payload:name=name=<script>alert()</script>(既然是第二关肯定会失败)

3.我们右键查看网页源码,发现第一处进行了html实体转义,但是第二处没有

4.因为第二处是标签的属性值,需要使用"来闭合本来就有的引号,所以构造payload:"><script>alert()</script><",修改url中的keyword值

(三)level3

1.第三关闭合双引号肯定行不通了,但还是尝试一下,果然没反应

2.右键查看网页源码,发现是单引号

3.尝试闭合单引号:'> <script>alert()</script> <',还是失败了,再看网页源代码,发现符号也被实体化了

4.看来无法利用标签来执行弹窗,尝试使用触发事件函数onclick来弹窗onclick是在对象被鼠标点击或者选取时触发,即οnclick=alert(),鼠标点击就会触发弹窗,还要闭合单引号,构造payload:'onclick='alert()

5.再点击一下页面

拓展:触发事件函数有三种onclick(点击)onerror(加载外部文件(文档、图像)发生错误时触发)onmouseover(鼠标滑过)

(四)level4

1.我们直接看网页源代码,发现应该要闭合双引号

2.尝试继续利用触发事件函数onclick来弹窗,构造payload:οnclick=alert()

3.再点击一下

(五)level5

1.查看网页源代码

2.尝试继续利用触发事件函数onclick来弹窗,构造payload:οnclick=alert(),发现失败了

3.查看网页源代码,发现被加了下划线

4.尝试了所有随机事件函数,都被加下划线,最后发现javascript不会

5.用a href标签法href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码添加一个标签得闭合前面的标签,构建payload

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

6.点击tgp

四、浏览器解析机制

(一)URL解析与缓存检查

1.URL解析:当用户在浏览器中输入一个URL并发送请求时,浏览器会首先解析这个URL,识别出协议(如http、https)、域名、端口号(如果有的话)和路径等信息。

2.缓存检查:在发送网络请求之前,浏览器会检查本地缓存(包括浏览器缓存和系统缓存)中是否已有对应资源的副本。如果找到且资源未过期,则直接从缓存中加载资源,以节省时间和带宽。

(二)DNS域名解析

如果本地缓存中没有找到所需资源,浏览器会进行DNS查询,以获取域名对应的IP地址。DNS查询是一个递归查询过程,可能涉及多个DNS服务器。

(三)建立连接与发送HTTP请求

1.建立连接:浏览器与服务器之间通过TCP/IP协议建立连接。

2.发送HTTP请求:浏览器构建HTTP请求报文,并通过TCP连接发送给服务器。请求报文包括请求行、请求头和请求正文(如果有的话)。

(四)服务器响应与资源接收

服务器接收到HTTP请求后,会处理请求并返回响应。响应报文包括状态行、响应头和响应正文。浏览器接收响应报文,并根据需要缓存响应内容。

(五)页面渲染

页面渲染是浏览器解析机制的核心部分,它涉及多个子过程:

1.解析HTML以构建DOM树:

(1)浏览器的渲染引擎开始解析HTML文档,将HTML标签转换为DOM(文档对象模型)节点,构建DOM树

(2)DOM树是页面内容的结构化表示,它包含了页面中的所有元素及其关系

2.解析CSS以构建渲染树

(1)浏览器继续解析CSS样式文件(包括外部CSS文件和样式元素以及JS生成的样式),根据CSS选择器计算出节点的样式

(2)根据DOM树和CSS样式信息,构建渲染树(Render Tree)。渲染树只包含需要显示的节点和它们的样式信息

3.布局:

(1)从根节点开始,递归地计算每个元素的大小、位置等几何信息。

(2)这个过程称为布局或回流(Reflow),它确保了页面上的元素能够按照正确

的顺序和位置进行排列

4.绘制:

(1)遍历渲染树,使用UI后端层来绘制每个节点

(2)当渲染树中的元素需要更新属性时,如果这些属性只是影响元素的外观(如颜色、背景色等),则称为重绘(Repaint)。重绘不会改变元素的布局或位置,只是重新绘制元素的外观

(六)优化策略:

批处理、合并操作、利用缓存、避免使用table布局

(七)事件处理与交互:

事件触发、事件处理、JavaScript执行

使用python bs4库从下面这段内容“<div class="maingrid" data-v-0f3d927f=""> <!-- --> <!-- --> <!-- --> <div class="period" data-v-0f3d927f=""> Saturday, Jun 3, 2023 </div> <div class="summary summarykpis4" data-v-0f3d927f=""> <div class="icon" data-v-0f3d927f=""> <div class="partly-cloudy-day" data-v-0f3d927f=""> </div> </div> <div class="kpi summary" data-v-0f3d927f=""> <div class="subtitle"> Max </div> <div> 28℃ </div> <div class="normals"> <div> 22 </div> <div> 27 </div> <div> 36 </div> <div class="subtitle"> Min </div> <div class="subtitle"> Mean </div> <div class="subtitle"> Max </div> </div> </div> <div class="kpi summary" data-v-0f3d927f=""> <div class="subtitle"> Min </div> <div> 13℃ </div> <div class="normals"> <div> 9.9 </div> <div> 15 </div> <div> 19 </div> <div class="subtitle"> Min </div> <div class="subtitle"> Mean </div> <div class="subtitle"> Max </div> </div> </div> <div class="kpi summary" data-v-0f3d927f=""> <div class="subtitle"> Rain </div> <div> 0mm </div> <div class="normals"> <div> 0 </div> <div> 4.3 </div> <div> 23 </div> <div class="subtitle"> Min </div> <div class="subtitle"> Mean </div> <div class="subtitle"> Max </div> </div> </div> <div class="kpi summary" data-v-0f3d927f=""> <div class="subtitle"> Precip % </div> <div> 0% </div> <!-- --> </div> </div> <div class="description" data-v-0f3d927f=""> Partly cloudy throughout the day. </div> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> </div>”提取出6月3至6月5日天气信息
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值