diff --git a/static/index.css b/static/index.css index 752ef2a..ac8a622 100644 --- a/static/index.css +++ b/static/index.css @@ -170,7 +170,7 @@ .comments { background-color: rgb(35, 33, 54); - height: 12rem; + height: 10rem; width: 95%; text-align: left; border-radius: 0.5rem; diff --git a/templates/ssti.html b/templates/ssti.html index 00c6853..3d26778 100644 --- a/templates/ssti.html +++ b/templates/ssti.html @@ -3,13 +3,24 @@ {% block content %}
SSTI (Server-side template injection) - уязвимость, позволяющая внедрить код в шаблон, выполнив его на стороне сервера.
+Как это работает? Если пользователь ввёдет где-либо на сайте не просто текст, а команду, вставляемую в шаблонизатор, то сервер может выполнить её и вернуть пользователю результат, если не стоит должных защит. Примерно так это выглядит на сервере:(пример кода ниже)
+if request.method == 'POST':
+ comment = request.form['user_comment']
+ # В HTML комментарий вставляется через вызов переменной: {% raw %} <p> {{ comment }} </p> {% endraw %}
+ Можно заметить, что {% raw %} {{ }} {% endraw %} передают переменную. Т.е пользователь может просто написать команду такого же вида в поле ввода и она будет выполнена.
+В нашем случае можем ввести в комментарии:
+{% raw %} {{ flag }} {% endraw %}
+ На доске же вместо нашего "комментария" отобразится введённая переменная, т.е флаг
+Однако можно в {% raw %} {{ }} {% endraw %} вписать любую команду и она будет выполнена с одним "но": Современные шаблонизаторы неохотно обрабатывают в принципе всё, что в них суют и даже здесь уязвимость создана искусственно
скрытьПриветствую тебя, о сетевой путник! Прошу, оставь упоминание о себе здесь!
+Приветствую тебя, о сетевой путник!
+ Прошу, оставь упоминание о себе здесь! Тут допускается всё: ничего страшного если твой комментарий будет немного странным