Testarea penetrării este actul de a testa o rețea pentru a detecta vulnerabilitățile de securitate înainte de a fi exploatate de către un atacator sau hackeri rău intenționați. DE-ICE este o mașină virtuală care conține o instalare Linux Slax și servește pentru a practica atât pentru începători până la practicieni avansați.
Slax este un CD live al sistemului de operare GNU / Linux bazat pe distribuția Slackware. Slax este un sistem de operare portabil Linux, nu ocupă mult spațiu și oferă performanțe rapide.
Slax oferă un depozit de software preinstalat și este utilizat pe scară largă de administratori pentru a crea platforme de testare, distribuții specifice și utile pentru a crea instrumente de recuperare, teste de penetrare, securitate și simulări de rețea cu mașini virtuale pentru administratorii de sistem și dezvoltatorii de software sau experți în securitate, sistemul ocupă aproximativ 190 MB. O interfață grafică poate sau nu poate fi instalată, dar aceasta ar ocupa mult spațiu și ar face sistemul lent.
De-ICE poate fi instalat în VirtualBox sau ars pe CD pentru a fi utilizat ca LiveCD. Există mai multe versiuni care prezintă diferite niveluri de dificultate, versiunea pentru începători este DE-ICE1.100, iar cea mai complexă în prezent este DE-ICE1.140. Pentru acest tutorial vom folosi versiunea DE-ICE 1.120 disponibilă la https: //www.vulnhub… .e-ice-s1120,10 /.
Această mașină virtuală este special pregătită pentru a ne testa cunoștințele și pentru a aplica orice tehnici sau instrumente de testare a penetrării.
Pentestarea laboratorului De-ICE PenTest 1.120
Pentru procedurile de testare a penetrării, instalați versiunea DE-ICE.1.120 și folosesc Linux Mint și VirtualBox pentru a instala DE-ICE. Poate fi utilizat din orice sistem de operare care vă permite să creați o mașină virtuală.
Încep să caut IP-ul meu curent de la un terminal folosind comanda ifconfig și rezultatul este următorul:
IP: 192.168.0.11
În continuare folosesc diferite programe software la alegerea mea, dar pot încerca pe alții să se potrivească utilizatorului.
A) Eu folosesc Zenmap pentru a scana toate gazdele între 1-254
În tutoriale:
- Instrument vizual Zenmap pentru testarea securității porturilor
- Cum se folosește Nmap pentru a scana porturile deschise pe cadrul VPS și Metasploit pentru a testa securitatea serverului
Am văzut câteva instrumente pentru scanarea porturilor și cum să le folosim.
Deschidem Zenmap, aloc IP-ul și parametrii astfel încât să scaneze întreaga rețea și să-mi arate echipamentul conectat și IP-urile.
IP 192.168.0.1 corespunde IP-ului Gateway al routerului cu portul 80 deschis și IP-ului routerului 192.168.0.10 cu toate porturile închise.
Privind topologia și caracteristicile fiecărei gazde, stabilesc că IP 192.168.0.38 este IP-ul WiFi al mașinii virtuale și IP 192.168.0.40 este conexiunea Ethernet este mașina virtuală.
Accesez IP-ul mașinii virtuale sau VPS și găsesc un site web pentru a înregistra produse.
În principiu [color = # b22222] o eroare gravă [/ color] ar fi aceea că acest site web nu are niciun fel de control al accesului utilizatorilor, în acest fel ar avea acces la toți utilizatorii rețelei, indiferent cât de mult este într-un intranet.
De la Zenmap observ și porturile scanate pentru această gazdă.
Găsesc mai multe porturi deschise pentru a încerca accesul atacurilor cu forță brută forțând utilizatorul și parola cu instrumente precum Hydra sau John the Ripper, printre altele.
Putem vedea, de asemenea, topologia pentru a analiza fiecare gazdă și cu care este conectată.
Astfel, putem vedea în acest fel caracteristicile echipamentului, modul în care este configurată rețeaua și care sunt gazdele pe care le putem ataca.
B) Scanarea vulnerabilității
Folosesc OSWAP ZAP pentru a face o scanare a vulnerabilităților. Am văzut acest instrument în tutorial:
- Scanați o vulnerabilitate a unui site web cu ZAP
Ne permite să scanăm vulnerabilitățile unui site web prin prezentarea rapoartelor despre vulnerabilitățile găsite.
Folosind reguli de scanare active și pasive, putem găsi vulnerabilitățile internetului. De asemenea, ne arată toate paginile pe care le conține web, ba chiar indică care sunt cele care primesc un anumit tip de parametru prin adresa URL.
După scanare pot vedea structura web cu paginile programate în PHP și vulnerabilitățile în funcție de filtrele aplicate.
În cazul paginii de inserare a produsului vedem că primește parametri prin metoda POST și putem vedea și câmpurile sau variabilele pe care le primește.
C) Injecție cod XSS
Apoi vom accesa pagina pentru a adăuga un produs (Adăugare produs) și a aplica Tehnici de injectare XSS unde injectez cod html și Javascript pentru a vedea dacă este vulnerabil la acest tip de atac.
Ca prim test adaug codul html al unei imagini externe în descrierea produsului, puteți selecta oricare căutând în Google.
Dacă imaginea este vulnerabilă, va fi salvată în baza de date și va fi afișată în lista produselor pe care va trebui să le căutăm în combo codul pe care îl atribuim, rezultatul este următorul:
[color = # b22222] Este vulnerabil la XSS [/ color], deoarece am putea introduce orice cod html sau javascript, inclusiv linkuri.
Inserăm un iframe în câmpul de descriere și salvăm:
Apoi căutăm produsul după codul 003 și putem vedea rezultatul
Folosind această tehnică putem introduce un formular prin care putem simula o autentificare și că datele sunt salvate într-o bază de date externă. Putem dezactiva lista produselor care determină o redirecționare către un alt site web dacă în orice câmp de înregistrare a produsului adăugăm următorul cod html:
Când cineva încearcă să vadă lista produselor, va fi redirecționat automat către site-ul web indicat în acest caz Google.
D) Injecție SQL Acces la baze de date
Sqlmap este un instrument foarte util pentru a testa securitatea serverelor de baze de date în tutoriale:
- Instrument SQLMAP SQL Injection și hacking etic al bazei de date
- BadStore: Web pentru teste de pentesting.
Folosesc sqlmap pentru a determina dacă există baze de date disponibile folosind următoarele comenzi.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
Putem vedea că serverul este Apache 2.2.11, care folosește php 5.2.9 și că serverul de baze de date este MySQL 5.0.12, vedem și toate bazele de date disponibile, inclusiv cele care sunt configurația datelor MySQL ale serverului de bază.
În continuare, folosesc comanda pentru a verifica dacă există tabele în baza de date de merchandising, care este cea care presupun că are tabelul de produse pe care îl introducem pe web.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merch
Am găsit tabelul pe care îl folosește site-ul web. Mai jos pot privi tabelul de produse cu următoarea comandă
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T produse
Caut să aflu utilizatorii care au un cont Mysql care încearcă să găsească un administrator, implicit folosesc dicționarul de date sqlmap situat în folderul sqlmap-dev / txt / wordlist.zip
În acest director vom găsi mai multe dicționare, sqlmap va fi însărcinat cu dezarhivarea și utilizarea fișierului, pentru a căuta utilizatori și parole pentru a merge la testare dacă pot descoperi și obține numele de utilizator configurate pe serverul MySQL, pentru aceasta folosesc următoarea comandă:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
În continuare caut tipul de utilizator pentru a vedea care sunt privilegiile de acces ale fiecărui utilizator pentru a determina cine sunt administratori și care sunt codurile lor de acces.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - dump
În urma executării, sunt dezvăluite parolele fiecărui utilizator pentru a accesa bazele de date și ce privilegii au.
Când scanarea este terminată, la sfârșitul listei putem vedea privilegiile fiecărui utilizator și putem determina ce utilizatori sunt administratori.
Constat că există mai mulți utilizatori administratori, prin urmare îl voi lua pe utilizator jdavenport cine este administrator și parola lui este babyl0n, pentru a încerca să accesați sistemul
În continuare, încerc să încălc portul 22 SSH cu datele obținute:
Se poate vedea că am obținut accesul ca administrator și am control deplin al serverului. Folosind comanda cd /, mergem la directorul rădăcină și de acolo putem accesa orice sector, precum vizualizarea folderelor și conturilor celorlalți utilizatori
Având acces prin SSH cu combinația de nume de utilizator și parolă pe care le-am obținut. Următorul nostru obiectiv va fi escaladarea privilegiilor, deși avem deja un utilizator root sau administrator.
Pentru a manipula permisiunile, trebuie să consultăm fișierele care conțin permisiunile, utilizatorii, grupurile și codurile de acces, aceste fișiere se află în directorul / etc
- Utilizator și grupuri cu cheile lor în directorul: / etc / passwd
- Grupuri și permisiuni în directorul: / etc / sudores
Putem accesa fișierul utilizatorilor și cheile de sistem prin următoarea comandă:
nano / etc / parola
Putem parcurge directoarele dintre ele, putem vedea fișierele de pe web pe care le analizam și le putem descărca ulterior prin ftp sau din consola ssh, le putem copia în directorul nostru local dacă vrem să le edităm sau să revizuim cod pentru a-l face mai sigur și a testa din nou.
Acum, că știm datele de acces ale unui administrator, ne putem conecta la mașina virtuală.
Cum se evită atacurile de injecție SQL
Securitatea web este foarte importantă aici, din cauza unei probleme de injecție SQL, luăm întregul server.
Trebuie să controlați ce este trimis ca parametru în adrese URL, cum ar fi:
http://192.168.0.40/products.php?id=1La efectuarea interogării SQL trebuie să ne asigurăm că pot fi introduse caractere sau parametri care nu corespund, de exemplu:
$ sql = SELECT * FROM users WHERE user = 'jose' and password = '12345' OR '1' = '1';Propoziția este foarte asemănătoare cu o autentificare a utilizatorului în care căutăm dacă există utilizator și parola, în tabelul utilizatorilor, dacă există cineva înregistrat cu un nume de utilizator pe care îl trimitem ca parametru și dacă parola lor este '12345 sau dacă 1 este la fel la 1 '.
Această expresie determină că dacă cheia nu este corectă, expresia 1 egală cu 1 este adevărată și am putea intra în sistem fără să știm parola.
O metodă este de a scăpa de variabilele de exemplu în PHP:
mysql_real_escape_string ($ _ POST [‘utilizator’]);Dacă trebuie să trimitem parametri prin URL, ar trebui să le criptăm folosind md5, sha1 sau base64 și putem trimite diverse date criptate, astfel încât formatul final al parametrului să nu fie direct legat de datele sau câmpurile din baza de date.
În plus, ar trebui să existe un sistem care să evite scanarea porturilor și conexiunile multiple de la același IP, un firewall în acest caz cu iptables ar fi suficient și un detector de intruziune.
Un instrument pe care îl putem folosi este PortSentry sau Fail2Ban Este instalat dintr-un depozit Linux și trebuie doar să configurăm ce porturi ar trebui protejate, dacă unul dintre aceste porturi este scanat, va bloca automat IP-ul care ne atacă.
V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv