SQL Injection Tutorial: Tanuljon példával

Tartalomjegyzék:

Anonim

Az adatok az információs rendszerek egyik legfontosabb eleme. Adatbázis alapú webalkalmazásokat használ a szervezet arra, hogy adatokat szerezzen az ügyfelektől. Az SQL a strukturált lekérdezési nyelv rövidítése. Az adatbázisban lévő adatok lekérésére és manipulálására szolgál.

Mi az az SQL injekció?

Az SQL Injection egy olyan támadás, amely megmérgezi a dinamikus SQL utasításokat, hogy kommentelje az utasítás egyes részeit, vagy csatoljon egy feltételet, amely mindig igaz lesz. Kihasználja a rosszul megtervezett webalkalmazások tervezési hibáit, hogy kihasználja az SQL utasításokat a rosszindulatú SQL kód futtatásához.

Ebben az oktatóanyagban megtanulhatja az SQL Injection technikákat és azt, hogy miként védheti meg a webalkalmazásokat az ilyen támadásoktól.

  • Hogyan működik az SQL injekció
  • Hackelési tevékenység: SQL injektál egy webalkalmazást
  • Egyéb SQL Injection támadástípusok
  • Automatizálási eszközök az SQL injekcióhoz
  • Hogyan lehet megelőzni az SQL injekciós támadásokat
  • Hackelési tevékenység: Használja a Havji-t az SQL injekcióhoz

Hogyan működik az SQL injekció

Az SQL injekcióval végrehajtható támadások típusai az adatbázis-motor típusától függően változnak. A támadás dinamikus SQL utasításokon működik . A dinamikus utasítás egy olyan utasítás, amelyet futás közben generálnak egy webes űrlap vagy URI lekérdezési karakterlánc paramétereinek jelszavával.

Vegyünk egy egyszerű internetes alkalmazást bejelentkezési űrlappal. A HTML-űrlap kódja alább látható.

ITT,

  • A fenti űrlap elfogadja az e-mail címet, és a jelszó elküldi őket az index.php nevű PHP fájlba.
  • Lehetősége van arra, hogy a bejelentkezési munkamenetet egy cookie-ban tárolja. Erre a Remember_me jelölőnégyzetből következtettünk. Az adatok elküldéséhez a feladási módszert használja. Ez azt jelenti, hogy az értékek nem jelennek meg az URL-ben.

Tegyük fel, hogy a háttérazonosító állítása a felhasználói azonosító ellenőrzéséhez a következő

KIVÁLASZTÁS * FROM felhasználóktól WHERE email = $ _POST ['email'] ÉS jelszó = md5 ($ _ POST ['password']);

ITT,

  • A fenti utasítás közvetlenül használja a $ _POST [] tömb értékeit, anélkül, hogy azokat fertőtlenítené.
  • A jelszót az MD5 algoritmus titkosítja.

Illusztráljuk az SQL injekciós támadást az sqlfiddle használatával. Nyissa meg a http://sqlfiddle.com/ URL címet a böngészőben. Megkapja a következő ablakot.

Megjegyzés: meg kell írnia az SQL utasításokat

1. lépés: Írja be ezt a kódot a bal oldali ablaktáblába

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'));

2. lépés: Kattintson a Séma létrehozása elemre

3. lépés: Írja be ezt a kódot a jobb oldali ablaktáblába

válasszon * a felhasználók közül;

4. lépés: Kattintson az SQL futtatása elemre. A következő eredményt fogja látni

Tegyük fel, hogy felhasználói kellékek Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. és 1234 jelszóként. Az adatbázis ellen végrehajtandó utasítás a következő lenne:

SELECT * FROM users WHERE email = ' Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyeznie kell a JavaScript használatát a megtekintéshez. ' ÉS jelszó = md5 ('1234');

A fenti kód kihasználható a jelszó rész kommentálásával és a mindig igaz feltétel feltüntetésével. Tegyük fel, hogy a támadó a következő adatbevitelt adja meg az e-mail cím mezőben.

Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyeznie kell a JavaScript használatát a megtekintéshez. ' VAGY 1 = 1 HATÁR 1 - ']

xxx a jelszóhoz.

A generált dinamikus utasítás a következő lesz.

SELECT * FROM users WHERE email = ' Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyeznie kell a JavaScript használatát a megtekintéshez. ' VAGY 1 = 1 HATÁR 1 - '] ÉS jelszó = md5 (' 1234 ');

ITT,

  • Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. egyetlen idézettel fejeződik be, amely kiegészíti a string idézetet
  • VAGY 1 = 1 LIMIT 1 egy feltétel, amely mindig igaz lesz, és a visszaadott eredményeket csak egy rekordra korlátozza.
  • - 'AND… egy SQL megjegyzés, amely kiküszöböli a jelszó részét.

Másolja a fenti SQL utasítást, és illessze be az SQL FiddleRun SQL Text mezőbe az alábbiak szerint

Hackelési tevékenység: SQL injektál egy webalkalmazást

Van egy egyszerű webes alkalmazásunk a http://www.techpanda.org/ címen , amely csak demonstrációs célokra van kiszolgáltatva az SQL Injection támadásoknak. A fenti HTML-űrlapkód a bejelentkezési oldalról származik. Az alkalmazás biztosítja az alapvető biztonságot, például az e-mail mező megtisztítását. Ez azt jelenti, hogy a fenti kódunk nem használható a bejelentkezés megkerülésére.

Ennek kikerüléséhez inkább kihasználhatjuk a jelszó mezőt. Az alábbi ábra bemutatja azokat a lépéseket, amelyeket be kell tartania

Tegyük fel, hogy egy támadó a következő adatbevitelt adja meg

  • 1. lépés: Adja meg Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. mint e-mail cím
  • 2. lépés: Írja be xxx ') VAGY 1 = 1 -]
  • Kattintson a Küldés gombra
  • Az irányítópultra irányít

A létrehozott SQL utasítás a következő lesz

SELECT * FROM users WHERE email = ' Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyeznie kell a JavaScript használatát a megtekintéshez. ' ÉS jelszó = md5 ('xxx') VAGY 1 = 1 -] ');

Az alábbi ábra szemlélteti a létrehozott állítást.

ITT,

  • Az utasítás intelligensen feltételezi, hogy az md5 titkosítást használják
  • Befejezi az egyetlen idézetet és a zárójelet
  • Feltételeket fűz az állításhoz, amelyek mindig igazak lesznek

Általánosságban elmondható, hogy a sikeres SQL Injection támadás számos különféle technikával - például a fentiekben bemutatottakkal - próbál sikeres támadást végrehajtani.

Egyéb SQL Injection támadástípusok

Az SQL injekciók több kárt okozhatnak, mint a bejelentkezési algoritmusok átadásával. Néhány támadás a következőket tartalmazza:

  • Adatok törlése
  • Adatok frissítése
  • Adatok beszúrása
  • Parancsok végrehajtása a kiszolgálón, amelyek rosszindulatú programok, például trójaiak letöltésére és telepítésére képesek
  • Értékes adatok, például hitelkártyaadatok, e-mailek és jelszavak exportálása a támadó távoli szerverére
  • Felhasználói bejelentkezési adatok beszerzése stb

A fenti lista nem teljes; csak képet ad arról, hogy milyen SQL Injection

Automatizálási eszközök az SQL injekcióhoz

A fenti példában kézi támadási technikákat alkalmaztunk az SQL-ről való hatalmas ismereteink alapján. Vannak automatizált eszközök, amelyek segítségével hatékonyabban és a lehető legrövidebb időn belül elvégezhetik a támadásokat. Ezek az eszközök magukban foglalják

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

Hogyan lehet megelőzni az SQL injekciós támadásokat

A szervezet az alábbi házirendet alkalmazhatja az SQL Injection támadások elleni védelem érdekében.

  • A felhasználói bevitelt soha nem szabad megbízni - A dinamikus SQL utasításokban történő felhasználás előtt mindig meg kell tisztítani.
  • Tárolt eljárások - ezek be tudják foglalni az SQL utasításokat, és az összes bevitelt paraméterként kezelik.
  • Előkészített utasítások - előkészített utasítások működni az SQL utasítás létrehozásával, majd az összes beküldött felhasználói adatot paraméterként kezelik. Ez nincs hatással az SQL utasítás szintaxisára.
  • Reguláris kifejezések - ezek felhasználhatók a lehetséges káros kódok felderítésére és eltávolítására az SQL utasítások végrehajtása előtt.
  • Adatbázis-kapcsolat felhasználói hozzáférési jogai - csak az adatbázishoz való csatlakozáshoz használt fiókokhoz szabad hozzáférési jogokat megadni. Ez segíthet csökkenteni az SQL utasítások teljesítményét a szerveren.
  • Hibaüzenetek - ezek nem fedhetik fel a bizalmas információkat és azt, hogy pontosan hol történt hiba. Egyszerű egyéni hibaüzenetek, például „Sajnáljuk, technikai hibákat tapasztalunk. A technikai csapattal felvették a kapcsolatot. Kérjük, próbálja újra később ”használható a hibát okozó SQL utasítások megjelenítése helyett.

Hackelési tevékenység: Használja a Havij-t az SQL injekcióhoz

Ebben a gyakorlati forgatókönyvben a Havij Advanced SQL Injection programot fogjuk használni egy webhely sebezhetőségének átvizsgálására.

Megjegyzés: az antivírus program jellege miatt megjelölheti. Hozzá kell adnia a kizárások listájához, vagy szüneteltetnie kell a vírusirtó szoftvert.

Az alábbi képen a Havij főablaka látható

A fenti eszköz használható egy webhely / alkalmazás sebezhetőségének felmérésére.

Összegzés

  • Az SQL Injection egy olyan támadástípus, amely rossz SQL utasításokat használ ki
  • Az SQL injekció felhasználható a bejelentkezési algoritmusok megkerülésére, az adatok beolvasására, beillesztésére, frissítésére és törlésére.
  • Az SQL injekciós eszközök közé tartozik az SQLMap, az SQLPing és az SQLSmack stb.
  • Az SQL utasítások írásakor alkalmazott jó biztonsági irányelv segíthet csökkenteni az SQL injekciós támadásokat.