Пока все пентестеры ждут результатов премии Pentest Award 2026, мы решили показать вам ещё один кейс, с которым наш отдел анализа защищенности участвовал в этом конкурсе в прошлом году. Кстати, если вы пропустили наши прошлые кейсы с этого конкурса — смотрите тут: первый, второй, третий.
А сегодня рассказ будет о том, как обычные на первый взгляд функции в PHP могут складываться в цепочки недочетов, которые позволяют получить привилегии доменного администратора.
Наш Заказчик использовал систему управления заявками [XXX]. Демо-версия веб-приложения была обфусцирована IonCube12, что не давало возможности анализировать код. Однако мы нашли несколько критических уязвимостей внутри системы управления заявками — в том числе blind SQL, которую можно было использовать для получения токена администратора. Правда, она давала почти невероятную задержку, так как фактически выполнялась в серии подзапросов.
Но это нас не остановило. Используя недочеты функции uniqid, поддельный домен-контроллер, возможность загрузки pdf-файла с сериализованным сюрпризом и недокументированные скрытые параметры из самых обычных запросов к системе заявок, мы смогли получить доступ для добавления своего административного пользователя внутрь системы. А затем обнаружили высокопривилегированную учетную запись, которая привела к полному захвату домена из внешней сети Заказчика. В ходе работ ни один phpgcc-гаджет не пострадал (не использовался).
Более подробно о том, как помогла нам небезопасная генерация имени файла и небезопасная десериализация, а также рекомендации по защите от таких атак — в полном описании этого кейса.
