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

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

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

相关文章

SM3在线计算工具

SM3是中华人民共和国政府采用的一种密码散列函数标准&#xff0c;由国家密码管理局于2010年12月17日发布。相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。 在商用密码体系中&#xff0c;SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等&#xff0c;其算法…

RPM 打包入门(基于openEuler)

主要参考内容&#xff08;均为官方文档&#xff09;&#xff1a; https://rpm-packaging-guide.github.io/#building-rpms https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/8/html/packaging_and_distributing_software/introduction-to-rpm_packagin…

WPF文本绑定显示格式StringFormat设置-特殊格式时间日期和多数据绑定

WPF文本绑定显示格式StringFormat设置 特殊格式设置日期/时间使用系统默认样式自定义格式&#xff1a; 绑定多个属性&#xff08;多重绑定&#xff09;多重绑定中的特殊字符示例&#xff1a; 特殊格式设置 在Textblock等文本控件中&#xff0c;我们经常要显示一些日期和时间&a…

【R语言】地理探测器模拟及分析(Geographical detector)

地理探测器模拟及分析 1. 写在前面2. R语言实现2.1 数据导入2.2 确定数据离散化的最优方法与最优分类2.3 分异及因子探测器&#xff08;factor detector&#xff09;2.4 生态探测器&#xff08;ecological detector&#xff09;2.5 交互因子探测器&#xff08;interaction dete…

Leetcode3184. 构成整天的下标对数目 I

Every day a Leetcode 题目来源&#xff1a;3184. 构成整天的下标对数目 I 解法1&#xff1a;遍历 统计满足 i < j 且 hours[i] hours[j] 构成整天的下标对 i, j 的数目。 构成整天的条件&#xff1a;(hours[i] hours[j]) % 24 0。 代码&#xff1a; /** lc applee…

推出RW610高度集成的低功耗无线MCU,带内置3频:1x1 Wi-Fi®6+ Bluetooth® Low Energy 5.4射频单元

RW610是一款高度集成的低功耗无线MCU&#xff0c;它集成了MCU和Wi-Fi6Bluetooth Low Energy (LE) 5.4射频单元&#xff0c;适用于多种应用&#xff0c;包括互联智能家居设备、游戏控制器、企业和工业自动化、智能配件和智能能源。 采用TFBGA145封装的系列器件&#xff1a;RW61…

大数据学习-环境准备

VMware 部分 网络设置 下载好 CentOS 7 的镜像文件 修改 VMware 的网络 把子网 ip 修改为 192.168.88.0&#xff0c;然后点击 NAT 设置&#xff0c;修改网关 IP 为 192.168.88.2 之后就确定即可 虚拟机安装 选择镜像文件&#xff0c;使用 VMware 的典型安装方法即可&#…

分解数据堆栈:存储和计算 2.0 的分解

在LinkedIn上&#xff0c;有一篇优秀的帖子在数据和数据库人群中流行。它由 Theory VC 合伙人 Tomasz Tunguz 撰写&#xff0c;讲述了我们自 2019 年以来讨论的趋势。 数据库正在成为高速查询引擎&#xff0c;并正在抛弃存储。这并不意味着存储不重要&#xff0c;相反&#xf…

Opencv学习项目5——pyzbar,numpy

上一次我们使用pyzbar进行解码二维码并将其内容显示在图像上&#xff0c;使用的是rect barcode.rect来获取图像的坐标&#xff0c;这次我们使用另一种方法来获取坐标进行画框。 Numpy介绍 NumPy 是一个用于科学计算的开源 Python 库&#xff0c;提供了对大量数值数据进行高效操…

MFC GDI绘制卡通人物

文章目录 主要代码完整visual studio工程下载主要代码 // DrawFrogView.cpp : implementation of the CDrawFrogView class //#include "stdafx.h" #include "DrawFrog.h"#include "DrawFrogDoc.h" #include "DrawFrogView.h"#includ…

5. Revit API: Application

5. Revit API: Application 前言 上一篇中&#xff0c;讲到了UI篇的Ribbon&#xff08;界面&#xff09;&#xff0c;并提到要创建 RibbonPanel&#xff0c;需要使用UIControlledApplication.CreateRibbonPanel(..)方法&#xff0c;还在结尾说到要写“UI”开头的那些个类&…

碳钢酸洗线送酸槽蒸汽冷凝水PH计测量装置改进方法

碳钢酸洗线送酸槽蒸汽冷凝水PH计测量装置改进方法 一、项目提出前状况 1)立项背景 轧钢退火酸洗生产线的酸洗过程需要使用大量的硫酸、盐酸、硝酸、氢氟酸等酸液对钢带的表面进行清洗,酸洗过后产生较多的酸洗废水,酸洗废水需要经过处理达到污水排放标准后才能排放。其中酸…

【linux】内核源码TCP->IP->L2层函数调用继续摸索中

日志打印的时候&#xff0c;把行数也打印了&#xff1a; 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/b847489a9910f68b9581fd8788807c697c82cdbd 上回基于应用层wget操作找到TCP调用的一些接口&#xff0c;并且已经到IP层的一些接口&#xff0c;当前基…

昇思25天学习打卡营第3天|数据集Dataset

一、简介&#xff1a; 数据是深度学习的基础&#xff0c;高质量的数据输入将在整个深度神经网络中起到积极作用。有一种说法是模型最终训练的结果&#xff0c;10%受到算法影响&#xff0c;剩下的90%都是由训练的数据质量决定。&#xff08;doge&#xff09; MindSpore提供基于…

Docker常用操作和命令

文章目录 1、卸载旧版本 2、yum安装Docker CE&#xff08;社区版&#xff09; 3、添加镜像加速器 4、docker --version 查看docker版本 5、docker info 或 docker system info 显示 Docker 系统的详细信息&#xff0c;包括容器、镜像、网络等 6、docker search 搜索镜像 …

仙讯畅通无阻:探索MQ阵法的强大功能

MQ起源 IBM MQ&#xff1a;IBM MQ是IBM推出的一系列消息导向中间件产品&#xff0c;最初在1993年12月发布。它最初被称为MQSeries&#xff0c;2002年更名为WebSphere MQ&#xff0c;以加入WebSphere产品系列。2014年4月&#xff0c;它被重新命名为IBM MQ。Apache ActiveMQ&…

永辉超市:胖东来爆改,成色几何?

单日业绩暴涨14倍。来&#xff0c;看看&#xff0c;这是被胖东来爆改后重新开业后的门店&#xff0c; 不出意外的流量爆炸。胖东来爆改&#xff0c;真是解决实体商超困境的灵丹妙药吗&#xff1f; 今天我们聊聊——永辉超市 最近两年实体商超日子都不好过&#xff0c;去年13家…

cron.timezone

系统 date 数据库 show timezone插件 show cron.timezonealter system set cron.timezonePRC;show cron.timezone

【odoo】常用的基本视图类型

概要 在Odoo中&#xff0c;有几种基本视图类型&#xff0c;每种视图类型用于不同的目的和场景。这些视图类型包括表单视图&#xff08;form view&#xff09;、树视图&#xff08;tree view&#xff09;、看板视图&#xff08;kanban view&#xff09;、图表视图&#xff08;gr…