PočítačeProgramovanie

Čo je to injekcia SQL?

Počet stránkach na internete neustále rastie. Potrebný pre vývoj všetkých tých, ktorí môžu. A nováčik Weboví vývojári často používajú nebezpečné a starý kód. A to vytvára mnoho medzier pre zločincov a hackermi. Než oni. Jedným z najviac typických zraniteľností - SQL injekciu.

trocha teórie

Mnoho ľudí vie, že väčšina webov a služieb v sieti používate úložisko databázy SQL. Ide o štruktúrovaný dopytovací jazyk , ktorý vám umožní kontrolovať a riadiť ukladanie dát. Existuje mnoho rôznych verzií databázy pre správu databáz systému - Oracle, MySQL, Postgre. Bez ohľadu na názov a typ, ktoré používajú rovnaké dáta dotazu. Je tu, ktorá leží potenciálne zraniteľnosti. V prípade, že developer sa nepodarilo správne spracovávať a bezpečne požiadať, útočník môže využiť tohto a používať špeciálne taktiku, aby získal prístup k databáze, a potom - a ku všetkým riadením webu.

Aby sa zabránilo takýmto situáciám, je potrebné správne optimalizovať kód a starostlivo sledovať v spôsobe, akým je žiadosť spracovávajú.

Skontrolujte, či je SQL injekciu

Pre stanovenie prítomnosti zraniteľnosti v sieti má hmotnosť hotových automatizovaných softvérových systémov. Ale je možné ručne vykonať jednoduchú kontrolu. K tomu, zájsť do jednej zo skúšobných miest a do adresného riadku, aby sa pokúsili spôsobiť chyby databázy. Napríklad skript na mieste nemôže spracovať požiadavku, a to ich výbava.

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

Najjednoduchší spôsob, ako - dať 25 po citátu a odoslať požiadavku. Ak nedošlo k žiadnej chybe, a to buď na mieste a filtrom všetky žiadosti sú spracované správne, alebo je zakázaný v nastavení svojho výstupu. Ak je strana znovu naplnený problémy, potom zraniteľnosť voči SQL injekcie.

Potom, čo zistil, môžete sa pokúsiť zbaviť.

Na vykonanie tejto zraniteľnosti je potrebné vedieť niečo o SQL dotazy tímov. Jeden z nich - UNION. Združuje niekoľko výsledky dotazu do jedného. Takže môžeme spočítať počet polí v tabuľke. Príklad prvá otázka je:

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

Vo väčšine prípadov je tento záznam by mal generovať chybu. To znamená, že počet polí nie je rovný 1. Preto výbere možnosti 1 alebo väčšie, je možné stanoviť ich presné číslo:

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

To znamená, že ak je chyba už neobjaví, znamená to, že počet polí uhádnuť.

Tam je tiež alternatívne riešenie tohto problému. Napríklad, keď sa veľký počet polí - 30, 60 alebo 100. Tento príkaz GROUP BY. Zoskupuje výsledky dotazu na akomkoľvek základe, napríklad id:

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

Ak nebol prijatý k chybe, potom pole viac ako 5. To znamená, náhradou voľby z pomerne širokého spektra, je možné spočítať, koľko z nich v skutočnosti.

Tento príklad SQL vstrekovaním - pre začiatočníkov, ktorí si chcú vyskúšať sami na testovanie svojich stránkach. Je dôležité si uvedomiť, že k neoprávnenému prístupu do iného dostupného článku trestného zákonníka.

Hlavnými druhy vstrekovanie

Implementovať túto chybu SQL injekciu v niekoľkých prevedeniach. Vedľa sú najobľúbenejšie spôsoby:

  • UNION dotazu SQL injekcie. Jednoduchý príklad tohto typu už bola skúmaná vyššie. To je realizované kvôli chybe v kontrole prichádzajúce dáta, ktoré nie sú filtrované.

  • Chyba na báze SQL injection. Ako už názov napovedá, tento typ tiež používa k chybe, odosielanie výrazy zložené syntakticky nesprávne. Potom je tu odposluch z hlavičky odpovede, analýzy, ktoré môžu byť vykonané neskôr SQL injekciu.

  • Skladaný otázky SQL injekcie. Táto chyba zabezpečenia sa stanoví prevedením po sebe nasledujúcich požiadaviek. Vyznačuje sa prídavkom na konci znakom ";". Tento prístup je často realizovaný prístup k vykonávaniu čítať a zapisovať dáta alebo operačný systém funguje, ak je to výsady dovolí.

Softvér pre vyhľadávanie SQL zraniteľnosti

Je tu pre SQL injekciu, program zvyčajne majú dve zložky - web kontrolovať prípadné zraniteľnosti a ich použitia na získanie prístupu k dátam. Tam sú niektoré nástroje pre takmer všetky známe platformy. Ich funkcia značne uľahčuje kontrolu webovej stránky na bezva SQL injekciu.

Sqlmap

Veľmi výkonný skener, ktorý pracuje s väčšinou databázou. Podporuje rôzne metódy vykonávania SQL injekciu. To má schopnosť automaticky rozpoznať typ hesla hash praskanie a slovníka. Prítomný a funkčné súbor nahrať a stiahnuť zo servera.

Inštalácia na Linuxe sa vykonáva pomocou príkazov:

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

Pre Windows je k dispozícii aj s možnosťou príkazového riadku a grafického používateľského rozhrania.

jSQL Injection

jSQL Injection - multiplatformový nástroj na testovanie využívania SQL zraniteľností. Napísaný v Jave, takže systém musí byť nainštalovaný JRE. Zvládnuť GET, POST, lišty cookie. Má pohodlné grafické rozhranie.

Inštalácia tohto softvérového balíka je nasledovné:

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`

Spustenie je pomocou príkazu java -jar ./jsql-injection-v*.jar

Aby bolo možné spustiť testovací miesto na SQL-zraniteľnosti, je potrebné zadať adresu v hornom poli. Oni sú oddelené pre GET a POST. S pozitívnym výsledkom bude zoznam dostupných tabuliek sa zobrazí v ľavom okne. Môžete si ich prezrieť a dozvedieť nejaké dôverné informácie.

Karta «správca stránka» použitý k nájdeniu administratívnych panelov. Na to pomocou špeciálnych šablón automaticky vyhľadá systém zaznamená privilegovaných užívateľov. Z nich je možné získať len hash hesla. Ale má v paneli nástrojov programu.

Po zistení všetkých zraniteľnosti a injekcie potrebné vyšetrovania, bude nástroj umožní, aby server vyplniť súboru, alebo naopak ho stiahnuť odtiaľ.

SQLite Dumper V.7

Tento program - ľahko použiteľný nástroj pre vyhľadávanie a vykonávanie SQL zraniteľnosti. Vyrába OSN je založený na tzv Dorcas. Ich zoznam možno nájsť na internete. Dorca pre SQL injekciu - jedná sa o špeciálny šablóny vyhľadávacích dotazov. S ich pomocou môžete nájsť potenciálne zraniteľné miesto prostredníctvom akéhokoľvek vyhľadávača.

Nástroje pre výcvik

Itsecgames.com na mieste existuje špeciálna sada nástrojov, ktoré umožňujú príklad ukazuje, ako to urobiť SQL injection a vyskúšať. Aby mohli byť využité, je potrebné stiahnuť a nainštalovať. Archiv obsahuje sadu súborov, čo je štruktúra webu. Pre inštaláciu bude musieť do existujúceho systému súboru Apache web server, MySQL a PHP.

Rozbaliť archív v priečinku webového servera, budete musieť ísť na adresu zadanú pri inštalácii tohto softvéru. Stránka s registráciou užívateľa. Tu je potrebné zadať svoje údaje a kliknite na «Vytvoriť». Presunutie užívateľa na novú obrazovku, systém vás vyzve na výber jednej z testovaných prípadov. Medzi nimi sú ako je popísané injekcií, a mnoho ďalších skúšobných položiek.

Je to stojí za zváženie príklad typu SQL vstrekovaním get / Search. Tu je potrebné ju vybrať a kliknúť na «Hack». Predtým, než sa užívateľ objavia, a imitácie hľadaný reťazec lokality filmu. Ak chcete zoradiť filmy môže byť dlhý. Ale tam sú len 10. Napríklad, môžete sa pokúsiť vstúpiť do Iron Man. Bude uvádzať film, potom web funguje, a tabuľky, ktoré obsahuje. Teraz musíme zistiť, či špeciálne znaky skriptov filtrov, najmä citovať. Ak chcete urobiť, pridajte, v adresnom riadku. " Okrem toho musí byť vykonané po názov filmu. Na stránkach dá error: Máte chybu vo vašej SQL syntax; Prečítajte si manuál, ktorý zodpovedá vašej verzii MySQL server o právo Syntax v blízkosti,% ', at line 1, v ktorom sa uvádza, že znaky stále nie sú správne zaobchádzať. Takže môžete sa pokúsiť nahradiť vašu požiadavku. Ale musíme najprv vypočítať počet polí. Používa sa pre túto objednávku zo strany, ktorá je zavedená po úvodzoviek: http://testsites.com/sqli_1.php?title=Iron+Man, objednať o 2 - & action = vyhľadávania.

Tento príkaz zobrazí len informácie o filme, to znamená, že počet polí je väčší ako 2. Dvojitá pomlčka informuje server, že ďalšie požiadavky musia byť zlikvidovaný. Teraz musíme vyriešiť, dávať väčší význam, ak chyba nie je vytlačená. V závere sa ukázalo, že pole bude 7.

Teraz je čas, aby si niečo užitočného zo základne. Mierne modifikovať požiadavku do adresného riadku, prinášať to do formy: http://testsites.com/sqli_1.php?title=Iron+Man, union zvoliť 1, databázy (), používateľa (), 4, heslo, 6, 7 od užívateľov - & action = vyhľadávania. V dôsledku jeho vykonávanie by sa zobrazí reťazec s hash hesla, ktoré môžu byť ľahko prevedené do zrozumiteľných symbolov pomocou jednej z on-line služieb. A a trochu vykúzlil a zdvihol názov poľa s prihlasovacími údajmi, môžete získať prístup k zápisnici niekoho iného, napríklad administrátora webu.

Výrobok má druh, hmotnosť typy injekcie, na ktorom k praxi. Je potrebné pripomenúť, že použitie týchto zručností v rámci siete na reálnych miestach môže byť trestný čin.

Vstrekovanie a PHP

Platí pravidlo, PHP kódu a je zodpovedný za potrebné spracovanie žiadostí pochádzajúcich od užívateľa. Preto sa na tejto úrovni je nutné vybudovať obranu proti SQL injekciu v PHP.

Po prvé, poďme dať niekoľko jednoduchých pokynov, na základe ktorých je potrebné urobiť.

  • Údaje musia byť vždy spracované pred uvedením do databázy. To možno vykonať buď pomocou existujúcich výrazov, alebo organizovanie dotazov ručne. Aj tu je potrebné brať do úvahy, že číselné hodnoty sú prevedené na typ, ktorý je nutný;
  • Vyhnúť vyzvanie rôznych riadiacich štruktúr.

Teraz niečo málo o pravidlách zostavovaní otázok MySQL na ochranu proti SQL injekciu.

Pri zostavovaní akýchkoľvek výrazov na otázku, je dôležité oddeliť dáta z SQL kľúčové slová.

  • SELECT * FROM tabuľka WHERE name = Zergov.

V tejto konfigurácii systému môže myslieť, že Zergovia - meno nejakého poľa, takže je potrebné ho uzavrieť do úvodzoviek.

  • SELECT * FROM tabuľka WHERE name = 'Zergovia.'

Avšak, tam sú časy, kedy je hodnota sama o sebe obsahuje citácie.

  • SELECT * FROM tabuľka WHERE name = 'Pobrežia Slonoviny'.

Tu spracovať iba časť Pobrežia Slonoviny, a zvyšok môže byť vnímané ako tím, ktorý, samozrejme, nie. Preto dôjde k chybe. Potom je potrebné tento druh skríningových dát. Ak to chcete urobiť, použite spätné lomítko - \.

  • SELECT * FROM tabuľka WHERE name = 'cat-d \' Ivoire '.

Všetko vyššie uvedené sa vzťahuje na riadky. V prípade, že akcia sa koná s číslom, potom nepotrebuje žiadne úvodzovky ani lomky. Mali by však byť požadované, aby násilne viesť k požadovanému typu dát.

Existujú odporúčanie, či je názov poľa musí byť uzavretý v jednoduchých spätných úvodzoviek. Tento symbol je na ľavej strane klávesnice, spolu s tilda "~". To má zabezpečiť, že MySQL mohol presne rozlíšiť názov poľa zo svojho kľúčového slova.

Dynamická práca s dátami

Veľmi často sa stáva, aby sa všetky dáta z databázy pomocou dotazov, generované dynamicky. napríklad:

  • SELECT * FROM tabuľka WHERE cislo = '$ číslo'.

Tu je variabilný číslo $ je odovzdaný ako stanovenie hodnoty poľa. Čo sa stane, ak sa dostane, Pobrežie Slonoviny '? Chybe.

Aby sa zabránilo tento problém, samozrejme, môžete zahrnúť nastavenie "magic quotes". Ale teraz tieto údaje budú premietané v prípade potreby, a nie nevyhnutné. Okrem toho, v prípade, že kód je písaný ručne, môžete stráviť trochu viac času na vytvorenie odolné proti praskaniu samotný systém.

Nezávislé pridanie lomítkom možno používať mysql_real_escape_string.

$ Number = mysql_real_escape_string (číslo $);

$ Year = mysql_real_escape_string ($ ročne);

$ Query = "INSERT INTO tabuľka (číslo, rok, trieda) VALUES ( 'číslo $', '$ ročne', 11)."

Hoci kód a zvýšil objem, ale potenciálne to bude fungovať oveľa bezpečnejšie.

zástupné symboly

Zástupné symboly - druh markerov, ktoré systém rozpozná, že sa jedná o miesto, ktoré je potrebné nahradiť špeciálnu funkciu. napríklad:

$ Sate = $ mysqli-> príprave ( "SELECT okres od čísla WHERE Name =?");

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

$ Sate-> execute ();

Táto časť kódu má predlohu požiadavku školení a potom sa viaže na rôzny počet a spustí ho. Tento prístup umožňuje rozdeliť spracovania dotazu a jeho realizáciu. Tak, to môže byť uložený z použitia škodlivého kódu sú SQL-.

K čomu by mohol útočník

Protection System - veľmi dôležitý faktor, ktorý nemožno zanedbať. Samozrejme, jednoduchý web vizitka bude jednoduchšie obnoviť. A pokiaľ sa jedná o veľký portál, servis, forum? Aké sú dôsledky, ak si nemyslím, že o bezpečnosť?

Po prvé, hacker môže zlomiť integritu oboch základne a úplne ju vyberte. A v prípade, že správca webu alebo Hoster nerobí zálohu, budete mať ťažké časy. Predovšetkým votrelec, praskanie v jednom mieste, môžu prejsť na druhú vykázala v rovnakom serveri.

Ďalšia je krádež osobných informácií návštevníkov. Ako používať - všetko je obmedzené len na fantázii hacker. Ale v každom prípade, že dôsledky nebude príliš príjemné. Najmä ak sa uvádzajú finančné informácie.

Tiež môže útočník zlúčiť databázy sami a potom vydierať peniaze na jeho návrat.

Užívatelia dezinformácie menom správcu webu, osoba nie sú nateraz môže byť aj negatívne dôsledky, ako je možné skutočnosťou podvodov.

záver

Všetky informácie v tomto článku sú poskytované len na informačné účely. Použite ho iba treba otestovať svoje vlastné projekty, keď zistí, zraniteľnosti a ich riešenie.

Pre štúdium viac do hĺbky techník, ako vykonávať SQL injekcie, je potrebné začať s aktuálnymi výskumnými kapacitami a funkcie jazyka SQL. Ako kompilované dotazy, kľúčové slová, dátové typy a použitie toho všetkého.

Tiež sa nezaobíde bez pochopenia prevádzky PHP a HTML prvkov funkcií. Primárne využitie zraniteľných bodov pre vstrekovanie - adresného riadku, a rôzne vyhľadávacieho poľa. Učenie PHP funkcie, bude spôsob vykonania a funkcie zistiť, ako sa vyvarovať chýb.

Prítomnosť mnohých ready-made softvérové nástroje umožňujú hĺbkovú analýzu na webe známe zraniteľnosti. Jeden z najobľúbenejších produktov - kali linux. Tento obraz sa systémom Linux operačný systém, ktorý obsahuje veľké množstvo nástrojov a programov, ktoré môžu vykonávať komplexnú analýzu sily webu.

To, čo potrebujete vedieť, ako preniknúť na webe? Je to veľmi jednoduché - treba mať na pamäti potenciálne zraniteľnosti vášho projektu alebo webové stránky. Zvlášť ak ide o internetový obchod s on-line platby, kde možno platobnú užívateľské dáta ohrozený útočníkom.

Pre profesionálne štúdiá existujúcich informácií bezpečnostný personál bude môcť vyskúšať stránky pre celý rad kritérií a hĺbky. Počnúc jednoduchých HTML injekcie a sociálneho inžinierstva a phishingu.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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