Найти в Дзене
B0rn2beR00T

Решение RootMe (PHP - Command injection)

Приветствую! В данной статье разберём простой кейс с OS Command Injection и познакомимся с тем как находить данную уязвимость. Приступим! Нам дают хост, который проверяет доступность внешних сервисов. Посмотрим как он работает штатно, введя какой-нибудь IP: Теперь будем пробовать различные спец. символы, которые используются в Unix и Windows системах, валидные для уязвимости OS Command Injection. Внедрим & между двумя командами (ping & id). Также пробуем pipe и это тоже срабатывает: Точка с запятой тоже даёт схожий результат: Итак, мы нащупали инъекции с символами & | ; Теперь будем танцевать от этого дальше. Вытащим список пользователей системы: Посмотрим содержимое локальной директории: Откроем код главной страницы: Хех :) Произошла рекурсия... Забыли глянуть скрытые директории при помощи ls -la При анализе исходного кода index.php видно, что флаг берётся с крытого файла .passwd, который мы как раз нашли в локальной директории. Читаем .passwd и получаем флаг! Победа! OS Command I

Приветствую!

В данной статье разберём простой кейс с OS Command Injection и познакомимся с тем как находить данную уязвимость. Приступим!

Нам дают хост, который проверяет доступность внешних сервисов.

-2

Посмотрим как он работает штатно, введя какой-нибудь IP:

-3

Теперь будем пробовать различные спец. символы, которые используются в Unix и Windows системах, валидные для уязвимости OS Command Injection. Внедрим & между двумя командами (ping & id).

-4

Также пробуем pipe и это тоже срабатывает:

-5

Точка с запятой тоже даёт схожий результат:

-6

Итак, мы нащупали инъекции с символами & | ;

Теперь будем танцевать от этого дальше. Вытащим список пользователей системы:

-7

Посмотрим содержимое локальной директории:

-8

Откроем код главной страницы:

-9

Хех :) Произошла рекурсия... Забыли глянуть скрытые директории при помощи ls -la

-10

При анализе исходного кода index.php видно, что флаг берётся с крытого файла .passwd, который мы как раз нашли в локальной директории.

-11

Читаем .passwd и получаем флаг! Победа!

-12

Выводы

OS Command Injection довольно проста в выявлении. Реализация функционала сайта через OС-команды системы - не очень хорошая затея, которая и приводит к такой уязвимости.

Для защиты от такой уязвимости следует внедрять фильтрацию запросов пользователя к файлам сервера или же организовать белый список.

Хорошим решением также будет ограничение доступа к местам, где хранятся конфиденциальные данные.

Спасибо за внимание! Всех благ!