RačunalaProgramiranje

Ono što je injekcije SQL?

Broja mjesta i stranica na web je u stalnom porastu. Uzeti za razvoj svih onih koji mogu. I početnici web programeri često koriste nesigurne i starom zakonu. A to stvara puno rupa za kriminalce i hakera. Od njih. Jedan od najvažnijih klasičnih ranjivosti - SQL injection.

Malo teorije

Mnogi ljudi znaju da je većina lokacije i usluge na mreži koriste za pohranu SQL baze podataka. To je strukturirani upitni jezik koji vam omogućuje kontrolu i upravljanje za pohranu podataka. Postoje mnoge različite verzije sistema baze podataka za upravljanje bazama podataka - Oracle, MySQL, Postgre. Bez obzira na ime i tip, oni koriste podaci isti upit. Upravo tu leži potencijal ugroženosti. Ako programer nije rukovati pravilno i sigurno tražiti, napadač može iskoristiti ovu i koristiti posebne taktike da biste dobili pristup u bazu podataka, a onda - kao i svi upravljanje stranice.

Da biste izbjegli takve situacije, potrebno je da pravilno optimizirati kod i da pažljivo prati na način na koji se obrađuje zahtjev.

Provjerite za SQL injection

Da se utvrdi postojanje ranjivosti u mreži ima težinu gotovih automatizirani softverskih sistema. Ali, to je moguće ručno izvršiti jednostavan ček. Da biste to učinili, idite na jedan od testa lokacijama i u adresnoj traci pokušati da dovede do greške baze podataka. Na primjer, skriptu na sajtu ne mogu podnijeti zahtjev i nemojte ih trim.

Na primjer, nekiy_sayt / index.php? Id = 25

Najlakši način - na put 25 nakon citat i poslati zahtjev. Ako se ne greška dogodila, bilo na mjestu i filter sve zahtjeve pravilno rukuje, ili je onemogućena u postavkama svoje proizvodnje. Ako se stranica učitava sa problemima, onda je ranjivost na SQL injection je.

Nakon što je saznala, možete pokušati da riješi to.

Za realizaciju ovog ranjivost potrebu da zna nešto o SQL-upita timova. Jedan od njih - UNION. Okuplja nekoliko rezultata upita u jedan. Dakle, možemo izračunati broj polja u tabeli. PRIMJER prvo pitanje je:

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

U većini slučajeva, ovaj album bi trebalo generirati grešku. To znači da je broj polja nije jednaka 1. Dakle, odabirom opcije 1 ili veći, to je moguće utvrditi njihov tačan broj:

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

To jest, kada će se greška više ne pojavi, to znači da je broj polja pogoditi.

Tu je i alternativno rješenje za ovaj problem. Na primjer, kada je veliki broj polja - 30, 60 ili 100. Ova naredba GROUP BY. To grupe rezultate upita po bilo kom osnovu, na primjer ID:

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

Ako nije primio pogreške, tada su polja više od 5. Dakle, zamjenjujući opcije iz prilično širok spektar, moguće je izračunati koliko njih zapravo.

Ovaj primjer SQL injection - za početnike koji žele da se oprobaju u testiranju svoje stranice. To je važno imati na umu da je za neovlašteni pristup na drugu dostupan člana Krivičnog zakona.

Glavne vrste ubrizgavanja

Implementirati ranjivost SQL injekcije u nekoliko oličenje. Sljedeći su najpopularniji metoda:

  • UNION upita SQL injekcije. Jednostavan primjer ovog tipa je već iznad ispitan. To se realizuje zbog greške u provjeri ulaznih podataka, koji nisu filtrirani.

  • Greška na bazi SQL injection. Kao što samo ime govori, ovaj tip koristi grešku, slanje izraza sastoji sintaktički pogrešan. Zatim, tu je presretanje zaglavlja odgovora, analiziranje koji se može izvesti kasnije SQL injection.

  • Složeni upite SQL injekcije. Ova ranjivost je određeno obavljanje uzastopnim zahtjevima. Odlikuje se dodavanjem na kraju znaka ";". Ovaj pristup se često sprovodi pristupiti realizaciji čitanja i pisanja podataka ili operativni sistem funkcija, ako privilegije dozvoljavaju.

Softver za pretraživanje SQL ranjivosti

Je tu za SQL-ubrizgavanje, program obično imaju dvije komponente - sajt skeniranje za moguće ranjivosti i koristiti ih da dobiju pristup podacima. Postoje neke alate za gotovo sve poznate platforme. Njihova funkcionalnost uvelike olakšava provjeru web stranica razbiti SQL-injekcije.

sqlmap

Vrlo snažan skener koji radi s većinom bazama podataka. Ona podržava razne metode implementacije SQL injekcije. Ona ima sposobnost da automatski prepoznaje vrstu lozinke hash pucanja i rječnik. Sadašnjosti i funkcionalne upload datoteka i preuzimanje sa servera.

Instalacija na Linuxu se vrši pomoću naredbe:

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

Za Windows je dostupan kao opcija sa komandne linije i grafičko korisničko sučelje.

jSQL Injection

jSQL Injection - cross-platforma alat za testiranje korištenje SQL ranjivosti. Napisan u Javi, tako da se sistem mora biti instaliran JRE. U mogućnosti da obrađuju GET zahtjeva, POST, zaglavlje, cookie. Ima zgodan grafičko sučelje.

Instalacija ovog programskog paketa je kako slijedi:

wget https://github.com/`curl -s http: //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`

Lansiranje je pomoću naredbe java -jar ./jsql-injection-v*.jar

Kako bi se pokrenuli test site na SQL ranjivosti, potrebno je da unesete adresu u gornjem polju. Oni su odvojeni za GET i POST-a. Sa pozitivnim rezultatom, lista dostupnih stolova će se pojaviti u lijevom prozoru. Možete ih pogledati i naučiti neke povjerljive informacije.

karticu «Admin stranice» koriste za pronalaženje administrativne panela. Na to putem posebnih predložaka automatski traži sistema snima privilegovanih korisnika. Od njih možete dobiti samo hash lozinke. Ali on ima na alatnoj traci programa.

Nakon što je pronašao sve slabosti i injekcije potrebno upite, alat će omogućiti da server popunite datoteke ili, obrnuto, preuzmite ga tamo.

SQLi Dumper v.7

Ovaj program - jednostavan za korištenje alat za pronalaženje i implementaciju SQL ranjivosti. Proizvodi UN se temelji na tzv Dorcas. Njihov popis se može naći na internetu. Dorca za SQL injection - to su posebne šablone upita za pretraživanje. Uz njihovu pomoć, možete pronaći potencijalno ugroženih stranice kroz bilo koji search engine.

Alati za obuku

Itsecgames.com na mjestu postoji poseban skup alata koji omogućava primjer pokazuje kako se to SQL injection i testirati ga. Kako bi se koristi, potrebno je preuzeti i instalirati. Arhiva sadrži skup datoteka, što je struktura stranice. Da biste instalirali to će trebati u postojećem sistemu seta Apache web server, MySQL i PHP.

Raspakujte arhiva u folderu web servera, morate otići na adresu Prilikom instaliranja ovog softvera. A strana sa registraciju korisnika. Ovdje vam je potrebno da unesete svoje podatke i kliknite na "Kreiraj". Kreće korisnika na novi ekran, sistem od vas traži da odaberete jedan od slučajeva test. Među njima su i opisali injekcije, i mnoge druge test stavke.

To je vrijedno s obzirom na primjer tipa SQL injection GET / Search. Ovdje vam je potrebno da biste ga izabrali i kliknite na "Hack». Prije nego što će se pojaviti korisnika, i pretragu niz imitacija filma stranice. Da biste sortirali filmovi mogu biti dugo. Ali postoje samo 10. Na primjer, možete pokušati da uđu u Iron Man. To će ukazati na film, a zatim sajt radi, i stolovima koje sadrži. Sada moramo provjeriti da li specijalnih znakova skripta filteri, posebno citat. Da biste to učinili, dodajte "u adresnoj traci." Osim toga, to mora biti učinjeno nakon naslova filma. Sajt će dati Greška: Imate grešku u vašem SQL sintaksa; provjeriti priručnik koji odgovara vašem MySQL server verzija za pravo sintaksu za korištenje u blizini '%' 'na liniji 1, u kojem se navodi da su likovi još uvijek nisu pravilno rukuje. Tako da možete pokušati zamijeniti vaš zahtjev. Ali prvo moramo izračunati broj polja. Koristi se za ovo naređenje, koji je uveden nakon citata: http://testsites.com/sqli_1.php?title=Iron+Man 'bi za 2 - & action = pretrage.

Ova naredba prikazuje samo informacije o filmu, koji je, broj polja je veća od 2. dvostruko crticu govori serveru da je drugi zahtjevi moraju biti odbačene. Sada moramo da sredimo, stavljajući veći značaj sve dok greška se ne štampa. Na kraju, ispada da će polja biti 7.

Sada je vrijeme da se nešto korisno iz baze. Blago modificirati zahtjev u adresnoj traci, dovodeći ga u oblik: http://testsites.com/sqli_1.php?title=Iron+Man sindikat izaberite 1, baze podataka (), korisnički (), 4, lozinke, 6, 7 korisnika - & action = pretrage. Kao rezultat njegove realizacije će prikazati niz s lozinkom heševe, koji se lako može pretvoriti u razumljive simbole koristeći jedan od online usluga. A priziva malo i pokupio ime polja sa prijava, možete dobiti pristup tuđe ulazak, kao što je admin sajta.

Proizvod ima vrsta injekcije težina vrsta, na kojima u praksi. Treba imati na umu da primjena ove vještine u mreži na stvarnim lokacijama može biti krivično djelo.

Ubrizgavanja i PHP

Po pravilu, PHP-kod i odgovoran je za neophodne obradu zahtjeva koji dolaze od korisnika. Stoga, na ovom nivou treba da se izgradi odbrane od SQL-injekciju u PHP-u.

Prvo, dajte nekoliko jednostavnih smjernica, na osnovu koje je potrebno da se to učini.

  • Podaci moraju uvijek biti procesuiran pred stavljanja u bazu podataka. To se može učiniti bilo korištenjem postojećih izrazi, odnosno organizacijom upita ručno. Evo, takođe, treba uzeti u obzir da su brojčane vrijednosti se pretvaraju u tip koji je potrebno;
  • Izbjegavati tražiti različite kontrolne strukture.

Sad malo o pravilima sastavljanja upita u MySQL za zaštitu od SQL injection.

U izradi bilo izraza za upit važno je odvojiti podatke iz SQL ključne riječi.

  • SELECT * FROM tabela WHERE ime = Zerg.

U ovoj konfiguraciji, sistem mogu misliti da Zerg - ime bilo kog polja, tako da je potrebno da ga priložiti u navodnicima.

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

Međutim, postoje situacije kada je sama vrijednost sadrži citate.

  • SELECT * FROM tabela WHERE ime = 'Obala Bjelokosti'.

Evo ručka samo deo Obala d, a ostatak može se percipira kao tim, što, naravno, ne. Stoga, dođe do greške. Onda vam je potrebna ova vrsta pregleda podataka. Da biste to učinili, koristite obrnutu kosu crtu - \.

  • SELECT * FROM tabela WHERE ime = 'mačka-d \' Ivoire '.

Sve navedeno odnosi se na redove. Ako se akcija odvija sa brojem, onda ne treba citati ili kose crte. Međutim, oni treba zahtijevati da se prisilno dovede do željene vrste podataka.

Postoje preporuke da se ime polja moraju biti zatvoreni u backquotes. Ovaj simbol se nalazi na lijevoj strani tastature, zajedno sa tilde "~". Ovo je kako bi se osiguralo da MySQL precizno mogli razlikovati naziv polja iz vaše ključne riječi.

Dinamičan rad sa podacima

Vrlo često, doći do bilo kakve podatke iz baze podataka koristeći upite, generira dinamički. Na primjer:

  • SELECT * FROM tabela WHERE broj = '$ broj'.

Evo, varijabla broj $ je predan kao utvrđivanje vrijednosti na terenu. Šta će se dogoditi ako dođe 'Obala Bjelokosti'? Greška.

Da bi izbjegli ove nevolje, naravno, možete uključiti "magic quotes" postavke. Ali sada podaci će biti prikazan kada je to potrebno i nije potrebno. Osim toga, ako je kod pisan rukom, možete provesti malo više vremena da se stvori otporne na pucanje samog sistema.

Za nezavisnu dodatak slash mogu koristiti mysql_real_escape_string.

$ Broj = mysql_real_escape_string ($ broj);

$ Godina = mysql_real_escape_string ($ godišnje);

$ Upit = "INSERT INTO stola (broj, godina, klasa) VALUES ( '$ broj', '$ godina', 11)".

Iako je kod i povećanje volumena, ali potencijalno bi raditi puno sigurnije.

čuvari mesta

Čuvari mesta - neka vrsta markera za koje sistem prepoznaje da je ovo mjesto koje trebate zamijeniti posebnu funkciju. Na primjer:

$ Sate = $ mysqli-> pripremiti ( "SELECT Distrikta Od broja GDJE Name =?");

$ Sate-> bind_param ( "e", $ broj);

$ Sate-> izvršiti ();

Ovaj dio koda potrebno je predložak zahtjev za obuku i onda vezuje varijable broj i izvršava ga. Ovaj pristup omogućuje vam podijeliti obradu upita i njegovu realizaciju. Dakle, to može biti sačuvana od korištenja malicioznog koda su SQL-.

Ono što možda napadač

Zaštita sistema - vrlo važan faktor, koji se ne može zanemariti. Naravno, jednostavna vizitkartu stranice će biti lakše vratiti. A ako je veliki portal, servis, forumu? Koje su posljedice ako ne razmišljaju o sigurnosti?

Prvo, haker može razbiti integritet i baze i potpuno ukloniti ga. A ako administratora ili hoster ne čini backup, od vas će imati teškim vremenima. Iznad svega, uljez, pucanje jednoj lokaciji, može ići u drugi pisao u istom serveru.

Sljedeći je za krađu osobnih podataka posjetitelja. Kako se koristi - sve je ograničena samo maštom hakera. No, u svakom slučaju, posljedice neće biti vrlo ugodna. Pogotovo ako se nalaze financijske informacije.

Također, napadač može spojiti baze sebe i onda iznudi novac za povratak.

Dezinformacije korisnici u ime administratora, osoba ih ne mogu biti negativne posljedice moguće činjenice prevare.

zaključak

Sve informacije u ovom članku je predviđeno samo u informativne svrhe. Koristite ga samo treba da testirati svoje projekte kada otkrije ranjivosti i obratiti ih.

Za studiju detaljnije tehnike kako da sprovedu SQL-ubrizgavanje, neophodno je da se počne sa stvarnim istraživačke sposobnosti i mogućnosti SQL jezika. Kao što je sastavio upite, ključne riječi, vrste podataka, kao i korištenje svega toga.

Također ne može učiniti bez razumijevanja rad PHP i HTML elemenata funkcije. Primarna upotreba ranjivih tačaka za ubrizgavanje - adresu linije, kao i razne polje za pretragu. Učenje PHP funkcije, način realizacije i karakteristike će shvatiti kako izbjeći greške.

Uz prisustvo velikog broja gotovih softverskih alata omogućavaju analizu na ranjivosti lokalitetu. Jedan od najpopularnijih proizvoda - kali linux. Ova slika je Linux-baziran operativni sistem, koji sadrži veliki broj alata i programa koji se mogu izvršiti sveobuhvatnu analizu snage stranice.

Ono što treba da znate kako to hack sajt To je vrlo jednostavan - potrebno je biti svjestan potencijalne ranjivosti vašeg projekta ili web stranice. Pogotovo ako se radi o online trgovine s online plaćanje, gdje podaci plaćanje korisnik može biti ugrožena od strane napadača.

Za stručni studij postojećih informacija sigurnosno osoblje će biti u mogućnosti da provjerite mjesta za različite kriterije i dubine. Počevši od jednostavnog HTML-injekcije i socijalni inženjering i phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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