XSS漏洞介绍

概括

XSS漏洞,全称跨站脚本(Cross Site Scripting),是一种安全漏洞,攻击者利用此漏洞可向web页面(如input表单、URL、留言板等位置)插入恶意JavaScript代码。当管理员或用户访问这些页面时,恶意脚本会触发并执行,从而达到攻击者的目的。

XSS漏洞形成的主要原因是服务器对用户提交的数据过滤不严。攻击者可以构造特定的脚本语句,使得这些输入内容被当作HTML的一部分来执行。当用户访问到这些含有恶意脚本的页面时,浏览器会将用户的输入当作JavaScript代码执行,从而可能获取用户的敏感数据(如cookie数据)。

XSS漏洞主要分为两种类型:反射型XSS(Reflected XSS)和存储型XSS(Stored XSS)。反射型XSS通过改造带有攻击脚本的URL,当目标用户访问这些URL时,会触发恶意脚本。这种攻击通常是一次性的,且所见即所得,常出现在查询类页面等。而存储型XSS则是将带有恶意脚本的内容注入到服务器后台(如数据库或文件中),当其他用户访问这些页面时,恶意脚本会被触发并执行。这种攻击是永久性的,常出现在留言板、评论区等。

需要注意的是,XSS漏洞主要对网站用户造成危害,并不会直接危害服务器后台数据。然而,它仍然是一种严重的安全威胁,可能导致用户数据的泄露、账户被劫持等后果。因此,对于web应用来说,防范XSS漏洞至关重要。开发者应加强对用户输入的过滤和验证,避免恶意脚本的插入和执行。同时,用户也应提高安全意识,谨慎点击不明链接,避免访问可能存在XSS漏洞的网站。

反射型XSS漏洞

反射型XSS(Reflected XSS)是一种常见的跨站脚本攻击方式。当攻击者向Web应用程序提交含有恶意脚本的请求时,如果服务器未对请求中的参数进行适当过滤或转义,就会将恶意脚本代码反射到响应页面中。当其他用户访问这个被污染的页面时,浏览器会执行这些恶意脚本,从而导致用户的信息被窃取或页面内容被篡改。

特点

  1. 非持久性

​ 反射型XSS攻击不会将恶意脚本永久地存储在服务器或数据库中。它依赖于攻击者构造的特定URL,一旦用户点击或访问这个URL,恶意脚本就会被反射回用户的浏览器并执行。这意味着攻击必须实时进行,需要攻击者引导用户去点击这些恶意链接。

  1. 实时性

    由于反射型XSS攻击依赖于用户实时点击恶意链接,因此攻击的成功与否通常取决于用户的即时反应。一旦用户关闭浏览器或停止访问,恶意脚本的执行就会停止。

  2. 依赖交互

​ 为了成功利用反射型XSS漏洞,攻击者需要诱使用户点击或访问含有恶意脚本的URL。这通常涉及到社会工程学技巧,如通过电子邮件、社交媒体或聊天应用发送伪装成合法链接的恶意URL。

利用

​ 这里以DVWA靶场low级别难度做演示,有兴趣可自行尝试靶场其他难度,网上有教程,原理是一样,高难度只是考虑如何绕过限制。

查看php源码,发现网站没有做任何过滤和防护

在这里插入图片描述

构造基础js语句:<script>alert('xss')</script>可以看到xss的弹窗。

在这里插入图片描述

在这里插入图片描述

存储型XSS漏洞

特点

  1. 持久性:与反射型XSS不同,存储型XSS将恶意脚本持久化地保存在服务器端的数据库或文件中。这意味着恶意脚本只需被注入一次,就可以多次被执行,对多个用户造成威胁。攻击者可以长时间地利用这个漏洞,对网站进行持续的攻击。
  2. 隐蔽性:由于恶意脚本被保存在服务器端,攻击者无需每次都发送恶意链接给用户,这增加了攻击的隐蔽性。用户可能在不知情的情况下,访问了含有恶意脚本的页面,从而触发攻击。
  3. 广泛影响:存储型XSS漏洞通常出现在用户留言板、论坛、博客等交互性强的功能中。一旦攻击者在这些地方成功注入恶意脚本,所有访问这些页面的用户都可能成为攻击目标,因此其影响范围可能非常广泛。
  4. 高危害性:攻击者可以利用存储型XSS漏洞执行各种恶意操作,包括但不限于窃取用户的敏感信息(如cookie数据、个人身份信息等)、控制用户的浏览器、重定向用户到恶意网站、更改页面内容以欺骗用户等。这些操作可能导致用户数据泄露、账户被劫持等严重后果。

利用

​ 同样以dvwa靶场low级别为例,同样先查看源代码,发现站点没有对用户输入做任何过滤

在这里插入图片描述

他限制了Name输入的长度为10,所以我们在Message中插入恶意脚本

在这里插入图片描述

成功弹窗

在这里插入图片描述

DOM型XSS漏洞

特点

  1. 不依赖于服务器交互:DOM型XSS漏洞的攻击过程完全在客户端执行,不需要与服务器端进行交互。这意味着攻击者可以直接通过修改页面的DOM结构来插入恶意脚本,而无需经过服务器的处理。
  2. 独特的攻击方式:DOM型XSS漏洞的攻击者利用HTML注入漏洞,将恶意脚本插入到网页的DOM结构中。攻击脚本通常隐藏在看似无害的用户输入中,当这些输入被动态地插入到DOM中时,恶意脚本就会被执行。
  3. 非持久性:与存储型XSS不同,DOM型XSS不会将恶意脚本保存到服务器的数据库中。每次攻击都需要用户触发特定的操作或事件,如点击按钮、移动鼠标等,才能执行恶意脚本。
  4. 检测难度大:由于DOM型XSS的攻击过程在客户端执行,且不会出现在HTTP响应请求里,传统的反射型XSS和存储型XSS的检测方法并不适用。目前针对DOM型XSS漏洞的检测主要依赖于黑盒fuzzing、静态分析和动态分析等方法,但这些方法各有其局限性,如误报率高或实现成本高等。

利用

以DVWA靶场low级别为例,同样先查看php码源,发现后端没做任何防护,甚至连注释都给你写好了,让你随便曰。那没啥好说的,直接常用的恶意脚本。

在这里插入图片描述

但是主页上我们没有找到与后端进行交互的文本框,所以思路放在前端上。

在这里插入图片描述

按f12查看网络源代码,发现是default来传参,尝试修改url中default的值。

在这里插入图片描述

注入成功。

在这里插入图片描述

常见绕过方法总结

  1. 前端绕过

    使用BP抓包改包绕过

  2. 双写绕过

   <scri<script>pt>alert(111)</scri<script>pt>
  1. 事件绕过

    构造onlick或者onmouseover等事件

  2. 大小写绕过

   <SCRIPT>aLeRT(111)</sCRIpt>
  1. 伪协议绕过
<img srC= "javascript:alert('ss);" >

注:某些浏览器可能不支持伪协议

  1. 编码绕过

    • base64编码

    • JS编码

    • 十六进制

    • unicode

    • HTML实体编码

    • URL编码

这里绕过方法总结写的比较简单,一是全部写完任务量很大,时间不够。二是本人水平有限,只能给各位提供一个学习思路,供各位学习参考,大家一起努力。0v0

  • 50
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值