Xss漏洞

本文详细介绍了XSS漏洞的定义、攻击原理,涉及script、img和input标签的利用方式,以及反射型、存储型和DOM型XSS的分类。通过实例演示了XSS-lab靶场中不同级别的防御挑战与应对策略。

Xss漏洞

1.漏洞简介

​ XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
​ xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数

2.攻击原理

利用网页开发时web应用程序对用户输入过滤不足导致将恶意代码注入到网页中,使用户浏览器加载并执行恶意代码

3.漏洞危害

  • 窃取cookie

    因为大部分人喜欢将密码储存到浏览器当中,所以黑客一般渗透的时候就会先来浏览器查看已保存的cookie 来盗取各种用户账号

  • 未授权操作

    js特性很强大,黑客会直接代替用户在html进行各类操作。比如劫持会话,刷流量,执行弹窗广告,还能记录用户的键盘输入

  • 传播蠕虫病毒

4.xss的攻击载荷

4.1script标签

<script> 标签是最直接的 XSS 有效载荷,脚本标记可以引用外部的 JavaScript 代码,也可以将代码插入脚本标记中

基础的xss注入都是使用<script> 标签

4.2img标签

<img> 标签定义 HTML 页面中的图像

在题目中将双标签过滤时可以用到这个单标签

4.3input标签

<input> 标签规定了用户可以在其中输入数据的输入字段。

5.xss漏洞分类

5.1反射型xss

非持久化,且需要使用钓鱼等手段欺骗用户点击恶意链接才能触发恶意代码。一般反射型 XSS 会出现在搜索页面,且大多数是用来获取用户的 cookie 信息的

5.2存储型xss

存储型的 XSS,最大的特点是可持久化,因为在过滤条件差的情况下,存储型的 XSS 的恶意代码会直接被保存在服务器端的数据库中。而这个恶意代码被服务器读出输出到用户端的Web页面时,恶意代码会执行,从而达到攻击的目的

5.3DOM型xss

DOM 型的 XSS 注入是在前端 JavaScript 调用 DOM 元素时可能产生的漏洞,可能触发 DOM 型 XSS 的 JavaScript 代码,攻击流程大概为:

document.referer 返回跳转或打开到当前页面的页面的URI
window.name 可设置或返回存放窗口的名称的一个字符串
location 可以设置窗口跳转或者返回当前窗口的地址
innerHTML 内嵌HTML代码
documen.write 页面内写入字符

6.xss—lab靶场实践

6.1level 1

打开靶场后即可看到欢迎用户test,以及url中的get传参
在这里插入图片描述

尝试改变参数查看回显
在这里插入图片描述

发现可以成功注入,直接构建payload

<script>alert(/zbpyy/)</script>

在这里插入图片描述

完成

6.2level 2

进入第二关后查看好像也是get传参,尝试直接注入
在这里插入图片描述

发现注入失败

查看源码后发现我们的输入被闭合在了双引号中
在这里插入图片描述

所以我们需要先将双引号""进行闭合,构建payload

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

在这里插入图片描述

注入成功

6.3level 3

进入第三关依旧是尝试基础直接注入
在这里插入图片描述

依旧是注入失败,查看源码
在这里插入图片描述

发现我们的输入<>都被转义为了&gt,以及采用了单引号’'闭合

所以我们需要构建一个不需要<>的payload,同时注意考虑单引号闭合

 ' onblur='alert(123)'

在这里插入图片描述

成功注入

6.4level 4

尝试基础直接注入
在这里插入图片描述

依旧是注入失败,查看源码
在这里插入图片描述

发现<>直接被替换为了空字符

所以依旧是使用不需要<>的payload,同时注意考虑从上一关的单引号闭合变为了双引号

 " onblur="alert(123)

在这里插入图片描述

注入成功

### 定义 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 信息。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值