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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-21546 — 자동화된 익스플로잇 툴킷 및 CVE-2024-21546용 탐지 템플릿으로, UniSharp Laravel Filemanager의 인증되지 않은 RCE를 대상으로 하며 WAF 우회 및 인터랙티브 셸을 포함합니다. | Kitploit
도구/GitHubGitHub/digitalsurgn/cve-2024-21546
ReconnaissanceVulnerability ScannersCode AnalysisExploitationWeb Application ExploitationWeb SecurityPayload Development
GitHubdigitalsurgn/cve-2024-21546

CVE-2024-21546

자동화된 익스플로잇 툴킷 및 CVE-2024-21546용 탐지 템플릿으로, UniSharp Laravel Filemanager의 인증되지 않은 RCE를 대상으로 하며 WAF 우회 및 인터랙티브 셸을 포함합니다.

저장소 보기
10시간 39분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

UniSharp Laravel Filemanager 인증 없이 RCE (CVE-2024-21546)

이 저장소는 UniSharp/laravel-filemanager 패키지(버전 < 2.9.1)를 사용하는 애플리케이션에서 인증 없는 원격 코드 실행(RCE) 을 식별하고 악용하기 위한 보안 평가 도구, 탐지 템플릿 및 자동화된 익스플로잇 툴킷을 포함합니다.


📑 목차

  • 1. 취약점 개요
  • 2. 근본 원인 분석
  • 3. Nuclei 탐지 템플릿 (laravel-filemanager.yaml)
    • 로컬라이즈된 사이트에서 기본 템플릿이 실패하는 이유
    • 재구성된 템플릿 사양
    • Nuclei 스캔 실행
  • 4. 자동화된 익스플로잇 툴킷 (cve_2024_21546_rce.py)
    • 익스플로잇 기능
    • 사용법 및 매개변수
    • 예시
  • 5. 수정 지침

1. 취약점 개요

이 취약점은 두 가지 결합된 조건에서 발생합니다:

  1. 인증 없는 라우트 접근: 호스트 애플리케이션이 'auth' 또는 'web' 미들웨어 파이프라인을 적용하지 않고 /laravel-filemanager 라우트를 등록합니다.
  2. 끝점 점(.) 확장자 검증 우회: 업로드 검증기가 끝점 점(.) 문자를 제대로 정리하지 못하여 공격자가 실행 파일 차단 목록을 우회하고 PHP 스크립트를 공개 스토리지에 배치할 수 있습니다.

2. 근본 원인 분석

A. 끝점 점 검증기 결함 (LfmUploadValidator.php)

v2.9.1 이전 버전에서 LfmUploadValidator.php는 차단 목록에 대해 파일 확장자를 다음과 같이 확인했습니다:

root@kitploit:~
public function extensionIsNotExcutable($unallowed_extensions)
{
    $extension = strtolower($this->file->getClientOriginalExtension());
    if (in_array($extension, $unallowed_extensions)) {
        throw new \Exception('File extension is not allowed.');
    }
    return $this;
}

공격자가 poc.php.라는 파일을 업로드하면:

  • Symfony의 getClientOriginalExtension()은 마지막 점 뒤의 문자를 추출합니다.
  • 파일 이름이 점으로 끝나므로 getClientOriginalExtension()은 ""(빈 문자열)로 평가됩니다.
  • in_array("", ['php', 'html']) 검사는 false로 평가되어 확장자 차단을 우회합니다.

B. 확장자 없는 해석 및 이름 변경 체이닝

Windows 및 특정 스토리지 드라이버에서 파일은 확장자 없는 해시(<hash>)로 저장됩니다. 익스플로잇은 LFM의 RenameController(GET /laravel-filemanager/rename?file=<hash>&new_name=runner.php)를 체이닝하여 업로드된 페이로드를 활성 .php 파일로 이름을 변경하고 /storage/app/public/file-manager-files/items/runner.php에서 즉시 웹 실행 권한을 부여합니다.


3. Nuclei 탐지 템플릿 (laravel-filemanager.yaml)

로컬라이즈된 사이트에서 기본 템플릿이 실패하는 이유

업스트림 커뮤니티 템플릿(http/exposed-panels/laravel-filemanager.yaml) (https://github.com/projectdiscovery/nuclei-templates/blob/main/http/exposed-panels/laravel-filemanager.yaml) 은 하드코딩된 영어 문자열 매처에 의존했습니다:

root@kitploit:~
matchers:
  - type: word
    words:
      - "Laravel FileManager" # 로컬라이즈된 배포 또는 비영어 버전에서 실패

애플리케이션이 로컬라이즈된 경우(예: 아랍어, 프랑스어, 중국어) 영어 문자열이 HTML 본문에 존재하지 않아 오탐(false negative)이 발생합니다.

재구성된 템플릿 사양

현대화된 템플릿은 변경 불가능한 공급업체 자산 경로와 업로드 양식 작업을 매칭하여 패널을 탐지합니다:

root@kitploit:~
id: laravel-filemanager

info:
  name: Laravel File Manager - Panel Detect
  author: digitalsurgn
  severity: critical
  description: Laravel File Manager panel was detected.
  reference:
    - https://github.com/UniSharp/laravel-filemanager
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N
    cwe-id: CWE-200
  metadata:
    max-request: 1
  tags: panel,laravel,filemanager,fileupload,intrusive

http:
  - method: GET
    path:
      - "{{BaseURL}}/laravel-filemanager?type=Files"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "vendor/laravel-filemanager"
          - "laravel-filemanager/upload"
        condition: or

      - type: status
        status:
          - 200

Nuclei 스캔 실행

root@kitploit:~
nuclei -u https://target.com/ -t laravel-filemanager.yaml

4. 자동화된 익스플로잇 툴킷 (cve_2024_21546_rce.py)

독립 실행형 Python 도구(cve_2024_21546_rce.py)는 내장된 WAF 우회 및 자체 정리 기능을 갖춘 종단 간 인증 없는 익스플로잇을 자동화합니다.

익스플로잇 기능

  • 프로토콜 및 포트 자동 협상: 대상이 HTTP 또는 HTTPS를 사용하는지 자동으로 감지하고 비표준 사용자 지정 포트를 지원합니다.
  • 사전 접근 검증: 익스플로잇을 시도하기 전에 /laravel-filemanager가 인증 없이 접근 가능한지 확인합니다.
  • 동적 파일 추적: 하드코딩된 폴더 또는 파일 이름에 의존하지 않고 업로드된 해시를 식별하기 위해 디렉터리 목록(jsonitems)의 전후 스냅샷을 캡처합니다.
  • WAF 우회: PHP 짧은 태그(<?=), 동적 함수 호출(('pas'.'sthru')) 및 Base64로 인코딩된 X-Cmd 헤더를 사용하여 검사 규칙을 우회합니다.
  • 대화형 셸 모드: 연속 대화형 셸 세션(--interactive)을 지원합니다.
  • 제로 풋프린트 자동 정리: 각 명령 실행 후 드롭된 웹셸을 자동으로 삭제합니다.

사용법 및 매개변수

root@kitploit:~
python3 cve_2024_21546_rce.py [OPTIONS]

예시

1. 대화형 모드 (대상, 포트 및 명령 프롬프트)

root@kitploit:~
python3 cve_2024_21546_rce.py

2. 단일 명령 실행 (CLI)

root@kitploit:~
python3 cve_2024_21546_rce.py -t xyz.com -c "whoami"

3. 대화형 셸이 포함된 사용자 지정 비표준 포트

root@kitploit:~
python3 cve_2024_21546_rce.py -t 10.10.10.50 -p 8080 --interactive

5. 수정 지침

  1. 패키지 업그레이드: Composer를 통해 unisharp/laravel-filemanager를 버전 2.9.1 이상으로 업데이트:
    root@kitploit:~
    composer update unisharp/laravel-filemanager
    
  2. 인증 미들웨어 적용: config/lfm.php에서 모든 파일매니저 라우트가 인증으로 보호되도록 설정:
    root@kitploit:~
    'middlewares' => ['web', 'auth'],
    
  3. 공개 스토리지 제한: 공개 업로드 디렉터리(예: /storage/)에서 .php 스크립트 실행을 거부하도록 웹 서버 규칙을 구성합니다.
도구 다운로드
항목세부 정보
취약점 이름UniSharp Laravel Filemanager 무제한 파일 업로드로 인한 RCE
CVE 식별자CVE-2024-21546
영향을 받는 구성 요소unisharp/laravel-filemanager (< 2.9.1)
공통 약점CWE-94 (코드 주입) / CWE-434 (무제한 업로드)
심각도치명적 (CVSS 9.8)
공격 벡터원격 / 인증 없음 HTTP
플래그매개변수설명
-t, --target<host>대상 도메인 또는 IP 주소 (예: example.com 또는 192.168.1.50).
-p, --port<port>표준 80/443과 다른 경우 대상 포트 (예: 8080, 8443).
--schemehttp / https프로토콜 체계를 명시적으로 지정 (기본값: 자동 감지).
-c, --cmd<command>실행할 단일 명령 (예: whoami, id, ipconfig).
-i, --interactive플래그대화형 명령 실행 셸 시작.
-d, --dir<path>대상 LFM 작업 디렉터리 (기본값: /items).