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

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

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

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

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

Категории

Все категории
Loading categories
opnsense-firmware-mirror-sed — OPNsense 26.7.6 — высокий — удалённый — остаточные привилегии — зеркало пользовательской прошивки sed-пропускает отпечатки pkg | Kitploit
Инструменты/GitHubGitHub/abraxas/opnsense-firmware-mirror-sed
Повышение привилегийАнализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийВиртуализация для безопасностиТестирование на ПроникновениеБезопасность Цепочки Поставок

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Статьи и Исследования
Лаборатории и Практика
GitHubabraxas/opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

OPNsense 26.7.6 — высокий — удалённый — остаточные привилегии — зеркало пользовательской прошивки sed-пропускает отпечатки pkg

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

Abraxas Labs - opnsense-firmware-mirror-sed

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

Класс: Обход подписи Достижимость: Удалённая

Ядро OPNsense 26.7.6 (a842fe48) - opnsense.org

Система: Firmware set отправляет пользовательские mirror / flavour. Ядро FILTER_SANITIZE_URL сохраняет \|#;". opnsense-update -m / -n интерполирует эту строку в sed для OPNsense.conf и может переключить signature_type с "fingerprints" на "none". Затем pkg install от имени root с URL атакующего. Страница настроек предлагает пользовательское зеркало всё ещё подписанных пакетов OPNsense. На ней нет элемента управления «отключить подписи». Привилегия — page-system-firmware-manualupdate, а не page-all.

Sed находится вне закреплённой версии в opnsense-update. Ядро на этой версии — это несанитизированное поле плюс проход -m. Лаборатория повторно запускает этот текст программы s||| с помощью GNU sed.

Этот пакет на GitHub остаётся приватным до скоординированного раскрытия.

IDCVE пока нет
КлассОбход подписи
ДостижимостьУдалённая (аутентифицированный WebGUI / API)
CWECWE-74 / CWE-347
CVSSВысокий: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
ПродуктOPNsense core
Затронуто26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) Firmware set пользовательское зеркало
АутентификацияСессия WebGUI или ключ API с page-system-firmware-manualupdate
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Я закрепил тег 26.7.6 peel a842fe48. Лаборатория — это PHP-гаджет из FILTER_SANITIZE_URL плюс sed mod_mirrorurl из opnsense-update, loopback HTTP на 127.0.0.1:18860. PR:H, потому что странице firmware уже разрешено устанавливать подписанные пакеты. Оценка 8.8, если эта страница рассматривается как PR:L.

Что может сделать атакующий

МетодТочка сбросаПривилегия
FILTER_SANITIZE_URL на пользовательском зеркале с |, затем sed в стиле opnsense-updateперезапись OPNsense.confЦелостность (доказано в лаборатории): signature_type "none". Контрольное зеркало остаётся "fingerprints". Лаборатория: sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes.
Тот же набор, поле pluginssetAction отбрасывает pluginsОтрицательный результат (доказано в лаборатории): plugins отбрасываются до сохранения.
Затем POST /api/core/firmware/install/<pkg>pkg install -y от имени root с URL атакующегоЦелостность (предположительно): неподписанный пакет от имени root. Страница firmware уже устанавливает подписанные пакеты; этот остаток — пропуск проверки. Неподписанной полезной нагрузки в лаборатории нет.
Затем POST /api/core/firmware/update или /upgradeopnsense-update -pt / -u от имени rootЦелостность (предположительно): наборы base/kernel с пропущенной проверкой (DO_INSECURE).
GET /api/core/firmware/info, /running, /upgradestatusfirmware APIРазведка (предположительно): списки пакетов, журнал обновлений, параметры зеркала. Предназначено для этого ACL.
POST /api/core/firmware/reboot, /poweroff, /remove/<pkg>действия configd firmwareДоступность (предположительно): reboot/halt/remove. Предназначено для этого ACL, а не для остатка.

Доказано в лаборатории vs предположительно: sanitize сохраняет | и signature_type none — это SUCCESS в лаборатории. Живой pkg install неподписанного пакета — предположительно. Гаджет, а не полноценная FreeBSD VM OPNsense. Неподписанной полезной нагрузки пакета нет.

Требуется: вошедший в систему пользователь или его Local API key с page-system-firmware-manualupdate и без page-all. CSRF при POST сессии. Не без аутентификации. Не только dashboard.

Смежная поверхность, которая остаётся закрытой

ПоверхностьЛаборатория
Firmware без аутентификации401
Только dashboard403
Контрольное зеркало https://pkg.opnsense.orgsignature_type остаётся "fingerprints"
Обход пути в имени плагинаfilter_pkgname
Получение changelogпо-прежнему opnsense-verify
user-config-readonly при save()throwReadOnly()
Штатные HTTP-зеркала без пропуска проверкиMITM транспорта; fingerprints всё ещё требуются
XMLRPC firmwareтолько строки версий

Без аутентификации нет. Только dashboard нет. Changelog по-прежнему подписан.

Лаборатория

cd lab
./run.sh

Loopback 127.0.0.1:18860. Compose-проект opnsense-firmware-mirror-sed. Свидетель OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS. Последняя строка:

SUCCESS opnsense-firmware-mirror-sed sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS

Корневой лаунчер: python3 opnsense-firmware-mirror-sed-Abraxas-Labs.py.

Форма атакующего зеркала, использованная в лаборатории (только свидетель, без неподписанного pkg):

https://example.invalid/|;/signature_type/s/"fingerprints"/"none"/;#

Исправление

Отклонять пользовательское зеркало, которое не является URL. Удалять метасимволы sed (|, ;, #, ") перед opnsense-update -m / -n или передавать URL как файл, чтобы sed никогда не видел его как текст программы. Сохранять signature_type: "fingerprints", если только отдельный, проверенный механизм управления не отключает проверку. Не позволять Firmware set перезаписывать fingerprints в "none".

Ссылки

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • FirmwareController.php setAction FILTER_SANITIZE_URL
  • scripts/firmware/repos/OPNsense.php opnsense-update -sd -m
  • OPNsense.conf.shadow.in штатный signature_type: "fingerprints"
  • Точка сброса вне закреплённой версии: opnsense-update mod_mirrorurl (s\|\| в строке url:)
  • CWE-74 / CWE-347
Скачать инструмент