PočítačeProgramování

Co je to injekce SQL?

Počet stránkách na internetu neustále roste. Potřebný pro vývoj všech těch, kteří mohou. A nováček Weboví vývojáři často používají nebezpečné a starý kód. A to vytváří mnoho mezer pro zločince a hackery. Než oni. Jedním z nejvíce typických zranitelností - SQL injekci.

Trocha teorie

Mnoho lidí ví, že většina webů a služeb v síti používáte úložiště databáze SQL. Jedná se o strukturovaný dotazovací jazyk , který vám umožní kontrolovat a řídit ukládání dat. Existuje mnoho různých verzí databáze pro správu databází systému - Oracle, MySQL, Postgre. Bez ohledu na název a typ, které používají stejná data dotazu. Je tu, která leží potenciální zranitelnosti. V případě, že developer se nepodařilo správně zpracovávat a bezpečně požádat, útočník může využít tohoto a používat speciální taktiku, aby získal přístup k databázi, a pak - a ke všem řízením webu.

Aby se zabránilo takovým situacím, je třeba správně optimalizovat kód a pečlivě sledovat ve způsobu, jakým je žádost zpracovávají.

Zkontrolujte, zda je SQL injekci

Pro stanovení přítomnosti zranitelnosti v síti má hmotnost hotových automatizovaných softwarových systémů. Ale je možné ručně provést jednoduchou kontrolu. K tomu, zajít do jedné ze zkušebních míst a do adresního řádku, aby se pokusili způsobit chyby databáze. Například skript na místě nemůže zpracovat požadavek, a to jich výbava.

Například, tam nekiy_sayt / index.php? Id = 25

Nejjednodušší způsob, jak - dát 25 po citátu a odeslat požadavek. Pokud nedošlo k žádné chybě, a to buď na místě a filtrem všechny žádosti jsou zpracovány správně, nebo je zakázán v nastavení svého výstupu. Je-li strana znovu naplněn problémy, pak zranitelnost vůči SQL injekce.

Poté, co zjistil, můžete se pokusit zbavit.

K provedení této zranitelnosti je třeba vědět něco o SQL dotazy týmů. Jeden z nich - UNION. Sdružuje několik výsledky dotazu do jednoho. Takže můžeme spočítat počet polí v tabulce. Příklad první otázka je:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

Ve většině případů je tento záznam by měl generovat chybu. To znamená, že počet polí není roven 1. Proto výběru možnosti 1 nebo větší, je možné stanovit jejich přesné číslo:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

To znamená, že pokud je chyba již neobjeví, znamená to, že počet polí uhodnout.

Tam je také alternativní řešení tohoto problému. Například, když se velký počet polí - 30, 60 nebo 100. Tento příkaz GROUP BY. Seskupuje výsledky dotazu na jakémkoli základě, například id:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

Pokud nebyl přijat k chybě, pak pole více než 5. To znamená, náhradou volby z poměrně širokého spektra, je možné spočítat, kolik z nich ve skutečnosti.

Tento příklad SQL vstřikováním - pro začátečníky, kteří si chtějí vyzkoušet sami na testování svých stránkách. Je důležité si uvědomit, že k neoprávněnému přístupu do jiného dostupného článku trestního zákoníku.

Hlavními druhy vstřikování

Implementovat tuto chybu SQL injekci v několika provedeních. Vedle jsou nejoblíbenější způsoby:

  • UNION dotazu SQL injekce. Jednoduchý příklad tohoto typu již byla zkoumána výše. To je realizováno kvůli chybě v kontrole příchozí data, které nejsou filtrované.

  • Chyba na bázi SQL injection. Jak už název napovídá, tento typ také používá k chybě, odesílání výrazy složené syntakticky nesprávné. Pak je tu odposlech z hlavičky odpovědi, analýzy, které mohou být provedeny později SQL injekci.

  • Skládaný dotazy SQL injekce. Tato chyba zabezpečení se stanoví provedením po sobě následujících požadavků. Vyznačuje se přídavkem na konci znakem „;“. Tento přístup je často realizován přístup k provádění číst a zapisovat data nebo operační systém funguje, je-li to výsady dovolí.

Software pro vyhledávání SQL zranitelnosti

Je tu pro SQL injekci, program obvykle mají dvě složky - web kontrolovat případné zranitelnosti a jejich použití k získání přístupu k datům. Tam jsou některé nástroje pro téměř všechny známé platformy. Jejich funkce značně usnadňuje kontrolu webové stránky na bezva SQL injekci.

Sqlmap

Velmi výkonný skener, který pracuje s většinou databází. Podporuje různé metody provádění SQL injekci. To má schopnost automaticky rozpoznat typ hesla hash praskání a slovníku. Přítomen a funkční soubor nahrát a stáhnout ze serveru.

Instalace na Linuxu se provádí pomocí příkazů:

  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

Pro Windows je k dispozici také s možností příkazového řádku a grafického uživatelského rozhraní.

jSQL Injection

jSQL Injection - multiplatformní nástroj pro testování využívání SQL zranitelností. Napsán v Javě, takže systém musí být nainstalován JRE. Zvládnout GET, POST, lišty cookie. Má pohodlné grafické rozhraní.

Instalace tohoto softwarového balíku je následující:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -o ‚/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} jar ‚| head-n 1`

Spuštění je pomocí příkazu java -jar ./jsql-injection-v*.jar

Aby bylo možné spustit testovací místo na SQL-zranitelnosti, je třeba zadat adresu v horním poli. Oni jsou oddělené pro GET a POST. S pozitivním výsledkem bude seznam dostupných tabulek se zobrazí v levém okně. Můžete si je prohlédnout a dozvědět nějaké důvěrné informace.

Karta «správce stránka» použit k nalezení administrativních panelů. Na to pomocí speciálních šablon automaticky vyhledá systém zaznamená privilegovaných uživatelů. Z nich je možné získat jen hash hesla. Ale má v panelu nástrojů programu.

Po zjištění všech zranitelnosti a injekce nezbytná šetření, bude nástroj umožní, aby server vyplnit souboru, nebo naopak jej stáhnout odtud.

SQLi Dumper V.7

Tento program - snadno použitelný nástroj pro vyhledávání a provádění SQL zranitelnosti. Vyrábí OSN je založen na tzv Dorcas. Jejich seznam lze nalézt na internetu. Dorca pro SQL injekci - jedná se o speciální šablony vyhledávacích dotazů. S jejich pomocí můžete najít potenciálně zranitelné místo prostřednictvím jakéhokoli vyhledávače.

Nástroje pro výcvik

Itsecgames.com na místě existuje speciální sada nástrojů, které umožňují příklad ukazuje, jak to provést SQL injection a vyzkoušet. Aby mohly být využity, je nutné stáhnout a nainstalovat. Archiv obsahuje sadu souborů, což je struktura webu. Pro instalaci bude muset do stávajícího systému souboru Apache web server, MySQL a PHP.

Rozbalit archiv ve složce webového serveru, budete muset jít na adresu zadanou při instalaci tohoto softwaru. Stránka s registrací uživatele. Zde je třeba zadat své údaje a klikněte na «Vytvořit». Přesunutí uživatele na novou obrazovku, systém vás vyzve k výběru jedné z testovaných případů. Mezi nimi jsou jak je popsáno injekcí, a mnoho dalších zkušebních položek.

Je to stojí za zvážení příklad typu SQL vstřikováním get / Search. Zde je třeba ji vybrat a kliknout na «Hack». Předtím, než se uživatel objeví, a imitace hledaný řetězec lokality filmu. Chcete-li seřadit filmy může být dlouhý. Ale tam jsou jen 10. Například, můžete se pokusit vstoupit do Iron Man. Bude uvádět film, pak web funguje, a tabulky, které obsahuje. Nyní musíme zjistit, jestli speciální znaky skriptů filtrů, zejména citovat. Chcete-li to provést, přidejte ‚v adresním řádku." Kromě toho musí být provedeno po název filmu. Na stránkách dá error: Máte chybu ve vaší SQL syntax; Přečtěte si manuál, který odpovídá vaší verzi MySQL server o právo Syntaxe v blízkosti ‚%‘ ‚at line 1, v němž se uvádí, že znaky stále nejsou správně zacházet. Takže můžete se pokusit nahradit váš požadavek. Ale musíme nejprve vypočítat počet polí. Používá se pro tuto objednávku ze strany, která je zavedena po uvozovek: http://testsites.com/sqli_1.php?title=Iron+Man ‚objednat o 2 - & action = vyhledávání.

Tento příkaz zobrazí pouze informace o filmu, to znamená, že počet polí je větší než 2. Dvojitá pomlčka informuje server, že další požadavky musí být zlikvidován. Nyní musíme vyřešit, dávat větší význam, pokud chyba není vytištěna. V závěru se ukázalo, že pole bude 7.

Nyní je čas, aby si něco užitečného ze základny. Mírně modifikovat požadavek do adresního řádku, přinášet to do formy: http://testsites.com/sqli_1.php?title=Iron+Man ‚union zvolit 1, databáze (), uživatele (), 4, heslo, 6, 7 od uživatelů - & action = vyhledávání. V důsledku jeho provádění by se zobrazí řetězec s hash hesla, které mohou být snadno převedeny do srozumitelných symbolů pomocí jedné z on-line služeb. A a trochu vykouzlil a zvedl název pole s přihlašovacími údaji, můžete získat přístup k zápisu někoho jiného, například administrátora webu.

Výrobek má druh, hmotnost typy injekce, na kterém k praxi. Je třeba připomenout, že použití těchto dovedností v rámci sítě na reálných místech může být trestný čin.

Vstřikování a PHP

Platí pravidlo, PHP kódu a je zodpovědný za nezbytné zpracování žádostí pocházejících od uživatele. Proto se na této úrovni je nutné vybudovat obranu proti SQL injekci v PHP.

Za prvé, pojďme dát několik jednoduchých pokynů, na základě kterých je třeba učinit.

  • Údaje musí být vždy zpracovány před uvedením do databáze. To lze provést buď pomocí existujících výrazů, nebo organizování dotazů ručně. I zde je třeba brát v úvahu, že číselné hodnoty jsou převedeny na typ, který je nutný;
  • Vyhnout vyzvání různých řídicích struktur.

Nyní něco málo o pravidlech sestavování dotazů MySQL na ochranu proti SQL injekci.

Při sestavování jakýchkoli výrazů na dotaz, je důležité oddělit data z SQL klíčová slova.

  • SELECT * FROM tabulka WHERE name = Zergů.

V této konfiguraci systému může myslet, že Zergové - jméno nějakého pole, takže je třeba jej uzavřít do uvozovek.

  • SELECT * FROM tabulka WHERE name = 'Zergové.'

Nicméně, tam jsou časy, kdy je hodnota sama o sobě obsahuje citace.

  • SELECT * FROM tabulka WHERE name = 'Pobřeží slonoviny'.

Zde zpracovat pouze část Pobřeží slonoviny, a zbytek může být vnímáno jako tým, který, samozřejmě, ne. Proto dojde k chybě. Pak je třeba tento druh screeningových dat. Chcete-li to provést, použijte zpětné lomítko - \.

  • SELECT * FROM tabulka WHERE name = 'cat-d \' Ivoire‘.

Vše výše uvedené se vztahuje na řádky. V případě, že akce se koná s číslem, pak nepotřebuje žádné uvozovky ani lomítka. Měly by však být požadováno, aby násilně vést k požadovanému typu dat.

Existují doporučení, zda je název pole musí být uzavřen v jednoduchých zpětných uvozovek. Tento symbol je na levé straně klávesnice, spolu s tilda „~“. To má zajistit, že MySQL mohl přesně rozlišit název pole ze svého klíčového slova.

Dynamická práce s daty

Velmi často se stává, aby se všechna data z databáze pomocí dotazů, generované dynamicky. Například:

  • SELECT * FROM tabulka WHERE cislo = '$ číslo'.

Zde je variabilní číslo $ je předán jako stanovení hodnoty pole. Co se stane, pokud se dostane ‚Pobřeží slonoviny‘? Chybě.

Aby se zabránilo tento problém, samozřejmě, můžete zahrnout nastavení „magic quotes“. Ale nyní tyto údaje budou promítány v případě potřeby, a nikoli nezbytné. Kromě toho, v případě, že kód je psán ručně, můžete strávit trochu více času na vytvoření odolné proti praskání samotný systém.

Nezávislé přidání lomítkem lze používat mysql_real_escape_string.

$ Number = mysql_real_escape_string (číslo $);

$ Year = mysql_real_escape_string ($ ročně);

$ Query = "INSERT INTO tabulka (číslo, rok, třída) VALUES ( 'číslo $', '$ ročně', 11)."

Přestože kód a zvýšil objem, ale potenciálně to bude fungovat mnohem bezpečnější.

zástupné symboly

Zástupné symboly - druh markerů, které systém rozpozná, že se jedná o místo, které je třeba nahradit speciální funkci. Například:

$ Sate = $ mysqli-> přípravě ( "SELECT okres od čísla WHERE Name =?");

$ Sate-> bind_param ( "s", $ číslo);

$ Sate-> execute ();

Tato část kódu má předlohu požadavek školení a pak se váže na různý počet a spustí jej. Tento přístup umožňuje rozdělit zpracování dotazu a jeho realizaci. Tak, to může být uložen z použití škodlivého kódu jsou SQL-.

K čemu by mohl útočník

Protection System - velmi důležitý faktor, který nelze zanedbat. Samozřejmě, jednoduchý web vizitka bude snazší obnovit. A pokud se jedná o velký portál, servis, forum? Jaké jsou důsledky, pokud si nemyslím, že o bezpečnost?

Za prvé, hacker může zlomit integritu obou základny a zcela ji vyjměte. A v případě, že správce webu nebo hoster nedělá zálohu, budete mít těžké časy. Především vetřelec, praskání v jednom místě, mohou přejít na druhou vykázala ve stejném serveru.

Další je krádež osobních informací návštěvníků. Jak používat - vše je omezeno pouze na fantazii hacker. Ale v každém případě, že důsledky nebude příliš příjemné. Zejména jsou-li uvedeny finanční informace.

Také může útočník sloučit databáze sami a pak vydírat peníze na jeho návrat.

Uživatelé dezinformace jménem správce webu, osoba nejsou prozatím může být i negativní důsledky, jako je možné skutečností podvodů.

závěr

Všechny informace v tomto článku jsou poskytovány pouze pro informační účely. Použijte jej pouze je třeba otestovat své vlastní projekty, když zjistí, zranitelnosti a jejich řešení.

Pro studium více do hloubky technik, jak provádět SQL injekci, je třeba začít s aktuálními výzkumnými kapacitami a funkce jazyka SQL. Jako kompilované dotazy, klíčová slova, datové typy a použití toho všeho.

Také se neobejde bez pochopení provozu PHP a HTML prvků funkcí. Primární využití zranitelných bodů pro vstřikování - adresního řádku, a různé vyhledávacího pole. Učení PHP funkce, bude způsob provedení a funkce zjistit, jak se vyvarovat chyb.

Přítomnost mnoha ready-made softwarové nástroje umožňují hloubkovou analýzu na webu známé zranitelnosti. Jeden z nejoblíbenějších produktů - kali linux. Tento obraz se systémem Linux operační systém, který obsahuje velké množství nástrojů a programů, které mohou provádět komplexní analýzu síly webu.

To, co potřebujete vědět, jak proniknout na webu? Je to velmi jednoduché - je třeba mít na paměti potenciální zranitelnosti vašeho projektu nebo webové stránky. Zvlášť pokud se jedná o internetový obchod s on-line platby, kde lze platební uživatelská data ohrožený útočníkem.

Pro profesionální studia existujících informací bezpečnostní personál bude moci vyzkoušet stránky pro celou řadu kritérií a hloubky. Počínaje jednoduchých HTML injekce a sociálního inženýrství a phishingu.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 cs.unansea.com. Theme powered by WordPress.