Výukový program pre SQL Injection: Naučte sa s príkladom

Obsah:

Anonim

Dáta sú jednou z najdôležitejších zložiek informačných systémov. Databáza poháňané webové aplikácie používa organizácia na získavanie údajov od zákazníkov. SQL je skratka pre Structured Query Language. Používa sa na získavanie a manipuláciu s údajmi v databáze.

Čo je to SQL Injection?

SQL Injection je útok, ktorý otravuje dynamické príkazy SQL, aby komentovali určité časti príkazu alebo pripojili podmienku, ktorá bude vždy pravdivá. Využíva chyby v dizajne zle navrhnutých webových aplikácií na zneužitie príkazov SQL na vykonávanie škodlivého kódu SQL.

V tomto tutoriáli sa naučíte techniky SQL Injection a ako môžete chrániť webové aplikácie pred takýmito útokmi.

  • Ako funguje SQL Injection
  • Hackerská aktivita: SQL Inject a Web Application
  • Ostatné typy útoku SQL Injection
  • Automatizačné nástroje pre SQL Injection
  • Ako zabrániť útokom SQL Injection
  • Hackerská aktivita: Použite Havji na SQL Injection

Ako funguje SQL Injection

Typy útokov, ktoré je možné vykonať pomocou injekcie SQL, sa líšia v závislosti od typu databázového stroja. Útok funguje na dynamických príkazoch SQL . Dynamický príkaz je príkaz, ktorý sa generuje za behu pomocou parametrov heslo z webového formulára alebo reťazca dotazu URI.

Uvažujme o jednoduchej webovej aplikácii s prihlasovacím formulárom. Kód formulára HTML je uvedený nižšie.

TU,

  • Vyššie uvedený formulár prijíma e-mailovú adresu a heslo ich potom odosiela do súboru PHP s názvom index.php.
  • Má možnosť uložiť reláciu prihlásenia do súboru cookie. Odvodili sme to zo začiarkavacieho políčka remember_me. Na odosielanie údajov používa metódu post. To znamená, že hodnoty sa v adrese URL nezobrazia.

Predpokladajme, že vyhlásenie na back-ende na kontrolu ID užívateľa je nasledovné

SELECT * FROM users WHERE email = $ _POST ['email'] A heslo = md5 ($ _ POST ['heslo']);

TU,

  • Vyššie uvedené vyhlásenie používa hodnoty poľa $ _POST [] priamo bez ich dezinfekcie.
  • Heslo je šifrované pomocou algoritmu MD5.

Ilustrujeme útok SQL injection pomocou sqlfiddle. Vo webovom prehliadači otvorte adresu URL http://sqlfiddle.com/. Dostanete nasledujúce okno.

Poznámka: budete musieť písať príkazy SQL

Krok 1) Zadajte tento kód do ľavého panela

CREATE TABLE `users` (`id` INT NOT NULL AUTO_INCREMENT,`email` VARCHAR(45) NULL,`password` VARCHAR(45) NULL,PRIMARY KEY (`id`));insert into users (email,password) values ('This email address is being protected from spambots. You need JavaScript enabled to view it.',md5('abc'));

Krok 2) Kliknite na položku Vytvoriť schému

Krok 3) Zadajte tento kód do pravého panela

vyberte * od používateľov;

Krok 4) Kliknite na položku Spustiť SQL. Uvidíte nasledujúci výsledok

Predpokladajme, že používateľ dodá Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. a 1234 ako heslo. Príkaz, ktorý sa má vykonať proti databáze, by bol

SELECT * FROM users WHERE email = ' Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. “ AND heslo = md5 ('1234');

Vyššie uvedený kód je možné zneužiť komentovaním časti s heslom a pripojením podmienky, ktorá bude vždy pravdivá. Predpokladajme, že útočník poskytne do poľa e-mailovej adresy nasledujúci vstup.

Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. “ ALEBO 1 = 1 OBMEDZENIE 1 - ']

xxx pre heslo.

Vygenerovaný dynamický príkaz bude nasledovný.

SELECT * FROM users WHERE email = ' Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. “ ALEBO 1 = 1 OBMEDZENIE 1 - '] A heslo = md5 (' 1234 ');

TU,

  • Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. končí jednoduchou úvodzovkou, ktorá dopĺňa úvodzovku
  • ALEBO 1 = 1 OBMEDZENIE 1 je podmienka, ktorá bude vždy pravdivá a obmedzuje vrátené výsledky iba na jeden záznam.
  • - „AND ... je komentár SQL, ktorý vylučuje časť týkajúcu sa hesla.

Skopírujte vyššie uvedený príkaz SQL a vložte ho do textového poľa SQL FiddleRun SQL, ako je uvedené nižšie

Hackerská aktivita: SQL Inject a Web Application

Na adrese http://www.techpanda.org/ máme jednoduchú webovú aplikáciu, ktorá je zraniteľná voči útokom SQL Injection iba na demonštračné účely. Vyššie uvedený kód formulára HTML je prevzatý z prihlasovacej stránky. Aplikácia poskytuje základné zabezpečenie, ako je napríklad sanitácia e-mailového poľa. To znamená, že náš vyššie uvedený kód nemožno použiť na obídenie prihlásenia.

Aby sme to obišli, môžeme namiesto toho využiť pole pre heslo. Nasledujúca schéma zobrazuje kroky, ktoré musíte dodržať

Predpokladajme, že útočník poskytne nasledujúce informácie

  • Krok 1: Zadajte Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. ako e-mailová adresa
  • Krok 2: Zadajte xxx ') ALEBO 1 = 1 -]
  • Kliknite na tlačidlo Odoslať
  • Budete presmerovaní na palubnú dosku

Vygenerovaný príkaz SQL bude nasledovný

SELECT * FROM users WHERE email = ' Táto e-mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript. “ AND heslo = md5 ('xxx') ALEBO 1 = 1 -] ');

Nasledujúci diagram ilustruje vygenerovanie výpisu.

TU,

  • Príkaz inteligentne predpokladá, že sa použije šifrovanie md5
  • Dokončuje jednotnú cenovú ponuku a uzatváracia zátvorka
  • Pripojí k tvrdeniu podmienku, ktorá bude vždy pravdivá

Úspešný útok SQL Injection sa všeobecne pokúša vykonať niekoľko rôznych techník, ako sú napríklad tie, ktoré boli demonštrované vyššie.

Ostatné typy útoku SQL Injection

Injekcie SQL môžu napáchať viac škody ako odovzdaním prihlasovacích algoritmov. Niektoré z útokov zahŕňajú

  • Odstraňujú sa údaje
  • Aktualizácia údajov
  • Vkladanie údajov
  • Vykonávanie príkazov na serveri, ktoré môžu sťahovať a inštalovať škodlivé programy, ako sú trójske kone
  • Export cenných údajov, ako sú údaje o kreditnej karte, e-mail a heslá, na vzdialený server útočníka
  • Získanie prihlasovacích údajov používateľa atď

Vyššie uvedený zoznam nie je vyčerpávajúci; iba vám poskytne predstavu o tom, čo predstavuje SQL Injection

Automatizačné nástroje pre SQL Injection

Vo vyššie uvedenom príklade sme použili techniky manuálneho útoku založené na našich rozsiahlych znalostiach jazyka SQL. Existujú automatizované nástroje, ktoré vám môžu pomôcť vykonať útoky efektívnejšie a v čo najkratšom čase. Medzi tieto nástroje patrí

  • SQLSmack - https://securiteam.com/tools/5GP081P75C
  • SQLPing 2 - http://www.sqlsecurity.com/downloads/sqlping2.zip?attredirects=0&d=1
  • SQLMap - http://sqlmap.org/

Ako zabrániť útokom SQL Injection

Organizácia môže prijať nasledujúce pravidlá na svoju ochranu pred útokmi SQL Injection.

  • Vstupu používateľa by sa nikdy nemalo dôverovať - pred použitím v dynamických príkazoch SQL musí byť vždy dezinfikovaný.
  • Uložené procedúry - tieto môžu zapuzdriť príkazy SQL a považovať všetky vstupy za parametre.
  • Pripravené príkazy - pripravené príkazy fungujú tak, že sa najskôr vytvorí príkaz SQL a potom sa so všetkými zadanými údajmi používateľa zaobchádza ako s parametrami. Toto nemá žiadny vplyv na syntax príkazu SQL.
  • Regulárne výrazy - tieto môžu byť použité na detekciu potenciálneho škodlivého kódu a jeho odstránenie pred vykonaním príkazov SQL.
  • Prístupové práva používateľov databázového pripojenia - účtom používaným na pripojenie k databáze by sa mali udeliť iba potrebné prístupové práva. To môže pomôcť znížiť to, čo môžu príkazy SQL vykonávať na serveri.
  • Chybové správy - nemali by odhaľovať citlivé informácie a informácie o tom, kde presne k chybe došlo. Jednoduché vlastné chybové správy ako napríklad „Je nám ľúto, ale vyskytli sa technické chyby. Bol kontaktovaný technický tím. Skúste to znova neskôr. “Možno použiť namiesto zobrazenia príkazov SQL, ktoré spôsobili chybu.

Hackerská aktivita: Použite Havij na SQL Injection

V tomto praktickom scenári použijeme program Havij Advanced SQL Injection na skenovanie zraniteľnosti webových stránok.

Poznámka: Váš antivírusový program ho môže kvôli svojej povahe označiť. Mali by ste ho pridať do zoznamu vylúčených položiek alebo pozastaviť antivírusový softvér.

Obrázok nižšie zobrazuje hlavné okno programu Havij

Vyššie uvedený nástroj možno použiť na posúdenie zraniteľnosti webovej stránky / aplikácie.

Zhrnutie

  • SQL Injection je typ útoku, ktorý využíva zlé príkazy SQL
  • Injekciu SQL je možné použiť na obídenie prihlasovacích algoritmov, na získanie, vloženie a aktualizáciu a odstránenie údajov.
  • Medzi nástroje na vstrekovanie SQL patria SQLMap, SQLPing a SQLSmack atď.
  • Dobrá bezpečnostná politika pri písaní príkazu SQL môže pomôcť znížiť útoky typu SQL injection.