Server-side template injection (SSTI)

Я разбираю реальные веб‑уязвимости и показываю, как их искать, эксплуатировать в безопасной среде и закрывать в проде. Без воды: чек‑листы атак, редкие кейсы, ошибки разработчиков и практики защиты от CSRF, XXE, Prototype Pollution, десериализации, race conditions, XSS и не только. Если вы пишете веб или проверяете его на прочность — вам сюда.

sstiserver-side template injectionвеб-безопасность

😶Server-side template injection - это атака, в которой злоумышленник может использовать собственный синтаксис для внедрения вредоносной полезной нагрузки в шаблон на стороне сервера.

Типичная атака начинается с обнаружения фреймворка шаблонизации, на котором работает приложение через information disclosure в запросах/приложении, либо же обычный перебор.

☺️ Тип:
Web, Server-Side.

Могут отличаться в зависимости от фреймворка шаблонизации, используемого приложением. Есть очень хороший репозиторий со всевозможными полезными нагрузками для данной атаки.

☺️ Пример полезной нагрузки:
https://example.com/profile?user={{7*7}}

☺️ Влияние:
Почти гарантированно ведет к исполнению произвольного кода (RCE).

☺️ Как защититься?
Натболее эффективно - не разрешать пользователям вносить изменения в шаблон, а также использовать последние версии фреймворков-шаблонизаторов и безопасные конструкции.
В качестве альтернативных мер - использовать шаблонизаторы "без логики", использовать песочницы (sandbox) для исполнения пользовательского кода или использовать шаблонное окружение в изолированной среде/контейнере (в данном случае мы смиряемся с тем, что пользователь может исполнять команды и препятствуем влиянию, которое он может получить).

В "боевом" приложении я бы сказал, что найти что-то такое почти нереально, если, конечно, вы не копаете в сторону 0-day. Причина проста - большинство фреймворков по умолчанию запатчены и предлагают использование безопасных конструкций (даже если вы попросите chatGPT написать вам какое-то простое приложение, оно вероятнее всего уже будет защищено). В таком случае, для успешной атаки остается надеяться на незапатченые приложения, ошибки разработчиков, логические ошибки и чудо исследователей, откапывающих 0-day в шаблонизаторах.

#edu #vuln #web #ssti

Логотип SSTI: стилизованная иконка с вертикальными столбцами и подписью «SSTI — Server‑Side Template Injection», иллюстрация темы уязвимости шаблонов.
Иллюстративный логотип для темы Server‑Side Template Injection (SSTI).

Читайте так же