Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
opnsense-firmware-mirror-sed — OPNsense 26.7.6 - 높음 - 원격 - 권한 잔존 - 커스텀 펌웨어 미러가 pkg 지문을 sed로 건너뜀 | Kitploit
도구/GitHubGitHub/abraxas/opnsense-firmware-mirror-sed
Privilege EscalationVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationSecurity VirtualizationPenetration TestingSupply Chain Security

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Papers & Research
Labs & Practice
GitHubabraxas/opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

OPNsense 26.7.6 - 높음 - 원격 - 권한 잔존 - 커스텀 펌웨어 미러가 pkg 지문을 sed로 건너뜀

저장소 보기
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

시스템: 펌웨어 set이 사용자 지정 mirror / flavour를 POST합니다. 코어 FILTER_SANITIZE_URL은 \|#;"를 유지합니다. opnsense-update -m / -n은 해당 문자열을 OPNsense.conf에 대한 sed로 보간하며, signature_type을 "fingerprints"에서 "none"으로 뒤집을 수 있습니다. 그런 다음 공격자 URL에서 root 권한으로 pkg install이 실행됩니다. 설정 페이지는 여전히 서명된 OPNsense 패키지의 사용자 지정 미러를 제공합니다. "서명 비활성화" 제어는 없습니다. 권한은 page-all이 아닌 page-system-firmware-manualupdate입니다.

Sed는 핀 외부의 opnsense-update에 있습니다. 이 핀의 코어는 정제되지 않은 필드와 -m 패스입니다. 랩은 해당 s||| 프로그램 텍스트를 GNU sed로 다시 실행합니다.

이 GitHub 팩은 조정된 공개까지 비공개로 유지됩니다.

ID아직 CVE 없음
분류서명 건너뛰기
도달 범위원격 (인증된 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) 펌웨어 set 사용자 지정 미러
인증page-system-firmware-manualupdate 권한이 있는 WebGUI 세션 또는 API 키
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

저는 태그 26.7.6 peel a842fe48을 고정했습니다. 랩은 FILTER_SANITIZE_URL과 opnsense-update mod_mirrorurl sed의 PHP 가젯이며, 127.0.0.1:18860에서 루프백 HTTP를 사용합니다. PR:H인 이유는 펌웨어 페이지가 이미 서명된 패키지를 설치할 수 있도록 허용되어 있기 때문입니다. 해당 페이지를 PR:L로 취급하면 점수는 8.8입니다.

공격자가 할 수 있는 일

방법싱크권한
|가 포함된 사용자 지정 미러에 대한 FILTER_SANITIZE_URL 후 opnsense-update 스타일 sedOPNsense.conf 재작성무결성 (랩 입증): signature_type "none". 대조 미러는 "fingerprints"로 유지됨. 랩: sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes.
동일한 set, plugins 필드setAction이 plugins를 버림부정 (랩 입증): plugins는 저장 전에 버려짐.
그런 다음 POST /api/core/firmware/install/<pkg>공격자 URL에서 root 권한으로 pkg install -y무결성 (추론): 서명되지 않은 패키지를 root로 설치. 펌웨어 페이지는 이미 서명된 패키지를 설치하며, 이 잔여물이 검증 건너뛰기임. 랩에는 서명되지 않은 페이로드 없음.
그런 다음 POST /api/core/firmware/update 또는 /upgraderoot 권한으로 opnsense-update -pt / -u무결성 (추론): 검증이 건너뛰어진(DO_INSECURE) base/kernel 세트.
GET /api/core/firmware/info, /running, /upgradestatus펌웨어 API정찰 (추론): 패키지 목록, 업데이트 로그, 미러 옵션. 이 ACL에 의도된 기능.
POST /api/core/firmware/reboot, /poweroff, /remove/<pkg>configd 펌웨어 작업가용성 (추론): 재부팅/정지/제거. 이 ACL에 의도된 기능이며, 잔여물이 아님.

랩 입증 vs 추론: sanitize가 |를 유지하고 signature_type이 none인 것은 랩 SUCCESS입니다. 서명되지 않은 패키지의 실제 pkg install은 추론입니다. 가젯이며, 완전한 OPNsense FreeBSD VM이 아닙니다. 서명되지 않은 패키지 페이로드는 없습니다.

요구 사항: page-system-firmware-manualupdate 권한이 있고 page-all이 없는 로그인 사용자 또는 해당 사용자의 Local API 키. 세션 POST에 대한 CSRF. 인증 없이는 불가. 대시보드 전용도 불가.

닫혀 있는 인접 표면

표면랩
인증 없는 펌웨어401
대시보드 전용403
대조 미러 https://pkg.opnsense.orgsignature_type이 "fingerprints"로 유지됨
플러그인 이름 트래버설filter_pkgname
변경 로그 가져오기여전히 opnsense-verify
save()에 대한 user-config-readonlythrowReadOnly()
검증 건너뛰기 없는 기본 HTTP 미러전송 MITM; fingerprints는 여전히 필요
XMLRPC 펌웨어버전 문자열만

인증 없이는 불가. 대시보드 전용도 불가. 변경 로그는 여전히 서명됨.

랩

cd lab
./run.sh

루프백 127.0.0.1:18860. Compose 프로젝트 opnsense-firmware-mirror-sed. Witness 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.

랩에서 사용된 공격 미러 형태 (witness 전용, 서명되지 않은 pkg 없음):

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

수정 방법

URL이 아닌 사용자 지정 미러를 거부하십시오. opnsense-update -m / -n 전에 sed 메타문자(|, ;, #, ")를 제거하거나, URL을 파일로 전달하여 sed가 이를 프로그램 텍스트로 보지 않도록 하십시오. 별도의 감사된 제어가 검증을 끄지 않는 한 signature_type: "fingerprints"를 유지하십시오. 펌웨어 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 (url: 줄에 대한 s\|\|)
  • CWE-74 / CWE-347
도구 다운로드