Andmed on infosüsteemide üks kõige olulisemaid komponente. Andmebaasil töötavaid veebirakendusi kasutab organisatsioon klientidelt andmete hankimiseks. SQL on lühend struktureeritud päringukeelest. Seda kasutatakse andmebaasis olevate andmete hankimiseks ja manipuleerimiseks.
Mis on SQL-i süstimine?
SQL Injection on rünnak, mis mürgitab dünaamilisi SQL-i lauseid, et kommenteerida lause teatud osi või lisada tingimus, mis jääb alati paika. See kasutab ära halvasti kujundatud veebirakenduste disainivigu, et kasutada SQL-i väiteid pahatahtliku SQL-koodi käivitamiseks.
Selles õpetuses saate teada SQL Injection tehnikat ja kuidas kaitsta veebirakendusi selliste rünnakute eest.
- Kuidas SQL-i süstimine töötab
- Häkkimistegevus: SQL süstib veebirakenduse
- Muud SQL Injection rünnakutüübid
- Automatiseerimise tööriistad SQL-i süstimiseks
- Kuidas ennetada SQLi süstimisrünnakuid
- Häkkimistegevus: SQL-i süstimiseks kasutage Havji
Kuidas SQL-i süstimine töötab
SQL-i süstimise abil tehtavate rünnakute tüübid varieeruvad sõltuvalt andmebaasimootori tüübist. Rünnak töötab dünaamiliste SQL-i lausetega . Dünaamiline avaldus on käsk, mis genereeritakse tööajal veebivormi või URI päringistringi parameetrite parooli abil.
Vaatleme lihtsat sisselogimisvormiga veebirakendust. HTML-vormi kood on näidatud allpool.
SIIN,
- Ülaltoodud vorm aktsepteerib e-posti aadressi ja parool saadab need seejärel PHP-faili nimega index.php.
- Sellel on võimalus salvestada sisselogimisseanss küpsisesse. Oleme selle tuletanud märkeruudust Remember_me. Andmete esitamiseks kasutatakse postitusmeetodit. See tähendab, et väärtusi ei kuvata URL-is.
Oletame, et kasutaja ID kontrollimiseks on taustaprogrammi lause järgmine
VALI * kasutajate hulgast KUS email = $ _POST ['email'] JA parool = md5 ($ _ POST ['password']);
SIIN,
- Ülaltoodud lause kasutab massiivi $ _POST [] väärtusi otse neid desinfitseerimata.
- Parool krüpteeritakse MD5 algoritmi abil.
Illustreerime SQL-i süstimisrünnakut sqlfiddle abil. Avage oma veebibrauseris URL http://sqlfiddle.com/. Saate järgmise akna.
Märkus: peate kirjutama SQL-i laused
Samm 1) Sisestage see kood vasakule paanile
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'));
Samm 2) Klõpsake nuppu Koosta skeem
Samm 3) Sisestage see kood parempoolsele paanile
vali kasutajate hulgast *;
Samm 4) Klõpsake käsku Käivita SQL. Näete järgmist tulemust
Oletame, et kasutaja tarvikud See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. ja 1234 paroolina. Andmebaasi suhtes täidetav lause oleks
SELECT * FROM users WHERE email = ' See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. ' JA parool = md5 ('1234');
Eespool nimetatud koodi saab ära kasutada, kommenteerides parooli osa ja lisades alati tõele vastava tingimuse. Oletame, et ründaja sisestab e-posti aadressi välja järgmise sisendi.
See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. ' VÕI 1 = 1 PIIR 1 - ']
xxx parooli jaoks.
Genereeritud dünaamiline avaldus on järgmine.
SELECT * FROM users WHERE email = ' See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. ' VÕI 1 = 1 PIIR 1 - '] JA parool = md5 (' 1234 ');
SIIN,
- See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. lõpeb ühe tsitaadiga, mis täiendab stringi tsitaati
- VÕI 1 = 1 PIIRI 1 on tingimus, mis on alati tõene ja piirab tagastatud tulemusi ainult ühe kirjega.
- - 'AND ... on SQL-i kommentaar, mis välistab parooliosa.
Kopeerige ülaltoodud SQL-i lause ja kleepige see SQL FiddleRun SQL-i tekstikasti, nagu allpool näidatud
Häkkimistegevus: SQL süstib veebirakenduse
Meil on aadressil http://www.techpanda.org/ lihtne veebirakendus, mis on SQL Injectioni rünnakute suhtes haavatav ainult demonstratsiooni eesmärgil. Ülaltoodud HTML-vormi kood võetakse sisselogimislehelt. Rakendus pakub põhiturvalisust, näiteks e-posti välja desinfitseerimine. See tähendab, et meie ülaltoodud koodi ei saa sisselogimisest mööda hiilida.
Selle ületamiseks saame selle asemel kasutada paroolivälja. Alloleval diagrammil on toodud sammud, mida peate järgima
Oletame, et ründaja annab järgmise sisendi
- 1. samm: sisestage See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. e-posti aadressina
- 2. samm: sisestage xxx ') VÕI 1 = 1 -]
- Klõpsake nuppu Esita
- Teid suunatakse armatuurlauale
Loodud SQL-lause on järgmine
SELECT * FROM users WHERE email = ' See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. ' JA parool = md5 ('xxx') VÕI 1 = 1 -] ');
Allolev skeem illustreerib avalduse loomist.
SIIN,
- Avaldus eeldab arukalt, et kasutatakse md5 krüptimist
- Lõpetab ühe hinnapakkumise ja sulgude
- Lisab avaldusele tingimuse, mis jääb alati paika
Üldiselt üritab edukas SQL Injectioni rünnak edukat rünnakut sooritada mitmel erineval viisil, nagu eespool näidatud.
Muud SQL Injection rünnakutüübid
SQL-i süstid võivad teha rohkem kahju kui lihtsalt sisselogimisalgoritmide läbimine. Mõned rünnakud hõlmavad järgmist
- Andmete kustutamine
- Andmete värskendamine
- Andmete sisestamine
- Käivitamine serveris, mis võib alla laadida ja installida pahatahtlikke programme, näiteks Trooja hobuseid
- Väärtuslike andmete, näiteks krediitkaardi andmete, e-posti ja paroolide eksportimine ründaja kaugserverisse
- Kasutaja sisselogimisandmete hankimine jne
Ülaltoodud loetelu ei ole täielik; see lihtsalt annab teile aimu, mida SQL Injection
Automatiseerimise tööriistad SQL-i süstimiseks
Ülaltoodud näites kasutasime oma tohututel teadmistel SQL-ist käsitsi ründamise tehnikaid. On olemas automatiseeritud tööriistu, mis aitavad rünnakuid tõhusamalt ja võimalikult lühikese aja jooksul sooritada. Nende tööriistade hulka kuuluvad:
- SQLSmack - https://securiteam.com/tools/5GP081P75C
- SQLPing 2 - http://www.sqlsecurity.com/downloads/sqlping2.zip?attredirects=0&d=1
- SQLMap - http://sqlmap.org/
Kuidas ennetada SQLi süstimisrünnakuid
Organisatsioon võib SQL Injectioni rünnakute eest kaitsmiseks rakendada järgmist poliitikat.
- Kasutaja sisendit ei tohiks kunagi usaldada - see tuleb alati puhastada, enne kui seda dünaamilistes SQL-lausetes kasutatakse.
- Salvestatud protseduurid - need võivad kapseldada SQL-i laused ja käsitleda kõiki sisendeid parameetritena.
- Ettevalmistatud avaldused - ettevalmistatud avaldused toimimiseks, luues kõigepealt SQL-i lause, seejärel käsitledes kõiki esitatud kasutajaandmeid parameetritena. See ei mõjuta SQL-lause süntaksit.
- Regulaaravaldised - neid saab kasutada võimaliku kahjuliku koodi tuvastamiseks ja selle eemaldamiseks enne SQL-i lausete käivitamist.
- Andmebaasiühenduse kasutaja juurdepääsuõigused - andmebaasidega ühenduse loomiseks kasutatavatele kontodele tuleks anda ainult vajalikud juurdepääsuõigused. See võib aidata vähendada seda, mida SQL-i laused serveris suudavad täita.
- Veateated - need ei tohiks avaldada tundlikku teavet ja seda, kus viga täpselt tekkis. Lihtsad kohandatud veateated, näiteks „Vabandust, meil on tehnilisi vigu. Tehnilise meeskonnaga on ühendust võetud. Proovige hiljem uuesti ”võib kasutada vea põhjustanud SQL-käskude kuvamise asemel.
Häkkimistegevus: SQL-i süstimiseks kasutage Haviji
Selles praktilises stsenaariumis kasutame veebisaidi haavatavuste tuvastamiseks programmi Havij Advanced SQL Injection.
Märkus: teie viirusetõrjeprogramm võib selle oma olemuse tõttu märgistada. Peaksite selle lisama välistuste loendisse või viirusetõrjetarkvara peatama.
Alloleval pildil on Haviji põhiaken
Ülaltoodud tööriista saab kasutada veebisaidi / rakenduse haavatavuse hindamiseks.
Kokkuvõte
- SQL Injection on rünnakutüüp, mis kasutab ära halbu SQL-lauseid
- SQL-i süstimist saab kasutada sisselogimisalgoritmide vältimiseks, andmete hankimiseks, sisestamiseks, värskendamiseks ja kustutamiseks.
- SQL-i süstimisvahendite hulka kuuluvad SQLMap, SQLPing ja SQLSmack jne.
- Hea turvapoliitika SQL-lause koostamisel aitab vähendada SQL-i rünnakurünnakuid.