Bug Bounty, Bug Hunting, Python, Server Side Template Injection (SSTI), Tornado

#43 Bug Bounty v.2 — Server Side Template Injection (SSTI). Python — Tornado

Здравствуйте, дорогие друзья.

Согласно Google, Tornado — это масштабируемый, неблокирующий веб-сервер и платформа для веб-приложений, написанные на Python. У Tornado также есть собственный движок шаблонов, который, как и многие другие, уязвим для внедрения шаблонов на стороне сервера, если он реализован неправильно, как показано ниже:

движок шаблонов, который, как и многие другие, уязвим для внедрения шаблонов на стороне сервера, если он реализован неправильно

Использовать SSTI в движке шаблонов tornado относительно просто по сравнению с другими движками. В документации по движку шаблонов tornado упоминается, что вы можете импортировать библиотеки python, как показано ниже.:

В документации по движку шаблонов tornado упоминается, что вы можете импортировать библиотеки python

Любая библиотека, доступная для python, также доступна для движка шаблонов. Это означает, что вы можете импортировать библиотеку python и вызывать ее. Этой функциональностью можно злоупотреблять для создания системных команд, как показано ниже:

● {% import os %}{{ os.popen(«whoami»).read() }}

● {% import subprocess %}{{subprocess.Popen(‘whoami’,shell=True,stdout=-1).communicate()[0]

{% import subprocess
%}{{subprocess.Popen('whoami',shell=True,stdout=-1).communicate()[0]

Как вы можете видеть выше, команда «whoami» была запущена на сервере, и результат был отображен на экране. Мы не ограничены простым выполнением команд оболочки, поскольку мы можем импортировать любую библиотеку python, мы можем делать все, что захотим.

На этом все. Всем хорошего дня!

Цикл статей по Bug Bounty.