RačunalnikiProgramiranje

Kaj je injiciranje SQL?

Število mest in strani na spletu, ki je vztrajno narašča. Potreben za razvoj vseh tistih, ki lahko. In novice Spletni razvijalci pogosto uporabljajo nevarne in staro kodo. In to ustvarja veliko lukenj za zločincev in hekerji. Kot so. Ena izmed najbolj klasičnih ranljivosti - SQL-injekcijo.

Malo teorije

Veliko ljudi ve, da je večina spletnih mest in storitev v omrežju uporabljajo za shranjevanje baze podatkov SQL. To je strukturiran vprašanje jezika , ki vam omogoča nadzor in upravljanje shranjevanja podatkov. Obstaja veliko različic sistema baze podatkov za upravljanje baz podatkov - Oracle, MySQL, Postgre. Ne glede na ime in tip, ki jih uporabljajo iste podatke poizvedbe. To je tukaj, da leži potencialno ranljivost. Če razvijalec ni pravilno ravnanje in varno zahteva, lahko napadalec izkoristi to in uporabo posebne taktike za dostop do baze podatkov, in nato - in vsem upravljanja mesta.

Da bi se izognili takšnim situacijam, morate pravilno optimizirati kodo in pozorno spremljala na način, v katerem se zahteva, ki se obdelujejo.

Preverite za SQL-injiciranje

Da bi ugotovili prisotnost ranljivosti v omrežju ima težo končnih avtomatskih sistemov programske opreme. Ampak to je mogoče izvesti enostavno preverjanje ročno. Da bi to naredili, pojdite na enega od testnih straneh in v naslovni vrstici, da bi poskušali povzroči napako baze podatkov. Na primer, skript na mestu ne more obravnavati zahteve in jih ne obrezati.

Na primer, obstaja nekiy_sayt / index.php? Id = 25

Najlažji način - da dajo 25 po ponudbo in poslati zahtevo. Če ni prišlo do napake, in sicer na spletni strani in filtra so vse zahteve ravna pravilno, ali pa je onemogočena v nastavitvah njihove proizvodnje. Če je stran naložen s problemi, potem ranljivosti na SQL-injiciranje je.

Ko je ugotovila, da lahko poskusite znebiti.

Za izvajanje te ranljivosti je treba vedeti nekaj o SQL-poizvedb ekip. Eden od njih - UNION. Združuje več rezultate poizvedbe v eno. Tako lahko izračunamo število polj v tabeli. PRIMER Prvi izraz je:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

V večini primerov je ta zapis ustvari napako. To pomeni, da se število polj ni enak 1. Tako izbiro možnosti 1 ali več, je mogoče ugotoviti njihovo natančno število:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

To pomeni, da ko bo napaka ne pojavi, to pomeni, da se je število polj uganiti.

Obstaja tudi alternativna rešitev tega problema. Na primer, ko veliko število polj - 30, 60 ali 100. Ta ukaz GROUP BY. Združuje rezultate poizvedbe o vseh razlogov, na primer id:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

Če je napaka ni bila sprejeta, so polja več kot 5. Tako je njihovo zamenjavo z dokaj široko paleto, je mogoče izračunati, koliko jih je dejansko.

Ta primer SQL injection - za začetnike, ki želijo, da se preizkusite v testiranje svoji spletni strani. Pomembno je, da se spomnimo, da je za nepooblaščen dostop do nekega drugega člena Kazenskega zakonika.

Glavne vrste injiciranje

Izvajati ranljivosti SQL-injiciranja v številnih izvedbah. Nato so najbolj priljubljenih načinov:

  • UNION poizvedbo SQL injection. Preprost primer te vrste je že preučila zgoraj. To je spoznal zaradi napake pri preverjanju vhodnih podatkov, ki niso filtrirani.

  • Na osnovi Napaka SQL injection. Kot pove že ime, je ta vrsta uporablja tudi napako, pošiljanje izrazov sestavljene skladenjsko napačna. Potem je tu še prestrezanje glave odzivanja, analiziranjem, ki se lahko izvajajo kasneje SQL-injekcijo.

  • Zloženo poizvedbe SQL injekcijo. To ranljivost je določena z izvajanjem zaporednih zahtevkov. Zanj je značilna z dodatkom na koncu znaka ";". Ta pristop se pogosto izvaja za dostop do izvajanja branje in zapisovanje podatkov ali operacijskega sistema funkcij, če privilegije dovolil.

Programska oprema za iskanje SQL-ranljivosti

Ali obstaja za SQL-injiciranje, program imajo običajno sestavljen iz dveh delov - stran skeniranje za morebitne pomanjkljivosti in jih uporabljajo za dostop do podatkov. Obstaja nekaj orodja za skoraj vse znane platforme. Njihova funkcionalnost močno olajša preverjanje spletno stran, da crack SQL-injekcijo.

Sqlmap

Zelo zmogljiv optični bralnik, ki deluje z večino podatkovnih baz. Podpira različne načine izvajanja SQL-injiciranje. Ima sposobnost, da samodejno prepozna vrsto geslo razpršitve kreking in slovar. Sedanje in funkcionalno nalaganje datotek in prenos iz strežnika.

Namestitev na Linux se izvaja z uporabo ukazov:

  • git klon https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

Za Windows je na voljo kot opcija z ukazno vrstico in grafični uporabniški vmesnik.

jSQL Injection

jSQL Injection - cross-platform orodje za testiranje uporabe ranljivosti SQL. Napisana v Java, tako da je sistem mora biti nameščen JRE. Sposobna izpeljati GET prijave, POST, glave, piškotek. Ima priročen grafični vmesnik.

Namestitev tega programskega paketa je, kot sledi:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -o '/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} jar '| glava-n 1 '

Začetek je s pomočjo ukaz java -jar ./jsql-injection-v*.jar

Za začetek test mesto na SQL-ranljivosti, morate vnesti naslov v zgornjem polju. So ločeno GET in POST. S pozitivnim rezultatom, se bo seznam razpoložljivih tabel prikaže v levem oknu. Ogledate si jih lahko in se naučite nekaj zaupnih informacij.

Jeziček «Skrbnik stran» uporablja, da bi našli druge plošče. On je s pomočjo posebne predloge samodejno poišče sistem beleži privilegiranih uporabnikov. Iz njih lahko dobite samo hash gesla. Ampak on ima v orodni vrstici programa.

Po ugotovitvi vse ranljivosti in vbrizgavanje potrebne poizvedbe, bo orodje strežniku dovoliti, da izpolnijo datoteko ali, nasprotno, jo prenesete od tam.

SQLi Dumper V.7

Ta program - enostaven za uporabo orodja za iskanje in izvajanje ranljivosti SQL. Daje ZN temelji na tako imenovanem dorcas. Njihov seznam je na voljo na internetu. Dorca za SQL-injiciranje - to so posebne predloge iskalnih poizvedb. Z njihovo pomočjo lahko najdete potencialno ranljivo mesto s pomočjo katerega koli iskalniku.

Orodja za usposabljanje

Itsecgames.com na mestu obstaja poseben nabor orodij, ki omogoča, da se na primer kaže, kako narediti SQL injection in ga preizkusiti. Da bi izkoristili, je potrebno prenesti in namestiti. Arhiv vsebuje nabor datotek, ki je struktura spletne strani. Za namestitev bo treba v obstoječem sistemu nabora Apache spletni strežnik, MySQL in PHP.

Razpakirati arhiv v mapo spletnega strežnika, moraš iti na naslov vnesli med namestitvijo te programske opreme. Stran z registracijo uporabnika. Tukaj boste morali vnesti svoje podatke in kliknite "Ustvari". Premikanje uporabnika na nov zaslon, sistem vas pozove, da izberete eno od testnih primerov. Med njimi so tako z injekcijo, in mnogih drugih testnih postavk je opisano.

To je vredno razmisliti primer tipa SQL injection GET / iskanje. Tukaj boste morali, da ga izberete in kliknite «Hack". Preden se bo pojavil uporabnik, in iskalni niz imitacija iz leta filma mestu. Za razvrščanje filmov je lahko dolga. Vendar pa obstajajo le 10. Na primer, lahko poskusite za vstop v Iron Man. To bo pokazal film, nato pa stran deluje, in tabel, ki jih vsebuje. Sedaj moramo preveriti, če posebne znake skript filtri, zlasti ponudbo. Če želite to narediti, dodamo "v naslovni vrstici." Poleg tega je treba to storiti po naslovu filma. Spletna stran bo dala napako napaki: Imate napake v vašem SQL sintakso; preverite priročnik, ki ustreza vaši različici MySQL strežnik za pravico sintakso za uporabo v bližini '%' 'na liniji 1, v katerem je navedeno, da so znaki še vedno ne ravna pravilno. Tako lahko poskusite zamenjati svojo zahtevo. Vendar moramo najprej izračunati število polj. Uporablja se za to, da bi s strani, ki je uvedla po narekovajev: http://testsites.com/sqli_1.php?title=Iron+Man 'naročilo za 2 - & action = iskanju.

Ta ukaz prikaže samo podatke o filmu, to pomeni, da se število polj je večja od 2. dvojni vezaj strežniku pove, da je treba druge zahteve zavreči. Zdaj moramo rešiti, dajali vedno večji pomen, dokler se napaka ne natisne. Na koncu se izkaže, da bodo polja je 7.

Zdaj je čas, da se nekaj koristnega iz baze. Bo nekoliko spremeniti zahtevek v naslovni vrstici, ki ga pripelje do oblike: http://testsites.com/sqli_1.php?title=Iron+Man 'union izberite 1, baze podatkov (), uporabnik (), 4, geslo, 6, 7 od uporabnikov - & action = iskanje. Kot posledica njegovega izvajanja bi prikazali niz s haše gesla, ki jih je mogoče zlahka pretvorijo v razumljivih simbolov z uporabo enega od spletnih storitev. Pričarala malo in pobral ime polja z imenom, lahko pridobijo dostop do nekoga drugega vpisa, kot admin mesta.

Izdelek ima vrst injekcije teža vrste, na katerih naj prakticirajo. Treba je opozoriti, da je lahko uporaba teh znanj v omrežju na pravih mestih kaznivo dejanje.

Injection in PHP

Kot pravilo, PHP-kodo in je odgovoren za potrebne zahteve za obdelavo, ki prihajajo od uporabnika. Zato na tej stopnji morate zgraditi obrambo pred SQL-injiciranje v PHP.

Najprej, kaj je dal nekaj preprostih smernic, na podlagi katerih je potrebno, da to storijo.

  • Podatki morajo biti vedno obdelajo, preden se dajo v bazo podatkov. To se lahko stori bodisi z uporabo obstoječih izrazov, ali ročno organizacijo poizvedb. Tudi tu je treba upoštevati, da so številčne vrednosti pretvori v vrsto, ki je potreben;
  • Izogniti pozivu različne nadzorne strukture.

Zdaj pa malo o pravilih priprave poizvedb v MySQL za zaščito pred SQL-injekcijo.

Pri pripravi vse izraze, da se pozanima, da je pomembno, da se ločuje podatke iz ključnih besed SQL.

  • SELECT * FROM tabela WHERE ime = Zerg.

V tej konfiguraciji, lahko sistem, da Zerg - ime kateremkoli področju, tako da boste morali priložiti v narekovajih.

  • SELECT * FROM tabela WHERE ime = "Zerg '.

Vendar pa so časi, ko je sama vrednost vsebuje ponudbe.

  • SELECT * FROM tabela WHERE ime = "Slonokoščena obala".

Tukaj ročaj le del Slonokoščeno, in ostalo je mogoče razumeti kot ekipa, ki je, seveda, ne. Zato pride do napake. Potem morate to vrsto podatkov presejanja. Če želite to narediti, uporabite poševnico nazaj - \.

  • SELECT * FROM tabela WHERE ime = "cat-d \ 'obala'.

Vse od naštetega nanaša na vrstice. Če je dejanje poteka s številko, potem ne potrebuje nobene ponudbe ali poševnico. Vendar pa jih je treba zahtevati, da prisilno privede na želeni podatkovni tip.

Obstajajo priporočila, da mora biti ime polja zaprti v backquotes. Ta simbol je na levi strani tipkovnice, skupaj s tildo "~". To je zagotoviti, da lahko MySQL natančno razlikovati ime polja z vašo ključno besedo.

Dinamično delo s podatki

Zelo pogosto, da bi dobili vse podatke iz baze podatkov s pomočjo poizvedb, ustvarjenih dinamično. Na primer:

  • SELECT * FROM tabela WHERE število = '$ številka ".

Tu je spremenljivka $ število opravil, kot je določitev vrednosti polja. Kaj se bo zgodilo, če pride "Slonokoščena obala"? Napaka.

Da bi se izognili te težave, seveda, lahko vključujejo nastavitve "Možnost Magic quotes". Toda zdaj bodo podatki pregledani, kjer je to potrebno in ni potrebno. Poleg tega, če je koda napisana z roko, ga lahko porabili malo več časa za ustvarjanje odporen na pokanje samega sistema.

Za samostojno dodatkom poševnica lahko uporabite mysql_real_escape_string.

$ Number = mysql_real_escape_string ($ številka);

$ Leto = mysql_real_escape_string ($ letno);

$ Query = "INSERT INTO mizo (številka, leto, razred) VALUES ( '$ številka", "$ leto', 11)."

Čeprav kode in povečal, vendar potencialno bi to delo veliko varnejši.

ograde

Ograde - neke vrste označevalcev, za katere sistem zazna, da je to mesto, ki ga je treba nadomestiti s posebno funkcijo. Na primer:

$ Sate = $ mysqli-> pripravimo ( "SELECT District IZ Število WHERE ime =?");

$ Sate-> bind_param ( "s", $ številka);

$ Sate-> izvršitev ();

Ta del kode je zahtevo predlogo za usposabljanje in nato veže spremenljivo število, in ga izvede. Ta pristop omogoča, da razdeli obdelavo poizvedbe in njegovo izvajanje. Tako je mogoče rešiti pred uporabo zlonamerne kode so SQL-.

Kaj bi lahko napadalec

Zaščita sistema - zelo pomemben dejavnik, ki ga ni mogoče zanemariti. Seveda, bo preprosta vizitka mesto lažje obnoviti. In če je velik portal, servis, forum? Kakšne so posledice, če ne razmišljajo o varnosti?

Prvič, heker lahko poškoduje celovitost tako bazo in jo odstranite v celoti. In če je skrbnik spletnega mesta ali Hoster ne pomeni, da varnostne kopije, boste imeli težke čase. Predvsem, vsiljivec, razpoke na eni lokaciji, se lahko obrnejo na druge objavljene v istem strežniku.

Nato je krajo osebnih podatkov obiskovalcev. Kako uporabljati - vse je omejena le z domišljijo heker. Toda v vsakem primeru, posledice ne bodo zelo prijetno. Še posebej, če vsebuje finančne podatke.

Prav tako lahko napadalec združita podatkovne baze in nato izsiliti denar za njegovo vrnitev.

Uporabniki dezinformacije o imenu skrbnika spletne strani, lahko oseba, ki se ne da, lahko tudi negativne posledice, kot so možne dejstev goljufij.

zaključek

Vse informacije v tem članku so zgolj informativne narave. Uporabite ga potrebujejo samo, da preizkusijo svoje lastne projekte, ko zazna ranljivosti in jih obravnavati.

Za študij bolj poglobljeno tehnik, kako izvesti SQL-injekcijo, je treba začeti z dejanskimi raziskovalnih zmogljivosti in značilnosti jezika SQL. Kot zbranih poizvedbe, ključne besede, vrste podatkov, in uporabi vse.

Prav tako ne more storiti, ne da bi razumeli delovanje PHP in HTML elementov funkcij. Primarna uporaba ranljive točke za injiciranje - naslovno linijo, in različne iskalno polje. Učenje PHP funkcije, bo način izvajanja in funkcije ugotoviti, kako se izogniti napakam.

Prisotnost številnih pripravljenih programskih orodij omogočajo poglobljeno analizo o mestu znane ranljivosti. Eden od najbolj priljubljenih izdelkov - kali linux. Ta slika, ki temelji na Linux operacijski sistem, ki vsebuje veliko število orodij in programov, ki se lahko izvajajo obsežno analizo moči mesta.

Kaj morate vedeti, kako v kramp stran? To je zelo preprosta - da je potrebno, da se zavedajo možnih ranljivosti vašega projekta ali spletni strani. Še posebej, če je spletna trgovina s spletno plačilo, kjer se uporabnik plačilnih podatkov lahko ogrožena z napadalcem.

Za strokovno izpopolnjevanje obstoječih informacijske varnosti osebja, ki bo lahko preverite spletno stran za različne meril in globino. Od preprostih HTML-injekcije in socialni inženiring in lažno predstavljanje.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 sl.unansea.com. Theme powered by WordPress.