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

Разведка — поиск с помощью DuckDuckGo

Проводя тестирование в рамках Bug Bounty программы, я использовал некоторые DuckDuckGo dorking техники. Хотя основной сайт возвращал ошибку 403 Forbidden, я нашел архивированную панель входа администратора, проиндексированную поисковой системой.

Открытие этого архивированного URL дало мне доступ к рабочей странице входа администратора — даже несмотря на то, что основной сайт блокировал прямой доступ. На этом этапе я начал тестировать процесс входа.  

Первые попытки — никаких очевидных ошибок

Я попробовал изменить ответ и модифицировать заголовки, но ничего интересного не произошло. Не было ни IDOR, ни неправильных настроек — пока...

Я решил запустить фаззинг путей, чтобы посмотреть соседние со страницей входа директории. Удивительно, но я нашел большое количество конечных точек, которые отвечали HTTP 302 Found, и размер ответов был довольно большим, что указывало на то, что это не пустые редиректы.

Это привлекло мое внимание.

Обход редиректов — ручное тестирование

Я начал вручную модифицировать ответы. После изменения HTTP статусов с 302 на 200 и удаления заголовков, требующих аутентификации, страницы начали отображаться — даже без входа в систему.  

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

На этом этапе я оценил проблему как Medium / High, но что-то подсказывало мне, что проблема может оказаться серьезнее — поэтому я не стал спешить и сообщать об этом.

Глубокий фаззинг — JavaScript файлы.

На следующий день я возобновил свой recon. На этот раз я сосредоточился на JavaScript файлах. Приложение использовало отдельный JS файл почти для каждой страницы администратора.

Я просмотрел каждый JavaScript файл и нашел ссылки на чувствительные конечные точки — включая POST операции добавления, редактирования и удаления.  

Я начал дублировать запросы... и они сработали.  

Это повысило уровень серьезности до Высокого — но я на этом не остановился.

Повышение привилегий через параметр role

Углубляясь в детали, я нашел файл с именем ListUsers.js. Он раскрыл конечную точку, которая позволяла создавать и удалять пользователей. Ключевой момент: запрос включал параметр role.  

С помощью DeepSeek я составил запрос на создание нового пользователя и назначил ему роль администратора.

Ответ? Успех.

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

Итоговый Impact

С этой учетной записью я смог получить доступ и управлять:

✅ Рабочими процессами и категориями  

✅ Созданием/удалением сайтов и клиентов  

✅ Контролем доступа на основе ролей  

✅ Пользователями, включая доступ к личной информации более 8,000 сотрудников  

✅ Более чем 270 конфиденциальными внутренними функциями  

В общем, у меня был полный контроль над всем бэкендом системы.

Заключение

То, что началось как забытая страница входа, превратилось в полный захват системы — и все это без каких-либо учетных данных. Это показывает, как архивный контент и неправильно настроенные редиректы могут раскрывать элементы инфраструктуры.

Всегда следите за вашими эндпоинтами и никогда не полагайтесь на то, что 403 = скрытый — иногда это означает «смотрите внимательнее».

Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Комментарии (4)


  1. chelog
    06.08.2025 12:52

    Я конечно не эксперт по безопасности, но

    изменения HTTP статусов с 302 на 200 и удаления заголовков, требующих аутентификации

    это как? Вы на клиенте меняли ответы сервера?


    1. Neikist
      06.08.2025 12:52

      Через реверс прокси, например. И это если что перевод.

      Меня другое смутило. Почему эндпоинты вообще как то данные меняли, без корректного токена авторизации.

      По идее любой такой api закрыт проверкой. И если нет нужного токена/куки - вернуть 401/403 должен.


      1. nskforward
        06.08.2025 12:52

        В приведенном в статье запросе на создание нового пользователя с админскими правами используется кука PHPSESSID. Кажется, это частично отвечает на ваш вопрос. Но также добавляет больше вопросов откуда взялась сессия.

        P.S. статью явно прогнали через google translate, местами читать тяжело


        1. Neikist
          06.08.2025 12:52

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