当前位置: 首页 > news >正文

入门级反射型xss实战

本文仅用于安全技术学习交流,所有目标信息已脱敏处理。

⚠️ 新手向文章,大佬勿喷,直接掠过即可。(新手,有错误欢迎指正)

信息收集

进入目标网站首页,页面风格明显偏老。查看源码发现使用了 jQuery(版本较旧),这类老站点往往对用户输入的过滤不够严格,存在 XSS 风险。

初步探测

在搜索框输入经典 payload:

<script>alert(1)</script>

结果:直接被 WAF 拦截。

尝试 URL 编码绕过:

%3Cscript%3Ealert(1)%3C/script%3E

结果:依然被拦截。

猜测 WAF 可能过滤了alert()函数,尝试替换:

<script>console.log(1)</script>

结果:还是被拦截。

再次进行 URL 编码:

%3Cscript%3Econsole.log(1)%3C/script%3E

结果:这次没有触发 WAF。

分析 WAF 规则

三次测试的对比:

Payload

是否拦截

说明

<script>alert(1)</script>

✅ 拦截

包含<script

<script>console.log(1)</script>

✅ 拦截

包含<script

%3Cscript%3Econsole.log(1)%3C/script%3E

❌ 未拦截

URL 编码后绕过了<script字符串匹配

结论:WAF 的规则是匹配<script这个字符串模式,而非单纯的尖括号<>

为什么编码后的 payload 没成功?

虽然绕过了 WAF,但控制台并没有输出1

查看页面源码中输入的回显位置,发现:

HTML

<input type="text" value="console.log(1)&lt;/script&gt;">

WAF 的处理逻辑:直接删除了<script>字符串,剩余部分原样保留。

WAF 的规则是匹配并删除<script>字符串,而非拦截整个请求。编码后的 payload 绕过了字符串匹配,但解码后仍被过滤。

此时:

  • console.log(1)只是HTML 属性值中的普通文本
  • </script>被 HTML 实体编码为&lt;/script&gt;或浏览器当作纯文本
  • 没有任何代码执行的环境

核心问题:输入被当作 HTML 属性值处理,没有进入 JavaScript 执行上下文。

转换思路:跳出字符串执行

既然输入被包裹在双引号中,尝试闭合前面的字符串和语句,然后注入代码。

构造 payload:

";console.log(1);//

分解执行逻辑:

部分

作用

"

闭合value="

;

结束变量赋值语句

console.log(1)

注入的恶意代码

//

注释掉后面多余的"

最终页面中的代码变为:

var keyword = "";console.log(1);//";

验证

将 payload 进行 URL 编码:

%22%3Bconsole.log(1)%3B%2F%2F

提交后观察浏览器控制台:

控制台成功回显,证明反射型 XSS 存在。

修复建议

  1. 输出编码:对用户输入进行 HTML 实体编码("&quot;<&lt;等)
  2. 避免直接拼接:不要将用户输入直接拼接到<script>标签内的字符串中
  3. 使用安全的 DOM 操作:避免使用innerHTMLdocument.write()处理不可信数据
  4. 启用 CSP:配置 Content-Security-Policy 限制内联脚本执行

总结

阶段

关键动作

探测

经典 payload 测试 WAF 边界

分析

通过对比测试确定 WAF 规则是匹配<script

定位

查看源码确认输入回显位置(var keyword = "..."

绕过

闭合字符串 + 语句注释,跳出上下文执行代码

验证

控制台回显确认漏洞存在


免责声明:本文所述技术仅用于合法授权的安全测试和学习研究,请勿用于非法用途。

http://www.jsqmd.com/news/1106510/

相关文章:

  • 从成本中心到价值引擎:License许可优化的进阶之路
  • 【硬核详解】基于 CH340G 的 STM32 一键下载电路设计:从数据手册到参数计算全流程指南(一)
  • 把AI流式响应当成编译问题:用状态机消灭200空白
  • 2026年企业消费者调研服务商权威盘点榜单
  • 图形硬件流水线
  • 任务栏变身硬件监控面板,CPU/GPU温度与使用率一目了然
  • 2026年腾讯云秒杀活动抢购攻略
  • 生产级ML模型服务化:从Triton部署到Seldon编排的落地实践
  • 拱墅区专业乐队培训选择指南
  • 西城微科SIC8833高精度胎压计芯片方案
  • “词元盗用”正在成为AI商业化面临的新风险
  • ICM-42688-P与STM32F303VE在工业运动控制中的应用
  • LV3296与STM32F767ZG嵌入式数据采集系统设计
  • 国内头部具身机器人定局:宇树智元耕硬件,越疆一脑多体重构赛道
  • AS717芯片规格 8K@60Hz外围少 AS717电路图参考
  • AI突破会话框 :dsl + codex 才是真的香
  • 兰亭妙微 | Voltera 新能源停车充电系统UI全案深度拆解
  • 易元 AI 深度解析:一站式 AI 电商素材与内容生产全链路工具,赋能信息流广告批量制作
  • 第二届创新结构与韧性城市国际学术会议(ISRC 2026)
  • 2026年企业办公与数字员工工具实测:五个平台的搭建路径与适用场景
  • 鸿蒙原生 ArkTS 布局容器切换:Column ↔ Row 的响应式转换深度实践
  • 安卓手机远程控制另一部手机 怎么远程控制安卓手机
  • Windows录屏总是卡顿?先排查这6个常见原因
  • 2026年中药洗发水代工:非遗传承工厂如何重塑品质标准
  • 【单片机毕业设计】基于 STM32 的超声波测距声光报警系统设计,基于单片机的距离阈值可调智能预警装置开发(014201)
  • LinkedIn级ML流水线四层架构:Feathr、Flink、Horovod与TF Serving协同实践
  • 办理出生证翻译的材料有哪些?出生证翻译如何办理?
  • 【AI全栈】日常内存管理 SOP-Windows + WSL2 + Docker Desktop 组合中最经典的“内存黑洞”问题!
  • Visual C++运行库终极修复工具:5分钟彻底解决Windows软件兼容性问题
  • 最新Python爬虫实战(多线程爬虫篇)——案例31:多线程爬取古诗文网名句数据批量保存到TXT(附上完整爬虫代码)