Broj web lokacija i stranica na webu stalno raste. Za razvoj uzimaju svi koji mogu samo. I novajlija web programeri često koriste opasan i stari kod. I to stvara puno rupa za uljeze i hakere. Što koriste. Jedna od klasičnih ranjivosti je SQL injection.
Malo teorije
SQL provjera ubrizgavanja
Kada ga jednom otkrijete, možete ga pokušati riješiti. Da biste implementirali ovu ranjivost, morate znati nešto o naredbama SQL-upita. Jedan od njih je UNION. Kombinira više rezultata upita u jedan. Tako možete izračunati broj polja u tablici. Primjer prvog upita izgleda ovako:
Glavne vrste injekcija
Softver za pretraživanje ranjivosti SQL-a
Sqlmap
jSQL Injection
Instaliranje ovog softvera je kako slijedi: 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 '| glava-n 1 '
Nakon pronalaženja svih ranjivosti i ubrizgavanja potrebnih upita, uslužni program će popuniti datoteku na poslužitelju ili, naprotiv, preuzeti s nje.
Ovaj je program jednostavan alat za pronalaženje i implementaciju ranjivosti uSQL. Proizvodi ga na temelju tzv. Njihov se popis nalazi na internetu. SQL injekcijske patke su posebni predlošci za pretraživanje. Uz njihovu pomoć možete pronaći potencijalno osjetljivo mjesto putem bilo koje tražilice.
Stranica itsecgames.com ima poseban alat koji vam omogućuje da uzmete primjer kako napraviti SQL injekciju i testirati ga. Da biste ga mogli koristiti, potrebno ju je preuzeti i instalirati. Arhiva sadrži skup datoteka koje predstavljaju strukturu stranice. Da biste ga instalirali, trebat će vam postavljanje Apache, MySQL i PHP web poslužitelja.
Nakon raspakiranja arhive u mapu web-poslužitelja, morate otići na adresu koju ste unijeli prilikom instalacije ovog softverskog proizvoda. Otvara se stranica za registraciju korisnika. Ovdje trebate unijeti svoje podatke i kliknuti na "Kreiraj". Kada premjestite korisnika u novi prozor, sustav će predložiti da odaberete jednu od mogućnosti testiranja. Među njima su i opisane injekcije i mnogi drugi testni zadaci. Vrijedi razmotriti primjer SQL injekcije kao što je GET /Search. Ovdje ga morate odabrati i kliknuti na "Hack". Korisnik će vidjeti niz za pretraživanje i simulirati web-lokaciju s filmovima. Filmove možete gledati dugo vremena. Ali oni su samo 10. Na primjer, možete pokušati ući u Iron Man. Prikazat će se film, što znači da stranica funkcionira, au njemu su tablice. Sada je potrebno provjeriti da li će skripta filtrirati posebne znakove, osobito navodnike. Da biste to učinili, morate dodati "" u adresnu traku. " Štoviše, potrebno je to učiniti nakon imena filma. Web-lokacija će izazvati pogrešku Pogreška: Imate pogrešku u programuvašu SQL sintaksu; provjerite priručnik koji odgovara vašoj verziji MySQL poslužitelja za odgovarajuću sintaksu koju koristite u blizini '%' u retku 1, što znači da su znakovi još uvijek nepravilno obrađeni. Dakle, možete pokušati poslati svoj zahtjev. To je učinjeno pomoću redoslijeda po, koji se unosi nakon navoda: http://testsites.com/sqli_1.php?title=Iron+Man 'redoslijed 2 - & amp; akcija = pretraživanje. broj polja je veći od 2. Dvostruka crtica govori poslužitelju da druge upite treba odbaciti, a sada moramo proći, zamjenjujući sve velike vrijednosti za one p p, dok ne dođe do pogreške. Na kraju se ispostavi da će polja biti 7.
Sada je vrijeme da se iz baze dobije nešto korisno. Morat ćete izmijeniti dio upita u adresnoj traci i dovesti ga do sljedeće vrste: http://testsites.com/sqli_1.php?title=Iron+Man & amp; akcija = pretraživanje Kao rezultat njegovog izvršenja, prikazat će se linije s hashovima lozinki koje se mogu lako pretvoriti u razumljive znakove pomoću jedne od online usluga. Malo krivudav i bira ime polja s prijavom, možete pristupiti drugom računu, na primjer, administratoru web-lokacije. Proizvod ima različite vrste injekcija koje se mogu prakticirati. Vrijedno je zapamtiti da korištenje tih vještina u mreži, na stvarnim stranicama može biti kazneno.
Obično je to PHP kod i odgovoran je za potrebnu obradu zahtjeva koji dolaze od korisnika. Stoga, na ovoj razini, morate izgraditi zaštitu od SQL injekcije u PHP-u. Za početak, vrijedi dati neke jednostavne preporukena temelju kojih je to potrebno učiniti.Podaci se uvijek moraju obraditi prije prostora u bazi. Može se implementirati ili korištenjem postojećih izraza ili ručno raspoređivanjem zahtjeva. I ovdje treba imati na umu da se brojčane vrijednosti pretvaraju u traženi tip; Izbjegavajte tražiti pojavu različitih kontrolnih struktura. Sada malo o pravilima za upit MySQL za SQL injection zaštitu. Prilikom sastavljanja izraza za upit važno je odvojiti podatke od SQL ključnih riječi.SELECT * FROM tablica WHERE ime = Zerg. U ovom dizajnu, sustav može misliti da je Zerg naziv polja, tako da ga morate staviti u navodnike.SELECT * FROM tablica WHERE ime = 'Zerg'. Međutim, postoje situacije u kojima sama vrijednost sadrži šape. SELECT * FROM tablica WHERE ime = 'cat-d'avour'. Ovdje će se obraditi samo dio mačke-d, a ostatak se može shvatiti kao tim, što, naravno, nije. Stoga će doći do pogreške. Stoga je potrebno zaštititi ovu vrstu podataka. Time se koristi obrnuta kosa crta.SELECT * FROM tablica WHERE ime = 'cat-d'avour'. Sve navedeno vrijedi za žice. Ako se dogodi akcija s brojem, tada joj nije potrebna noga ili crta. Međutim, nužno ih je potrebno prisiliti da dovedu do potrebne vrste podataka. Postoji preporuka da se ime polja unese u recipročne navodnike. Ovaj se znak nalazi na lijevoj strani tipkovnice, zajedno s znakom tilde "~". To je potrebno kako bi MySQL točno razlikovao naziv polja od ključne riječi.
Vrlo često se upiti koji se generiraju dinamički koriste za dobivanje podataka baze podataka. Na primjer: SELECT * FROM tablica WHERE broj = '$ number'. Ovdje je varijabla $ number proslijeđena kao vrijednost polja. Što će se dogoditi ako udari u cat-d'vivar? Greška. Izbjegavajte ovaj problem, naravno, možete uključiti "čarobne citate" u postavke. Ali sada će podaci biti zaštićeni tamo gdje je to potrebno i nisu potrebni. Osim toga, ako je kod pisan ručno, onda možete provesti malo više vremena pokušavajući stvoriti sustav otporan na sam hack. Možete koristiti mysql_real_escape_string da biste dodali kosu crtu. $ number = mysql_real_escape_string ($ number); $ year = mysql_real_escape_string ($ year); $ query = "INSERT INTO tablica (broj, godina, klasa) VALUES ('$ number', '$ year', 11)". Iako je kod narastao, ipak, potencijalno će raditi mnogo sigurnije.
Placeholderi su osebujni markeri, prema kojima sustav uči da za ovo mjesto mora biti zamijenjena posebna funkcija. Na primjer: $ sate = $ mysqli-> prepare ("SELECT District Number FROM WHERE Name =?"); $ sate- & gt; bind_param ("s", $ number); $ sate- & gt; izvršavanje (); Ovaj isječak koda priprema predložak upita, zatim veže broj varijable i izvršava ga. Ovaj pristup omogućuje odvajanje obrade zahtjeva i njegove provedbe. Tako možete biti zaštićeni od uvođenja SQL upita zlonamjernog koda.
Zaštita sustava je vrlo važan čimbenik koji se ne može zanemariti. Naravno, jednostavna web-posjetnica bit će lakše obnoviti. A ako je ovo odličan portal, usluga, forum? Koje su posljedice ako ne razmišljate o sigurnosti? Prvo, haker možeometati integritet baze podataka i ukloniti je u potpunosti. A ako administrator web-mjesta ili hoster nije napravio sigurnosnu kopiju, onda nećete biti sretni. Osim toga, napadač, koji je slomio jednu web-lokaciju, može se prebaciti na druge hostove na istom poslužitelju. Slijedi krađa osobnih podataka posjetitelja. Kako ih koristiti - sve je ovdje ograničeno samo maštom hakera. No, u svakom slučaju, posljedice neće biti tako ugodne. Pogotovo ako postoje financijske informacije. Također, napadač može spojiti bazu i onda tražiti novac za njezin povratak. Dezinformacija korisnika u ime administratora stranice, oni nemaju osobu, također mogu imati negativne posljedice, kao moguće prijevare.
Sve informacije u ovom članku daju se samo u informativne svrhe. Potrebno ga je koristiti samo za testiranje vlastitih projekata pri otkrivanju nedostataka i njihovo otklanjanje. Za dublje istraživanje o tome kako provesti SQL injekciju, morate pokrenuti vlastito istraživanje značajki i značajki SQL jezika. Kako se primjenjuju upiti, ključne riječi, vrste podataka i sve to. Također, bez razumijevanja funkcija PHP i HTML elemenata. Glavne ranjivosti za uporabu ubrizgavanja su adresna traka, pretraživanje i različita polja. Proučavanje funkcija PHP-a, način njihove implementacije i mogućnosti omogućit će vam da shvatite kako izbjeći pogreške. Dostupnost mnogih gotovih softverskih alata omogućuje duboku analizu stranice o poznatim ranjivostima. Jedan od najpopularnijih proizvoda je kali linux. To je slikaLinux operativni sustav, koji sadrži veliki broj uslužnih programa i programa sposobnih za sveobuhvatnu analizu snage stranice. Zašto morate znati kako razbiti stranicu? Sve je vrlo jednostavno - potrebno je imati ideju o potencijalno ranjivim mjestima vašeg projekta ili stranice. Pogotovo ako se radi o internetskoj trgovini s opcijom plaćanja na mreži, pri čemu napadač može kompromitirati pojedinosti o plaćanju korisnika. Za profesionalna istraživanja postoje službe za informacijsku sigurnost koje će moći provjeriti lokaciju prema različitim kriterijima i dubini. Od jednostavnih HTML injekcija do socijalnog inženjeringa i phishinga.