Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Стандартный современный цикл разработки состоит из множества этапов: планирование, анализ, дизайн, разработка, тестирование, интеграция, поддержка... На каждом этапе разработчики, админы, DevSecOps и другие специалисты используют разные инструменты. От грамотности настроек этих инструментов может зависеть безопасность продукта. Часть из них вполне можно раскрутить до уязвимостей.
Я возьму несколько популярных сервисов, которые используются на разных этапах, и покажу на их примере, как такое случается. Большую часть перечисленного я обнаружил в 2019 году, так что не жди, что проделанное мной можно будет повторить на актуальных версиях перечисленных программ. Большинство уязвимостей уже закрыты, но моя цель в данном случае — продемонстрировать, как нужно думать, чтобы их обнаруживать.
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный с использованием информации из данной статьи.
Jira — это мощный таск‑трекер, разработанный компанией Atlassian. Его можно использовать в качестве баг‑трекера, системы распределения задач между сотрудниками и еще много чего, но сейчас не об этом. Jira используется в миллионах организаций — внушительное поле для атак! Само собой, не все админы задумываются о безопасности, а многие вообще считают, что их организации никому не нужны и никто их атаковать не будет. Это обманчивое ощущение!
Находок у меня много, и начнем мы с самого простого, но не такого уж и безобидного.
Допустим, ты нашел сервис Jira по адресу jira.
. Тогда обращение по урлу https://
вызовет выпадение стектрейса, как на скриншоте ниже.
Чем оно нам может быть интересно? Как минимум тем, что мы можем посмотреть, какие плагины установлены в Jira. А плагины, как ты знаешь, зачастую куда более уязвимы, чем само приложение. Кстати, в Jira тоже частенько попадаются разной степени серьезности баги, так что из логов можно достать версию и проверить, нет ли удобной RCE.
Не менее ценны и сами порты Jira (с 8000-го по 8100-й): через них можно непосредственно управлять установленной системой — перезагружать, останавливать, тыкать админку и так далее. В интернете Jira много где торчит наружу.
Как и любая промышленная система, Jira умеет масштабироваться. Делается это за счет плагинов, которые пишут как официальные разработчики — Atlassian, так и сторонние.
Один из достаточно часто используемых таких компонентов — Agile Board.
Agile — это один из подходов к разработке, а Jira Agile Board позволяет выстраивать дашборды для Agile и работать с ними командой или несколькими командами над разными проектами. Идея простая: есть доска, на ней есть тикеты, мы можем смотреть, когда и кем они выполняются, какие на них сроки, какие спринты и тому подобное.
Звучит не особо интересно, но, когда я начал исследовать Jira в нашей компании, заметил, что все это доступно безо всякой авторизации. То есть плагин официального разработчика живет своей жизнью и ни с кем договариваться не обязан, а в нем содержится чувствительная информация. Мы можем просто пройти по URL вида https://
и посмотреть любую доску любого проекта.
Здесь даже нашлась уязвимость типа IDOR — небезопасные ссылки на объекты. Она позволяет зайти вообще в любой проект, посмотреть задачи и прогресс их выполнения, и при этом не важно, приватный это проект или публичный.
Само собой, перебирая параметр в URL, можно получить вообще все доски, которые заведены в Jira.
Еще один довольно интересный баг — слепой JQL. Эксплуатировать его тоже можно без авторизации и читать любые тикеты.
В ядре Jira, очевидно, есть API. Нас интересуют следующие адреса:
https://jira.company.hack/jira/rest/api/2/mypermissions
https://jira.company.hack/jira/rest/api/2/issue/1
https://jira.company.hack/jira/rest/api/2/search?jql=status%3Dopen and description="12345"
Как ты заметил, на эндпойнте поиска в параметре jql
передается запрос, но интересно не это, а то, что на существующие и несуществующие запросы выдаются разные ответы. Таким образом можно полностью восстанавливать содержимое тикетов, используя те же способы, что и при слепых SQL-инъекциях.
Для успешного поиска стоит подобрать поле id
в тексте запроса. Это целое число, которое обозначает номер тикета в Jira. Теперь мы можем полностью восстанавливать содержимое тикета брутфорсом поля description
.
Одна из проблем с ID заключается в том, что идут они не по порядку. Для подбора ID можно использовать такой вот простой скрипт:
РезультатыНа скрине ты видишь, что тикеты 10000 и 10001 существуют, но к ним нет доступа, а 10002 не существует, значит, работать с помощью blind JQL мы можем только на 10000-м и на 10001-м тикете.
В некоторых случаях это может не сработать. У Atlassian есть два режима раздачи доступов: персональный и групповой. Групповой применяется сразу к целой группе разработчиков, а персональный — к одному конкретному. Так вот, атаку нельзя воспроизвести при установленном персональном режиме доступа.
Confluence — это пространство для командной работы, особенно удобное при удаленке. Здесь можно совместно накапливать знания.
Главное для нас — то, что здесь примерно та же история, что с Jira: первые две проблемы (stack trace и управляющие порты) одинаковые, а об еще одной я сейчас расскажу.
|
|