SEETF-2023 express-javascript-security ejs相关漏洞 今天做个ejs相关题目。进入页面只发现一个输入框,题目标签是ejs相关,去github看看源码,发现ejs版本为3.1.9,可以确定地是rce漏洞。接下来说说这个rce漏洞。3.1.9版本的rce漏洞主要是因为使用了这个模板来构建网页逻辑导致的。
当访问网站根目录时,就会加载indexRouter,也就是包含了./routes/index,非常正常的页面渲染 在app.js同样包含了漏洞页面loginRouter(./routes/login),然后在login是和前几篇一样的原型链污染,允许接受content-type为json的请求体,对象复制时没有严格的过滤导致的原型链污染 在login.js可以看到包含了对象复制的实现,在...
NodeJS 的 EJS(嵌入式 JavaScript 模板)版本 3.1.6 或更早版本中存在 SSTI(服务器端模板注入)漏洞。 该漏洞settings[view options][outputFunctionName]在EJS渲染成HTML时,用浅拷贝覆盖值,最后插入OS Command导致RCE。 复现: 环境搭建: npminstallejs@3.1.6npminstallexpress app.js: constexpress=require('express...
ejs原型污染rce分析 前言 看了师傅《再探 JavaScript 原型链污染到 RCE》,之前没接触过,试着手动去分析一遍。 过程 环境搭建: npm install ejs npm install lodash@4.17.4 npm install express test.js var express = require('express'); var _= require('lodash'); var ejs = require('ejs'); var app...
补充:针对 jade RCE链的污染, 普通的模板可以只需要污染 self 和 line, 但是有继承的模板还需要污染 type 小结 关于ejs 和 jade 模板的语句拼接, 官方承认不是一个漏洞, 原型链的危害很大, 但是原型链污染攻击有个弊端,就是一旦污染了原型链,除非整个程序重启,否则所有的对象都会被污染与影响!
EJSv1.x源码非常清晰易懂,很适合作为研究模版引擎类的入门。 v2.x使用了一些面向对象的程序设计。。篇幅更是达到了接近900行(费解-.-不知道意义何在)。。有机会尝试着会去读一些v2.x版本的代码。 TODO 接下来会做一下几个模版引擎的横向对比,关于性能方面、开发难易程度、功能的完善上,各种balabala…...
EJS 是一套简单的模板语言,设计的初衷是用尽可能少的js代码,渲染出丰富的html页面。 本期浅看一下:当ejs渲染遇到了原型链污染,所产生的rce。 示例代码还是群主的:ctfshow web341 项目结构 拿到源码后先看一下项目的结构,主要文件如下: bin/www文件定义了基本配置和端口信息 ...