RačunalaProgramiranje

Što je injekcija SQL?

Broj stranica i stranica na webu je u stalnom porastu. Uzeti za razvoj svih onih koji mogu. A početnici web programeri često koriste nesiguran i starog koda. A to stvara puno rupa za kriminalce i hakera. Nego što jesu. Jedan od najvažnijih klasičnih propusta - SQL injekcije.

Malo teorije

Mnogi ljudi znaju da je većina web-mjesta i usluga na mreži pomoću pohranu SQL baze podataka. To je strukturirani jezik upita koji vam omogućuje kontrolu i upravljanje za pohranu podataka. Postoje mnoge različite verzije sustava baza podataka za upravljanje bazom podataka - Oracle, MySQL, Postgre. Bez obzira na ime i vrstu, oni koriste iste podatke upita. Ona je ovdje da leži potencijalni ranjivost. Ako programer nije uspio nositi ispravno i sigurno tražiti, napadač može iskoristiti ove i koristiti posebne taktike za pristup bazi podataka, a zatim - i svim upravljanje web-mjestu.

Da biste izbjegli takve situacije, morate ispravno optimizirati kod i pomno pratiti na način na koji se obrađuju zahtjev.

Provjerite za SQL injekcije

Utvrditi prisutnost ranjivosti u mreži ima težinu od gotovih automatskih softverskih sustava. No, moguće je provesti jednostavnu provjeru ručno. Da biste to učinili, idite na jednom od ispitnih mjesta i u adresnoj traci pokušati izazvati pogrešku baze podataka. Na primjer, skripta na mjestu ne može obraditi zahtjev i nemojte ih smanjiti.

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

Najlakši način - staviti 25 nakon citat i poslati zahtjev. Ako je došlo, bilo na mjestu i filter nema pogreške svi zahtjevi se obrađuju ispravno ili je onemogućen u postavkama svojih proizvoda. Ako stranica je reloaded s problemima, onda je ranjivost na SQL injekcije je.

Nakon što je saznala, možete pokušati da biste dobili osloboditi od njega.

Za provedbu ove ranjivosti moraju znati malo o SQL-upita timova. Jedan od njih - Unije. Okuplja nekoliko rezultata upita u jedan. Tako možemo izračunati broj polja u tablici. Primjer prvi upit:

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

U većini slučajeva, ovaj album bi trebao generirati pogrešku. To znači da je broj područja nije jednak 1. Dakle, odabirom opcije 1 ili veći, to je moguće utvrditi točan broj:

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

To jest, kada će se pogreš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 se veliki broj područja - 30, 60 ili 100. Ova naredba GROUP BY. To je skupina rezultate upita na bilo kojoj osnovi, na primjer id:

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

Ako nije primljena je pogreška, polja više od 5. Dakle, zamjenom opcije s vrlo širokom rasponu, moguće je izračunati koliko je od njih zapravo.

Ovaj primjer SQL injection - za početnike koji žele sami isprobati u testiranju svoje stranice. Važno je zapamtiti da je za neovlašteni pristup drugom dostupnom članak Kaznenog zakona.

Glavne vrste injekcije

Provesti ranjivost SQL injekcije u nekoliko ostvarenja. Zatim su najpopularnije metode:

  • Sindikat je upita SQL injekcije. Jednostavan primjer ove vrste je već ranije ispitan. To se ostvaruje zbog pogreške u provjeru ulaznih podataka koji nisu filtrirane.

  • Greška se temelji na SQL injection. Kao što naziv implicira, ovaj tip također koristi grešku, slanje izraze sastavljene sintaktički pogrešan. Zatim tu je presretanje zaglavlja odgovora, analize koje se mogu provoditi kasnije SQL injekciju.

  • Složeni upite SQL injekciju. Ova ranjivost se određuje izvođenje uzastopnih zahtjeva. Odlikuje se dodatkom na kraju znaka „;”. Ovaj pristup se često provodi za pristup provedbu čitanje i pisanje podataka ili operativni sustav funkcionira, ako se povlastice to dopustiti.

Softver za pretraživanje SQL ranjivosti

Ima li za SQL injekcije, program obično imaju dvije komponente - site skeniranje za moguće ranjivosti i koristiti ih kako bi dobili pristup podacima. Postoje neki alati za gotovo sve poznate platforme. Njihova funkcionalnost uvelike olakšava provjeru web ispucati svoj SQL injekciju.

Sqlmap

Vrlo snažan skener koji radi s većinom baza podataka. Ona podržava razne metode provedbe SQL injekcije. Ona ima sposobnost da se automatski prepoznati vrstu lozinka hash krekiranja i rječniku. Sadašnjost i funkcionalan file upload i preuzimanje s poslužitelja.

Instalacija na Linuxu se izvodi pomoću naredbe:

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

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

jSQL ubrizgavanje

jSQL injekcija - cross-platforma alat za testiranje korištenje SQL ranjivosti. Napisan u Javi, tako da sustav mora biti instaliran JRE. U mogućnosti da obrađuju GET zahtjeva, POST, zaglavlja, kolačiće. To je zgodan grafičko sučelje.

Instalacija ovog programskog paketa 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]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} .jar „| Glava-n 1`

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

Kako bi se početi poligonu na SQL ranjivosti, potrebno je upisati adresu u gornjem polju. Oni su zasebna za GET i POST-a. S pozitivnim rezultatom, popis dostupnih tablica će se pojaviti u lijevom prozoru. Možete ih vidjeti i naučiti neke povjerljive informacije.

Kartica «Admin stranica» koristi za pronalaženje administrativne ploče. Na to pomoću posebnih predložaka automatski pretražuje sustav bilježi privilegiranih korisnika. Od njih možete dobiti samo skraćeni oblik lozinke. No, on je u alatni programa.

Nakon što je nalaz svih ranjivosti i injekcije potrebne uvide u, alat će vam omogućiti da poslužitelj ispunite svoje datoteke ili, obrnuto, preuzmite ga od tamo.

SQLi Damper V.7

Ovaj program - jednostavan za korištenje alata za pronalaženje i provedbu SQL ranjivosti. Ona proizvodi UN temelji se na tzv Dorcas. Njihov popis se može naći na internetu. Dorca za SQL injekcije - to su posebni obrasci upita za pretraživanje. Uz njihovu pomoć, možete pronaći potencijalno ranjivim stranice u tražilicama.

Alati za trening

Itsecgames.com na licu postoji poseban skup alata koji omogućuje primjer pokazuje kako napraviti SQL injection i testirati ga. Da bi se iskoristila, potrebno je preuzeti i instalirati. Arhiva sadrži skup datoteka, što je struktura stranice. Za instalaciju će morati u postojećem sustavu skupa Apache web server, MySQL i PHP.

Raspakirajte arhivu u mapu web server, morate otići na adresu unijeli prilikom instalacije ovog softvera. Stranica s registraciju korisnika. Ovdje morate unijeti svoje podatke i kliknite «Stvori». Premještanje korisnika na novi ekran, sustav od vas traži da odaberete jednu od testnih slučajeva. Među njima su i opisani u obliku injekcija, i mnoge druge ispitne predmete.

To vrijedi s obzirom na primjer tipa SQL injection GET / Search. Ovdje morate ga odabrati i kliknite «Hack». Prije će se pojaviti korisnika, a potraga niz imitacija filma stranice. Za sortiranje filmovi mogu biti dugo. No, tu su samo 10. Na primjer, možete pokušati ući u Iron Man. To će ukazati na film, onda je site radi i stolove sadrži. Sada moramo provjeriti da li posebni znakovi skripta filtera, posebno citat. Da biste to učinili, dodajte „u adresnoj traci." Štoviše, to mora biti učinjeno nakon naslova filma. Stranica će dati pogrešci Greška: Morate pogrešku u vašem SQL syntax; provjeriti priručnik koji odgovara na Vaš MySQL poslužitelj verzija za pravo koristiti sintaksu u blizini „%” „na liniji 1, u kojem se navodi da su likovi još uvijek nisu ispravno rukuje. Na taj način možete pokušati zamijeniti vaš zahtjev. Ali prvo moramo izračunati broj polja. To se koristi za ovu nalogu, koji je uveden nakon citati: http://testsites.com/sqli_1.php?title=Iron+Man „uredi prema 2 - & action = pretragu.

Ova naredba prikazuje samo informacije o filmu, koji je broj polja je veća od 2. dvostruka crtica kaže server da drugi zahtjevi moraju biti odbačeni. Sada moramo riješiti, stavljajući veći značaj sve dok se greška ne ispisuje. Na kraju ispada da će polja biti 7.

Sada je vrijeme da se nešto korisno iz baze. Hoće li nešto mijenjati zahtjev u adresnu traku, a donosi ga u obliku: http://testsites.com/sqli_1.php?title=Iron+Man „Sindikat odabrati jedan, baze podataka (), korisnik (), 4, lozinka, 6, 7 od korisnika - & action = pretraživanja. Kao rezultat njegove primjene će se prikazati niz s lozinkom hashes, koji se lako može pretvoriti u razumljivih simbola koje koriste jedan od online usluga. Prizvala malo i uzela naziv polja s podacima za prijavu, možete dobiti pristup tuđe ulaska, kao admin stranice.

Proizvod ima vrsta težina vrsta injekcije, na kojima se prakticiraju. To treba imati na umu da primjena tih vještina u mreži na stvarnim mjestima može biti kazneno djelo.

Injection i PHP

U pravilu, PHP-kod i odgovoran je za potrebne zahtjeve za obradu dolaze od korisnika. Dakle, na ovoj razini morate izgraditi obranu protiv SQL injekcije u PHP-u.

Prvo, neka je dati nekoliko jednostavnih smjernica, na temelju kojih je potrebno učiniti.

  • Podaci se uvijek mora obraditi prije stavljanja u bazu podataka. To se može učiniti ili pomoću postojeće izraze ili organiziranjem upita ručno. Ovdje, također, treba uzeti u obzir da su brojčane vrijednosti se pretvaraju u tip koji je potreban;
  • Izbjegavati zatraži različite kontrolne strukture.

Sada malo o pravilima sastavljanja upita u MySQL za zaštitu od SQL injekcije.

U izradi bilo koje izraze upita je važno odvojiti podatke iz SQL ključne riječi.

  • SELECT * FROM tablica WHERE ime = Zerg.

U ovoj konfiguraciji, sustav može misliti da Zerg - ime bilo kojeg područja, tako da je potrebno da ga priložiti u navodnike.

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

Međutim, postoje slučajevi kad je sama vrijednost sadrži citate.

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

Ovdje samo nositi dio Côte d, a ostatak može se promatrati kao tim, što, naravno, ne. Dakle, dolazi do pogreške. Tada vam je potrebna ova vrsta podataka probira. Da biste to učinili, upotrijebite obrnutu kosu crtu - \.

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

Sve navedeno odnosi se na redove. Ako se radnja odvija s brojem, onda to ne treba niti citati ili kose crte. Međutim, oni bi trebali biti potrebna za prisilno dovesti do željene vrste podataka.

Tu su preporuke da se naziv polje mora biti zatvorena u backquotes. Ovaj simbol se nalazi na lijevoj strani tipkovnice, zajedno s tilda „~”. Ovo je kako bi se osiguralo da MySQL točno mogao razlikovati naziv polja iz Vaše ključne riječi.

Dinamički rad s podacima

Vrlo često, kako bi dobili podatke iz baze podataka koristeći upite, generira dinamički. Na primjer:

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

Evo, varijabla broj $ je prošao kao utvrđivanja vrijednosti polja. Što će se dogoditi ako ga dobiva „Cote d'Ivoire”? Greška.

Da biste izbjegli taj problem, naravno, možete uključiti „Magic citati” postavke. Ali sada će podaci biti prikazan kad je to potrebno, a ne nužno. Osim toga, ako kod je napisan rukom, možete provesti malo više vremena za stvaranje otporne na pucanje samog sustava.

Za samostalno dodavanje kosom crtom mogu koristiti mysql_real_escape_string.

$ Broj = mysql_real_escape_string ($ broj);

$ Godina = mysql_real_escape_string ($ godišnje);

$ Upita = "INSERT INTO tablica (broj, godina, klasa) VALUES ( '$ broj', '$ godišnje', 11)".

Iako je kod i povećao volumen, ali potencijalno bi raditi puno sigurnije.

rezerviranih mjesta

Rezerviranih - vrsta markera za koje sustav prepozna da je to mjesto na koje je potrebno zamijeniti posebnu funkciju. Na primjer:

$ Sate = $ mysqli-> pripremiti ( "SELECT Distrikt OD broj na ime =?");

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

$ Sate-> izvršiti ();

Ovaj dio koda potrebno zahtjeva predložak trening, a zatim veže promjenljivo broj, i to izvršava. Ovaj pristup omogućuje da podijelite obradu upita i njegovu provedbu. Dakle, može se spremiti iz upotrebe malicioznog koda su SQL-.

Što bi moglo napadač

Sustav zaštite - vrlo važan faktor, koji se ne može zanemariti. Naravno, jednostavna posjetnica stranice će biti lakše vratiti. A ako je veliki portal, servis, Forum? Koje su posljedice ako ne razmišljaju o sigurnosti?

Prvo, haker može razbiti cjelovitost obje baze i ukloniti ga u potpunosti. A ako administratora ili domaćinom ne napraviti backup, od vas će imati teška vremena. Iznad svega, uljez, pucanja jednu stranicu, mogu ići u drugi objavljena u istom poslužitelju.

Sljedeća je krađa osobnih podataka posjetitelja. Kako koristiti - sve je ograničen samo maštom hakera. No, u svakom slučaju, posljedice neće biti vrlo ugodan. Pogotovo ako je sadržavala financijske informacije.

Također, napadač može spojiti baze podataka sebe, a zatim iznuditi novac za povratak.

Dezinformacija korisnici na ime administrator, osoba se ne bude, može biti i negativne posljedice kao mogućih prijevara činjenice.

zaključak

Sve informacije u ovom članku je samo za informativne svrhe. Koristite ga samo treba testirati svoje projekte, kada se otkrije ranjivosti i njihovo rješavanje.

Za više detaljnih proučavanja tehnike kako provesti SQL injekciju, potrebno je započeti sa stvarnim istraživačkih sposobnosti i značajke SQL jezika. Kao sastavio upite, ključne riječi, vrste podataka i korištenje svega toga.

Isto tako ne može učiniti bez razumijevanja rad PHP i HTML elemenata funkcije. Primarna upotreba ranjive točke za injekcije - Adresa linija i raznih polje za pretraživanje. Učenje PHP funkcije, način provedbe i mogućnosti će shvatiti kako izbjeći pogreške.

Prisutnost mnogih gotovih softverskih alata omogućuju detaljnu analizu na mjestu poznati ranjivosti. Jedan od najpopularnijih proizvoda - Kali Linux. Ova slika Linux-temeljen operativni sustav, koji sadrži velik broj alata i programa koji se provode opsežnu analizu snage mjestu.

Što trebate znati kako to hack stranice? To je vrlo jednostavan - potrebno je biti svjestan potencijalne ranjivosti vašeg projekta ili web stranicu. Pogotovo ako se radi o online trgovine s online plaćanja, gdje podaci za plaćanje korisnik može biti ugrožena od strane napadača.

Za stručni studij postojećih informacijske sigurnosti osoblja će biti u mogućnosti da provjerite site za razne kriterije i dubine. Polazeći od jednostavnih HTML-injekcije i društvenog inženjeringa i krađe identiteta.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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