Čo je injekcia SQL?

Počet stránok a stránok na webe sa neustále zvyšuje. Pre vývoj sú braní všetci, ktorí môžu len. A začínajúci weboví vývojári často používajú nebezpečný a starý kód. A to vytvára veľa medzery pre votrelcov a hackerov. Čo používajú. Jednou z najznámejších zraniteľností je SQL injection.

Trochu teórie

Veľa ľudí vie, že väčšina stránok a služieb v sieti používa na ukladanie databázy SQL. Jedná sa o štruktúrovaný jazyk dopytu, ktorý vám umožňuje spravovať a spravovať dátové sklady. Existuje mnoho rôznych verzií systémov správy databáz Oracle, MySQL a Postgre. Bez ohľadu na názov a typ používajú požiadavky na údaje rovnako. Práve tu leží potenciálna zraniteľnosť. Ak vývojár nebol schopný spracovať žiadosť správne a bezpečne, útočník ju môže použiť a použiť konkrétnu taktiku na prístup k databáze a odtiaľ - a spravovať celý web.


Aby ste sa vyhli takýmto situáciám, musíte správne optimalizovať kód a pozorne sledovať, aký druh žiadosti sa spracúva.

SQL Injection Check

Na určenie dostupnosti zraniteľných miest v sieti existuje veľa hotových automatizovaných softvérových systémov. Môžete však vykonať jednoduchú kontrolu a manuálne. Ak to chcete urobiť, musíte prejsť na niektorú zo stránok, ktoré sú predmetom vyšetrovania, a pokúsiť sa spôsobiť chybu databázy v paneli s adresou. Napríklad skript na webe môže spracovávať dotazy a nie ich orezať. Napríklad existuje nejaký najjednoduchší spôsob some_site /index.php? Id = 25 -vložte po 25 úvodzoviek a pošlite žiadosť. Ak sa nevyskytla žiadna chyba, na stránkach sú všetky žiadosti filtrované a správne spracované alebo ich výstup je v nastaveniach vypnutý. Ak bola stránka reštartovaná s problémami, existuje chyba zabezpečenia SQL injection.


Akonáhle sa objaví, môžete sa ho pokúsiť zbaviť. Ak chcete implementovať túto zraniteľnosť, potrebujete vedieť trochu o príkazoch SQL dotazu. Jedným z nich je UNION. Kombinuje viacero výsledkov dotazu do jedného. Takže môžete vypočítať počet polí v tabuľke. Príklad prvého dotazu vyzerá takto:
  • some_site /index.php? Id = 25 UNION SELECT 1.
  • Vo väčšine prípadov by mal takýto záznam vydať chybu. To znamená, že počet polí nie je rovný 1. Preto výberu možností z 1 alebo viac, môžu stanoviť ich presné číslo:
  • nekyy_sayt /index.php Id = 25 UNION SELECT 123456.
  • To znamená, že ak dôjde k chybe? prestane sa objavovať, preto je odhadnutý počet polí. Existuje tiež alternatívne riešenie tohto problému. Napríklad, ak je počet polí veľký - 3060 alebo 100. Ide o príkaz GROUP BY. To skupiny výsledky dotazu z akýchkoľvek dôvodov, id:
  • nekyy_sayt /index.php Id = 25 GROUP BY 5.
  • Ak nebol prijatý chyba, potom viac polí ako 5. To znamená, nahradením? možnosti s pomerne širokým rozsahom, môžete vypočítať, koľko skutočne sú. Toto je príklad SQL injection pre začiatočníkov, ktorí sa chcú pokúsiť otestovať svoje stránky. Je dôležité si uvedomiť, že neoprávnený prístup k niekomu inému je článkom trestného zákona.

    hlavné typy vstrekovania

    Implementácia zraniteľnosti pomocou SQL injection môže byť niekoľko možností. Nasledujúce sú najpopulárnejšie techniky:
  • UNION SQL query injection. Jednoduchý príklad tohto typu už bol zvážený vyššie. Implementuje sa kvôli chybe pri overovaní prichádzajúcich údajov, ktoré nie sú filtrované.
  • Injekcia SQL založená na chybách. Ako je jasné z názvu, tento typ tiež používa chyby odoslaním výrazov, ktoré sú syntakticky nesprávne. Potom je zachytenie hlavičky odpovedí, pri ktorom sa analyzuje, čo je možné stráviť následnou injekciou SQL.
  • Naskladané SQL Injection queries. Táto zraniteľnosť je podmienená vykonaním následných dopytov. Je charakterizovaná spojením na konci znaku; ". Tento prístup sa najčastejšie používa na prístup k implementácii dát na čítanie a zápis alebo na ovládanie funkcií operačného systému, ak to dovoľujú oprávnenia.
  • Vyhľadávací softvér SQL-vulnerability

    Dostupný pre SQL injection, programy majú zvyčajne dve zložky: skenovanie stránok pre možné zraniteľnosti a ich použitie na prístup k dátam. Existujú také nástroje pre prakticky všetky známe platformy. Ich funkčnosť umožňuje oveľa jednoduchšie otestovať stránky pre možnosti vpichovania SQL.

    Sqlmap

    Veľmi výkonný skener, ktorý pracuje s väčšinou známych DBMS. Podporuje rôzne metódy implementácie SQL injection. Je schopný automaticky rozpoznať typ hash hesla a jeho hacking v slovníku. K dispozícii je tiež funkcia pre načítanie a vyberanie súborov zo servera.
    Inštalácia v prostredíLinux sa vykonáva pomocou:
  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py --wizard.
  • V systéme Windows existuje možnosť príkazového riadka aj grafické používateľské rozhranie.

    jSQL injekcie

    jSQL Vstrekovacie - multiplatformový nástroj na testovanie použitie SQL zraniteľnosti. Napísané na jave, takže JRE musí byť nainštalovaný v systéme. Dokáže spracovať dopyty GET, POST, header a cookie. Má pohodlné grafické rozhranie.
    Inštalácia softvérového systému je tak-: wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -o, /ron190/jsql-injection/releases/download/v[0-9]{12}.[0-9]{12}/jsql-injection-v[0-9]{12}. [0-9] {12} .jar '| hlava-n 1`
    Začatie vykonáva pomocou java-jar ./jsql-injection-v*.jar Spustenie kontrolu zraniteľnosti SQL-site, musíte zadať adresu v hornom poli. Sú samostatné pre GET a POST. S pozitívnym výsledkom sa v ľavom okne zobrazí zoznam dostupných tabuliek. Môžete ich zobraziť a zistiť niektoré dôverné informácie. Ak chcete vyhľadať administratívne panely, použite kartu Správca. Používa špeciálne šablóny na automatické vyhľadávanie systémových záznamov privilegovaných používateľov. Z nich môžete získať iba heslo hash. Ale on je v nástrojoch programu.
    Po zistení všetkých zraniteľných miest a zavádzaní potrebných dopytov nástroj zaplní súbor na server alebo naopak stiahne z neho.

    SQLi Dumper v.7

    Tento program je ľahko použiteľný nástroj na vyhľadávanie a implementáciu zraniteľností v systéme WindowsSQL. Vyrába to na základe tzv. Dorkov. Ich zoznam sa nachádza na internete. SQL injekčné kačice sú špeciálne šablóny pre vyhľadávanie. S ich pomocou môžete nájsť potenciálne zraniteľnú stránku prostredníctvom ktoréhokoľvek vyhľadávacieho nástroja.

    Školiace nástroje

    Stránka itsecgames.com má špeciálnu sadu nástrojov, ktorá vám umožní vziať príklad toho, ako urobiť SQL injekciu a otestovať ju. Aby bolo možné ho použiť, musí byť stiahnuté a nainštalované. Archív obsahuje súbory súborov, ktoré predstavujú štruktúru lokality. Ak ho chcete nainštalovať, budete potrebovať nastavenie webového servera Apache, MySQL a PHP.
    Po rozbalení archívu do priečinka webového servera musíte prejsť na adresu zadanú pri inštalácii tohto softvérového produktu. Otvorí sa stránka registrácie používateľov. Tu musíte zadať svoje údaje a kliknúť na "Vytvoriť". Keď presuniete používateľa na nové okno, systém vám navrhne vybrať jednu z možností testovania. Medzi nimi sú obe opísané injekcie a mnohé ďalšie testovacie úlohy. Stojí za to zvážiť príklad SQL injection ako GET /Search. Tu ho musíte vybrať a kliknúť na tlačidlo "Hack". Užívateľ zobrazí reťazec vyhľadávania a simuluje stránky s filmami. Môžete sledovať filmy dlhú dobu. Ale oni sú len 10. Napríklad, môžete sa pokúsiť vstúpiť Iron Man. Zobrazí sa videozáznam, čo znamená, že stránka funguje a sú tu tabuľky. Teraz je potrebné skontrolovať, či skript bude filtrovať špeciálne znaky, najmä citáty. Ak to chcete urobiť, musíte do panela s adresou pridať ''. Okrem toho je potrebné to urobiť aj po názve filmu. Stránky vydajú chybu Chyba: Máte chybu vsyntax SQL; Prečítajte si manuál, ktorý zodpovedá vašej verzii MySQL server o právo Syntax v blízkosti,% "at line 1 naznačuje, že postavy stále 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 objednávku, ktorý je zavedený po úvodzoviek :. http://testsites.com/sqli_1.php?title=Iron+Man, ORDER bY - 2 & amp; action = hľadanie tento príkaz zobrazia informácie o filme, ktorý 2. počet polí je viac než dvojnásobok pomlčkou informuje server, že ďalšie požiadavky musia byť zamietnutý. teraz budete musieť prejsť, čím všetky veľkú hodnotu ako pí p, kým chyba. Nakoniec sa ukáže, že pole bude 7.
    Teraz je čas, aby ste od základne získali niečo užitočné. Budeme musieť zmeniť trochu v adresnom riadku a viedol ju k tomuto druhu: http://testsites.com/sqli_1.php?title=Iron+Man, zjednocovací vybrať jednu databázu (), používateľa (), 4password, 67 od užívateľov - & amp; action = search V dôsledku jeho vykonávacími vyvedutsya liniek z hэshamy heslá, ktoré možno ľahko previesť na vymazanie postavy s jedným z on-line služieb. Trochu pokoldovav a výberom poľa názov prihlásení, môžete pristupovať k účtu niekoho iného, ​​napríklad administrátora webu. Produkt má rôzne druhy injekcií, ktoré je možné praktizovať. Je potrebné pripomenúť, že použitie týchto zručností on-line, na reálnych miestach môže byť trestný čin.

    stroje a PHP

    Spravidla PHP kódu zodpovednej za potrebné spracovanie požiadaviek prijatých od užívateľa. Preto na tejto úrovni musíte vytvoriť ochranu pred SQL injection v PHP. Najprv stojí za to dať niekoľko jednoduchých odporúčanína základe ktorých je to potrebné.
  • Údaje musia byť vždy spracované pred priestormi v základni. Môže sa implementovať buď pomocou existujúcich výrazov, alebo ručným usporiadaním požiadaviek. Aj tu je potrebné mať na pamäti, že číselné hodnoty sa konvertujú na požadovaný typ;
  • Vyhnite sa požadovaniu vzhľadu rôznych riadiacich štruktúr.
  • Teraz trochu o pravidlách pre dotazovanie MySQL na SQL injekčnú ochranu. Pri vytváraní akýchkoľvek výrazov pre dotaz je dôležité oddeliť dáta od kľúčových slov SQL.
  • SELECT * FROM tabuľka WHERE name = Zerg.
  • V tomto návrhu systém môže myslieť, že Zerg je názov poľa, takže ho musíte uviesť v úvodzovkách.
  • SELECT * FROM tabuľka WHERE name = 'Zerg'.
  • Existujú však situácie, keď samotná hodnota obsahuje laby.
  • SELECT * FROM tabuľka WHERE name = 'cat-d'avour'.
  • Tu bude spracovaná iba časť mačky a zvyšok môže byť vnímaný ako tím, čo samozrejme nie je. Takže sa vyskytne chyba. Takže je potrebné chrániť tento druh údajov. Toto používa obrátenú lomku.
  • SELECT * FROM tabuľka WHERE name = 'cat-d'avour'.
  • Všetky vyššie uvedené sa vzťahujú na reťazce. Ak sa vyskytne akcia s číslom, nepotrebuje žiadnu nohu ani lomku. Musia však byť nevyhnutne nútení viesť k potrebným typom údajov. Odporúča sa, aby sa názov poľa pripojil do recipročných kotácií. Tento znak sa nachádza na ľavej strane klávesnice spolu s príznakom tilde "~". To je potrebné, aby MySQL presne rozlíšil názov poľa od jeho kľúčového slova.

    Dynamická práca s údajmi

    Často sa dynamicky generované dopyty používajú na získanie databázových údajov. Napríklad:
  • SELECT * FROM tabuľka WHERE number = '$ number'.
  • Tu je premenná premennej $ prenesená ako hodnota poľa. Čo sa stane, ak narazí na cat-d'vivar? Chybe. Vyhnite sa týmto problémom, samozrejme môžete v nastaveniach zahrnúť aj "magické citácie". Teraz však budú údaje chránené tam, kde je to potrebné a nie nevyhnutné. Okrem toho, ak je kód napísaný ručne, môžete stráviť trochu viac času pokúšať sa vytvoriť systém odolný proti samotnému hacku. Pomocou mysql_real_escape_string môžete pridať lomku. $ number = mysql_real_escape_string (číslo $); $ rok = mysql_real_escape_string ($ rok); $ query = "INSERT INTO tabuľka (číslo, rok, trieda) VALUES ('$ number', '$ year', 11)". Napriek tomu, že kód sa rozrástol, potenciálne bude fungovať oveľa bezpečnejšie.

    Záložky

    Zástupné znaky sú zvláštne značky, podľa ktorých sa systém dozvie, že na toto miesto musí byť nahradená špeciálna funkcia. Napríklad: $ sate = $ mysqli-> prepare ("SELECT District Number FROM WHERE Name =?"); $ sate- & gt; bind_param ("s", číslo $); $ sate- & gt; spustiť (); Tento útržok kódu pripraví šablónu dopytu, potom viaže číslo premennej a vykoná ho. Tento prístup vám umožňuje oddeliť spracovanie žiadosti a jej implementáciu. Preto môžete byť chránení pred používaním zavádzania dotazov týkajúcich sa škodlivého kódu SQL.

    Čo môže útočník robiť

    Ochrana systému je veľmi dôležitým faktorom, ktorý nemožno zanedbávať. Samozrejme, jednoduché prehliadanie webových stránok bude ľahšie obnoviť. A ak je to skvelý portál, služba, fórum? Aké dôsledky nemôžete mať, ak nemyslíte na bezpečnosť? Po prvé, hacker môženarušiť integritu databázy a úplne ju odstrániť. A ak administrátor alebo hostiteľ webu nevytvorili zálohu, potom nebudete spokojní. Okrem toho môže útočník, ktorý porušil jednu stránku, môže prejsť na iné hostiteľské počítače na tom istom serveri. Nasleduje krádež osobných údajov návštevníkov. Ako ich používať - ​​všetko tu je obmedzené len predstavivosťou hackera. V každom prípade však dôsledky nebudú tak príjemné. Najmä ak existujú finančné informácie. Útočník môže tiež zlúčiť základňu a potom požiadať o jej vrátenie. Dezinformácie používateľov v mene správcu webu, nemajú žiadnu osobu, môžu mať aj negatívne následky ako možný podvod.

    Záver

    Všetky informácie v tomto článku sú poskytnuté len na informačné účely. Je potrebné ho použiť len na testovanie vlastných projektov pri zisťovaní chýb a ich odstraňovaní. Pre podrobnejšiu štúdiu o tom, ako vykonať injekciu SQL, musíte začať s vlastným výskumom funkcií a funkcií jazyka SQL. Ako sa vzťahujú dopyty, kľúčové slová, typy údajov a všetko toto. Tiež bez pochopenia funkcií prvkov PHP a HTML. Hlavnými zraniteľnosťami pre injekčné použitie sú adresné riadky, vyhľadávanie a rôzne polia. Štúdium funkcií PHP, spôsobu ich implementácie a schopností vám umožní pochopiť, ako sa vyhnúť chybám. Dostupnosť mnohých hotových softvérových nástrojov vám umožní vykonať hlbšiu analýzu stránok o známych zraniteľných miestach. Jeden z najpopulárnejších produktov je kali linux. Je to obrazOperačný systém Linux, ktorý obsahuje veľké množstvo nástrojov a programov, ktoré umožňujú komplexnú analýzu sily webu. Prečo potrebujete vedieť, ako zlomiť stránku? Všetko je veľmi jednoduché - je potrebné mať predstavu o potenciálne zraniteľných miestach vášho projektu alebo lokality. Najmä v prípade, že ide o internetový obchod s online platobnou možnosťou, v ktorej môžu útočníci ohroziť podrobnosti o platbách používateľov. Pre profesionálny výskum budú existovať informačné bezpečnostné služby, ktoré budú môcť skontrolovať lokalitu podľa rôznych kritérií a hĺbky. Od jednoduchých HTML injekcií až po sociálne inžinierstvo a phishing.

    Súvisiace publikácie