Pentesting webových zranitelností s Damn Vulnerable Web App

Obsah

Cílem je, aby si začínající i profesionální uživatelé se zájmem o analýzu a řešení bezpečnostních problémů mohli vyzkoušet své znalosti, dovednosti a nástroje v simulovaném prostředí, jako je tento typ nástroje jsou velmi užitečné pro webové vývojáře Dokáží porozumět problémům, které může mít aplikace nebo web, vylepšit programování nebo vyhledat zranitelnosti.

Ačkoli většina vývojářů přijala preventivní opatření proti potenciálním zranitelnostem, mnoho zranitelností, jako např Skriptování mezi weby (XSS) nebo SQL injekce, které ovlivňují bezpečnost mnoha webových stránek a potažmo uživatelů.

V tomto tutoriálu se chystáme nainstalujte a nakonfigurujte web, který chcete použít jako testovací laboratoř pro audity zabezpečení webu, kde najdeme různé, ještě běžnější zranitelnosti, navrhující různé úrovně obtížnosti zranitelností, které lze následně analyzovat.

Budeme používat webovou aplikaci Damn Vulnerabilty (DVWA), což je web, který lze nainstalovat na jakýkoli server, který máme, včetně lokálního, abychom mohli provádět testy pentestingu. Můžeme si jej stáhnout z jeho oficiálních webových stránek.

Po stažení potřebujeme webový server nebo místní server, jak je uvedeno v návodech:

  • Jak nainstalovat Xampp, aby se váš počítač stal webovým serverem
  • Přenosný webový server Easyphp

Nyní po stažení souboru zip webové aplikace Damn Vulnerabilty (DVWA) jej rozbalíme a zkopírujeme do složky našeho webového serveru, v takovém případě používáme Xampp pod Linuxem.

Dále musíme nakonfigurovat databázi, pro kterou půjdeme z phpmyadmin.

Pokud to chceme udělat z okna terminálu, použijeme následující příkaz, ke kterému máme přístup pomocí ssh:

 ssh uživatel @ miip
Nejprve se na server MySQL přihlásíme z příkazového řádku následujícím příkazem:
 mysql -u root -p
V tomto případě je uživatel root uveden s příznakem -u a poté parametr -p označuje, že MySQL by mělo požadovat heslo. Zadáme přístupový klíč, abychom se mohli přihlásit do MYSQL.

Potom můžeme vytvořit databázi z příkazového řádku:

 vytvořit databázi dvwa;
Dále přejdeme do adresáře config a poté soubor upravíme config.inc.php, zde upravujeme údaje tak, aby uváděly název databáze, uživatele a přístupové heslo:
 
Uložíme konfiguraci a musíme jít do prohlížeče, kde máme web, a kliknout na Vytvořit / obnovit databázi pokračovat v instalaci.

Dále vytvoříme data databáze, kterou nakonfigurujeme, a můžeme vidět některé nástroje, které web přináší.

Poté, co se po instalaci vrátíme na web http: // localhost / dvwa, dostaneme přihlašovací obrazovku:

Pro přístup na web použijeme následující údaje:

Uživatel: admin
Klíč: Heslo

V levém sloupci webu máme nabídku, na konci vidíme možnost DVWA BEZPEČNOSTOdtud můžeme konfigurovat úroveň obtížnosti zranitelností, úrovně zabezpečení jsou nízké, střední, vysoké nebo nemožné.

Úroveň zabezpečení mění úroveň zranitelnosti DVWA:

Nízká úroveň zabezpečeníTato úroveň zabezpečení je zcela zranitelná a nemá žádná bezpečnostní opatření, takže nám umožní snadnější testování hackerských technik. Jeho použití má být příkladem toho, jak se zranitelnosti webových aplikací projevují špatnými postupy kódování, a sloužit jako platforma pro výuku nebo učení se základním technikám vykořisťování, praskání a hackování.

Střední úroveň zabezpečeníTato úroveň slouží k zobrazení zranitelností, kdy vývojář nedokázal zajistit, aby kód a vývoj neměly žádné chyby zabezpečení.

Vysoká úroveň zabezpečeníTato úroveň se zaměřuje na to, aby nejpokročilejší uživatelé čelili středním obtížím se směsicí špatných programovacích postupů ve webovém kódu. Zde si můžeme vyzkoušet pokročilé techniky.

Úroveň zabezpečení nemožnáTato úroveň je nejbezpečnější proti všem zranitelnostem. Slouží k porovnání zranitelného zdrojového kódu se zabezpečeným zdrojovým kódem. Tato úroveň si klade za cíl ukázat, jak musí být webová stránka správně vyvinuta a jak musí reagovat před možnými útoky.

Nastavili jsme nejnižší úroveň, abychom mohli testovat různé hackerské techniky a detekci zranitelností.

Otestujte hrubou sílu prolomit přihlášení pomocí vlastního skriptu
Přistupujeme k odkazu Brute Force a vidíme, že existuje přihlašovací formulář, zadáme jakákoli data do uživatelského jména a hesla, aby se nezdařila, a uvidíme, zda dojde k chybě.

Když se přihlášení nezdaří, zobrazí se adresa URL se zadanými údaji, přičemž adresa URL nám ukáže:
http: // localhost / dvw… viz & Přihlášení = Přihlašovací číslo,

Proto můžeme vytvořit skript, který testuje různé kombinace pro uživatele a heslo, nebo použít program jako xHydra, což je grafické rozhraní pro Hydru, nebo přímo z příkazového řádku, pokud je to jediný přístup, který máme přes SSH k serveru.

K instalaci Hydry použijeme následující příkazy:

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Po instalaci budeme muset hledat nebo vytvářet seznamy uživatelů a možné klíče ve formátu txt nebo hledat slovník, který bychom použili jako v tutoriálu.

Také textový soubor se jmény možných uživatelů, můžeme také použít některé již funkční databáze, jako jsou tyto slovníky skullsecurity.org, které se používají v mnoha nástrojích, antivirové programy atd., Které umožňují prolomení hesla nebo hackování. Všechny zdroje dat jsou volně použitelné.

Dále použijeme hydru se seznamy, které máme, pomocí následujících příkazů:

 hydra -L /home/innove/usuarios.txt -P /home/innove/claves.txt 192.168.0.11 http -post -form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login : Přihlášení se nezdařilo "-w 10 -V 

Vidíme, že některé výsledky byly pozitivní, zeleně zobrazují uživatele a heslo, které dosáhly přijatého přihlášení. Pokud to zkusíme s administrátorským uživatelem a heslem, vstoupíme do uživatelského panelu

Chyba zabezpečení SQL Injection
Na nejnižší úrovni zabezpečení je web zranitelný vůči SQL injekci, než začneme vkládat kód do textového pole, můžeme pozorovat kód, který konzultuje tabulku v PHP, která je zranitelná.

 
Chyba je, že data by neměla být odesílána GET, ale pomocí POST a zadruhé je třeba zkontrolovat, zda data, která dorazí, neobsahují škodlivý kód.

Příkaz SQL přímo provede to, co přijde, bez jakýchkoli ovládacích prvků nebo ověření. Díky tomu je kód zranitelný vůči SQL injekcím, například můžeme získat úplný seznam uživatelů, pokud na stránku SQL injection místo ID přidáme následující kód:

 1 'NEBO 1 = 1 UNION SELECT null, verze () #
Výsledkem bude seznam uživatelů.

Můžeme také získat celý seznam tabulek, pokud do textového pole použijeme následující kód.

 1 'NEBO 1 = 1 UNION SELECT null, table_name FROM INFORMATION_SCHEMA.tables

Můžeme použít další kombinace, abychom získali seznam uživatelů a viděli data každé tabulky.

Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave