#43 Bug Bounty v.2 — Server Side Template Injection (SSTI). Python — Tornado
Здравствуйте, дорогие друзья.
Согласно Google, Tornado — это масштабируемый, неблокирующий веб-сервер и платформа для веб-приложений, написанные на Python. У Tornado также есть собственный движок шаблонов, который, как и многие другие, уязвим для внедрения шаблонов на стороне сервера, если он реализован неправильно, как показано ниже:
Использовать SSTI в движке шаблонов tornado относительно просто по сравнению с другими движками. В документации по движку шаблонов tornado упоминается, что вы можете импортировать библиотеки python, как показано ниже.:
Любая библиотека, доступная для python, также доступна для движка шаблонов. Это означает, что вы можете импортировать библиотеку python и вызывать ее. Этой функциональностью можно злоупотреблять для создания системных команд, как показано ниже:
● {% import os %}{{ os.popen(«whoami»).read() }}
● {% import subprocess %}{{subprocess.Popen(‘whoami’,shell=True,stdout=-1).communicate()[0]
Как вы можете видеть выше, команда «whoami» была запущена на сервере, и результат был отображен на экране. Мы не ограничены простым выполнением команд оболочки, поскольку мы можем импортировать любую библиотеку python, мы можем делать все, что захотим.
На этом все. Всем хорошего дня!