Cheat Sheet sqlmap
SQLMap je bezplatný nástroj, který kontroluje zranitelnosti databáze . Pokud provozujete web, jste zranitelní vůči řadě hackerských útoků založených na SQL, které mohou ohrozit databázi, která se skrývá za mnoha funkcemi webu. Pokud se hackeři mohou nabourat do vaší sítě a infikovat koncový bod, mohou také použít techniky vkládání SQL ke kompromitaci těch databází, které podporují back-office funkce .
Vaše databáze leží v srdci vašeho podnikového informačního systému. Pohání sdílení dat v systémech ERP a úložištích citlivých údajů , jako jsou záznamy o zákaznících a informace o obratu. Chcete-li plně porozumět potenciální zranitelnosti v této oblasti, musíte vědět, co je útok SQL injection.
Útoky SQL injection
SQL je strukturovaný dotazovací jazyk . Je to jazyk, který programy používají pro přístup k datům v a relační databáze . Jazyk také obsahuje příkazy pro aktualizaci nebo odstranění dat uložených v databázových tabulkách.
Pro koncové uživatele je přístup k databázi prostřednictvím formuláře, který bude buď na webové stránce, nebo v přední části obchodního softwaru. Pole, do kterého zadáváte dotaz na stránce Google, je toho příkladem. Kód za obrazovkou vezme vstup, který uživatelé zadají do pole, a zabalí ho do SQL dotazu. To se poté odešle do databáze k extrahování odpovídajících záznamů.
Hackeři objevili způsoby, jak vložit celý příkaz SQL nebo klauzuli příkazu do vstupního pole. To může oklamat mechanismy zpracování dotazů vložené do formuláře a předat celek SQL instrukce do databáze místo odeslání vstupu jako hodnoty dotazu.
Tento cheat se nazývá ' SQL injekce “ a může poskytnout hackerům plný přístup k vaší databázi a obejít ovládací prvky, které jsou zabudovány do kódování aplikace nebo webové stránky obsahující vstupní pole.
Útoky SQL injection mohou hackerům umožnit ukrást celou databázi nebo aktualizovat hodnoty. Možnost změnit data v databázi umožňuje hackerům ukrást peníze . Představte si, že by zákazník mohl změnit zůstatek na účtu ze záporné částky na kladnou. V automatizovaných systémech by to vyvolalo platbu a hackeři by s těmito penězi mohli uprchnout dříve, než si kdokoli z firmy uvědomí chybu.
Viz také: Nejlepší nástroje pro monitorování SQL Serveru
Klasifikace útoků SQL injection
The Otevřete projekt zabezpečení webových aplikací (OWASP) vytváří seznam 10 hlavních zranitelností systému, který je považován za definitivní seznam slabých stránek, které je třeba hledat. Skenery zranitelnosti slibují, že zkontrolují OWASP Top 10 . SQL Injection je hlavní hrozbou uvedenou OWASP. Organizace rozděluje tuto kategorii do čtyř typů.
- Klasická SQL injekce
- Blind nebo Inference SQL Injection
- SQL Injection specifické pro DBMS
- Compounded SQL Injection
Tyto kategorie jsou dále rozděleny podle odvětví. Klasický útok SQL Injection je také známý jako an Útok uvnitř kapely . Tato kategorie zahrnuje dvě možné metody – SQLI založené na chybách a SQLI založené na Unii.
Složené útoky SQL Injection přidávají k aktivitě SQL Injection další typ hackerského útoku. Tyto jsou:
- Autentizační útoky
- DDoS útoky
- Únos DNS
- Skriptování mezi weby (XSS)
V zájmu stručnosti této příručky – na kterou se zaměřujeme sqlmap – definice těchto strategií útoku zde nebude zahrnuta.
Kontrola chyb zabezpečení vkládání SQL
Sqlmap vám umožňuje vyzkoušet typy útoků, které hackeři implementují na databáze. To vám umožní zjistit, zda vaše systémy jsou nebo nejsou chráněna před útokem .
Hackeři neustále vymýšlejí nové útočné strategie. Nicméně způsob, jakým fungují relační databáze a SQL, znamená, že existuje jen tolik typů útoků, které budou fungovat. Jinými slovy, nové útoky jsou vždy variace na téma . Pokud máte nástroj, který dokáže zajistit ochranu proti obecným kategoriím útoků, můžete si být jisti, že jste odhalili všechny možné zranitelnosti.
Kontrola sqlmap se pokusí o útok v každé z několika kategorií – celkem je jich šest. Pokud jeden z těchto útoků uspěje , víte, že máte vážný problém a že část rozhraní, které stojí před vaší databází, musí být přepsána, aby se tento útok zablokoval.
Typy útoků, o které se sqlmap pokouší, jsou:
- Slepá injekce SQL založená na booleovských principech
- Slepá injekce SQL založená na čase
- Injekce SQL založená na chybách
- Union-based SQL injection
- Skládané dotazy
- Útoky mimo pásmo
Definice používané vývojáři sqlmap se přesně nemapují na kategorie používané OWASP. Seznam obsahuje oba typy Klasická injekce SQL a oba typy Blind SQL injection .
Strategie útoků skládaných dotazů prováděná sqlmap by měla pokrývat termíny OWASP Útoky specifické pro DBMS . Kategorie kombinovaných útoků OWASP není relevantní pro systém detekce sqlmap zaměřený na SQL Injection.
Logicky, pokud můžete zajistit, že váš systém není zranitelný vůči útoku SQL injection, automaticky nebude zranitelný vůči kombinovanému útoku. Měli byste však použít jiné nástroje pro testování per zkontrolovat, zda je váš web zranitelný vůči útokům DDoS, XSS nebo DNS hijacking. Všechny systémy jsou trvale vystaveny autentizačním útokům – musíte zajistit bezpečnou strategii správy identity a přístupu, abyste ochránili svůj podnik před hrozbou prolomení autentizace .
Systém sqlmap kontroluje práci s následujícími DBMS:
MySQL | Microsoft SQL Server | Microsoft Access | MariaDB |
Věštec | PostgreSQL | IBM DB2 | SQLite |
Fénix | Sybase | SAP Max DB | Informix |
MemSQL | TiDB | ŠvábDB | HSQLDB |
H2 | MonetDB | Apache Derby | Apache Ignite |
Amazon Redshift | Vertikální | McCoy | Již brzy |
vysoká základna | MimerSQL | CrateDB | Zelená švestka |
Mrholení | Cubrid | InterSystems Cache | DUHOVKA |
eXtremeDB | FrontBase | YugabyteDB | Virtuos |
Správce databáze Raima |
Systémové požadavky pro sqlmap
Můžete nainstalovat sqlmap na Okna , Operační Systém Mac , a Linux .
Systém sqlmap je napsán v Pythonu, takže jej musíte nainstalovat Python 2.6 nebo později na vašem počítači za účelem spuštění sqlmap. Aktuální verze k červenci 2021 je 3.9.
Chcete-li zjistit, zda máte nainstalovaný Python, otevřete ve Windows příkazový řádek a zadejte python – verze . Pokud Python nemáte, zobrazí se zpráva, že máte zadat python znovu bez parametrů. Typ krajta a tím se otevře Microsoft Store s balíčkem Python nastaveným ke stažení. Klikněte na Dostat tlačítko a postupujte podle pokynů k instalaci.
Pokud máte typ macOS python – verze . Pokud se zobrazí chybová zpráva, zadejte následující příkazy:
|_+_|V těchto řádcích, $ představuje systémovou výzvu – nezadávejte ji.
Pokud máte Linux, budete již mít nainstalovaný Python.
Nainstalujte sqlmap
Instalace sqlmap:
- Přejděte na webovou stránku projektu sqlmap na adrese sqlmap.org .
- Pokud máte Windows, klikněte na Stáhnout .zip tlačítko souboru. Pokud máte macOS nebo Linux, klikněte na Stáhněte si .tar.gz tlačítko souboru.
- Rozbalte komprimovaný soubor.
Váš systém automaticky pojmenuje adresář stejně jako komprimovaný soubor. Toto je však velmi dlouhý název, takže se rozhodněte, že se nový adresář bude jmenovat pouze sqlmap. Nezáleží na tom, kde v počítači tento adresář vytvoříte.
Spuštění sqlmap
Systém sqlmap je nástroj příkazového řádku. Neexistuje pro to rozhraní GUI. Přejděte na příkazový řádek v počítači a použijte sqlmap. Chcete-li spustit obslužný program, přejděte do adresáře sqlmap, který jste vytvořili. Nemusíte kompilovat žádný program.
Program, který spustíte za účelem použití sqlmap, se nazývá sqlmap.py. Nespustí se, pokud na konec názvu programu nepřidáte volbu.
Možnosti pro sqlmap jsou:
-u URL | Cílová adresa URL Formát:-v 'http://www.target.com/path/file.htm?variable=1' |
-d PŘÍMO | Připojovací řetězec pro přímé připojení k databázi Formát:-d DBMS://DATABASE_FILEPATHnebo -d DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME |
-l LOGFILE | Analyzujte cíl(e) ze souboru protokolu serveru Burp nebo WebScarab |
-m HROMADNÝ SOUBOR | Skenování více cílů uvedených v textovém souboru Formát:Soubor by měl obsahovat adresu URL na řádek |
-r ŽÁDOST SOUBOR | Načíst požadavek HTTP ze souboru Formát:Soubor může obsahovat transakci HTTP nebo HTTPS |
-g GOOGLEDORK | Zpracovat výsledky Google Dork jako cílové adresy URL |
-c CONFIGFILE | Načtěte možnosti z konfiguračního INI souboru |
--kouzelník | Služba řízené provádění |
--Aktualizace | Aktualizujte sqlmap na nejnovější verzi |
--očistit | Vymažte datovou složku sqlmap |
--purge-output | Jak je uvedeno výše |
--závislosti | Zkontrolujte chybějící závislosti sqlmap |
-h | Základní nápověda |
-hh | Pokročilá nápověda |
-- verze | Ukažte číslo verze |
Bez jedné z těchto možností nemůžete spustit sqlmap. Existují mnoho dalších možností a často je nutné na příkazovém řádku zadat několik možností za sebou.
Úplný útok vyžaduje tolik možností a vstupů, že je snazší vložit všechny tyto možnosti do souboru a pak soubor zavolat, místo abys je všechny zapisoval. V tomto scénáři je konvencí ukládat všechny možnosti do textový soubor s příponou .INI. Tento seznam voleb byste zahrnuli do příkazového řádku s volbou -c následovanou názvem souboru. Tato metoda eliminuje opakované psaní v celém dlouhém příkazu znovu a znovu, aby se zohlednily pravopisné chyby nebo chyby formátu.
Další možnosti sqlmap
Existuje mnoho dalších přepínačů, které můžete přidat k sqlmap příkaz. Parametry volby, které jsou znakové, by měly být uzavřeny do dvojitých uvozovek („ “), číselné parametry by neměly být uvozovány.
V zájmu stručnosti v této příručce uvádíme všechny tyto v souboru PDF:
Kliknutím na obrázek výše otevřete celý Cheat Sheet sqlmap JPG v novém okně, popř klikněte sem a stáhněte si sqlmap Cheat SheetPDF .
Spuštění skenování útoku SQL injection pomocí sqlmap
Velké množství dostupných možností pro sqlmap je skličující. Existuje příliš mnoho možností, které je třeba pročesat, abyste zjistili, jak vytvořit útok SQL injection. Nejlepší způsob, jak získat znalosti o provádění různých typů útoků, je učit se příkladem .
Chcete-li si vyzkoušet, jak testovací systém sqlmap probíhá, vyzkoušejte následující testovací běh a nahraďte značku URL adresy svého webu
Tento příkaz spustí průchod všech procedur sqlmap a nabídne vám možnosti během testu.
Systém ukáže čas zahájení testu. Každý řádek zprávy obsahuje čas dokončení každého testu.
Služba sqlmap bude otestujte připojení na webový server a poté prohledejte různé aspekty webu. Tyto atributy zahrnují výchozí znakovou sadu webu, kontrolu přítomnosti obranné systémy , jako je firewall webových aplikací nebo systémy detekce narušení.
Další fáze testu identifikuje DBMS použitý pro web. Pokusí se sérii útoků prozkoumat zranitelnost databáze webu. Tyto jsou:
- Vstupní útok GET – identifikuje náchylnost ke klasickým útokům SQLI a XSS
- Útoky specifické pro DBMS
- Slepé SQLI založené na booleovské bázi
- Systém se zeptá na úroveň a hodnotu rizika. Pokud jsou dostatečně vysoké, spustí se časově založené slepé SQLI
- Útok SQLI založený na chybách
- SQLI založené na UNION, pokud jsou úroveň a hodnoty rizika dostatečně vysoké
- Skládané dotazy
Jako odpověď na volbu banneru použitou v tomto běhu sqlmap dokončí svůj běh načtením banner databáze . Nakonec jsou zapsána všechna extrahovaná data s vysvětlením jejich významu soubor protokolu .
Jak vidíte, bez mnoha možností uvedených v příkazu systém sqlmap projde standardní sérií útoků a bude s uživatelem kontrolovat rozhodnutí o hloubce testu, jak test postupuje.
Malá změna v příkazu spustí stejnou baterii testů, ale pomocí a POŠTA jako testovací metoda namísto a DOSTAT .
Zkuste následující příkaz:
|_+_|Prolomení hesla pomocí sqlmap
Změna pouze jednoho slova v prvním příkazu použitém v předchozí části vám poskytne řadu testů, abyste zjistili, zda systém správy přihlašovacích údajů databáze má slabá místa.
Zadejte následující příkaz:
|_+_|Opět musíte nahradit adresu URL vašeho webu
Když spustíte tento příkaz, sqlmap zahájí sérii testů a dá vám řadu možností.
Běh sqlmap vyzkouší časově založený slepý SQLI a poté slepý útok založený na UNION. Poté vám dá možnost uložit hash hesel do souboru pro analýzu pomocí jiného nástroje a poté poskytne příležitost k útoku založenému na slovníku.
Služby vyzkouší řadu známých názvů uživatelských účtů a projdou seznam často používaných hesel proti každému kandidátskému uživatelskému jménu. Tomu se říká „ tříštivá střela ' Záchvat. Sada souborů sqlmap obsahuje soubor datových částí pro tento útok, ale místo toho můžete dodat svůj vlastní soubor.
Kdykoli sqlmap narazí na kombinaci uživatelského jména a hesla, zobrazí ji. Všechny akce pro běh jsou poté zapsány do souboru protokolu předtím, než program ukončí svůj běh.
Získejte seznam databází ve vašem systému a jejich tabulek
Informace jsou moc a hackeři nejprve potřebují vědět, jaké instance databáze máte ve svém systému, aby se do nich mohli nabourat. Můžete zjistit, zda jsou tyto základní informace snadno dostupné vetřelci s následujícím příkazem:
|_+_|Tento test bude zahrnovat útoky SQL injection založené na čase, chybách a UNION. Poté identifikuje značku DBMS a poté vypíše názvy databází. Informace odvozené během testovacího běhu jsou poté zapsány do souboru protokolu při ukončení programu.
Prozkoumejte trochu dále a získejte seznam tabulek v jedné z těchto databází pomocí následujícího příkazu.
|_+_|Zadejte název jedné z instancí databáze, kterou jste získali ze seznamu v prvním dotazu této části.
Tato testovací dávka zahrnuje útoky SQL injection založené na čase, chybách a UNION. Poté vypíše názvy tabulek, které jsou v zadané instanci databáze. Tato data jsou zapsána do souboru protokolu po dokončení programu.
Dostat náplň jedné z těchto tabulek s následujícím příkazem:
|_+_|Nahraďte název jedné z tabulek, které jste objevili