技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
XSS新攻击的深入剖析:新场景利用与系统化防御策略
1398133550745333
WEB安全
210浏览 · 2025-03-12 05:40
返回文档
XSS新攻击的深入剖析:新场景利用与系统化防御策略
前言
xss挖掘难道还停留在分三种基础类型?其实xss还有更多的隐藏在其他场景中的,这些一般都是容易忽略的,下面详细分析分析,从代码层面也会讲解漏洞原因,还有目前xss的各种修复手法
其他常见的场景
模板渲染
有去看过一些 cms,确实是这样的,比如模板的特殊标签
th:text 用于展示纯文本,会对特殊字符进行转义
th:utext 则不进行转义,直接展示原始 HTML 内容
当获取后端传来的参数中带有 HTML 标签时,th:text 不会解析这些标签,而 th:utext 会解析并渲染它们。这类似于 Vue 中的 v-text 和 v-html
这个规范一下就 ok 了
文件上传 xss
src 中经常遇到的就是 svg ,html,xml,pdf 没有危害就不管了
我们只需要关注一下文件应该怎么写,这个才是重点
html
就很简单,就是插入我们的脚本就 ok
svg
svg 可以 xss 的原因就是因为可以解析 script 标签
xml
这个比较鸡肋,需要解析 xml 才可以,我觉得最常用的就是 svg 了
组件漏洞
JQuery-XSS 漏洞
CVE-2020-11022/CVE-2020-11023
CVE-2020-11022 和 CVE-2020-11023 是 jQuery 的两个跨站脚本(XSS) 漏洞,影响 jQuery 1.2 - 3.5.0 版本,主要与 html() 方法有关。
CVE-2020-11022
影响 $().html() 方法
允许攻击者通过不受信任的 HTML 代码执行恶意 JavaScript 代码
例如,插入 script、iframe、onerror 等危险标签绕过安全检查
CVE-2020-11023
影响 $().html() 方法在 SVG 元素中处理不当
允许攻击者注入恶意 JavaScript,导致 XSS
比如
然后下一个 cve 就是绕过
Swagger UI XSS 漏洞(CVE-2023-38418)
API 文档的 description、operationId、summary、contact 等字段可被插入恶意 HTML/JavaScript 代码
Swagger UI 在渲染这些字段时未对 HTML 进行适当的转义
比如
作者使用的就比较复杂了
最后是在远程文件
https://jumpy-floor.surge.sh/test.yaml
所以需要等待一会才会弹出
漏洞代码修复
白名单
xss 的本质就是需要各种标签去解析,如果我们不能输入标签,那么就可以阻止 xss
我们只能输入字母、数字、下划线和空格
前端
但是我们如果仅仅只是前端过滤的话,任然可以被绕过,这在 src 中很常见
我们输入一个 1 然后抓包
然后再修改我们的 payload
所以开发的时候我们需要在后端写我们的过滤逻辑
后端
如果过滤在后端,无论我们是抓包还是前端输入,都会被拦截
即使我们使用 bp
可以看到还是需要进行数据的过滤
CSP 策略
内容安全策略(CSP:Content Security Policy)是一种由浏览器实施的安全机制(可理解为额外的安全层),旨在减少和防范跨站脚本攻击等安全威胁
核心原理:网站通过发送一个 CSP header 头部(也可以在 html 直接设置),告诉浏览器具体的策略(什么是授权的与什么是被禁止的),从而防止恶意内容的加载和执行
CSP 指令说明:
default-src: 指定默认的加载内容的来源,如果未指定其他指令,则默认应用此指令
script-src: 指定允许加载 JavaScript 的来源
style-src: 指定允许加载样式表的来源
img-src: 指定允许加载图片的来源
connect-src: 指定允许向其发送请求的来源(例如 AJAX、WebSocket 连接等)
安全代码
我们重点关注 csp 的限制
限制所有资源(脚本、样式、图片等)只能来自同源(self),不允许外部来源的资源加载。
然后
可以看见 csp 起作用
特殊字符实体转义
可以看到把我们的关键 xss 代码转义了
我们尝试输入一段 xss 代码测试
可以看见成功转义了
我们看到代码部分,是会进入 htmlEscape 函数去转义
HttpOnly
如果 Cookie 设置了 HttpOnly,那么前端 JavaScript 无法读取 Cookie,即使攻击者利用 XSS 注入恶意脚本,也无法窃取 Cookie。
配置方法如下
三种
我们尝试弹一个 cookie
我们看看能不能窃取我们的 JSESSIONID
可以看到失败了,只能获取我们的
参考
https://github.com/whgojp/JavaSecLab/wiki
1
人收藏
1
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
从零掌握java内存马大全(基于LearnJavaMemshellFromZero复现重组)
2
突破网络限制,Merlin Agent助你轻松搭建跳板网络!
3
从白帽角度浅谈SRC业务威胁情报挖掘与实战
4
基于规则的流量加解密工具-CloudX
5
从0到1大模型MCP自动化漏洞挖掘实践
近期热点
一周
月份
季度
1
从零掌握java内存马大全(基于LearnJavaMemshellFromZero复现重组)
2
突破网络限制,Merlin Agent助你轻松搭建跳板网络!
3
从白帽角度浅谈SRC业务威胁情报挖掘与实战
4
基于规则的流量加解密工具-CloudX
5
从0到1大模型MCP自动化漏洞挖掘实践
暂无相关信息
暂无相关信息
优秀作者
1
T0daySeeker
贡献值:38700
2
一天
贡献值:24800
3
Yale
贡献值:18000
4
1674701160110592
贡献值:18000
5
1174735059082055
贡献值:16000
6
Loora1N
贡献值:13000
7
bkbqwq
贡献值:12800
8
手术刀
贡献值:11000
9
lufei
贡献值:11000
10
xsran
贡献值:10600
目录
XSS新攻击的深入剖析:新场景利用与系统化防御策略
前言
其他常见的场景
模板渲染
文件上传 xss
组件漏洞
JQuery-XSS 漏洞
Swagger UI XSS 漏洞(CVE-2023-38418)
漏洞代码修复
白名单
前端
后端
CSP 策略
特殊字符实体转义
HttpOnly
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板