XSS基础

一、xss的基本介绍

在现代的网站中包含有许多大量动态的内容,而恶意攻击者会在 Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。动态的站点就受到“跨站脚本攻击”(Cross Site Scripting简称xss)。

跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种,恶意用户利用xss 代码攻击成功后,可能得到很高的权限、私密网页内容、会话和cookie等各种内容,其可能会造成以下危害:

  • 信息泄露:攻击者可以获取用户的账号、密码、身份证号等敏感信息,导致用户的个人隐私泄露和财产损失。
  • 页面篡改:恶意脚本可以修改页面的内容,显示虚假信息或误导用户进行操作,破坏网站的正常功能和信誉。
  • 钓鱼攻击:攻击者可以利用 XSS 漏洞构造钓鱼页面,诱使用户输入敏感信息,进一步实施诈骗。
  • 恶意操作:在用户不知情的情况下,执行一些恶意操作,如发起转账、删除数据等,给用户带来严重的损失。

二、xss的分类

1、反射型

(1). 基本概念

反射型 XSS 是一种 “非持久化” 的跨站脚本攻击方式。攻击者精心构造一个包含恶意脚本的特殊 URL,然后诱使受害者点击这个 URL。当受害者的浏览器向目标服务器发起请求时,服务器会把包含在 URL 中的恶意脚本 “反射” 回来,并在受害者浏览器中执行,进而实施攻击行为。

(2). 攻击流程

步骤一:构造恶意 URL

步骤二:通过各种手段引诱用户点击构造好的url

步骤三:服务器接收并反射

步骤四:浏览器收到服务器返回的包含恶意脚本的页面内容后,会开始执行脚本

2、存储型

(1)基本概念

存储型xss是一种持久型xss,攻击者将恶意脚本注入到目标服务器的数据库或其他存储介质中,当其他用户访问包含该恶意脚本的页面时,浏览器会执行该脚本,从而导致安全漏洞的产生。

(2)攻击原理

  • 恶意脚本注入:攻击者将恶意脚本存储在目标服务器上,通常是利用目标网站的某些功能,如论坛的评论区、博客的文章发布功能、数据库的输入字段等,将精心构造的包含恶意脚本的内容提交到服务器。
  • 内容读取与执行:当其他用户访问包含该恶意脚本的页面时,服务器会从数据库或其他存储介质中读取并显示这些内容,浏览器在解析页面时会执行其中的恶意脚本,从而导致攻击发生。

 (3)攻击流程

步骤一:攻击者在一个论坛网站输入一段包含恶意脚本的内容;

步骤二:论坛网站将该评论内容存储到数据库中;

步骤三:用户的浏览器在加载该页面时,会执行评论中的恶意脚本。

3、DOM型

(1)基本概念

DOM 型 XSS 主要是由于 HTML 页面中,通过 JavaScript 对 DOM 进行动态操作时,未对用户输入或其他不可信来源的数据进行充分的验证和过滤,导致攻击者能够将恶意脚本注入到 DOM 中,进而在受害者的浏览器中执行,从而达到窃取用户信息、篡改页面内容等恶意目的。

(2)攻击原理

  • 基于 DOM 操作:DOM 型 XSS 主要利用了现代浏览器中广泛支持的文档对象模型(DOM)。DOM 允许 JavaScript 动态地访问和操作 HTML 文档的内容和结构。攻击者通过巧妙地构造恶意数据,使得目标网站的 JavaScript 代码在处理这些数据时,将其错误地插入到 DOM 中,从而导致浏览器执行了攻击者注入的恶意脚本。
  • 数据来源与触发:通常,攻击者会寻找目标网站中那些通过 JavaScript 获取用户输入或其他外部数据来源,并直接将其用于修改 DOM 的地方。这些数据来源可能包括 URL 参数、表单输入、AJAX 响应等。当用户与包含恶意构造数据的页面进行交互时,浏览器会执行相应的 JavaScript 代码,进而触发 DOM 型 XSS 攻击。

(3)攻击流程

步骤一:攻击者发现一个网页的搜索功能存在 DOM 型 XSS 漏洞,于是构造了一个恶意的搜索关键词;

步骤二:攻击者将这个恶意关键词发送给目标用户,或者通过其他方式诱使目标用户在该网页的搜索框中输入这个关键词并点击搜索按钮;

步骤三:由于网站没有对用户输入的关键词进行充分的安全校验和过滤,直接插入DOM中,导致浏览器将攻击者构造的恶意的当作合法的 DOM 元素和脚本进行解析和执行。

三 、三种类型xss的区别

1、攻击原理

  • 存储型 XSS:攻击者将恶意脚本注入到服务器端的数据库或其他存储介质中,当用户访问包含该恶意脚本的页面时,服务器会从存储介质中取出并将其发送到浏览器执行。
  • 反射型 XSS:攻击者构造一个包含恶意脚本的特殊链接,诱使受害者点击该链接。受害者点击链接后,浏览器向服务器发送请求,服务器对链接中的参数进行处理,并将包含恶意脚本的结果返回给浏览器,浏览器执行该恶意脚本。
  • DOM 型 XSS:主要利用了现代浏览器中广泛支持的文档对象模型(DOM)。攻击者通过巧妙地构造恶意数据,使得目标网站的 JavaScript 代码在处理这些数据时,将其错误地插入到 DOM 中,从而导致浏览器执行了攻击者注入的恶意脚本,整个攻击过程完全在浏览器端进行。

 2、存储位置

  • 存储型 XSS:恶意脚本存储在服务器端的数据库、文件系统或其他存储介质中,具有一定的持久性,可能会长期存在于服务器端,直到被发现并清除。
  • 反射型 XSS:恶意脚本并不在服务器端长期存储,只是在用户点击链接向服务器发送请求时,服务器对包含恶意脚本的参数进行处理并即时返回给浏览器执行,数据在服务器端的存在时间非常短暂。
  • DOM 型 XSS:恶意脚本不存储在服务器端,而是在浏览器端的 DOM 中进行动态注入和执行,攻击完全依赖于浏览器对 DOM 的操作和解析。

 3、触发方式

  • 存储型 XSS:用户正常访问被注入恶意脚本的页面时,服务器会自动将恶意脚本发送到浏览器执行,无需用户进行其他特殊操作,攻击的触发较为隐蔽和被动。
  • 反射型 XSS:需要用户主动点击攻击者构造的包含恶意脚本的特殊链接,才会触发攻击,用户的点击操作是触发攻击的关键。
  • DOM 型 XSS:通常是用户与页面进行正常交互时触发,例如在搜索框输入内容、点击按钮等操作,导致浏览器执行包含恶意脚本的 DOM 操作,触发方式与页面的正常功能使用紧密相关。

四、无过滤情况下的基础Payload

1、

 2、 标签

  • 图片加载错误时触发

  •  鼠标悬停或移出时触发:


3、 标签

  • 使用伪协议 javascript: 执行代码:
test
  •  鼠标悬停时触发:
aa

 4、 标签

  • 利用焦点事件(onfocus 和 onblur):


 5、
 标签

  • 提交表单时触发:

 6、

 7、其他标签


  •  


5、存在过滤情况下的绕过技巧

1、过滤空格

  • 使用 / 或其他符号代替空格:

 2、关键字过滤

  • 大小写绕过

  • 双写关键字绕过

3、其他字符混淆

  • 注释干扰规则:
<
  • 利用标签优先级:
<img src=>

你可能感兴趣的:(xss,前端,php)