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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pfsense-api-unix-sock-noauth — pfSense Plus MIM API toolkit b4acd7ca - 높음 - 로컬 - 권한 잔여 - unix sock enroll no JWT | Kitploit
도구/GitHubGitHub/abraxas/pfsense-api-unix-sock-noauth
Privilege EscalationVulnerability AnalysisExploitationInformation GatheringNetwork SecurityPenetration TestingAuthenticationLabs & Practice

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
abraxas/pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

pfSense Plus MIM API toolkit b4acd7ca - 높음 - 로컬 - 권한 잔여 - unix sock enroll no JWT

저장소 보기
21일 전아직 검토되지 않음

Abraxas Labs - pfsense-api-unix-sock-noauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

분류: 권한 잔존 도달 범위: 로컬

pfSense Plus MIM API b4acd7ca - Netgate

github.com/Netgate/pfsense-api는 pfSense Plus Nexus Multi-instance Management용 공개 OpenAPI와 생성된 Python입니다. CE REST 패키지가 아닙니다. 공식 enroll 샘플은 Bearer JWT로 HTTPS :8443에 로그인한 다음, 각 방화벽에 POSIX 스크립트를 SSH로 전송합니다. 해당 스크립트는 Authorization 없이 /var/run/pfnet-controller.sock과 통신합니다.

curl --unix-socket /var/run/pfnet-controller.sock -H "Content-Type: application/json" -d "{controller JSON}" http://unix/api/mim/controllers
curl --unix-socket /var/run/pfnet-controller.sock http://unix/api/mim/device/identity

Deprecated fallbacks /api/system/controller와 /api/system/mim/devid는 동일하다: Bearer 없음. HTTPS 로그인은 여전히 JWT를 발급한다. 그 토큰은 온디바이스 sock에 적용되지 않는다. 이는 :8443과 mim_* 그룹과는 별개의 신뢰 경계다.

Nexus MIM 시리즈의 3부. G1 / G2가 박스에 적용된 후, 이 sock은 로컬 플레인이다.

sock에 connect(2)할 수 있는 로컬 프로세스는 JWT 없이 컨트롤러를 등록하고 디바이스 아이덴티티를 덤프할 수 있다. Plus는 실행되지 않았다. 실제 sock DAC는 알 수 없다.

ID아직 CVE 없음
Class권한 잔존
Reach로컬 (/var/run/pfnet-controller.sock에 connect(2))
CWECWE-306
CVSSHigh: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (sock 모드가 다른 로컬 uid의 연결을 허용하는 경우). 솔직히: DAC 알 수 없음, Plus 실행되지 않음.
ProductNetgate/pfsense-api (Plus Nexus MIM 툴킷)
Affectedpublic main b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25)
Auth공식 unix-socket enroll curl에 없음
LicenseGNU Affero GPL v3.0
Lab127.0.0.1:19121만. Unix HTTP mock. Plus 이미지 없음.

공격자가 할 수 있는 것

행위자는 pfSense 디바이스에서 /var/run/pfnet-controller.sock에 connect(2)할 수 있는 모든 프로세스다. 이 예시에서는 원격 TCP가 아니다 (curl --unix-socket만). HTTPS :8443 JWT와 mim_* 그룹은 이 fd에 적용되지 않는다.

Lab에서 입증됨 (공개된 enroll 프로토콜의 mock)

MethodSinkPrivilege
Authorization 없이 공식 device_script POSTPOST http://unix/api/mim/controllersIntegrity: mock이 enroll JSON을 수락함. Hit log authorization_present=false.
Authorization 없이 공식 device_script GETGET http://unix/api/mim/device/identityRecon: mock이 PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS를 포함한 DeviceIdentity 형태의 JSON을 반환함.
Authorization: Bearer lab-jwt를 포함한 동일 GET동일 identity 경로Lab control: 401, witness가 body에 없음. present vs absent를 구분함. Plus 결과는 아님.

라이브 Plus 데몬에서 추론됨 (바이너리는 테스트 대상 아님)

이들은 공식 샘플과 mim 태그가 디바이스에 올리는 것과 동일한 OpenAPI op이다. 프로토콜로서만 입증되었으며, Plus 200으로는 아님.

MethodSinkPrivilege
공격자 ControllerIdentity (key, vpn_pubkey, vpn_listenaddr, vpn_netkey, cert)를 포함한 POST /mim/controllers (fallback POST /api/system/controller)SetControllerIntegrity: 적대적 컨트롤러를 등록함. Spec: 디바이스는 "10초마다 연결 요청을 계속 발행할 것" (Netgard VPN이 공격자에게 연결됨).
GET /mim/device/identity (fallback GET /api/system/mim/devid)GetDeviceIdentityRecon: 디바이스 Noise/VPN 공개 키, address, controller_add curl 텍스트.
GET /mim/controllersGetControllersRecon: 컨트롤러 목록과 디바이스 정보 (ControllerInfo.noise_secret, 키).
GET /mim/controllers/id/{key}GetMIMControllerRecon: 컨트롤러 레코드 하나.
DELETE /mim/controllers/id/{key}DeleteMIMControllerIntegrity / availability: 실제 컨트롤러를 등록 해제함 (key hex 또는 base64-URL).
공격자 privkey / pubkey를 포함한 POST /mim/device/pubkeySetDevicePublicKey (DevicePublicKeyOption에 privkey 포함)Integrity: 디바이스 ED25519 아이덴티티를 교체함. 이후 컨트롤러 핸드셰이크가 공격자 키를 신뢰함.

그 자체로 호스트 root 셸을 부여하지는 않는다. MIM 플레인을 부여한다: 디바이스가 컨트롤러로 신뢰하는 대상, 그리고 pubkey POST가 존중될 경우 디바이스 Noise 개인 키.

요구 사항: /var/run/pfnet-controller.sock에 대한 로컬 connect(2). DAC(모드, 소유자, 그룹, SO_PEERCRED)는 공개 클라이언트 트리에 없습니다. 데몬이 0600 root로 바인딩하면 이는 이미 root인 로컬(헬퍼, 패키지 또는 /var/run을 볼 수 있는 탈출에 대한 confused deputy)입니다. 소켓이 다른 uid에서 접근 가능하면 점수대로 CVSS 7.8입니다.

닫힌 채로 유지되는 인접 표면

  • Nexus HTTPS :8443의 /mim/controllers에 대한 인증되지 않은 원격 TCP. 해당 포트는 User Manager JWT로 문서화되어 있습니다. 이 잔여물은 unix fd입니다.
  • HTTPS POST /login은 여전히 Bearer JWT를 발급합니다. AuthenticatedClient는 여전히 이를 CONTROLLER_URL+"/api"로 보냅니다.
  • 생성된 라이브러리 기본값 verify_ssl=True. 경로 매개변수는 ../를 퍼센트 인코딩합니다.
  • 755개 모든 작업에 대한 OpenAPI security: MISSING은 스키마 공백이며, 입증된 인증되지 않은 HTTPS 우회가 아닙니다.
  • 이 랩은 unix HTTP 목입니다. Plus 바이너리가 요청을 수락했음을 입증하지 않습니다.
  • 슈퍼유저 JWT에 대한 의도된 관리자 Diagnostics php/shell. 이 잔여물이 아닙니다.

동일한 핀, 원격 등록 플레인: pfsense-api-enroll-json-ssh 및 pfsense-api-enroll-autoadd. 시리즈 맵: pfsense-api-nexus-mim.

발견 방법

Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f를 핀하고 공식 등록 루프를 읽었습니다: 로그인, GET /mim/controller/identity, 문자열화, unix-socket POST/GET의 SSH exec, POST /mim/devices. HTTPS는 AuthenticatedClient(token=...)를 사용합니다. 소켓 curl은 사용하지 않습니다.

잘못된 방향: 누락된 securitySchemes를 인증되지 않은 HTTPS로 취급(로그인에도 누락되어 있음; 예제는 항상 Bearer가 먼저). 소켓이 전 세계 쓰기 가능하다고 가정(모드는 이 저장소에 없음). Plus 200 주장. 여기서 입증된 잔여물은 공개된 등록 프로토콜입니다.

극장: 리버스 셸. 오라클은 공식 curl 형태에 identity 본문의 증인과 Bearer 401 컨트롤을 더한 것입니다.

랩

python3 pfsense-api-unix-sock-noauth-Abraxas-Labs.py

또는

cd lab
./run.sh

Loopback 전용: 127.0.0.1:19121. Compose 프로젝트 pfsense-api-unix-sock-noauth. /var/run/pfnet-controller.sock에서 unix HTTP 모의. Witness PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS. Docker unix-socket 모의. Plus 이미지 없음.

예상 마지막 줄:

SUCCESS PFSENSE-API-UNIX-SOCK-NOAUTH auth-absent=yes identity-witness=yes bearer-401=yes PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS

수정 사항

/var/run/pfnet-controller.sock에 디바이스 JWT 또는 SO_PEERCRED를 요구하십시오. 소켓을 0600 root로 바인딩하십시오. 인증되지 않은 유닉스 피어로부터의 POST /mim/controllers, POST /mim/device/pubkey, 또는 identity GET을 허용하지 마십시오.

참고 자료

  • github.com/Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f
  • example-add-devices.py device_script (유닉스 curl, Authorization 없음)
  • pfapi_openapi.yml /mim/controllers, /mim/device/identity, /mim/device/pubkey
  • 시리즈: pfsense-api-nexus-mim
  • 원격 플레인: pfsense-api-enroll-json-ssh · pfsense-api-enroll-autoadd
  • CWE-306

라이선스

GNU Affero GPL v3.0. LICENSE를 참조하십시오. 루프백 랩 전용. 보증 없음.

도구 다운로드