XSS漏洞—XSS平台搭建与打cookie

一、跨站脚本攻击漏洞接收平台

推荐两个:

1)xsser : XSS平台 - (支持http/https)XSS Platform

2)蓝莲花 :GitHub - firesunCN/BlueLotus_XSSReceiver

xsser:

BlueLotus:

二、跨站脚本攻击漏洞绕过及防御

跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web应用程序安全漏洞,攻击者可以通过这种漏洞在用户的浏览器中执行恶意脚本。这种攻击可以导致用户信息泄露、会话劫持、恶意软件下载等安全问题。以下是一些关于XSS攻击漏洞的绕过技巧和防御策略:

1. **输入验证与净化**:对所有不受信任的输入进行严格检查和净化,去除或转义特殊字符,如尖括号、双引号、斜线等。

  • 假设用户输入用于搜索查询,后端代码可能如下所示:
user_input = "<script>alert('xss');</script>"
sanitized_input = sanitize_input(user_input)
# 假设sanitize_input是一个函数,用于转义或删除恶意脚本

2. **输出编码**:在向浏览器输出数据时,确保正确使用HTML实体编码、JavaScript字符串编码或CSS编码,以防止恶意脚本的执行。

  • 当向用户显示数据时,确保对输出进行HTML编码:
echo htmlspecialchars($user_data, ENT_QUOTES, 'UTF-8');

3. **使用HTTPOnly Cookie**:设置session cookie为HTTPOnly属性,这样即使存在XSS漏洞,攻击者也无法通过JavaScript访问这些cookie,从而保护用户的会话安全。

  • 在设置cookie时,添加HTTPOnly标志:
Set-Cookie: sessionid=abc123; HttpOnly

4. **实施Content Security Policy (CSP)**:通过CSP策略限制网页加载的资源来源,避免引入恶意脚本。

  • 在HTTP响应头中设置CSP
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com;

5. **前端安全库**:利用诸如 `DOMPurify` 这样的库对DOM操作进行安全过滤,防止基于DOM的XSS攻击。

  • 使用DOMPurify库对用户输入进行清理
var clean = DOMPurify.sanitize(userInput);
document.getElementById('result').innerHTML = clean;

6. **避免内联事件**:避免在HTML中使用内联JavaScript事件处理器,如 `onLoad="onload('{{data}}')"` 或 `onClick="go('{{action}}')"`,因为这些容易受到XSS攻击。

7. **避免拼接HTML**:前端采用拼接HTML的方法比较危险,如果可能,使用 `createElement`、`setAttribute` 等方法实现,或者采用成熟的渲染框架,如Vue或React。

8. **增加攻击难度**:使用上述的通用手段,降低被攻击的后果,例如通过WAF(Web Application Firewall)进行防御。

9. **持续更新和维护**:使用最新版本的Web开发框架和库,定期更新和打补丁,以修复已知的安全漏洞。

10. **安全审计与监控**:定期进行安全审计和监控,以便及时发现和修复安全漏洞。

XSS绕过的例子:
  • 绕过输入验证:
  • 攻击者可能会尝试使用不同的字符编码或分隔符来绕过简单的输入验证。例如,如果输入验证只检查 < 和 >,攻击者可能使用HTML实体如 &lt; 和 &gt; 来代替。

  • 绕过输出编码:
  • 如果防御措施只对某些字符进行编码,攻击者可能会利用未被编码的字符构造恶意脚本。例如,如果只对双引号进行编码,攻击者可以使用单引号来闭合JavaScript代码:

    ';alert('xss');//'
  • 绕过HTTPOnly Cookie:
  • 尽管HTTPOnly Cookie可以防止JavaScript访问,但攻击者可能会利用其他方式如URL参数或POST数据来传递会话ID,然后通过其他途径(如CSRF攻击)利用这些信息。

  • 绕过CSP:
  • 攻击者可能会尝试找到CSP策略的漏洞,例如,如果CSP策略允许加载某些内联脚本,攻击者可能会尝试注入恶意代码。

  • 利用前端框架的漏洞:
  • 如果前端框架没有正确地清理用户输入,攻击者可能会利用框架的漏洞来执行XSS攻击。例如,在Vue中,如果没有正确使用v-html指令,攻击者可能会注入HTML和JavaScript代码。

XSS绕过实例——弹窗动作

例如:有一个网页需要用户输入后回显用户的输入,但是没有做好XSS防范

01)< >被过滤的情况下

      假如在特殊标签下的时候,可以构造一些事件触发

"autofocus onfocus=alert(1)

02)alert被过滤的情况下

      编码;另外prompt和confirm也可以弹窗

<a href=data:text/html;base64,PHNjcmlwdD5hbGVydCgzKTwvc2NyaXB0Pg==>
//上面这条在Firefox可以运行,在chrome不行
<svg/onload=prompt(1)/>
<a href=j&#x61;v&#97script&#x3A;&#97lert(13)>M

03)on事件被过滤的情况下

<form><button formaction=javascript&colon;alert(1)>M
<a href="javascript:alert(document.location);">XSS</a>
<b style="width:expression(alert(document.location));">XSS</b>  //IE6以下不可以
<math><a Xlink:href=javascript:alert(1)>1</a></math>  //Firefox可以,chrome不可以

      可以执行js的属性:

formaction action href xlink:href src content data

04)其他情况

XSS防御实例

1.阻止恶意代码注入

2.阻止恶意操作执行

不管是反射型还是存储型xss,都能通过服务端过滤进行防御:

  • 黑名单:过滤特殊符号及字符,如< , > , % , # , / , " , ' , ( , ) , script , svg , object , on事件等
  • 白名单:只允许特定类型或符号

根据输入的数据特征限制使用的类型,如年龄限制为数字类型:输入类型为字符型限制为仅可使用大小写的26个字母及数字及-和_;等


​​​​​​​

  • 编码及转义:输出在标签或属性中进行HTML编码;输出在script标签或事件中进行JavaScript编码;输出在URL中进行URL编码
  • cookie中设置httponly:setcookie将httponly选项设置为true,防范cookie劫持
  • 确保执行脚本来源可信:开发者明确的告诉客户端,哪些外部资源可以加载执行(CSP策略)
  • 不使用有缺陷的第三方库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLC开关电源开发:如何使用信号发生器与示波器设计环路

如何使用信号发生器与示波器设计环路 一、主回路二、小信号注入三、LLC 数字环路计算书一、主回路 如下图所示为系统整体架构,包括 LLC 主功率线路,采集线路、RC 滤波线路,DSP 运算。DSP 通过采集由差分运放转化而来的输出电压量(一阶 RC 滤除线路杂波),经数字环路产生特…

【嵌入式Linux】<总览> 进程间通信(更新中)

文章目录 前言 一、管道 1. 概念 2. 匿名管道 3. 有名管道 二、内存映射区 1. 概念 2. mmap函数 3. 进程间通信&#xff08;有血缘关系&#xff09; 4. 进程间通信&#xff08;没有血缘关系&#xff09; 5. 拷贝文件 前言 在文章【嵌入式Linux】&#xff1c;总览&a…

SQL Server数据库安装

原文&#xff1a;https://blog.c12th.cn/archives/26.html SQL Server数据库安装 测试&#xff1a;笔记本原装操作系统&#xff1a;Windows 10 家庭中文版 资源分享链接&#xff1a;提取码&#xff1a;qbt2 注意事项&#xff1a; 请严格按照步骤安装&#xff0c;SQL软件安装较…

DDMA信号处理以及数据处理的流程---doa估计

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

鼠标与键盘交互设计

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在海龟绘图中&#xff0c;也支持与鼠标或键盘的交互操作。它提供了监听键盘按键事件、鼠标事件以及定时器等方法&#xff0c;下面分别进行介绍。 1键…

tensorflow学习:错误 InternalError: Dst tensor is not initialized

tensorflow学习&#xff1a;错误 InternalError: Dst tensor is not initialized_dst tensor is not initialized.-CSDN博客https://blog.csdn.net/wanglitao588/article/details/77033659

基于51单片机的RFID门禁系统-LCD12864显示

一.硬件方案 本RFID系统设计可分为硬件部分和软件部分。硬件部分以MFRC522射频识别模块为核心&#xff0c;结合主控模块STC89C52设计系统的外围硬件电路&#xff0c;实现对射频卡的控制与MCU之间的互通。软件部分采用C语言进行系统的下位机程序的开发&#xff0c;完成与IC卡之…

后端学习笔记:Python基础

后端学习笔记&#xff1a;Python基础 数据类型&#xff1a; Python中主要有以下几种常用的基本数据类型&#xff1a; String 字符串类型&#xff0c;用单引号或者双引号引用Number 数字类型&#xff0c;包括浮点数&#xff0c;整数&#xff0c;长整数和复数List 列表项&…

【Linux】常用基本命令

wget网址用于直接从网上下载某个文件到服务器&#xff0c;当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候&#xff0c;可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…

一个土木工程专业背景的开发者,讲述开源带给他的力量

在前段时间我们举办的“TDengine Open Day”第一季技术沙龙中&#xff0c;TDengine 应用研发高级工程师谭雪峰进行的“开源之路&#xff1a;程序员的成长与探索”主题分享获得了众多参会者的好评。谭雪峰从自身独特的职业发展经历出发&#xff0c;分享了自己在开源领域的种种收…

替换或重写Tomcat内置的404页面

替换或重写Tomcat内置的404页面 准备一个Tomcat隐藏Tomcat的相关信息纯净版的Tomcat解决Tomcat启动乱码的问题 替换或重写Tomcat内置的404页面创建新的首页和错误页面页面代码如下所示&#xff1a;创建首页index.html创建error_404.html页面创建其他错误页面创建编写web.xml&am…

工业软件的分类与选择策略:针对中小企业的实际应用考量

工业软件是现代工业体系的“大脑”&#xff0c;已经渗透到几乎所有工业领域的核心环节&#xff0c;是现代产业之“魂”&#xff0c;是制造强国之重器。工业软件通过优化生产流程、实时监控设备状态、实现自动化控制等功能&#xff0c;可以帮助企业显著提升生产效率和质量&#…

让工厂像手机一样更“聪明”

手机&#xff0c;作为我们日常生活中不可或缺的一部分&#xff0c;以其智能、便捷、高效的特点&#xff0c;彻底改变了我们的沟通、娱乐和工作方式。那么&#xff0c;想象一下&#xff0c;如果工厂能像手机一样便捷&#xff0c;那么生产过程中的每一个环节都将变得触手可及。通…

jstack的火焰图使用说明

1、jstack的官方文档说明 How to use Flame Graph? - Fast thread 2、jstack的文件分析网站&#xff0c;可以关注cpu消耗比较高的线程和火焰图 GC log analysis error

[word] Word如何删除所有的空行? #职场发展#学习方法

Word如何删除所有的空行&#xff1f; 很多网友从网页复制文字粘贴到word文档后发现段落之间有空行&#xff0c;如果文字不多&#xff0c;手动删除这些空行也没有多少工作量&#xff0c;但是如果文字的字数达到成千上万&#xff0c;一个个手动删除这些空行还是很繁琐的。那么&a…

Linux-笔记 高级I/O操作

前言 I/O&#xff08;Input/Output&#xff0c;输入/输出&#xff09;是计算机系统中的一个重要组成部分&#xff0c;它是指计算机与 外部世界之间的信息交流过程。I/O 操作是计算机系统中的一种基本操作&#xff0c;用于向外部设备&#xff08;如 硬盘、键盘、鼠标、网络等&am…

Spring Cloud - 开发环境搭建

1、JDK环境安装 1、下载jdk17&#xff1a;下载地址&#xff0c;在下图中红色框部分进行下载 2、双击安装&#xff0c;基本都是下一步直到完成。 3、设置系统环境变量&#xff1a;参考 4、设置JAVA_HOME环境变量 5、在PATH中添加%JAVA_HOME%/bin 6、在命令行中执行&#xff1a;j…

Python学习笔记17:进阶篇(六)代码测试

代码测试 代码测试是软件开发过程中的关键环节&#xff0c;旨在确保代码质量、功能正确性以及性能符合预期。 在开发过程中&#xff0c;进行代码测试有很多好处&#xff1a; 提高软件质量&#xff1a;通过发现并修复错误&#xff0c;测试有助于提升软件的功能性、可靠性和稳…

黑马程序员-瑞吉外卖-前六章

黑马程序员瑞吉外卖 文章目录 1、开发环境搭建1.1 数据库环境1.2 maven项目搭建1.2.1 新建项目1.2.2 整合MyBatisPlus1.2.3 整合Druid1.2.4 配置文件application.yml1.2.5 尝试启动项目1.2.6 将前端静态页面引入到项目中 2、 后台系统登录功能2.1 需求分析2.2 代码开发2.2.1 创…

解析网页数据并且处理网页正则表达式与re模块

目录 一、解析网页数据的技术 1&#xff0e;正则表达式 2&#xff0e;XPath 3&#xff0e;Beautiful Soup 4&#xff0e;JSONPath 二、正则表达式的语法 1&#xff0e;元字符 2&#xff0e;预定义字符集 三、 re 模块的使用 1&#xff0e;创建 Pattern 对象 2&#…