我正在开发一个使用EJS作为模板引擎的Web应用程序(并同时学习Web sec),我想知道是否可以通过模板注入来利用EJS来实现RCE。
我已经尝试过:http://localhost:3000/ti2?a=console.log(2);
但是查询参数的值在服务器端被解释为字符串,而不是JS代码,因此没有任何反应。
// app.js
app.get("/ti2", function(req, res) {
const param = req.query.a;
console.log(typeof param);
res.render("ti", {
msg: param
});
});
// ti.ejs
<% msg %>
如果使用EJS时可以进行SSTI,您可以给我一个PoC吗?
还有,哪些EJS标签(如果有)容易受到EJS中SSTI的攻击?只是<%
?