Нарушение логики приложения для RCE
Этичный ХакерЗдравствуйте, друзья! Сегодня я расскажу об одном из интересных случаев RCE.
Для тех, кто не знает о RCE, рекомендую обратиться к Google и узнать больше о данной уязвимости. Здесь я просто собираюсь объяснить, в чем заключалась логика приложения и как мы ее обошли и использовали.
Нарушение логики приложения
Итак, в этом веб-приложении была функция для загрузки изображения или логотипа.

И всякий раз, когда мы пытаемся загрузить любое изображение или файл, он сначала проверяет, что мы загрузили действительное изображение, а не что-то другое (например, вредоносный файл).
Сайт осуществляет проверку, отправляя запрос на эту конечную точку:
/api/FileScanner/FileScan

После выбора изображения для загрузки и его проверки, у нас появляется кнопка «Сохранить». Однако, когда мы нажимаем кнопку «Сохранить», у сайта нет проверки, что мы сохраняем тот же файл, который был проверен вышеупомянутой конечной точкой.
Другими словами, мы можем сначала загрузить действительное изображение, затем нажать «Сохранить», перехватить запрос и измените его для загрузки шелла.

Итак, мы прошли этот путь и загрузили наш шелл.

Затем открываем путь к шеллу и имя, которое мы использовали для загрузки, и после этого выполняем любую команду, которую хотим.


Итог:
Таким образом, когда мы загружаем изображение в форме загрузки, идет запрос, и в первом запросе он проверяет, загрузили ли мы изображение или какой-либо вредоносный файл. После этого появляется кнопка сохранения, и когда мы нажимаем на кнопку сохранения, идет второй запрос, и здесь он не проверяет, загрузили ли мы вредоносный файл или реальное изображение. Такова была логика.
Таким образом, чтобы нарушить логику приложения, сначала загружаем реальное изображение, а затем жмем «Сохранить», и во втором запросе загружаем вредоносный файл.