【解决安全扫描漏洞】---- 检测到目标站点存在 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, //consoledrop_debugger: false,pure_funcs: ['console.log'] //移除console}}})]}}
}

6. 总结

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

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

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

相关文章

互联网基础

TCP/IP协议(协议组) 分层名称TCP/IP协议应用层HTTP,FTP,mDNS,WebSocket,OSC...传输层TCP,UDP网络层IP链路层(网络接口层)Ethernet,Wi-Fi... 链路层(网络接口层) 链路层的主要作用…

【分组去重】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

hdlbits系列verilog解答(Exams/m2014 q4d)-89

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节实现以下电路。 模块声明 module top_module ( input clk, input in, output out); 思路: 它的输入是一个组合逻辑异或门,将输入和输出异或后输入D触发器,这意味着输出与历史输出及当前输入都有关系,…

Cesium K-means自动聚合点的原理

Cesium K-means自动聚合点的原理 Cesium 是一个开源的 JavaScript 库,用于在 Web 环境中创建 3D 地球和地图应用。它能够处理地理空间数据,并允许开发者对大规模的地理数据进行可视化展示。在一些应用中,尤其是当处理大量地理坐标点时&#…

Kafka如何保证消息可靠?

大家好,我是锋哥。今天分享关于【Kafka如何保证消息可靠?】面试题。希望对大家有帮助; Kafka如何保证消息可靠? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性,主要包…

yolov5 解决:export GIT_PYTHON_REFRESH=quiet

当我们在第一次运行YOLOv5中的train.py程序时:可能会出现以下报错: This initial warning can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values: - quiet|q|silen…

【Linux】进程控制-----进程替换

目录 一、为什么要进行进程替换: 二、进程替换的原理: 三、exec家族: 1、execl: 2、execlp: 3、execv: 4、execvp: 5、execle和execve ​编辑 putenv: 一、为什么要进行进程…

基于hexo框架的博客搭建流程

这篇博文讲一讲hexo博客的搭建及文章管理,也算是我对于暑假的一个交代 !!!注意:下面的操作是基于你已经安装了node.js和git的前提下进行的,并且拥有github账号 创建一个blog目录 在磁盘任意位置创建一个…

Git远程仓库操作

文章目录 远程仓库连接Gitee克隆代码 多人协同问题说明 🏡作者主页:点击! 🤖Git专栏:点击! ⏰️创作时间:2024年12月1日13点10分 远程仓库 Git 是分布式版本控制系统,同一个 Git …

新能源汽车充电基础设施短板问题多,如何实现高效、综合、智能化管理?

随着城市经济的发展,人民生活水平的提升,新能源汽车保有量快速增长,而日益增长的新能源汽车需求与充电基础设施建设不平衡的矛盾日益突出。由于停车泊位充电基础设施总量不足、布局待优化、利用效率低、建设运营存在短板问题等原因&#xff0…

【element-tiptap】导出word

前言:前面的文章 【element-tiptap】导入word并解析成HTML 已经介绍过如何在 element-tiptap 中导入 word。这篇文章来探究一下怎么将编辑器的内容导出成word (一)创建菜单项 1、图标 首先上 fontawesome 这个网站上找一个合适的图标&…

理解Java集合的基本用法—Collection:List、Set 和 Queue,Map

本博文部分参考 博客 ,强烈推荐这篇博客,写得超级全面!!! 图片来源 Java 集合框架 主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合(单列…

使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…

架构师:Dubbo 服务请求失败处理的实践指南

1、简述 在分布式服务中,服务调用失败是不可避免的,可能由于网络抖动、服务不可用等原因导致。Dubbo 作为一款高性能的 RPC 框架,提供了多种机制来处理服务请求失败问题。本文将介绍如何在 Dubbo 中优雅地处理服务请求失败,并结合具体实践步骤进行讲解。 2、常见处理方式 …

加载不同本地gltf模型,模型内容不更新的解决方案

相关链接 http://mars3d.cn/editor-vue.html?keyex_6_2_2&idlayer-graphic/draw/draw-model 问题内容 加载本地gltf模型的时候,不clear图层,再打开其他本地gltf,gltf的内容就不更新 重现步骤 进入官网示例,贴入以下代码…

【51单片机】程序实验910.直流电机-步进电机

主要参考学习资料:B站【普中官方】51单片机手把手教学视频 前置知识:C语言 单片机套装:普中STC51单片机开发板A4标准版套餐7 码字不易,求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 程序实验9&10.直流电机-步进电机…

Linux——自定义简单shell

shell 自定义shell目标普通命令和内建命令(补充) shell实现实现原理实现代码 自定义shell 目标 能处理普通命令能处理内建命令要能帮助我们理解内建命令/本地变量/环境变量这些概念理解shell的运行 普通命令和内建命令(补充) …

如何把Qt exe文件发送给其他人使用

如何把Qt exe文件发送给其他人使用 1、先把 Debug改成Release2、重新构建项目3、运行项目4、找到release文件夹5、新建文件夹,存放exe文件6、打开qt控制台串口7、下载各种文件8、压缩,发送压缩包给别人 1、先把 Debug改成Release 2、重新构建项目 3、运行…

Kafka的消费消息是如何传递的?

大家好,我是锋哥。今天分享关于【Kafka的消费消息是如何传递的?】面试题。希望对大家有帮助; Kafka的消费消息是如何传递的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,消息的消费是通过消费…

el-drawer如何实现增加resize拖曳改变宽度大小,通过小图标进行拖拽

请先看效果图 我主要是通过这个按钮来进行拖拽的,记住自行添加按钮图片 第一步 新建一个myDrawerDrag.js文件 import Vue from vueVue.directive(drawerDrag, {bind(el, binding, vnode, oldVnode) {const minWidth 400const dragDom el.querySelector(.el-drawe…