Penetrační testování je testování zranitelnosti sítě před zneužitím zlomyslným útočníkem nebo hackery. DE-ICE je virtuální počítač, který obsahuje instalaci Linux Slax a slouží k procvičování jak pro začátečníky, tak pro pokročilé.
Slax je živé CD operačního systému GNU / Linux na základě distribuce Slackware. Slax je přenosný operační systém Linux, nezabírá mnoho místa a poskytuje rychlý výkon.
Slax poskytuje úložiště předinstalovaného softwaru a je široce používán správci k vytváření testovacích platforem, konkrétních distribucí a je užitečný pro vytváření nástrojů pro obnovu, penetračních testů, zabezpečení a síťových simulací s virtuálními počítači pro správce systému a vývojáře softwaru nebo bezpečnostních expertů, systém zabírá asi 190 MB. Grafické rozhraní může, ale nemusí být nainstalováno, ale zabralo by to spoustu místa a zpomalilo by to systém.
De-ICE lze nainstalovat do VirtualBoxu nebo vypálit na CD a použít jako LiveCD. Existuje několik verzí, které představují různé úrovně obtížnosti, verze pro začátečníky je DE-ICE1.100 a nejsložitější v současnosti je DE-ICE1.140. Pro tento tutoriál použijeme verzi DE-ICE 1.120, která je k dispozici na https: //www.vulnhub… .e-ice-s1120,10 /.
Tento virtuální stroj je speciálně připraven k otestování našich znalostí a použití jakýchkoli technik nebo nástrojů penetračního testování.
Pentesting De-ICE PenTest Lab 1.120
Pro postupy penetračního testování nainstalujte verzi DE-ICE.1.120 a k instalaci DE-ICE používám Linux Mint a VirtualBox. Lze jej použít z jakéhokoli operačního systému, který vám umožní vytvořit virtuální počítač.
Začnu hledat svůj aktuální IP z terminálu pomocí příkazu ifconfig a výsledek je následující:
IP: 192.168.0.11
Dále používám jiný software podle mého výběru, ale mohou vyzkoušet jiné, aby vyhovovaly uživateli.
A) používám Zenmap pro skenování všech hostitelů mezi 1-254
V tutoriálech:
- Zenmap vizuální nástroj pro testování zabezpečení portů
- Jak používat Nmap ke skenování otevřených portů ve vašem VPS a Metasploit rámci pro testování zabezpečení serveru
Viděli jsme několik nástrojů pro skenování portů a jejich použití.
Otevřeme Zenmap, přiřadím IP a parametry tak, aby prohledala celou síť a ukázala mi připojené zařízení a IP.
IP 192.168.0.1 odpovídá IP bráně routeru s otevřeným portem 80 a IP routeru 192.168.0.10 se všemi porty zavřenými.
Při pohledu na topologii a vlastnosti každého hostitele určuji, že ip 192.168.0.38 je WiFi ip virtuálního počítače a ip 192.168.0.40 je ethernetové připojení je virtuální stroj.
Mám přístup k IP virtuálního počítače nebo VPS a najdu webovou stránku pro registraci produktů.
V zásadě [color = # b22222] by vážným selháním [/ color] bylo, že tento web nemá žádný typ řízení přístupu uživatelů, tímto způsobem by měl přístup ke všem uživatelům sítě, bez ohledu na to, jak moc je v intranetu.
Ze Zenmap také pozoruji naskenované porty pro tohoto hostitele.
Zjistil jsem, že je otevřeno několik portů, abych se pokusil přistupovat k útokům hrubou silou, mimo jiné vynucením uživatele a hesla pomocí nástrojů, jako je Hydra nebo John the Ripper.
Můžeme také vidět topologii pro analýzu každého hostitele a s kým je spojen.
Tímto způsobem můžeme vidět vlastnosti zařízení, jak je síť konfigurována a na které hostitele můžeme útočit.
B) Skenování zranitelnosti
K skenování zranitelností používám OSWAP ZAP. Tento nástroj jsme viděli v tutoriálu:
- Naskenujte zranitelnost webu pomocí ZAP
Umožňuje nám skenovat zranitelnosti webových stránek a předkládat zprávy o zjištěných zranitelnostech.
Pomocí pravidel filtrování a aktivního a pasivního skenování můžeme najít zranitelnosti webu. Ukazuje nám také všechny stránky, které web obsahuje, dokonce naznačuje, které jsou ty, které přijímají určitý typ parametru podle adresy URL.
Po skenování vidím strukturu webu se stránkami naprogramovanými v PHP a zranitelnosti podle použitých filtrů.
V případě stránky pro vložení produktu vidíme, že přijímá parametry prostřednictvím metody POST a můžeme také vidět pole nebo proměnné, které přijímá.
C) Vložení kódu XSS
Poté přejdeme na stránku pro přidání produktu (Přidat produkt) a použití Techniky vstřikování XSS kde vkládám kód html a Javascript, abych zjistil, zda je vůči tomuto typu útoku zranitelný.
Jako první test přidávám do popisu produktu html kód externího obrázku, libovolný můžete vybrat vyhledáváním na Googlu.
Pokud je obrázek zranitelný, uloží se do databáze a zobrazí se v seznamu produktů, které budeme muset hledat v kombu pro kód, který přiřadíme, výsledek je následující:
[color = # b22222] Je zranitelný vůči XSS [/ color], protože jsme mohli zadat jakýkoli html nebo javascriptový kód včetně odkazů.
Do popisného pole vložíme iframe a uložíme:
Poté hledáme produkt podle kódu 003 a vidíme výsledek
Pomocí této techniky můžeme zadat formulář se simulací přihlášení a že data jsou ve skutečnosti uložena v externí databázi. Seznam produktů způsobujících přesměrování na jinou webovou stránku můžeme deaktivovat, pokud do jakéhokoli pole registrace produktu přidáme následující html kód:
Když se někdo pokusí zobrazit seznam produktů, bude automaticky přesměrován na web uvedený v tomto případě společností Google.
D) SQL injekce Přístup k databázi
Sqlmap je velmi užitečný nástroj pro testování zabezpečení databázových serverů v tutoriálech:
- SQLMAP Nástroj SQL Injection a hackování etické databáze
- BadStore: Web pro testy pentestingu.
Pomocí sqlmap určuji, zda jsou k dispozici nějaké databáze, pomocí následujících příkazů.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
Vidíme, že serverem je Apache 2.2.11, který používá php 5.2.9 a že databázovým serverem je MySQL 5.0.12, zobrazujeme také všechny dostupné databáze, včetně těch, které konfigurují data MySQL základního serveru.
Dále pomocí příkazu ověřím, zda v databázi zboží jsou tabulky, což je podle mého názoru tabulka produktů, kterou zadáváme na webu.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merch
Našli jsme tabulku, kterou web používá. Níže se mohu podívat na tabulku produktů s následujícím příkazem
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T produkty
Hledám zjistit uživatele, kteří mají účet Mysql a pokoušejí se najít správce, ve výchozím nastavení používám datový slovník sqlmap umístěný ve složce sqlmap-dev / txt / wordlist.zip
V tomto adresáři najdeme několik slovníků, sqlmap bude mít na starosti rozbalení a používání souboru, vyhledávání uživatelů a hesel pro testování, pokud mohu zjistit a získat uživatelská jména nakonfigurovaná na serveru MySQL, k tomu používám následující příkaz:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
Dále hledám typ uživatele, abych zjistil, jaká jsou přístupová oprávnění každého uživatele, abych určil, kdo jsou správci a jaké jsou jejich přístupové kódy.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current -user --is -dba --is -dba --privileges --dbs -dump
V důsledku spuštění se odhalí hesla každého uživatele pro přístup k databázím a jaká oprávnění mají.
Když je skenování dokončeno, můžeme na konci seznamu vidět oprávnění každého uživatele a určit, kteří uživatelé jsou správci.
Zjistil jsem, že existuje několik administrátorských uživatelů, proto uživatele vezmu jdavenport kdo je správce a jaké je jeho heslo babyl0n, zkuste se dostat do systému
Dále se snažím narušit port SSH 22 získanými daty:
Je vidět, že jsem získal přístup jako správce a mám plnou kontrolu nad serverem. Pomocí příkazu cd / přejdeme do kořenového adresáře a odtud můžeme přistupovat k jakémukoli sektoru, například k prohlížení složek a účtů ostatních uživatelů
Tím, že máme přístup prostřednictvím SSH s kombinací uživatelského jména a hesla, které jsme získali. Naším dalším cílem bude eskalace oprávnění, přestože již máme uživatele root nebo správce.
Abychom mohli manipulovat s oprávněními, musíme nahlédnout do souborů, které obsahují oprávnění, uživatele, skupiny a přístupové kódy, které jsou tyto soubory v adresáři / etc
- Uživatel a skupiny s klíči v adresáři: / etc / passwd
- Skupiny a oprávnění v adresáři: / etc / sudores
K souboru uživatelů a systémovým klíčům můžeme přistupovat pomocí následujícího příkazu:
nano / etc / heslo
Můžeme mezi nimi procházet adresáře, můžeme vidět soubory na webu, které jsme analyzovali, a stáhnout je později prostřednictvím ftp nebo z konzoly ssh, můžeme je zkopírovat do našeho místního adresáře, pokud je chceme upravit nebo zkontrolovat kód, aby byl bezpečnější, a zkuste to znovu.
Nyní, když známe přístupová data správce, se můžeme přihlásit do virtuálního počítače.
Jak se vyhnout útokům s injekcí SQL
Zabezpečení webu je zde velmi důležité, protože kvůli problému s injekcí SQL vezmeme celý server.
Musíte řídit, co je odesláno jako parametr v adresách URL, například:
http://192.168.0.40/products.php?id=1Při provádění dotazu sql musíme zajistit, aby bylo možné zadat znaky nebo parametry, které neodpovídají, například:
$ sql = SELECT * OD uživatelů WHERE uživatel = 'jose' a heslo = '12345' NEBO '1' = '1';Tato věta je velmi podobná přihlášení uživatele, kde hledáme, zda uživatel a heslo existuje, v tabulce uživatelů, pokud je někdo registrován pomocí uživatelského jména, které posíláme jako parametr, a pokud jeho heslo je '12345 nebo pokud 1 je stejné do 1 '.
Tento výraz určuje, že pokud klíč není správný, výraz 1 rovný 1 je pravdivý a my bychom byli schopni vstoupit do systému bez znalosti hesla.
Jednou z metod je uniknout proměnným například v PHP:
mysql_real_escape_string ($ _ POST [‘uživatel’]);Pokud potřebujeme odeslat parametry pomocí adresy URL, měli bychom je zašifrovat pomocí md5, sha1 nebo base64 a můžeme odesílat různá šifrovaná data, takže konečný formát parametru přímo nesouvisí s daty nebo poli v databázi.
Kromě toho by měl existovat systém, který se vyhne skenování portů a více připojení ze stejné IP, stačil by v tomto případě firewall s iptables a detektor narušení.
Jeden nástroj, který můžeme použít, je PortSentry nebo Fail2Ban Instaluje se z úložiště linux a my musíme pouze nakonfigurovat, které porty by měly být chráněny, pokud je naskenován jeden z těchto portů, automaticky zablokuje IP, která na nás útočí.
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