第四天作业(实训)

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

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

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

4. 总结浏览器解析机制,若不能理解,解释《漏洞利用之XSS注入》中15条中,至少5条执行成功或不成功的原因。(可选)

XSS分类

存储型XSS

存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XXS跨站攻击,这便是存储型XSS。

反射型XSS

反射型XSS也被称为非持久性XSS,当用户访问一个带有XSS代码的HTML请求时,服务器端接收数据后处理,然后把带有XSS的数据发送到法别览器,浏览器解析这段带有XSS代码的数据后,就造成XSS漏洞,这个过程就像一次反射,所以叫反射型XSS。

DOM 型 XSS

不经过后端,DOM-based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞,dom-xss是通过url传入参数去控制触发的。

区别

1.被攻击对象的不同

反射型XSS的被攻击对象一般是攻击者去寻找的,就比如说:一个攻击者想盗取A的QQ号,那么攻击者就可以将一个含有反射型XSS的URL链接给A,此时我们可以看出,需要将特定的URL,注意是特定的URL给A,当A点击进入链接时,就受到XSS攻击,所以这种攻击范围不是特别的广。

而存储型XSS是广撒网的方式或者指定的方式,就是攻击者将存储型XSS放在一些有XSS漏洞的网站上,只要有用户访问这个链接就会中招,而攻击者也可以寻找被攻击对象,比如说上面的例子,所以我们可以看出,存储型XSS的危害性更大,范围更广,可以不需要寻找被攻击对象,只要存储型XSS在服务器上就能实施攻击。

DOM型XSS的被攻击对象其实和反射型XSS被攻击对象差不多,就是给攻击对象放送URL。

2.解析位置不同(个人感觉是反射型与存储型区别的本质)

反射型XSS的脚本被解析的地方是浏览器,而存储型XSS的脚本被解析的地方是服务器,DOM型XSS也是浏览器,所以DOM型又叫DOM反射型XSS。但是反射型XSS需要联网,而DOM型不需要!

3.存储时间不同

反射型XSS是既有即用,没有持久性,而存储型XSS是存储在服务器上,只要服务器不挂机或者是被干掉,就一直会有,DOM型XSS和反射型差不多,但是用人就扯淡了,那反射型只要不改变源代码不就是一直存在吗?不是的,反射型XSS是必须得特定的URL才能使得被攻击对象中招,如果是单单官方网页,就没有了咯,存储型就不同,只要服务器里面有存储型XSS,不论是不是官网,被攻击对象都会被攻击。

4.允许输入点的不同(这是DOM型与其他两种的区别)

一般情况下,反射型XSS在搜索框啊,或者是页面跳转啊这些地方,而存储型XSS一般是留言,或者用户存储的地方,而DOM呢?是在DOM位置上,不取决于输入环境上。

浏览器的解析机制主要涉及到以下几个关键步骤:

URL解析与缓存检查:

浏览器首先解析输入的URL,识别协议(如HTTP、HTTPS)、域名、端口号和路径等信息。

接着检查本地缓存(浏览器缓存、系统缓存、ISP缓存等)中是否已有对应资源的副本。如果找到且未过期,则直接从缓存中加载资源,以节省时间和带宽。

DNS域名解析:

如果本地缓存中没有找到所需资源,浏览器会进行DNS查询,以获取域名对应的IP地址。

DNS查询可能涉及多个DNS服务器,最终找到对应的IP地址。

建立连接与发送请求:

浏览器使用IP地址与服务器建立TCP连接(对于HTTPS,还会进行SSL/TLS握手以加密通信)。

发送HTTP请求到服务器,请求指定的资源。

服务器响应与资源接收:

服务器处理请求,并返回HTTP响应,包括状态码、响应头和响应体(即请求的资源)。

浏览器接收响应,并根据需要缓存响应内容。

页面渲染:

浏览器解析HTML文档,构建DOM树。

加载并解析CSS样式表和JavaScript文件,构建渲染树。

结合DOM树和渲染树进行页面渲染,包括回流(reflow)和重绘(repaint)。

《漏洞利用之XSS注入》中5条执行成功或不成功的原因

在《漏洞利用之XSS注入》中,XSS(跨站脚本攻击)的成功与否取决于多个因素。以下是5条执行成功或不成功的原因:

输入过滤不严:

成功原因:如果网站没有对用户输入进行严格的过滤和转义处理,攻击者可以注入恶意脚本代码。这些代码在受害者浏览页面时被执行,导致XSS攻击成功。

不成功原因:如果网站对用户输入进行了严格的过滤和转义处理,将恶意脚本代码中的特殊字符(如<、>、"等)转换为HTML实体或进行其他形式的编码,那么恶意脚本将不会被执行,XSS攻击失败。

存储型与反射型XSS的区别:

成功原因(存储型XSS):攻击者将恶意脚本注入到网站的数据库中,这些数据在后续页面加载时被读取并显示,导致恶意脚本被执行。由于恶意脚本被存储在服务器上,攻击可以持续进行。

不成功原因(反射型XSS):如果网站仅将用户输入作为单次请求的一部分返回给用户,而没有将其存储在服务器上,那么恶意脚本将只在单次请求中生效,攻击效果有限。

浏览器安全策略:

不成功原因:现代浏览器通常具有内置的安全策略,如内容安全策略(CSP),这些策略可以限制或阻止某些类型的脚本执行。如果网站启用了这些安全策略,并且配置得当,那么XSS攻击可能会失败。

用户行为:

成功原因:XSS攻击的成功还取决于用户的行为。如果用户点击了包含恶意链接或脚本的邮件、消息或网页,那么攻击可能会成功。

不成功原因:如果用户具有较高的安全意识,不随意点击不明链接或下载未知来源的文件,那么XSS攻击的成功率将大大降低。

服务器配置:

不成功原因:服务器的配置也会影响XSS攻击的成功率。例如,如果服务器配置了适当的HTTP头部(如X-Content-Type-Options: nosniff),可以防止浏览器尝试基于内容猜测响应的MIME类型,从而减少XSS攻击的风险。

XSS闯关

第一关-无过滤机制

插入一段js代码,get传参

url?name=<script>alert()</script>

第二关-闭合标签

继续尝试插入js;

<script>alert()</script>

发现特殊代码被实体转义,闭合双引号即可

">  <script>alert()</script>  <"

第三关-单引号闭合+添加事件

发现前面的方法都不行,发现即使用引号也会被实体化。

利用onfocus事件绕过,然后再点击输入框触发onfocus事件即可

' οnfοcus=javascript:alert() '

第四关-双引号闭合+添加事件

" οnfοcus=javascript:alert() "

这里是双引号闭合,<input>标签,所以我们还能继续利用onfocus事件,构建payload

第五关-新建标签

尝试onfocus;" οnfοcus=javascript:alert() "发现on被替换成o_n,并且全变成了小写。

过滤了js的标签还有onfocus事件,虽然str_replace不区分大小写,但是有小写字母转化函数,所以就不能用大小写法来绕过过滤了,只能新找一个方法进行xss注入,这里我们用a href标签法. href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码。

点击xxx,触发a标签href属性即可

第六关-大小写绕过

查看源码,发现之前的放荡发都被过滤掉了

发现大小写没有被过滤掉,这题能利用大小写进行绕过,所以我们可以构造payload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值