Calculatoare, Programare
Care este injectarea SQL?
Numărul de site-uri și pagini de pe web este în continuă creștere. Luate pentru dezvoltarea tuturor celor care pot. Și dezvoltatorii Web novice folosesc adesea cod nesigure și vechi. Și creează o mulțime de lacune pentru criminali și hackeri. Decât acestea sunt. Una dintre cele mai clasice vulnerabilități - SQL-injecție.
Un pic de teorie
Mulți oameni știu că majoritatea site-urilor și a serviciilor de pe rețea utilizează stocarea de baze de date SQL. Acesta este un limbaj de interogare structurată , care vă permite să controleze și să gestioneze stocarea datelor. Există mai multe versiuni diferite ale bazei de date sistem de management de baze de date - Oracle, MySQL, Postgre. Indiferent de numele și tipul, folosesc aceleași date de interogare. Este aici că se află vulnerabilitate potențială. În cazul în care dezvoltatorul nu a reușit să se ocupe în mod corespunzător și în siguranță, să solicite, un atacator poate să profite de acest lucru și de a folosi tactici speciale pentru a avea acces la baza de date, și apoi - și la tot managementul site-ului.
Pentru a evita astfel de situații, aveți nevoie pentru a optimiza în mod corespunzător codul și să monitorizeze îndeaproape într-un mod în care o cerere este în curs de procesare.
Verificați pentru SQL-injectare
Pentru a stabili prezența unei vulnerabilități în rețea are o greutate de sisteme software automate finite. Dar este posibil să se efectueze manual un control simplu. Pentru a face acest lucru, du-te la unul dintre site-urile de testare și în bara de adrese pentru a încerca să provoace o eroare de bază de date. De exemplu, un script de pe site-ul nu poate gestiona solicitarea și nu le tăiați.
De exemplu, nekiy_sayt / index.php? Id = 25
Cel mai simplu mod - de a pune 25 după citatul și trimite cererea. În cazul în care a avut loc nici o eroare, fie pe site-ul și filtrul toate cererile sunt tratate corect, sau este dezactivată în setările de ieșire a acestora. Dacă o pagină este reîncărcat cu probleme, apoi vulnerabilitatea la SQL-injectare este.
După ce a aflat, puteți încerca să scape de ea.
Pentru a pune în aplicare această necesitate vulnerabilitate să știe un pic despre echipele SQL-interogări. Unul dintre ei - UNION. Acesta reunește mai multe rezultate de interogare într-una. Deci, putem calcula numărul de câmpuri în tabel. EXEMPLU Primul interogare este:
- nekiy_sayt / index.php? id = 25 UNION SELECT 1.
În cele mai multe cazuri, această înregistrare ar trebui să genereze o eroare. Acest lucru înseamnă că numărul de câmpuri nu este egal cu 1. Astfel, alegerea opțiunilor de 1 sau mai mare, este posibil să se stabilească numărul exact al acestora:
- nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.
Aceasta este, în cazul în care eroarea nu va mai apărea, aceasta înseamnă că numărul de câmpuri de ghicit.
Există, de asemenea, o soluție alternativă la această problemă. De exemplu, atunci când un număr mare de domenii - 30, 60 sau 100. Această comandă GROUP BY. grupează rezultatele unei interogări cu privire la orice motive, de exemplu, id:
- nekiy_sayt / index.php? id = 25 GROUP BY 5.
Dacă eroarea nu a fost primit, atunci câmpurile mai mult de 5. Astfel, înlocuind opțiuni dintr-o gamă destul de largă, este posibil să se calculeze cât de multe dintre ele de fapt.
Acest exemplu SQL-injectare - pentru începători care doresc să se încerce în testarea site-ului său. Este important să ne amintim că, pentru accesul neautorizat la un alt articol disponibile din Codul penal.
Principalele tipuri de injecție
Punerea în aplicare a vulnerabilității prin SQL injecție în mai multe variante. În continuare sunt cele mai populare metode:
UNION interogarea SQL injecție. Un exemplu simplu de acest tip a fost deja examinată mai sus. Acesta este realizat din cauza unei erori în verificarea datelor de intrare, care nu sunt filtrate.
Eroare pe bază de injecție SQL. După cum sugerează și numele, acest tip folosește, de asemenea, o eroare, trimiterea de expresii compuse sintactic incorecte. Apoi, există interceptarea antetelor de răspuns, analiza care pot fi efectuate mai târziu SQL injectare.
Grupată interogări SQL injecție. Această vulnerabilitate este determinată prin efectuarea de cereri succesive. Acesta este caracterizat prin adăugarea la sfârșitul semnului „;“. Această abordare este adesea pusă în aplicare pentru a avea acces la punerea în aplicare a funcțiilor de citire și scriere de date sau sistem de operare, în cazul în care privilegiile pe care le permite.
Software-ul pentru căutarea SQL vulnerabilități
Există pentru SQL-injectare, programul de obicei, au două componente - un site de scanare posibile vulnerabilități și să le utilizeze pentru a obține acces la date. Există unele instrumente pentru aproape toate platformele cunoscute. funcționalitatea lor facilitează foarte mult site-ul de verificare pentru a sparge SQL-injectare.
Sqlmap
scaner foarte puternic, care funcționează cu cele mai multe baze de date. Aceasta susține diverse metode de implementare a SQL-injectare. Ea are capacitatea de a recunoaște automat tipul de cracare parola hash și dicționar. Prezent încărcare și funcțional fișier și descărca de pe un server.
Instalarea pe Linux se realizează cu ajutorul comenzilor:
- git clona https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
- cdsqlmap-dev /,
- --wizard ./sqlmap.py.
Pentru Windows este disponibil ca opțiune cu linia de comandă și interfața grafică de utilizator.
jSQL Injectarea
jSQL Injectarea - un instrument de cross-platform pentru testarea utilizării vulnerabilități SQL. Scris în Java, astfel încât sistemul trebuie să fie instalat JRE. Capabil să se ocupe de cereri GET, POST, antet, cookie-ul. Acesta are o interfață grafică convenabilă.
Instalarea acestui pachet software este după cum urmează:
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 „| cap-n 1`
Lansarea este prin utilizarea comenzii java -jar ./jsql-injection-v*.jar
Pentru a porni site-ul de testare pe SQL-vulnerabilitate, trebuie să introduceți adresa în câmpul de sus. Ele sunt separate pentru GET și POST. Cu un rezultat pozitiv, lista tabelelor disponibile vor apărea în fereastra din stânga. Le puteți vedea și să învețe unele informații confidențiale.
Fila «pagina de administrare» utilizate pentru a găsi panourile administrative. Pe aceasta prin intermediul unor șabloane speciale caută automat sistemul înregistrează utilizatorilor privilegiați. De la ei puteți obține doar un hash al parolei. Dar el are în setul de instrumente al programului.
După ce a constatat toate vulnerabilitățile și injecție investigațiile necesare, instrumentul va permite serverului să completeze fișierul sau, dimpotrivă, descărcați-l de acolo.
SQLi Dumper v.7
Acest program - ușor de folosit instrument pentru identificarea și punerea în aplicare a vulnerabilităților SQL. Ea produce ONU se bazează pe așa-numitul Dorcas. Lista lor pot fi găsite pe internet. Dorca pentru SQL-injectare - acestea sunt șabloane speciale de interogări de căutare. Cu ajutorul lor, puteți găsi site-ul potențial vulnerabile prin orice motor de căutare.
Instrumente pentru formare
Itsecgames.com pe site-ul există un set special de instrumente care permite exemplul arată cum să facă injecție SQL și testați-l. Pentru a putea beneficia, este necesar pentru a descărca și instala. Arhiva conține un set de fișiere, care este structura site-ului. Pentru a instala aceasta va avea nevoie în sistemul existent de set de server de web Apache, MySQL si PHP.
Despachetați arhiva într - un dosar server de web, trebuie să mergeți la adresa introdusă la instalarea acestui software. O pagină cu înregistrarea utilizatorului. Aici trebuie să introduceți informațiile dvs. și să apăsați «Create». Mutarea utilizatorului la un ecran nou, sistemul vă solicită să selectați unul dintre cazurile de testare. Printre acestea sunt descrise atât prin injectare, și multe alte elemente de testare.
Este în valoare de vedere un exemplu de tip SQL injecție GET / căutare. Aici trebuie să o selectați și faceți clic pe «Hack». Înainte utilizatorul va apărea, și imitarea șir de căutare a unui site de film. Pentru a sorta filmele pot fi lung. Dar sunt doar 10. De exemplu, puteți încerca să intre în Iron Man. Acesta va indica filmul, apoi funcționează site-ul, și tabelele pe care le conține. Acum trebuie să verificați dacă filtrele de script caractere speciale, în special ofertă. Pentru a face acest lucru, adăugați „în bara de adrese." Mai mult decât atât, acest lucru trebuie să se facă după titlul filmului. Site-ul va da o eroare de eroare: Aveți o eroare în sintaxa SQL; verificați manualul care corespunde versiunii serverului MySQL pentru sintaxa dreptul de a utiliza în apropierea „%“ „la linia 1, care prevede că personajele încă nu sunt tratate corect. Deci, puteți încerca să substitui solicitarea. Dar noi trebuie să calculeze mai întâi numărul de câmpuri. Acesta este utilizat pentru această comandă, care se introduce după ghilimelele: http://testsites.com/sqli_1.php?title=Iron+Man „comanda 2 - & action = căutare.
Această comandă afișează numai informații despre film, care este, numărul de câmpuri este mai mare decât 2. Cratimă dublă spune serverul că celelalte cereri trebuie să fie eliminate. Acum trebuie să rezolve, punând o importanță tot mai mare, atâta timp cât eroarea nu este imprimată. În final, se dovedește că câmpurile vor fi 7.
Acum este timpul pentru a obține ceva util în afara bazei. Va modifica ușor cererea în bara de adrese, aducând-o formă: http://testsites.com/sqli_1.php?title=Iron+Man „unire selectați 1, baza de date (), utilizator (), 4, parola, 6, 7 de la utilizatori - & action = căutare. Ca urmare a punerii sale în aplicare ar afișa șirul cu parolele HASH, care pot fi ușor transformate în simboluri inteligibile, utilizând una dintre serviciile on-line. Un Chemat un pic și a luat un nume de câmp cu date de conectare, puteți avea acces la intrarea altcuiva, cum ar fi administrator al site-ului.
Produsul are un tip de injecție specie de greutate, pe care să se practică. Trebuie amintit faptul că aplicarea acestor competențe în rețea pe site-urile reale pot fi o infracțiune.
Injectarea și PHP
Ca o regulă, PHP-cod și este responsabil pentru cererile de prelucrare necesare provenind din partea utilizatorului. Prin urmare, la acest nivel ai nevoie pentru a construi o apărare împotriva SQL injecție în PHP.
În primul rând, să dea câteva reguli simple, pe baza cărora este necesar să se facă acest lucru.
- Datele trebuie să fie procesate întotdeauna înainte de a fi introduse în baza de date. Acest lucru se poate face fie prin utilizarea de expresii existente, sau prin organizarea manual interogări. Aici, de asemenea, ar trebui să ia în considerare faptul că valorile numerice sunt convertite la tipul de care este nevoie;
- Evitată a determinat diferite structuri de control.
Acum, un pic despre regulile de compilare interogări în MySQL pentru a proteja împotriva SQL-injectare.
La elaborarea orice expresii pentru a interoga este important să se separe datele din cuvintele cheie SQL.
- SELECT * FROM tabel WHERE nume = Zerg.
În această configurație, sistemul ar putea crede că Zerg - numele oricărui câmp, deci trebuie să-l includeți în ghilimele.
- SELECT * FROM tabel WHERE nume = 'Zerg'.
Cu toate acestea, există momente când valoarea în sine conține citate.
- SELECT * FROM tabel WHERE name = 'Côte d'Ivoire'.
Aici se ocupe doar o parte din Côte d, iar restul poate fi percepută ca o echipă, care, desigur, nu. Prin urmare, apare o eroare. Apoi, aveți nevoie de acest tip de date de screening. Pentru a face acest lucru, utilizați o bară oblică - \.
- SELECT * FROM tabel WHERE nume = 'pisica-d \' Ivoire“.
Toate cele de mai sus se referă la rândurile. În cazul în care acțiunea are loc cu un număr, atunci nu are nevoie de nici un ghilimele sau linii oblice. Cu toate acestea, ele ar trebui să conducă în mod forțat la tipul de date dorit.
Există recomandări că numele câmpului trebuie să fie închise în backquotes. Acest simbol este pe partea stângă a tastaturii, împreună cu un tilda „~“. Acest lucru este de a se asigura că MySQL ar putea distinge cu exactitate numele câmpului din cuvântul dvs. cheie.
lucru dinamic cu date
Foarte des, pentru a obține orice date din baza de date folosind interogări, generate în mod dinamic. De exemplu:
- SELECT * FROM tabel WHERE 'număr $' = numărul.
Aici, numărul $ variabila este trecut ca determinarea valorii câmpului. Ce se va întâmpla în cazul în care devine „Coasta de Fildeș“? Eroare.
Pentru a evita această problemă, desigur, puteți include „citate magice“ setările. Dar acum datele vor fi analizate în cazul în care este necesar și nu este necesar. În plus, în cazul în care codul este scris de mână, puteți petrece mai mult timp pentru a crea rezistenta la fisurare a sistemului în sine.
Pentru adăugarea independentă de o bară oblică poate folosi mysql_real_escape_string.
$ Number = mysql_real_escape_string (număr $);
$ An = mysql_real_escape_string ($ ani);
$ Query = "INSERT INTO tabel (număr, an, clasa) values ( 'număr $', '$ an', 11)".
Deși codul și a crescut în volum, dar potențial ar funcționa mult mai sigur.
substituenţi
Placeholders - un fel de markeri pentru care sistemul recunoaște că acesta este locul pe care trebuie să înlocuiască o funcție specială. De exemplu:
$ = $ Mysqli- Sate> pregăti ( "SELECT District de la numărul de unde nume =?");
$ Sate-> bind_param ( "s", numărul $);
$ Sate-> execute ();
Această secțiune de cod trimite o cerere șablon de formare și apoi se leagă numărul variabil, și-l execută. Această abordare vă permite să împartă procesarea interogare și punerea sa în aplicare. Astfel, acesta poate fi salvat din utilizarea de cod malițios sunt SQL-.
Ce ar putea un atacator
Sistemul de protecție - un factor foarte important, care nu poate fi neglijat. Desigur, un simplu site-ul carte de afaceri va fi mai ușor pentru a restabili. Și dacă este un portal mare, un serviciu, un forum? Care sunt consecințele dacă nu crezi despre securitate?
În primul rând, un hacker poate rupe integritatea atât a bazei și scoateți-l complet. Și dacă administratorul site-ului sau câmin nu face o copie de siguranță, va avea vremuri grele. Mai presus de toate, un intrus, cracare un singur site, pot merge la celălalt postat în același server.
În continuare este furtul de informații personale ale vizitatorilor. Cum se folosește - totul este limitată doar de imaginația unui hacker. Dar, în orice caz, consecințele nu vor fi foarte plăcut. Mai ales în cazul în care conținea informații financiare.
De asemenea, atacatorul poate fuziona baza de date cu tine și apoi stoarce bani pentru întoarcerea sa.
Utilizatorii de dezinformare în numele administratorului site-ului, persoana care nu sunt, pot fi, de asemenea, consecințe negative ca posibile fapte de fraudă.
concluzie
Toate informațiile din acest articol sunt furnizate numai în scop informativ. Utilizați-l nevoie doar pentru a testa propriile proiecte atunci când detectează vulnerabilități și să le abordeze.
Pentru un studiu mai aprofundat al tehnicilor de modul de efectuare a SQL-injectare, este necesar să se înceapă cu capacitățile de cercetare actuale și caracteristici ale limbajului SQL. Ca interogări compilate, cuvinte cheie, tipuri de date, precum și utilizarea de toate.
De asemenea, nu se poate face fără a înțelege operarea funcțiilor PHP și elemente HTML. Utilizarea primară puncte vulnerabile pentru injectare - o linie de adrese și diverse domenii de căutare. Learning funcții PHP, metoda de punere în aplicare și caracteristici vor da seama cum să evite greșelile.
Prezența multor instrumente software gata făcute pentru a permite o analiză aprofundată pe site-ul cunoscut vulnerabilități. Una dintre cele mai populare produse - kali Linux. Această imagine a unui sistem de operare bazat pe Linux, care conține un număr mare de instrumente și programe care pot efectua analize cuprinzătoare a rezistenței site-ului.
Ce trebuie să știi cum să hack site-ul? Este foarte simplu - este necesar să fie conștienți de potențialele vulnerabilități ale proiectului sau site-ul. Mai ales în cazul în care acesta este un magazin online cu plata on-line, în cazul în care datele de utilizator de plată poate fi compromisă de către un atacator.
Pentru studiul profesional al personalului de securitate a informațiilor existente vor fi în măsură pentru a verifica site-ul pentru o varietate de criterii și adâncime. Pornind de la un simplu HTML-injecții și inginerie socială și phishingul.
Similar articles
Trending Now