XSS漏洞

一.反射型XSS

定义:反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,通常在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来提交带有恶意代码的链接。造成反弹型XSS ,主要是GET类型且受到XSS Auditor、NoScript等防御手段的影响较大。可以通过报错的sql语句构造xss。

攻击流程

反射型xss

DOM型XSS

定义:DOM型XSS不同之处在于DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的。不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

二.储存型XSS

定义:储存型XSS相比反射型来说危害较大,此类xss不需要用户点击特定的url就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储漏洞服务器中,把攻击载荷存入服务器中,造成持久化的攻击。只要受害者浏览包括含此恶意的代码的页面就会执行恶意代码。常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。

攻击流程

储存型XSS

Blind型XSS

定义:Blind XSS是储存型XSS的一种,它保存在某些存储中,当一个“受害者”访问这个页面时执行,并且在文档对象模型(DOM)中呈现payload。它被称为Blind的原因是因为它通常发生在通常不暴露给用户的功能上。

三.反射型和存储型区别:
反射性存储型
绝大部分情况下,输入在哪里,输出就在哪里输入在 A 处进入数据库, 而输出则可能出现在其它任何用到数据的地方
输入大部分位于地址栏或来自 DOM 的某些属性,也会偶尔有数据在请求中(POST 类型)输入大部分来自 POST/GET 请求,常见于一些保存操作中
四.HttpOnly绕过

HttpOnly简介:如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击

绕过方法:
  1. 浏览器未保存账号密码:需要xss产生登录地址,利用表单劫持
  2. 浏览器保存账号密码:产生在后台的xss,存储型xss如留言等,浏览器读取账号密码
五.自动化工具说明
  1. XSStrike
  2. burpsuit
### 定义 XSS(Cross-Site Scripting)即跨站脚本攻击,是一种常见的 Web 安全漏洞,攻击者通过在目标网站注入恶意脚本,当其他用户访问该网站时,恶意脚本会在用户的浏览器中执行,从而窃取用户信息或进行其他恶意操作[^1]。 ### 原理 - **反射型**:攻击者构造包含恶意脚本的 URL,诱导用户点击,服务器接收到请求后将恶意脚本反射到响应中,浏览器解析并执行该脚本。 - **存储型**:攻击者提交一段 XSS 代码后,服务器接收并存储,当其他用户访问包含该 XSS 代码的页面时,XSS 代码被浏览器解析并执行。允许用户存储数据到服务器端的 Web 应用程序可能存在该类型 XSS 漏洞[^2]。 - **DOM 型**:基于 DOM(文档对象模型)的操作,通过修改页面的 DOM 结构来注入恶意脚本,不涉及服务器端数据的存储和反射。 ### 检测 - **常见 POC**:POC(Proof of Concept)即概念验证,常指一段漏洞证明的代码。例如,在反射型 XSS 检测中,可以构造包含简单 JavaScript 代码的 URL,如 `http://example.com/search?keyword=<script>alert('XSS')</script>`,如果页面弹出提示框,则说明可能存在反射型 XSS 漏洞[^3]。 - **自动化工具**:使用专业的安全检测工具,如 OWASP ZAP、Burp Suite 等,这些工具可以自动扫描网站,检测潜在的 XSS 漏洞。 ### 修复 - **输入过滤**:对用户输入进行严格的过滤,只允许合法的字符和格式。例如,使用正则表达式过滤特殊字符,防止恶意脚本注入。 - **输出编码**:在将用户输入输出到页面时,进行 HTML 实体编码,将特殊字符转换为 HTML 实体,防止浏览器将其解析为脚本。例如,将 `<` 转换为 `<`,`>` 转换为 `>`。 ```java import org.owasp.esapi.ESAPI; public class XSSUtils { public static String encodeForHTML(String input) { return ESAPI.encoder().encodeForHTML(input); } } ``` - **标签黑白名单过滤**:设置标签黑白名单,只允许或禁止特定的 HTML 标签和属性。例如,只允许 `<b>`、`<i>` 等简单标签,禁止 `<script>` 标签。 - **HttpOnly 属性**:对于存储用户敏感信息的 Cookie,设置 HttpOnly 属性,防止 JavaScript 脚本通过 `document.cookie` 窃取 Cookie 信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值