TGViewer
Пентестер на мотоцикле Пентестер на мотоцикле @hackerbiker · 1.08K subscribers
Post #123 1.91K
😈 Нашёл 0-day... почти

Недавно на проекте по пентесту было обнаружено уязвимое коробочное решение Directus v9.23.3.

Directus — это open‑source платформа для управления данными, которая превращает любую SQL‑базу в headless CMS, предоставляя автоматическую REST и GraphQL API и удобный веб-интерфейс для управления контентом.


С таким ПО я столкнулся впервые, поэтому принялся ресёрчить все возможные там API-эндпоинты, файловую структуру и искать уже известные уязвимости (CVE).

Первым делом встала задача определить версию Directus. Немного покопавшись в интернете, обнаружился эндпоинт, раскрывающий версию ПО в одной из констант JS-файла по пути "/admin/assets/...js":
const jN="9.23.3"

Это позволило отсортировать все CVE под данную версию.

Уязвимостей было обнаружено полно, но в рамках этого поста хочу акцентировать внимание на ключевой, которую обнаружил сам, — загрузка любых файлов в админскую Библиотеку файлов без аутентификации + раскрытие списка файлов на эндпоинте /files. Получить доступ к любому файлу можно, зная его ID. После загрузки файлу автоматически присваивается идентификатор, и он становится доступен по публичному URL вида /assets/<ID>.

Риски:
➡️Загрузка вредоносного ПО. Злоумышленник может поместить исполняемые файлы или скрипты, что при их запуске приведет к компрометации системы;
➡️Фишинговые атаки от имени компании с помощью публичных ссылок /assets/<ID>;
➡️Доступны все файлы в "Библиотеке файлов" без аутентификации: невозможность конфиденциально хранить документы и прочую чувствительную информацию для компании;
➡️А также другие риски в имеющихся уязвимостях, речи о которых в данном посте нет.

Рекомендации по устранению уязвимостей:
✅Ограничить публичный доступ к конечной точки загрузки файлов — требовать аутентификацию и авторизацию для загрузок;
✅Валидировать содержимое файлы по проверке сигнатуры (MIME, magic bytes);
✅Ограничить типы и расширения файлов. Явно запрещать исполняемые форматы (например, .exe, .bat, .sh, .php и т.п.) и другие нежелательные форматы. Разрешать строго только необходимых типов по белому списку;
✅Закрыть доступ к конечной точке /files для неавторизованных пользователей;
✅Обновить версию Directus — решит множество проблем разом.

Для пентестеров, обнаруживших Directus в проде:
➡️1) Первым делом определите версию ПО;
➡️2) С имеющейся версией пробуйте эксплуатировать ряд CVEшек. Ссылки на списки оставил в конце поста;
➡️3) Обязательно проверьте наличие GraphQL со включённой интроспекцией. Мне также попались alias flood, мутация без аутентификации и т.д.

Часть уязвимостей в списках CVE эксплуатируется только при наличии сессии — это отличный кейс для серого ящика. На этом проекте я как раз работал по методикам чёрного и серого ящика.

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

🔗 Ссылка на список CVE Directus в Snyk
🔗 Ссылка на список CVE Directus в GitHub
🔗 Ссылка на список CVE Directus в GitLab

#кейс #материал
  • ❤ 14
  • 👍 8
  • 😱 1
More from @hackerbiker
  1. Jul 15, 2026Post #136
  2. Mar 4, 2026🔊 Вскрываем периметр по-крупному Последние пару недель РАД КОП много говорит про гигиену…
  3. Mar 3, 2026Представьте: в углу офиса мирно стоит принтер, печатает отчёты… а в это время через него к…
  4. Feb 26, 2026🤨 Документация из хаоса Инструмент был написан в рамках стажировки Digital Security автор…
  5. Feb 24, 2026Маленькое пополнение в нашей семье☺️ Теперь у меня свой блэчер, бойтесь
  6. Feb 17, 2026😈 Регистрация — оружие массового поражения Недавно на финтех-проекте во время тестировани…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →