
CVE-2025-6218는 WinRAR의 디렉터리 트래버설 취약점으로, 사용자가 특수하게 조작된
CVE-2025-6218은 WinRAR의 디렉토리 트래버설 취약점으로, 사용자가 악의적으로 조작된 .rar 아카이브를 추출할 때 공격자가 의도된 추출 디렉토리 외부에 파일을 배치할 수 있게 합니다. 이 결함을 악용하면 공격자가 민감한 위치에 악성 파일을 드롭할 수 있으며, 해당 파일이 시스템이나 사용자에 의해 실행될 경우 원격 코드 실행(RCE)으로 이어질 수 있습니다.
---
WinRAR.exe --version 사용).디렉토리 트래버설 취약점은 공격자가 파일 경로를 조작하여 의도하지 않은 위치에 파일을 쓰는 것을 허용합니다. WinRAR의 맥락에서 이는 C:\Temp에 추출되어야 할 파일이 Windows 시작 폴더(C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)와 같은 민감한 디렉토리에 대신 배치될 수 있음을 의미합니다. 악성 실행 파일이나 스크립트가 이러한 위치에 배치되면 자동으로 실행되어 공격자가 피해자의 시스템을 제어할 수 있게 됩니다.
공격자는 다음을 수행할 수 있습니다:
.bat 파일)를 드롭합니다.C:\Windows\System32와 같은 디렉토리의 중요 시스템 파일을 덮어써 시스템 기능을 방해하거나 권한을 상승시킵니다.취약점은 WinRAR이 .rar 아카이브에 저장된 파일 경로를 제대로 검증하고 삭제(sanitize)하지 못하는 데서 비롯됩니다. 파일을 추출할 때 WinRAR은 ..\ 또는 ../../와 같은 경로 트래버설 시퀀스를 충분히 확인하지 않고 아카이브의 파일 경로 메타데이터를 신뢰합니다. 이로 인해 공격자는 파일 경로가 의도된 추출 디렉토리 외부를 가리키는 아카이브를 제작할 수 있습니다.
..\..\..\ 시퀀스가 추출 프로세스를 속이는 방법..\ 시퀀스는 시스템에 한 디렉토리 위로 이동하도록 지시합니다. 여러 개의 ..\ 시퀀스(예: ..\..\..\..\..)를 연결함으로써 공격자는 추출 디렉토리(예: C:\Temp\Test)에서 드라이브 루트(C:\)로 이동한 다음 원하는 위치(예: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)로 이동할 수 있습니다.C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup에 배치된 파일은 사용자가 로그인할 때 자동으로 실행됩니다. 여기 있는 악성 .bat 또는 .exe 파일은 임의의 명령을 실행할 수 있습니다.C:\Windows\System32의 파일을 덮어쓰거나 추가하면 시스템 무결성이 손상되거나 권한 상승이 가능해집니다.의도된 추출(안전):
- 사용자가 아카이브를 추출할 위치: C:\Temp\Test
- 아카이브에 포함된 파일: payload.bat
- 예상 결과: C:\Temp\Test\payload.bat
실제 추출(악용됨):
- 사용자가 아카이브를 추출할 위치: C:\Temp\Test
- 아카이브에 포함된 파일 경로: ..\..\..\..\..\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
- 실제 결과: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
이 섹션에서는 격리된 안전한 실습 환경(네트워크 연결이 없는 가상 머신)에서 CVE-2025-6218 취약점을 수동으로 재현하기 위한 단계별 지침을 제공합니다. 목표는 Windows 시작 폴더에 사용자 로그인 시 계산기(calc.exe)를 실행하는 무해한 .bat 파일을 배치하는 .rar 아카이브를 만드는 것입니다.
테스트 폴더 준비:
exploit_test라는 폴더를 만듭니다(예: C:\exploit_test).간단한 페이로드 생성:
@echo off
start calc.exe
C:\exploit_test에 payload.bat로 저장합니다.경로 트래버설을 위한 폴더 구조 생성:
C:\exploit_test 안에 원하는 경로를 미러링하는 폴더 구조를 만듭니다:
C:\exploit_test\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
<username>을 VM의 대상 사용자 이름(예: absholi7ly)으로 바꿉니다.payload.bat을 Startup 폴더로 이동합니다:
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
payload.bat을 찾습니다. 있으면 디렉토리 트래버설 익스플로잇이 성공한 것입니다.payload.bat을 메모장에서 열어 내용을 확인합니다:
@echo off
start calc.exe
payload.bat을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\payload.bat 또는 C:\Users\username\AppData\Roaming\...의 하위 폴더)에 있다면 의도한 대로 익스플로잇이 작동하지 않은 것입니다.username 사용자로 로그아웃했다가 다시 로그인합니다.payload.bat을 수동으로 더블클릭하여 작동하는지 확인합니다.C:\exploit_test\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
WinRAR을 사용하여 악성 RAR 아카이브 제작:
C:\exploit_test로 이동합니다.Users 폴더(payload.bat까지의 전체 경로 포함)를 선택합니다.exploit.rar로 설정합니다(예: C:\exploit_test\exploit.rar).exploit.rar를 WinRAR에서 열어 아카이브 내용을 확인합니다. 다음과 같이 보여야 합니다:
Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
아카이브를 VM으로 전송:
exploit.rar를 VM이 접근 가능한 공유 폴더 또는 USB 드라이브에 복사합니다.exploit.rar를 C:\ 드라이브 루트로 이동합니다:
C:\exploit.rar
VM에서 아카이브 추출:
C:\로 이동합니다.exploit.rar를 마우스 오른쪽 버튼으로 클릭하고 여기에 추출을 선택합니다.payload.bat이 다음 경로로 추출되어야 합니다:
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.bat
익스플로잇 확인:
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
payload.bat이 있는지 확인합니다.페이로드 실행 테스트:
username으로 다시 로그인합니다.calc.exe)가 자동으로 실행되어야 합니다.payload.bat을 더블클릭하여 계산기가 열리는지 확인합니다.