【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞

1. 漏洞结果

JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库,攻击者就可以利用此漏洞来劫持用户浏览器,进行挂马、XSS、Cookie劫持等攻击。

1.1 漏洞扫描截图

输入图片说明

1.2 具体漏洞的 js 文件

输入图片说明

1.3 参考博客

Vue 项目安全扫描漏洞,JS 库版本太低,要求升级 YUI,过程总结

2. 定位漏洞

博客中提供三个可能存在这个漏洞的框架库。

  1. jquery;
  2. js-cookie;
  3. jsencrypt。
2.1 开始狡辩
  1. jsencrypt 依赖包最新版本查询
    输入图片说明

  2. 漏洞项目的 jsencrypt 的版本
    输入图片说明

由于前两个框架项目中没有使用,所以直接找第三个,证明漏洞项目已经是最新的了,而且项目中没有使用 YUI 库。因此可能不是这个库的问题。

2.2 漏洞甩脸

输入图片说明

安全扫描在扫描代码里边的确存在这个漏洞!

2.3 全局搜索

输入图片说明

全项目搜索,并未找到该漏洞,但是打包后漏洞又是存在的,就说明漏洞因该在 jsencrypt 包里。

2.4 找到漏洞代码

输入图片说明

可以看到这个代码是存在在 jsencrypt 中的,只是是通过 eval 方法执行的,哎,没想到最新版本,还是存在这个漏洞,但是加密又要使用,不能修改包里的文件。

3. 漏洞分析

YUI 2.8.0至2.9.0中Flash组件基础架构中的跨站脚本(XSS)漏洞,如4.0.9之前的Bugzilla 3.7.x和4.0.x、4.2.4之前的4.1.x和4.2.x以及4.4rc1之前的4.3.x和4.4.x中使用的漏洞,允许远程攻击者通过与swfstore.swf相关的向量注入任意web脚本或HTML,这与CVE-2010-4209类似。

输入图片说明

他的意思就是说 2.9.0 版本中的 Flash组件允许远程攻击者通过与swfstore.swf相关的向量注入任意web脚本或HTML导致的跨站脚本(XSS)漏洞。

3.1 检查是否使用了 YUI 的 Flash 组件

输入图片说明

可以看到代码只使用了 YUI 的 lang.extend 方法,并没有 Flash 组件的使用。原理上该项目是不存这个漏洞的,那么安全扫描是怎么扫出来存在漏洞的呢?

3.2 安全扫描报告

输入图片说明

通过报告可以看出,他是通过 YUI:2.9.0 这个版本号来得出安全隐患的。

4. 解决办法

通过上边分析,首先我们代码中没有使用 YUI 的 Flash 组件,所以不存在安扫报告里边的漏洞,但是你又高让安全扫描通过,而安全扫描是通过 YUI:2.9.0 版本号来确定存在隐患的,解决办法:删除版本号。

4.1 使用压缩后的文件
// 旧的引入方式
import JSEncrypt from 'jsencrypt'
// 新的引入方式
import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
4.2 删除注释
  1. 删除注释:vue.config.js 配置代码
chainWebpack(config) {
  // 删除注释
  config.optimization.minimizer('terser').tap(args => {
    // 直接修改 terserOptions 下的属性值,保留原有配置
    // 这里访问 terserOptions 的时候并没有 output,访问不到 output.comments 需要直接赋值
    args[0].terserOptions.output = {
      comments: false,
    }
    return args
  })
}
  1. 在漏洞项目运行报错
    输入图片说明

5. Vue项目WebPack打包删除注释和console

5.1 安装 uglifyjs-webpack-plugin
npm install uglifyjs-webpack-plugin -D
5.2 vue.config.js 配置
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
 
module.exports = {
  configureWebpack: {
    optimization: {
      minimizer: [
        new UglifyJsPlugin({
          uglifyOptions: {
            // 删除注释
            output: {
              comments: false
            },
            // 删除console debugger 删除警告
            compress: {
              drop_console: true, //console
              drop_debugger: false,
              pure_funcs: ['console.log'] //移除console
            }
          }
        })
      ]
    }
  }
}

6. 总结

  1. 最后通过安全扫描,其实这个漏洞只是存在隐患,项目中并没有使用 YUI 的 Flash 组件,因此是不存在这个漏洞,但是项目要通过安全扫描,没有办法,只能根据扫描工具的定位漏洞方法,去解决。
  2. 这个过程都是根据已存在的博客去依次排查解决,所以这些问题遇到了,就只能看能不能在网上找到解决办法,下一次一个安扫问题,估计不一定能解决。

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

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

相关文章

C/C++ 数据结构与算法【线性表】 顺序表+链表详细解析【日常学习,考研必备】带图+详细代码

1)线性表的定义 线性表(List):零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an},假设每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素…

回文链表(java)

什么是回文链表 回文链表是指一个链表,其节点值从前往后和从后往前读是相同的。例如,链表 1->2->3->2->1 就是一个回文链表,因为无论从头到尾还是从尾到头读,节点值都是一样的 题目描述: 给你一个单链表…

nVisual可视化资源管理工具

nVisual主要功能 支持自定义层次化的场景结构 与物理世界结构一致,从全国到区域、从室外到室内、从机房到设备。 支持自定义多种空间场景 支持图片、CAD、GIS、3D等多种可视化场景搭建。 丰富的模型库 支持图标、机柜、设备、线缆等多种资源对象创建。 资源可…

Java基础——泛型(2) # Integer-128陷阱

在上一篇博客里解释了什么是泛型的定义,本篇笔记来更进一步的介绍泛型的内容。 Java基础——泛型定义https://blog.csdn.net/2301_78566776/article/details/144022022?spm1001.2014.3001.5502 补充:128陷阱 128陷阱是Java编程中的一个常见现象,主要涉…

【Webgl_glslThreejs】制作流水效果/毛玻璃效果材质

效果预览 shadertory源码 source: https://www.shadertoy.com/view/lldyDs 材质代码 import { DoubleSide, ShaderChunk, ShaderMaterial, TextureLoader } from "three"; /** * * source https://www.shadertoy.com/view/lldyDs */export default fu…

[已解决]Visual Studio 2022中如何同时打开多个项目多个独立窗口

同时运行两个VS2022程序,即点击运行Visual Studio 2022.exe后,再点击运行一次运行Visual Studio 2022.exe,效果如图

Windows安装Node.js

当出现这个的时候,是说明没有安装Node.js。 Node.js安装包及源码下载地址为:Node.js — Download Node.js Package Manager: 使用系统自带的包管理工具(如 apt、yum、brew)安装。自动管理依赖和更新,适合命…

SVL-Adapter: Self-Supervised Adapter for Vision-Language Pretrained Models

当前的问题 CLIP和CLIP-Adapter等方法的一个主要局限性是,它们没有对视觉编码器所编码的底层表示进行显著的修改。原因很简单:微调大型模型需要大量的监督,这在低监督学习设置中是很难获得的。如果下游分类任务的图像来自与互联网常见图像相…

MySQL之创建和管理表

目录 1. MySQL中的数据类型​编辑​编辑 2. 创建和管理数据库 方式1:创建数据库 方式2:创建数据库并指定字符集 方式3:判断数据库是否已经存在,不存在则创建数据库( 推荐 ) 总结 2.2 使用数据库 查看当…

深度学习模型:门控循环单元(GRU)详解

本文深入探讨了门控循环单元(GRU),它是一种简化版的长短期记忆网络(LSTM),在处理序列数据方面表现出色。文章详细介绍了 GRU 的基本原理、与 LSTM 的对比、在不同领域的应用以及相关的代码实现,…

解决“磁盘已插上,但Windows系统无法识别“问题

电脑上有2块硬盘,一块是500GB的固态硬盘,另一块是1000GB的机械硬盘,按下开机键,发现500G的固态硬盘识别了,但1000GB的机械硬盘却无法识别。后面为了描述方便,将"500GB的固态硬盘"称为X盘&#xf…

mysql_题库详解

1、如何创建和删除数据库? 1)创建数据库 CREATE DATABASE 数据库名; 2)删除数据库 drop database 数据库名; 2、MyISAM与InnoDB的区别? 1)事务:MyISAM 不支持事务 InnoDB 支持 2)行锁/表锁&a…

大数据新视界 -- 大数据大厂之 Hive 数据安全:加密技术保障数据隐私(下)(16/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

存储服务器一般做是做什么阵列?详细列举一下

存储服务器通常使用 RAID(Redundant Array of Independent Disks) 阵列技术来管理磁盘,以提高数据的性能、可靠性和可用性。所选择的 RAID 类型取决于存储服务器的具体用途和需求,比如性能要求、容量需求、容错能力等。 以下是存…

2024142读书笔记|《别无归处是归处》——一壶酒,一竿身,世上如侬有几人

2024142读书笔记|《别无归处是归处》——一壶酒,一竿身,世上如侬有几人 《别无归处是归处:吴镇的“渔父”画题(文人画的真性)》作者朱良志。诗词与古画并存的一本书,古画是比较偏复古黯淡微黄及墨色的&…

opencv 区域提取三种算法

opencv 区域提取三种算法 1.轮廓查找 findContours()函数&#xff0c;得到轮廓的点集集合 cv::vector<cv::vector<Point>> contours;threshold(roiMat,binImg,m_pPara.m_nMinGray,m_pPara.m_nMaxGray,THRESH_BINARY);//膨胀处理Mat dilaElement getStructuringE…

神经网络中的损失函数(Loss Function)

损失函数&#xff08;Loss Function&#xff09;在机器学习和深度学习中扮演着至关重要的角色&#xff0c;它是衡量模型预测值与实际值之间差异程度的函数。通过最小化损失函数&#xff0c;我们可以优化模型的参数&#xff0c;使其预测结果更加准确。 一、损失函数的定义 损失函…

服务器命令行复制文件

服务器拷贝大文件太慢&#xff0c;而且容易断线&#xff0c;可以采用命令行复制文件 复制windows server服务器文件到linux服务器 scp D:\bim\uploadPath.zip ruoyixx.xx.xx.xx:/home/ruoyi/temp/uploadPath.zip 复制linux服务器文件到windows server服务器 scp ruoyixx.xx.…

TiDB 关联子查询及半连接的优化实践

导读 TiDB 针对子查询语句会执行多种子查询相关的优化 ( https://docs.pingcap.com/zh/tidb/stable/subquery-optimization )&#xff0c;以提升子查询的执行性能。半连接语句和关联子查询语句是常用的两类子查询&#xff0c;TiDB 优化器默认包含一些自动优化策略&#xff0c;…

Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation

问题描述 ​   之前我们有讲过如何使用Jpype调用jar包&#xff0c;在成功调用jar包后&#xff0c;接着在Pytest框架下编写自动测试用例。但是在Pytest下使用Jpype加载jar包&#xff0c;并调用其中的方法会以下提示信息&#xff1a; ​   虽然提示信息显示有Windows显示致命…