Kaj je SQL Injection?

Število spletnih mest in strani na spletu se nenehno povečuje. Za razvoj sprejemajo vsi, ki lahko samo. In novice spletni razvijalci pogosto uporabljajo nevarno in staro kodo. In to ustvarja veliko vrzeli za vsiljivce in hekerje. Kaj uporabljajo. Ena izmed najbolj klasičnih ranljivosti je injekcija SQL.

Malo teorije

Mnogi ljudje vedo, da večina spletnih mest in storitev na omrežju uporablja za shranjevanje baze podatkov SQL. To je strukturiran jezik poizvedbe, ki vam omogoča upravljanje in upravljanje podatkovnih skladišč. Obstaja veliko različnih različic sistemov za upravljanje baz podatkov Oracle, MySQL in Postgre. Ne glede na ime in vrsto, uporabljajo podatke enako. Tukaj leži potencialna ranljivost. Če razvijalec ni mogel pravilno in varno obravnavati zahteve, ga lahko napadalec uporabi in uporabi posebne taktike za dostop do baze podatkov, od tam pa tudi za upravljanje celotnega spletnega mesta.


Da bi se izognili takšnim situacijam, morate pravilno optimizirati kodo in natančno spremljati, kakšno vrsto zahteve se obdeluje.

SQL Injection Check

Za določitev razpoložljivosti ranljivosti v omrežju obstaja veliko že pripravljenih avtomatiziranih programskih sistemov. Lahko pa opravite preprost pregled in ročno. To storite tako, da obiščete eno od spletnih mest, ki so predmet preiskave, in poskusite v naslovni vrstici povzročiti napako baze podatkov. Skript na spletnem mestu lahko na primer obdeluje poizvedbe in jih ne obreže. Na primer, najlažji način je some_site /index.php? Id = 25 -po 25 narekovajih in pošljite zahtevo. Če ni prišlo do nobene napake, se na spletnem mestu vse zahteve filtrirajo in obdelajo pravilno, ali pa je njihov izhod v nastavitvah izklopljen. Če je bila stran ponovno zagnana s težavami, potem obstaja ranljivost za vbrizgavanje SQL.


Ko se odkrije, se lahko poskusite znebiti. Za izvedbo te ranljivosti morate vedeti nekaj o ukazih SQL-poizvedbe. Eden od njih je UNION. Združuje več rezultatov poizvedb v eno. Tako lahko izračunate število polj v tabeli. Primer prve poizvedbe izgleda takole:
  • some_site /index.php? Id = 25 UNION SELECT 1.
  • V večini primerov mora tak zapis izdati napako. To pomeni, da število polj ni enako 1. Tako lahko pri izbiri različic od 1 ali več nastavite njihovo natančno število:
  • some_site /index.php? bo prenehalo prikazovati, zato je ugibano število polj. Obstaja tudi alternativna rešitev tega problema. Na primer, ko je število polj veliko - 3060 ali 100. To je ukaz GROUP BY. Rezultate poizvedbe združi s katerim koli znakom, npr. možnosti s precej širokim razponom, lahko izračunate, koliko so v resnici. To je primer injekcije SQL za začetnike, ki se želijo preizkusiti pri preizkušanju svojega spletnega mesta. Pomembno je vedeti, da je nedovoljen dostop do nekoga drugega član Kazenskega zakonika.

    Glavne vrste vbrizgavanja

    Izvajanje ranljivosti z uporabo SQL injiciranja je lahko več možnosti. Najbolj priljubljene tehnike so naslednje:
  • Injekcija poizvedbe UNION SQL. Preprost primer tega tipa je bil že obravnavan zgoraj. Izvaja se zaradi napake pri preverjanju prihodnjih podatkov, ki niso filtrirani.
  • Injekcija SQL, ki temelji na napakah. Kot je razvidno iz naslova, ta tip uporablja tudi napake s pošiljanjem izrazov, ki so skladenjsko napačni. Potem je prišlo do prestrezanja glave odgovora, ki analizira, katere je možno preživeti nadaljnjo injekcijo SQL.
  • Poizvedbe z nalaganjem SQL. Ta ranljivost je določena z izvajanjem zaporednih poizvedb. Zaznamuje jo povezovanje na koncu znaka ;; ". Ta pristop se pogosto izvaja za dostop do izvajanja branje in zapisovanje podatkov ali nadzornih funkcij operacijskega sistema, če je to dovoljeno privilegije.
  • Programska oprema za-SQL iskanje ranljivosti

    Na voljo za programe SQL vbrizgavanjem imajo običajno sestavljen iz dveh delov - skeniranje mesto za morebitne pomanjkljivosti in jih uporabljajo za dostop do podatkov. Obstajajo takšni pripomočki za skoraj vse znane platforme. Zaradi njihove funkcionalnosti je veliko lažje preizkusiti spletno mesto za SQL-injekcijske zmogljivosti.

    Sqlmap

    Zelo zmogljiv skener, ki deluje z večino znanih DBMS. Podpira različne metode izvajanja SQL injiciranja. Ima možnost, da samodejno prepozna vrsto gesla in njegovo hekanje v slovarju. Na voljo je tudi funkcija za nalaganje in razkladanje datotek s strežnika.
    Namestitev v okoljeLinux se izvaja z uporabo ukazov:
  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py - čarovnik
  • Za sistem Windows obstaja možnost ukazne vrstice in grafični uporabniški vmesnik.

    jSQL Injection

    jSQL Injection je orodje z več platformami za testiranje ranljivosti SQL. Napisano na Javi, mora biti JRE nameščen v sistemu. Zmožen je obravnavati poizvedbe GET, POST, glava in piškotki. Ima priročen grafični vmesnik.
    Namestitev te programske opreme je naslednja: 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 '| head-n 1`
    Zagon z java -jar ./jsql-injection-v*.jar Če želite zagnati test spletnega mesta za ranljivost SQL, morate v zgornje polje vnesti njegov naslov. So ločeni za GET in POST. S pozitivnim rezultatom se v levem oknu prikaže seznam razpoložljivih tabel. Ogledate si jih lahko in najdete nekatere zaupne informacije. Če želite poiskati upravne plošče, uporabite kartico »Skrbniška stran«. Uporablja posebne predloge za samodejno iskanje sistemskih zapisov privilegiranih uporabnikov. Od teh lahko dobite le razpršeno geslo. Ampak on je v programskem orodju.
    Po iskanju vseh ranljivosti in vnosu potrebnih poizvedb, bo pripomoček zapolnil datoteko na strežniku ali, nasprotno, jo prenesel od tam.

    SQLi Dumper v.7

    Ta program je preprosto orodje za iskanje in izvajanje ranljivosti vSQL Proizvaja ga na podlagi tako imenovanih dorks. Njihov seznam najdete na internetu. SQL injekcijske patke so posebne predloge za iskanje. Z njihovo pomočjo lahko najdete potencialno ranljivo spletno mesto prek katerega koli iskalnika.

    Orodja za usposabljanje

    Spletna stran itsecgames.com ima poseben komplet orodij, ki vam omogoča, da vzamete primer, kako naredite SQL injekcijo in ga preizkusite. Da bi ga lahko uporabili, ga je treba prenesti in namestiti. Arhiv vsebuje nabor datotek, ki predstavljajo strukturo spletnega mesta. Če ga želite namestiti, boste morali namestiti Apache, MySQL in PHP.
    Po razpakiranju arhiva v mapo spletnega strežnika se morate pomakniti na naslov, ki ste ga vnesli, ko ste namestili ta programski izdelek. Odpre se stran za registracijo uporabnika. Tukaj morate vnesti svoje podatke in klikniti "Ustvari". Ko uporabnika premaknete v novo okno, bo sistem predlagal, da izberete eno od možnosti testiranja. Med njimi so opisane injekcije in številne druge testne naloge. Vredno je razmisliti o primeru vbrizga SQL, kot je GET /Search. Tu ga morate izbrati in kliknite "Hack". Uporabnik bo videl iskalni niz in simuliral spletno mesto s filmi. Lahko gledate filme že dolgo. Vendar so samo 10. Na primer, lahko poskusite vstopiti v Iron Man. Prikazal se bo film, kar pomeni, da spletno mesto deluje, v njem pa so tabele. Zdaj je potrebno preveriti, ali bo skript filtriral posebne znake, zlasti narekovaje. To storite tako, da dodate naslovno vrstico »«. Poleg tega je treba to narediti po imenu filma. Na spletnem mestu bo prišlo do napake. Napaka: Napaka vskladnjo SQL; preverite priročnik, ki ustreza vaši različici strežnika MySQL za pravo skladnjo, ki jo želite uporabiti v bližini '%' v vrstici 1, kar pomeni, da so znaki še vedno nepravilno obdelani.Torej, lahko poskusite predložiti svojo zahtevo. To naredite z vrstnim redom, ki ga vnesete po nareku: http://testsites.com/sqli_1.php?title=Iron+Man 'vrstnem redu za 2 - & amp; action = search. Ta ukaz bo preprosto prikazal informacije o filmu, to je število polj je večje od 2. Dvojna veznica sporoča strežniku, da je treba druge poizvedbe zavreči. Zdaj moramo iti skozi, zamenjati vse velike vrednosti za tiste p. p, dokler ne pride do napake. Na koncu se izkaže, da bodo polja 7
    .
    Zdaj je čas, da dobite nekaj koristnega iz baze. Morate spremeniti bit poizvedbe v naslovni vrstici, tako da ga pripnete na naslednji tip: http://testsites.com/sqli_1.php?title=Iron+Man 'union select 1 database (), user (), 4password, 67 od uporabnikov - & amp; dejanje = iskanje Zaradi njegove izvedbe bodo prikazane vrstice z gesli gesla, ki jih je mogoče enostavno pretvoriti v razumljive znake z eno od spletnih storitev. Nekaj ​​ukrivljenega in izbirnega imena polja s prijavo, lahko dostopate do drugega računa, na primer admin. Izdelek ima različne vrste injekcij, ki jih je mogoče vaditi. Treba je spomniti, da je uporaba teh spretnosti v omrežju, na resničnih spletnih straneh lahko kazniva.

    Injection in PHP

    Po navadi je koda PHP in je odgovorna za potrebno obdelavo zahtevkov, ki prihajajo od uporabnika. Zato morate na tej ravni zgraditi zaščito pred SQL injekcijo v PHP-ju. Za začetek je vredno podati nekaj preprostih priporočilpodlagi katerih je to potrebno.
  • Podatke je treba vedno obdelati pred prostori v bazi. Izvaja se lahko z uporabo obstoječih izrazov ali ročno razvrščanjem zahtev. Tudi tu je treba upoštevati, da se številske vrednosti pretvorijo v tip, ki je potreben;
  • Izogibajte se zahtevi za pojav različnih nadzornih struktur.
  • Zdaj malo o pravilih za poizvedovanje MySQL za zaščito SQL injection. Pri sestavljanju izrazov za poizvedbo je pomembno ločiti podatke od ključnih besed SQL.
  • SELECT * FROM tabela WHERE ime = Zerg.
  • V tej zasnovi lahko sistem misli, da je Zerg ime polja, zato ga morate postaviti v narekovaje.
  • SELECT * FROM tabela WHERE ime = 'Zerg'.
  • Vendar pa obstajajo primeri, ko sama vrednost vsebuje tace.
  • SELECT * FROM tabela WHERE ime = 'cat-d'avour'.
  • Tukaj bo obdelan le del mačke-d, ostalo pa je mogoče razumeti kot ekipo, kar seveda ni. Torej bo prišlo do napake. Zato je potrebno zaščititi te vrste podatkov. To uporablja obratno poševnico.
  • SELECT * FROM tabela WHERE ime = 'cat-d'avour'.
  • Vse navedeno velja za strune. Če se dogodek zgodi s številko, potem ni potrebna nobena noga ali poševnica. Vendar pa morajo biti nujno prisiljeni, da vodijo do potrebne vrste podatkov. Priporočamo, da se ime polja vpiše v vzajemne navedbe. Ta znak je na levi strani tipkovnice, skupaj z znakom tilde "~". To je potrebno, da MySQL natančno razlikuje ime polja od ključne besede.

    Dinamično podatkovno delo

    Pogosto se poizvedbe, ki se generirajo dinamično, uporabljajo za pridobivanje podatkov baze podatkov. Na primer:
  • SELECT * FROM tabela WHERE številka = '$ number'.
  • Tu je spremenljivka $ number posredovana kot vrednost polja. Kaj se bo zgodilo, če pride do mačke-d'ivar? Napaka Izogibajte se tem težavam, seveda lahko v nastavitve vključite tudi "čarobne citate". Toda zdaj bodo podatki zaščiteni, kjer je to potrebno in niso potrebni. Poleg tega, če je koda napisana ročno, potem lahko porabite še nekaj časa, da bi ustvarili sistem, ki je odporen na kramp. Za dodajanje poševnice lahko uporabite mysql_real_escape_string. $ number = mysql_real_escape_string ($ number); $ year = mysql_real_escape_string ($ year); $ query = "INSERT INTO tabela (število, leto, razred) VALUES (" $ number "," $ year ", 11)". Čeprav se je koda povečala, je potencialno varnejši.

    Placeholders

    Placeholderji so posebni označevalci, v skladu s katerimi sistem izve, da je treba mesto nadomestiti s posebno funkcijo. Na primer: $ sate = $ mysqli-> prepare ("SELECT District Number FROM WHERE Name =?"); $ sate- & gt; bind_param ("s", $ number); $ sate- & gt; izvršitev (); Ta odrezek kode pripravi predlogo poizvedbe, nato poveže številko spremenljivke in jo izvede. Ta pristop omogoča ločevanje obdelave zahtevka in njegovega izvajanja. Tako se lahko zaščitite pred uporabo SQL poizvedb z zlonamerno kodo.

    Kaj lahko stori napadalec

    Zaščita sistema je zelo pomemben dejavnik, ki ga ni mogoče zanemariti. Seveda pa bo preprosto obnoviti preprosto spletno vizitko. In če je to odličen portal, storitev, forum? Kakšne so lahko posledice, če ne razmišljate o varnosti? Prvič, heker lahkomotijo ​​celovitost baze podatkov in jo v celoti odstranite. In če administrator spletnega mesta ali gostitelj ni naredil varnostne kopije, potem ne boste zadovoljni. Poleg tega lahko napadalec, ki pokvari eno spletno mesto, preklopi na druge gostitelje na istem strežniku. V nadaljevanju sledi kraja osebnih podatkov obiskovalcev. Kako jih uporabljati - vse tukaj je omejeno le z domišljijo hekerja. Ampak v vsakem primeru posledice ne bodo tako prijetne. Še posebej, če so bile finančne informacije. Prav tako lahko napadalec združi bazo in nato zahteva denar za vrnitev. Dezinformacije uporabnikov v imenu administratorja mesta, nimajo osebe, lahko imajo tudi negativne posledice, kot je mogoče goljufije.

    Sklep

    Vse informacije v tem členu so na voljo samo za informativne namene. Uporabiti ga je treba le za testiranje lastnih projektov pri odkrivanju napak in njihovo odpravo. Za bolj poglobljeno študijo o tem, kako izvajati injekcijo SQL, morate začeti lastno raziskavo o funkcijah in funkcijah jezika SQL. Veljajo poizvedbe, ključne besede, podatkovni tipi in vse to. Tudi brez razumevanja funkcij elementov PHP in HTML. Glavne ranljivosti za uporabo injekcij so naslovna vrstica, iskanje in različna polja. Proučevanje funkcij PHP-ja, način njihovega izvajanja in zmožnosti vam bo pomagalo razumeti, kako se izogniti napakam. Razpoložljivost številnih že pripravljenih programskih orodij vam omogoča globoko analizo mesta o znanih ranljivostih. Eden od najbolj priljubljenih izdelkov je kali linux. To je podobaLinux operacijski sistem, ki vsebuje veliko število pripomočkov in programov, ki so sposobni celovite analize moči mesta. Zakaj morate vedeti, kako si zlomiti stran? Vse je zelo preprosto - potrebno je imeti idejo o potencialno ranljivih mestih vašega projekta ali mesta. Še posebej, če je to spletna trgovina z možnostjo spletnega plačila, kjer lahko napadalec ogrozi podatke o plačilu uporabnika. Za strokovne raziskave so na voljo informacijske varnostne službe, ki bodo lahko preverjale lokacijo po različnih merilih in globini. Od preprostih injekcij HTML do socialnega inženirstva in phishinga.

    Sorodne publikacije