Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SuiteCRM-RCE — Разбор уязвимости CVE-2020-28328: удаленное выполнение кода через файл журнала SuiteCRM и дополнительный межсайтовый скриптинг | Kitploit
Инструменты/GitHubGitHub/mcorybillington/suitecrm-rce
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийФишингТестирование на ПроникновениеСтатьи и ИсследованияОбучение и Образование
GitHubmcorybillington/suitecrm-rce

SuiteCRM-RCE

Разбор уязвимости CVE-2020-28328: удаленное выполнение кода через файл журнала SuiteCRM и дополнительный межсайтовый скриптинг

Репозиторий
215 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2020-28328 Удаленное выполнение кода SuiteCRM через настройку системного файла журнала и отравление файла журнала

Обзор

Я недавно обнаружил две уязвимости в SuiteCRM, которые предоставляют цепочку атак для пользователя с низкими привилегиями для выполнения кода на базовой операционной системе. Цепочка атак включает межсайтовый скриптинг (XSS), который можно использовать для подделки межсайтовых запросов (CSRF), что приводит к удаленному выполнению кода путем изменения конфигурации приложения и отравления файла журнала. Все это достигается загрузкой файла, содержащего вредоносный JavaScript, который пользователь с низкими привилегиями может обманом заставить выполнить пользователя с правами администратора. Прилагаемые файлы Proof-Of-Concept и видео демонстрируют, как пользователь с низкими привилегиями выполняет эту атаку и получает обратную оболочку на системе, на которой размещен SuiteCRM.
Это было исправлено в версии 7.11.17 SuiteCRM.

Критичность

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Я не полностью согласен с этой оценкой, поскольку эксплойт требует административного доступа, что изменило бы PR:L на PR:H, скорректировав итоговый балл с 8.8 до 7.2.
Я бы оценил это как: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Ссылка: https://nvd.nist.gov/vuln/detail/CVE-2020-28328

Информация о версии

SuiteCRM версия 7.11.15

Межсайтовый скриптинг (XSS)

Постоянный межсайтовый скриптинг существует в загрузке файлов 'Create Documents'. Пользователь с низкими привилегиями может загрузить файл с любым содержимым. Затем пользователь может просмотреть ссылку, предоставленную для загрузки этого документа, и определить местоположение файла в файловой системе по параметру id. Это длинное случайное значение является именем файла внутри каталога /uploads/. Пользователь может поместить произвольный JavaScript в этот файл, а затем отправить ссылку другому пользователю. Это может быть использовано для перехвата сессии другого пользователя и/или выполнения действий от его имени, что будет показано в PoC-видео.

Удаленное выполнение кода

После того как я обнаружил, что могу стать администратором через перехват сессии с помощью межсайтового скриптинга, я выяснил, что могу управлять системными свойствами в разделе 'Admin → System Settings', а именно свойством файла журнала. Расширения файлов журнала были хорошо заблокированы, но я смог использовать BurpSuite, чтобы изменить значение 'Log File Name' на любое произвольное значение, включая расширения .php. Я сделал это, отправив запрос без изменений и перехватив POST-запрос, который фактически обновляет значения. Я изменил имя файла через параметр logger_file_name на shell.php и просто сделал поле 'Extension' пустым. Это дало php-файл, к которому я мог получить доступ в браузере в корне веб-сервера, но мне нужно было поместить немного php-кода внутрь файла для выполнения.
Затем я исследовал вывод в файл и заметил, что могу контролировать ввод в файл через свойства пользователя, если обновлю пользователя (например, имя или фамилию), при условии что журналирование установлено на info (кажется, это значение по умолчанию...). Итак, я перехватил запрос в Burp и вставил некоторый php-код <?php $id =`id`; echo $id; ?> в поле формы last_name. Это привело к выводу команды id в Linux в контексте пользователя веб-сервера www-data. Единственные символы, которые, как я могу сказать, экранируются в файле журнала - это одинарные кавычки, двойные кавычки и обратные слеши. Вы можете проверить это с помощью tail'ирования файла sql-журнала на бэкенде.

Объединение двух для подделки межсайтовых запросов (Один клик -> оболочка)

Я смог выполнить все это от имени администратора, потому что смог получить куки сессии. Однако для рабочей цепочки мне нужно было, чтобы это выполнялось через JavaScript в контексте администратора. Я смог запрограммировать это с помощью нескольких fetch-запросов для выполнения каждого из этих POST-запросов. Первый обновил системные свойства, второй обновил поле 'Last Name' администратора, а последний выполнил GET-запрос к вновь созданному файлу журнала с вредоносным php-кодом. Вредоносный php-код выполнял curl-запрос к моей машине, загружал bash-обратную оболочку и затем передавал вывод этого curl-запроса напрямую в bash, выполняя код. Затем я загрузил это с помощью того же метода, который описал в разделе XSS, и заново перешел по новой ссылке как администратор. С запущенным веб-сервером, размещающим мой bash-файл, и работающим netcat-слушателем, я смог получить обратную оболочку.

Смягчение

Межсайтовый скриптинг

Убедитесь, что в Apache установлено AllowOveride All. В nginx такого параметра нет, и я не тестировал его на nginx.

Удаленное выполнение кода

Обновитесь до последней версии SuiteCRM или хотя бы до версии 7.11.17.
Это конкретное исправление. Коммит 1618af16eaa494c4551bac961e5ac8fc3d87ab8c

Отчетность в SuiteCRM

SuiteCRM был очень отзывчивым на протяжении всего процесса отчетности. Они подтвердили RCE, которое было исправлено. XSS был результатом конфигурации веб-сервера, поэтому они не признали его уязвимостью. Однако они отметили, что обновят документацию в связи с этим.

График

06 АВГ 2020 -> Обе проблемы сообщены на [email protected]
07 АВГ 2020 <- SuiteCRM подтверждает получение отчета и поднимает вопрос перед внутренней командой безопасности
21 АВГ 2020 -> Я связался с [email protected] для последующего уведомления
25 АВГ 2020 <- SuiteCRM отвечает относительно конфигурации веб-сервера/XSS
26 АВГ 2020 -> Я отвечаю, что предложение AllowOveride All смягчает XSS
16 СЕН 2020 -> Я связался с [email protected] для последующего уведомления
17 СЕН 2020 <- SuiteCRM отвечает, чтобы подтвердить проблему как частичную
29 ОКТ 2020 Выпущено обновление
03 НОЯ 2020 -> Я связываюсь с [email protected], чтобы убедиться, что с их стороны больше ничего не требуется перед публикацией статьи
05 НОЯ 2020 <- SuiteCRM отвечает

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

05 НОЯ 2020 -> CVE запрошен мной
06 НОЯ 2020 <- CVE-2020-28328 выдан

PoC

https://www.exploit-db.com/exploits/49001

Спасибо SuiteCRM!

С ними было очень легко работать, и я определенно планирую продолжать искать и сообщать об уязвимостях в этом программном обеспечении!

Скачать инструмент