【解决安全扫描漏洞】---- 检测到目标站点存在 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. 这个过程都是根据已存在的博客去依次排查解决,所以这些问题遇到了,就只能看能不能在网上找到解决办法,下一次一个安扫问题,估计不一定能解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rattenking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值