【解决安全扫描漏洞】---- 检测到目标站点存在 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
    })
    }

  2. 在漏洞项目运行报错

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. 这个过程都是根据已存在的博客去依次排查解决,所以这些问题遇到了,就只能看能不能在网上找到解决办法,下一次一个安扫问题,估计不一定能解决。
相关推荐
安大小万10 分钟前
C++ 学习:深入理解 Linux 系统中的冯诺依曼架构
linux·开发语言·c++
随心Coding14 分钟前
【零基础入门Go语言】错误处理:如何更优雅地处理程序异常和错误
开发语言·后端·golang
T.Ree.18 分钟前
C语言_自定义类型(结构体,枚举,联合)
c语言·开发语言
Channing Lewis19 分钟前
python生成随机字符串
服务器·开发语言·python
小熊科研路(同名GZH)1 小时前
【Matlab高端绘图SCI绘图模板】第002期 绘制面积图
开发语言·matlab
鱼是一只鱼啊1 小时前
.netframeworke4.6.2升级.net8问题处理
开发语言·.net·.net8
Tanecious.1 小时前
C语言--数据在内存中的存储
c语言·开发语言·算法
咸甜适中1 小时前
go语言gui窗口应用之fyne框架-动态添加、删除一行控件(逐行注释)
开发语言·后端·golang
去往火星1 小时前
opencv在图片上添加中文汉字(c++以及python)
开发语言·c++·python