Категория > Новости > Опасная разработка. Изучаем уязвимости в сервисах поставки кода - «Новости»
Опасная разработка. Изучаем уязвимости в сервисах поставки кода - «Новости»27-06-2021, 00:00. Автор: Мира |
Хакердом» за помощь в подготовке статьи. Стандартный современный цикл разработки состоит из множества этапов: планирование, анализ, дизайн, разработка, тестирование, интеграция, поддержка... На каждом этапе разработчики, админы, DevSecOps и другие специалисты используют разные инструменты. От грамотности настроек этих инструментов может зависеть безопасность продукта. Часть из них вполне можно раскрутить до уязвимостей. Я возьму несколько популярных сервисов, которые используются на разных этапах, и покажу на их примере, как такое случается. Большую часть перечисленного я обнаружил в 2019 году, так что не жди, что проделанное мной можно будет повторить на актуальных версиях перечисленных программ. Большинство уязвимостей уже закрыты, но моя цель в данном случае — продемонстрировать, как нужно думать, чтобы их обнаруживать. warningВся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный с использованием информации из данной статьи. JiraJira — это мощный таск‑трекер, разработанный компанией Atlassian. Его можно использовать в качестве баг‑трекера, системы распределения задач между сотрудниками и еще много чего, но сейчас не об этом. Jira используется в миллионах организаций — внушительное поле для атак! Само собой, не все админы задумываются о безопасности, а многие вообще считают, что их организации никому не нужны и никто их атаковать не будет. Это обманчивое ощущение! Находок у меня много, и начнем мы с самого простого, но не такого уж и безобидного. Data disclosureДопустим, ты нашел сервис Jira по адресу Jira stack trace Чем оно нам может быть интересно? Как минимум тем, что мы можем посмотреть, какие плагины установлены в Jira. А плагины, как ты знаешь, зачастую куда более уязвимы, чем само приложение. Кстати, в Jira тоже частенько попадаются разной степени серьезности баги, так что из логов можно достать версию и проверить, нет ли удобной RCE. infoНе менее ценны и сами порты Jira (с 8000-го по 8100-й): через них можно непосредственно управлять установленной системой — перезагружать, останавливать, тыкать админку и так далее. В интернете Jira много где торчит наружу. Как и любая промышленная система, Jira умеет масштабироваться. Делается это за счет плагинов, которые пишут как официальные разработчики — Atlassian, так и сторонние. Один из достаточно часто используемых таких компонентов — Agile Board. Jira Agile Board Agile — это один из подходов к разработке, а Jira Agile Board позволяет выстраивать дашборды для Agile и работать с ними командой или несколькими командами над разными проектами. Идея простая: есть доска, на ней есть тикеты, мы можем смотреть, когда и кем они выполняются, какие на них сроки, какие спринты и тому подобное. Звучит не особо интересно, но, когда я начал исследовать Jira в нашей компании, заметил, что все это доступно безо всякой авторизации. То есть плагин официального разработчика живет своей жизнью и ни с кем договариваться не обязан, а в нем содержится чувствительная информация. Мы можем просто пройти по URL вида Просмотр досок без авторизации IDORЗдесь даже нашлась уязвимость типа IDOR — небезопасные ссылки на объекты. Она позволяет зайти вообще в любой проект, посмотреть задачи и прогресс их выполнения, и при этом не важно, приватный это проект или публичный. Само собой, перебирая параметр в URL, можно получить вообще все доски, которые заведены в Jira. Blind JQLЕще один довольно интересный баг — слепой JQL. Эксплуатировать его тоже можно без авторизации и читать любые тикеты. В ядре Jira, очевидно, есть API. Нас интересуют следующие адреса:
Как ты заметил, на эндпойнте поиска в параметре Ответ не существуетОтвет существует Для успешного поиска стоит подобрать поле Одна из проблем с ID заключается в том, что идут они не по порядку. Для подбора ID можно использовать такой вот простой скрипт: РезультатыНа скрине ты видишь, что тикеты 10000 и 10001 существуют, но к ним нет доступа, а 10002 не существует, значит, работать с помощью blind JQL мы можем только на 10000-м и на 10001-м тикете. В некоторых случаях это может не сработать. У Atlassian есть два режима раздачи доступов: персональный и групповой. Групповой применяется сразу к целой группе разработчиков, а персональный — к одному конкретному. Так вот, атаку нельзя воспроизвести при установленном персональном режиме доступа. Всегда отдается одинаковое сообщение об ошибке ConfluenceConfluence — это пространство для командной работы, особенно удобное при удаленке. Здесь можно совместно накапливать знания. Главное для нас — то, что здесь примерно та же история, что с Jira: первые две проблемы (stack trace и управляющие порты) одинаковые, а об еще одной я сейчас расскажу. Перейти обратно к новости |