SQL Injektimi

SQL Injection (Structured Query Language injection – shq. injektimi i gjuhës së strukturuar të pyetësorëve). Aplikacionet në internet bëjnë të mundur që vizitorët e ueb faqeve të paraqesin dhe të marrin të dhëna prej data bazës përmes internetit duke përdorur shfletuesit e tyre. Data bazat janë të rëndësishme për ueb faqet moderne, ato ruajnë te dhëna te ndryshme nga vizitoret, marrin informata nga klientët, furnizuesit e shume persona tjerë.

Sulmi SQL injection bëhet me insertimin e SQL query (pyetjeve) përmes futjes së të dhënave prej klientit në aplikacion. Injektimi i suksesshëm i SQL mund të bëj të mundur leximin e të dhënave prej databazës, modifikimin e të dhënave apo edhe fshirjen e tyre nga databaza.

Shumica e faqeve apo aplikacioneve përfshijnë kërkime në faqe, forma të kyçjes (login) ose kontakt forma, të cilat mund të përdoren për këtë qellim. Kështu që bëjnë të mundur që përmes këtyre forma të cilat janë të lidhura me databazë për verifikime te ndryshme, sulmuesit mundohen të krijojnë query të ndryshme të cilat mund të marrin informata prej databazës apo edhe t’i dëmtojnë ato. 

Shembuj të SQL Injektimit

Shembulli 1

SELECT * FROM Users WHERE Username='$username' AND Password='$password'

Një query i thjesht është paraqitur më lart i cili përdoret për autorizimin e përdoruesi. Nëse query kthen përgjigje do te thotë se ekziston një klient me atë username dhe me atë fjalëkalim, dhe kështu bën mundur hyrjen ne sistem. Supozojmë se fusim këto të dhëna më poshtë:

$username = 1' or '1' = '1’—-

Query do të bëhet:

SELECT * FROM Users WHERE Username='1' OR '1' = '1'-- AND Password='$password'

Për shkak të vlerës 1=1 query do të jete gjithmonë i vërtetë (true), si dhe simboli ”--” bën të mundur që pjesa për verifikimin e fjalëkalimit të bëhet koment, kështu që sulmuesi mund të futet në sistem.

Shembulli 2

Në këtë rast kemi të bëjmë me gjetjen e një përdoruesi, varësisht prej numrit e të cilit databaza do të kthej përgjigje.

”SELECT * FROM Users WHERE UserId = “ + txtUserId

Nëse veprojmë si më poshtë atëherë ne do të mundemi te fshijmë një prej tabelave të bazës së të dhënave, kuptohet nëse e dimë më parë emrin e tabelës.

10; DROP TABLE Suppliers

Si do të duket query:

SELECT * FROM Users WHERE UserId = 10; DROP TABLE Suppliers

Shembulli 3

Në shembullin në vazhdim është paraqitur insertimi i një rreshti të ri në databazë, gjithashtu ne mund edhe të bëjmë azhurnimin e një rreshti të caktuar nëse vetëm më herët e dimë emrin e përdoruesit ose një të dhënë të tij për të ditur se ku do t’i ndryshojmë të dhënat.

SELECT * FROM Users WHERE UserId = 10; INSERT INTO tblUsers VALUES(5,’john’,’smith’)

Nëse përdorim shembullin e njëjtë po tani për update:

SELECT * FROM Users WHERE UserId = 10; UPDATE tblUsers SET UserId=20 WHERE username=’sarah’

Dëmet nga  SQL Injection

Shumicës së ueb sajteve sot iu kërkohet që të bëjnë skanime për detektimin e SQL Injection. Disa kanë rrezik më të madh e disa më të vogël, mirëpo është fakt se rreziku nga kjo teknikë e hakimit është duke u rritur. Kjo rritje bazohet në faktin se së pari, ueb sajtet ofrojnë shumë mundësi të interaksionit me vizitorët, trend ky në rritje dhe së dyti sepse sulmuesit janë duke u bërë gjithnjë e më të aftë, duke gjetur aplikacione të reja për hakim.

Rreziku nga sulmet me SQL Injection varet nga natyra e biznesit, numri i stafit dhe aftësitë e tyre për menaxhimin e sigurisë në ueb. Në shënjestër janë ueb sajtet të cilat kanë të dhëna të vlershme, nëse kemi një biznes të suksesshëm, nëse ueb sajt ka të bëj me çështje të rëndësishme politike apo sociale, apo nëse kemi ueb sajt lidhur me menaxhimin e parave.

Dëmet që mund të shkaktohen nga një sulm i suksesshëm i SQL Injection janë shumë të mëdha. Një teknikë më e avancuar bën që sulmuesi të mund të qaset në sistem përmes një dere të fshehtë (backdoor). Sulmuesi fiton të drejtat e administratorit që do të thotë se ai ka qasje të pa limituar në të gjitha të dhënat që ndodhen në server si p.sh. të dhënat personale apo të kompanisë.

SQL Injection mund të kombinohet edhe me teknika të tjera për të manipuluar se si të dhënat shfaqen te vizitorët e ueb faqes. Sulmuesit mundohen që të mos vërehen në mënyrë që të vazhdojnë të kenë qasje në sistem, dhe zakonisht këto injektime zbulohen muaj më pas kur dëmi është i pariparueshëm.

Dëmet kryesore që mund të shkaktohen nga SQL Injection janë:

 Manipulimi me të dhëna në data bazë
 Vjedhja e informacioneve të konsumatorit 
 Humbje financiare
 Dëmtim i markës (firmës)
 Shitja e informatave

Manipulimi me të dhëna në data bazë

Sulmuesi pas injektimit ka mundësi të ndryshojë, të krijojë query të ri dhe të fshijë tabela të tëra me një komandë të vetme. Një sulm masiv mund të përfshijë korruptimin e të dhënave në data bazë dhe shkatërrimin e kopjeve (backup).

Vjedhja e informacioneve të konsumatorit/stafit
Në rast se kemi një ueb site e cila ka të bëj me ndonjë biznes apo kompani në databazën e saj do të ketë përveç tjerash shumë të dhëna për stafin dhe konsumatorët. Sulmuesi mund të vjedh këto të dhëna siç janë SSN, adresat, nr. e telefonave, datëlindjet dhe të dhëna tjera me rëndësi.

Humbje financiare

Ueb sajtet të cilat merren me menaxhimin e të hollave dhe transaksioneve kanë databazën me të dhëna të rëndësishme, të cilat tregojnë për personat që kanë bërë transaksione, kohën e kryerjes së tyre, e deri te informatat që përmbajnë numrat e kredit kartelave. Sulmuesit në këtë mënyrë mund t’i qasen direkt llogarive bankare dhe të bëjnë tërheqjen e parave.

Dëmtim i markës (firmës)

Kur ueb sajti që përmban të dhënat për ndonjë kompani apo markë të rëndësishme sulmohet, mund të bëhet dëmtimi i saj. Në këtë rast  përveç humbjeve materiale që mund të pësojë ajo markë, humbet edhe kredibiliteti në të dhe largohen konsumatorët.

Shitja e informacioneve

Sulmuesit zakonisht kur sulmojnë ueb sajtet kanë qëllim të përfitojnë nga to. Në rastet kur informatat që nxirren nga data baza kanë të bëjnë me personalitete të shquar qofshin ata të botës së spektaklit, televizionit, apo politikës janë të dhëna shumë të vlershme të cilat mund të shiten.

 Referime 




Kategoria:SQL