• XSS.stack #1 – первый литературный журнал от юзеров форума

Технические вопросы по CVE-2023-38408

zdestuta

(L1) cache
Пользователь
Регистрация
04.06.2024
Сообщения
753
Реакции
374
Почитал внимательно вот это https://github.com/LucasPDiniz/CVE-2023-38408 и особенно вот это https://www.vicarius.io/vsociety/posts/exploring-opensshs-agent-forwarding-rce-cve-2023-38408
Остались "глупые вопросы" у меня (да, не ругайтесь, я всё это шеллкоды и asm забыл почти более 15 лет прошло, сейчас в другой теме) :

1. Правильно ли я понимаю, что это не прямая эксплуатация, а по сути эдакий privesc?
Ну то есть к SSH серверу у атакующего для эксплуатации доступ быть уже должен (непривилегированный), а "насрав" в юникс-сокет SSH сессии другого пользователя шеллкодом атакер получает право распоряжаться его ключами (из его проброшенного ssh-agent) и "стать другим юзером" с большими привилегиями - я правильно суть понимаю?

2. Судя по документации "ssh-add -s" (которым грузят .so библиотеки "как-то" см. статьи по ссылкам) это:
Код:
-s pkcs11
               Add keys provided by the PKCS#11 shared library pkcs11.  Certificate files may optionally be listed as command‐line arguments.  If these are present, then they will be loaded into the agent using  any  corresponding
               private keys loaded from the PKCS#11 token.
Интересно каким же образом срабатывает загрузка .so вот такая:
Код:
$ ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
Enter passphrase for PKCS#11:
Could not add card "/usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0": agent refused operation
а? Этот момент не понятен. Может кто-то пояснить пожалуйста?

3. А вот для чего .so грузить уже понятно - чтобы стек стал выполняемый (ряд библиотек этого требуют, после выгрузки оставляют страницы памяти executable) - иначе шеллкод не выполнится, он на переполнении стека же основан иначе откуда там аж "\x90" * 10000 это 10k NOP см. в "perl -e"
Но не понятно почему их надо столько загрузить см. это:
Код:
# Remotely alter the mmap layout of ssh-pkcs11-helper:
$ ssh-add -s /usr/lib/pulse-15.0+dfsg1/modules/module-remap-sink.so

# Remotely alter the mmap layout of ssh-pkcs11-helper (again), and replace the unmapped SIGBUS handler's code with another piece of code (a useful gadget) from another shared library:
$ ssh-add -s /usr/lib/pulse-15.0+dfsg1/modules/module-http-protocol-unix.so
$ ssh-add -s /usr/lib/x86_64-linux-gnu/sane/libsane-hp.so.1.0.32
$ ssh-add -s /usr/lib/libreoffice/program/libindex_data.so
$ ssh-add -s /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstaudiorate.so
$ ssh-add -s /usr/lib/libreoffice/program/libscriptframe.so
$ ssh-add -s /usr/lib/x86_64-linux-gnu/libisccc-9.16.15-Ubuntu.so
$ ssh-add -s /usr/lib/x86_64-linux-gnu/libxkbregistry.so.0.0.0

# Remotely raise a SIGBUS in ssh-pkcs11-helper:
$ ssh-add -s /usr/lib/debug/.build-id/15/c0bee6bcb06fbf381d0e0e6c52f71e1d1bd694.debug
Вот эта часть особенно не понятна.

Мне это чисто технически интересно, даже не в плане взлома. Буду очень благодарен за любые подсказки.
 
1.Данная вулна требует уже установленного доступа к таргет SSH-серваку и использовать forward-агент для выполнения кода в контексте другого юзера -> проброс ssh-agent'а [отправка специально сформированных данных в UNIX-сокет агента SSH другого пользователя] -> доступ к ключам другого пользователя -> повышение привилегий
2. В контексте данной вулны, ssh-add -s используется, чтобы ssh-pkcs11-helper загружал сошки, которые могут осуществлять манипуляции с расположением памяти(mmap layout) и повлиять на поведение программы для подготовки окружения(для выполнения кода).
3. Дополняя второй ответ, чтобы ответить на третий вопрос, нам это нужно для подготовки окружения, в котором шэллкод может быть успешно выполнен. Причем, ssh-add -s /path/to/library.so показывает, как различные сошки загружаются последовательно для достижения нужного состояния памяти и манипулировать обработчиками сигналов -> выполнить шэллкод.
Раз уж зашла речь про сошки, то немного затрону очевидный момент, ведь разные сошки при сплоитдеве дают разные результаты(капитан очевидность) и могут следующее:
- Содержать гаджеты
- Изменять память, что полезно при определении, где будут находиться нужные данные или код
- Требовать исполняемый стек(в данном случае помогает выполнению шэллкода
- ...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх