XSS漏洞学习(非常详细),零基础入门到精通,看这一篇就够了

该文章已生成可运行项目,
文章目录
    • HTML概述
      • 常见元素
    • XSS概述
    • Javascript概述
    • XSS常见危害
    • XSS检测方法
    • 分类
      • 反射型XSS
        • 攻击流程
      • 存储型XSS
        • 攻击流程
      • DOM型XSS
        • 攻击方式
        • 攻击流程
    • XSS技巧
      • 文件上传XSS
        • 其他HTML标签
        • HTML标签属性支持伪协议
        • HTML实体编码
        • 利用空字符绕过关键字检测
        • 利用事件
    • XSS防护
  • 1️⃣网络安全零基础入门
    • ① 学习路线
    • ② 路线对应学习视频
  • 2️⃣视频配套资料&国内外网安书籍、文档
    • ① 文档和书籍资料
    • ② 网络安全/黑客学习视频
  • 3️⃣网络安全源码合集+工具包
  • 4️⃣网络安全面试题
  • 资料领取

HTML概述

HTML:超文本标记语言,是一种用于创建网页的标准标记语言,可以使用HTML创建WEB 站点,HTML运行在浏览器上,由浏览器来解析。

HTML元素:HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码。

常见元素

XSS概述

定义:XSS(Cross Site Scripting)攻击全称跨站脚本攻击,是为不和层叠样式表 (Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

成因:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植 入到提供给其它用户使用的页面中,而程序对输入和输出的控制不够严格,导致“精心构造” 的脚本输入后,再输到前端时被浏览器当作有效代码解析执行从而产生危害。当受害者访问 这些页面时,浏览器会解析并执行这些恶意代码。

XSS漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过其他用户本地 浏览器执行的,所以XSS漏洞关键就是寻找参数未过滤的输出函数。

Javascript概述

JS简介:JS即Javascript,是一种由LiveScript发展而来的脚本语言,主要用于解 决一些服务器的问题,比如Perl遗留的速度问题。当时服务端需要对数据进行验 证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是 Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

特点:具有交互性,能够包含更多活跃的元素,短小精悍。

Js标签:

XSS常见危害

  • 网络钓鱼,盗取各类用户的账号,如机器登录帐号、用户网银帐号、各类管理员帐号。
  • 窃取用户Cookie,获取用户隐私,或者利用用户身份进一步执行操作。
  • 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志等。
  • 强制弹出广告页面,刷流量等。
  • 进行恶意操作,例如任意篡改页面信息,删除文章等,传播跨站脚本蠕虫,网页挂马等。
  • 进行基于大量的客户端攻击,如DDOS攻击。
  • 结合其它漏洞,如CSRF漏洞,进一步渗透网站。
  • 获取客户端信息,例如用户的浏览历史、真实IP、开放端口等。
  • 控制受害者机器向其他网站发起攻击。
  • 传播跨站脚本蠕虫等。

XSS检测方法

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

XSS漏洞常见位置:反馈与浏览、富文本编辑器、各类标签插入和自定义、用户资料、 关键词、说明、文件上传等处

分类

XSS分为三种,存储型XSS,反射型XSS,DOM型XSS

危害程度存储型>DOM型>反射型

反射型XSS

反射型又称非持久型XSS,通过给别人发送带有恶意脚本代码参数的URL, 欺骗用户点击链接,当用户单击时触发,特有的恶意代码参数被HTML解析、执行, 这类跨站的代码通常不存储于服务端。

常见XSS点:网站的搜索栏、用户登录入口、输入表单等地方,漏洞点简单地将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输岀,导致输岀的数据中存在可被浏览器执行的代码数据。

特点:非持久化,经过后端,但不存入数据库。

XSS典型,通过get来接收前端输入的input参数,然后通过echo输出到html页面

用户输入,即可弹窗

攻击流程

攻击者寻找具有反射型XSS漏洞的网站。

攻击者构造恶意链接,并将该链接发给用户(GET请求)。

安全意识薄弱的用户点击该链接。

服务器返回HTML文档,此时该文档已经包含了攻击者插入的恶意代码。

用户客户端执行恶意内容,XSS攻击就发生了。

存储型XSS

存储型又称持久型XSS,比反射型XSS更具有威胁性。恶意代码会存储在服务器中,如在 个人信息或发表文章等地方,加入恶意代码,如果没有过滤或过滤不严,那么这些代码将储存到服务 器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫、大量盗 窃cookie等。

常见XSS点:论坛、博客、留言板、评论、日志等交互处,这些地方有个明显的特征,就是功能页面 几乎大多数用户都能轻易看到。

区别:存储型XSS和反射型XSS利用方式完全一样。判断存储型XSS只需要重新打开当前页面,若弹 窗还是出现,说明恶意语句被存储在服务器上,即可证明。

如果在仅有当前用户能查看,其他用户无法查看的页面,比如网站后台,私密空间等 处插入XSS,那么这类XSS无法攻击其他用户,危害性更低或者说几乎没有危害,称 为self-xss。

在可输入交互处输入,当有人访问此页面就会对XSS语句进行解析并执行

攻击流程
  • 攻击者提交了一条包含XSS代码的留言到数据库。
  • 当普通用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
  • 浏览器发现有XSS代码,就当做正常的HTML和JS解析执行。
  • 除了触发方式不同,所有的内容与反射型完全一样。
DOM型XSS

DOM:文档对象模型(Document Object Model)的缩写。它是HTML文档的对象表示,同 时也是外部内容(例如 JavaScript)与HTML元素之间的接口,使用DOM能够使程序和脚 本能够动态访问和更新文档的内容、结构和样式。

DOM型XSS:基于DoM文档对象的一种漏洞,并且DOM型XSS是基于JS代码的,并不需要 与服务器进行交互。其通过修改页面DOM节点数据信息而形成的ⅩSS跨站脚本攻击。不同 于反射型XSS和存储型XSS,基于DOM的XSS跨站脚本攻击往往需要针对具体的 Javascript DOM代码进行分析,并根据实际情况进行XSS跨站脚本攻击的利用。

特点:

  • 不经过后端服务器。
  • 不会被WAF等防御设备检测拦截。
  • DOM型XSS是通过url传入参数去控制触发的也属于反射型XSS。
攻击方式

用户请求一个经过专门设计的URL,它由攻击者提供,而且其中包含XSS 代码。服务器的响应不会以任何形式包含攻击者的脚本,当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致XSS漏洞发生。

攻击流程
  • 攻击者寻找具有漏洞的网站。
  • 攻击者给用户发了一个带有恶意字符串的链接。
  • 用户点击了该链接。
  • 服务器返回HTML文档,但是该文档此时不包含恶意字符串。
  • 客户端执行了该HTML文档里的脚本,然后把恶意内容植入了页面。
  • 客服端执行了植入的恶意内容,XSS攻击就发生了。

XSS技巧

文件上传XSS

有些网站当文件上传成功后,文件名会被保存到网站上显示,成为网页的一部分,这也会导致存储型XSS。比如上传成功后,显示文件:xxx上传成功,修改文件名为xss的 payload即可触发,但是有些时候,需要注意与网页自身的标签闭合后才能触发:

"><img src=x onerror=alert(document.domain)>.gif


文件名说明:知道windows与linux文件命名有所差别,windows下文件名不能包含 / \ : * ? " < > | 等字符,而linux下是可以出现除 / 字符之外的所有字符,而且在Linux系统中可以使 用长文件或目录名,直接利用这个特性,在上传点没有对文件名进行检测和处理的情况下就 可以实现XSS攻击。

其他HTML标签

直接嵌入html:

<script>alert('xss')</script>

元素标签事件:

<body οnlοad=alert('XSS')>

图片视频标签:

<audio/video/img src="javascript:alert('XSS');">

其他标签:

<iframe>、<div>、<link>等

HTML标签属性支持伪协议

应用场景:标签的属性支持javascript:[code]为协议

语句:

对应防御:过滤javascript关键字

HTML实体编码
<IMG SRC=javascript:alert(&quot;XSS&quot;)>

利用空字符绕过关键字检测

常用字符:[空格]、[回车]、[tab]、[键位符]、[%00]等

<iframe src=java script(1)> <scri\x00pt>alert(1);</scri%00pt> 
<s%00c%00r%00i%00p%00t>alert(1)</s%00c%00r%00%00ip%00t>

备注:javascript语句通常以分号结尾,如果语句后面没有分号,但是有换行符时,javascript引擎会 自动判断该语句是否结束。如果到换行处判断并不是一个完整语句,那么javascript会继续处理后面的 内容,直到遇到一个分号或发现语句完整为止。

利用事件

事件函数:

  • onclick 鼠标单击
  • onchange 内容发生改变
  • onerror 报错时
  • onmousemove 鼠标路过
  • onload 页面加载
  • onmouseover 鼠标悬停
  • onmouseout 鼠标移出
<img src="x" οnerrοr=alert(1)> // 图片等未找到时
" οnfοcus=alert(1) autofocus; // 焦点移动到当前标签时
" > <body οnlοad=alert(1)> // 加载完成时
<div onmousemove="alert('xss')"> // 当用户鼠标移动到div上时就会触发代码
<div onclick ="alert('xss')"> // 鼠标点击时

  • 限制引号 :
  • 简单绕过WAF: <isindex type=image sec=1 οnerrοr=alert(xss)>

Alert混淆绕过过滤器:

top[“al”+“ert”](1)

top[/al/.source+/ert/.source](1)

al\u0065rt(1)

[ ’ ]、[ " ]、[ ( ]、[ ) ] 如果这四个字符被过滤的情况,那么就需要使用其他字符去 替换或者编码方式去绕过。  编码绕过:尝试对关键字编码,不过直接显示编码是不会被浏览器执行的,但是可 以用另一个语句eval()实现,eval()会将编码过的语句解码后再执行。

HTML字符实体类型转换:HTML某些属性值支持html十进制、十六进制编码表示。

JavaScript:支持 Unicode 、十进制、十六进制、八进制、HTML

XSS防护

  • 使用XSS Filter:可以认为是一份成熟过滤关键字代码,作用是过滤用户提交的有害信息, 从而达到防范xss和sql等攻击的效果。
  • 定制过滤策略:业内防御跨站脚本攻击的方式一般有两种:input Filtering 和 Output Filtering。
  • 输出编码:HTML编码在防止XSS攻击上起很大的作用,它主要是用对应的HTML实体替代字 面量字符,这样做可以确保浏览器安全处理可能存在的恶意字符,将其当作HTML文档的内容 而非结构加以处理。

防范基于DOM的XSS攻击要注意两点:

  • 避免客户端文档重写、重定向或其他敏感操作,避免使用客户端数据,这些操作尽量在服 务端使用动态页面来实现。
  • 分析和强化客户端 Javascript代码,尤其是一些受到用户影响的DOM对象。另外,要注意 能直接修改DOM和创建HTML文件的相关函数和方法。此外,在把变量输出到页面时要做 好相关的编码转义工作。如要输出到

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取

**读者福利 |** CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**

在这里插入图片描述

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。****(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!****(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
**读者福利 |** CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**

在这里插入图片描述

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一粟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值