Я занимаюсь разработкой веб-приложения, использующего EJS в качестве движка шаблонов (и одновременно изучаю 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 %>
Не могли бы вы дать мне PoC, если SSTI возможен при использовании EJS?
Кроме того, какие теги EJS (если они есть) будут уязвимы для SSTI в EJS? просто <%
?