Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu
În trecut articol am vorbit despre Nemesida WAF gratuit - un instrument gratuit pentru protejarea site-urilor web și a API-urilor de atacurile hackerilor, iar în acesta am decis să revizuim un scaner de vulnerabilități popular Elan.

Scanarea unui site web pentru vulnerabilități este o măsură necesară, care, împreună cu analiza codului sursă, vă permite să evaluați nivelul de securitate al acestuia împotriva amenințărilor de compromis. Puteți scana o resursă web folosind instrumente specializate.

Nikto, W3af (scris în Python 2.7, care nu mai este suportat) sau Arachni (nu mai este suportat din februarie) sunt cele mai populare soluții prezentate în segmentul gratuit. Desigur, mai sunt și altele, de exemplu, Wapiti, pe care am decis să ne concentrăm.

Wapiti lucrează cu următoarele tipuri de vulnerabilități:

  • extinderea fișierelor (local și la distanță, fopen, readfile);
  • injectii (PHP / JSP / ASP / injectie SQL si injectie XPath);
  • XSS (Cross Site Scripting) (reflexiv și persistent);
  • detectarea și executarea comenzilor (eval(), system(), passtru());
  • Injecții CRLF (diviziunea răspunsului HTTP, fixarea sesiunii);
  • Încorporarea XXE (entitate externă XML);
  • SSRF (falsificare cerere pe partea serverului);
  • utilizarea fișierelor cunoscute potențial periculoase (mulțumită bazei de date Nikto);
  • configurații slabe .htaccess care pot fi ocolite;
  • prezența fișierelor de rezervă care dezvăluie informații confidențiale (dezvăluirea codului sursă);
  • șoc;
  • redirecționări deschise;
  • metode HTTP non-standard care pot fi rezolvate (PUT).

caracteristici:

  • Suport proxy HTTP, HTTPS și SOCKS5;
  • autentificare folosind mai multe metode: Basic, Digest, Kerberos sau NTLM;
  • capacitatea de a limita zona de scanare (domeniu, folder, pagină, URL);
  • eliminarea automată a unuia dintre parametrii din URL;
  • precauții multiple împotriva buclelor de scanare nesfârșite (exemplu: ifor, valori limită pentru un parametru);
  • capacitatea de a seta o prioritate pentru examinarea URL-urilor (chiar dacă acestea nu se află în zona de scanare);
  • capacitatea de a exclude unele URL-uri de la scanare și atacuri (de exemplu: deconectare URL);
  • importați cookie-uri (obțineți-le folosind instrumentul wapiti-getcookie);
  • capacitatea de a activa/dezactiva verificarea certificatului SSL;
  • capacitatea de a extrage URL-uri din JavaScript (un interpret JS foarte simplu);
  • interacțiune cu HTML5;
  • mai multe opțiuni pentru gestionarea comportamentului crawler-ului și a restricțiilor;
  • stabilirea timpului maxim pentru procesul de scanare;
  • adăugarea unor antete HTTP personalizate sau configurarea unui User-Agent personalizat.

Caracteristici suplimentare:

  • crearea de rapoarte de vulnerabilitate în diverse formate (HTML, XML, JSON, TXT);
  • întreruperea și reluarea unei scanări sau a unui atac (mecanism de sesiune folosind baze de date SQLite3);
  • iluminare de fundal în terminal pentru a evidenția vulnerabilitățile;
  • diferite niveluri de înregistrare;
  • O modalitate rapidă și ușoară de a activa/dezactiva modulele de atac.

Instalare

Versiunea actuală de Wapiti poate fi instalată în 2 moduri:

  • descărcați sursa de la oficial сайта și rulați scriptul de instalare, având instalat anterior Python3;
  • folosind comanda pip3 install wapiti3.

După aceasta, Wapiti va fi gata de plecare.

Lucrul cu instrumentul

Pentru a demonstra munca Wapiti, vom folosi un stand special pregătit sites.vulns.pentestit.ru (resursa internă), care conține diverse vulnerabilități (Injection, XSS, LFI/RFI) și alte deficiențe ale aplicațiilor web.

Informațiile sunt furnizate doar în scop informativ. Nu încălca legea!

Comanda de bază pentru a lansa scanerul:

# wapiti -u <target> <options>

În același timp, există ajutor destul de detaliat cu un număr mare de opțiuni de lansare, de exemplu:

--sfera de aplicare - zona de aplicare
Dacă specificați parametrul de domeniu împreună cu adresa URL de accesare cu crawlere, puteți ajusta zona de accesare cu crawlere a site-ului specificând atât o singură pagină, cât și toate paginile care pot fi găsite pe site.

-s и -x — opțiuni pentru a adăuga sau elimina anumite adrese URL. Aceste opțiuni sunt utile atunci când trebuie să adăugați sau să eliminați o anumită adresă URL în timpul procesului de accesare cu crawlere.

--ocolire — parametrul specificat cu această cheie va fi scanat, dar nu va fi atacat. Util dacă există parametri periculoși care sunt cel mai bine excluși în timpul scanării.

--verify-ssl — activați sau dezactivați verificarea certificatului.
Scanerul Wapiti este modular. Cu toate acestea, pentru a lansa anumite module, inclusiv cele care sunt conectate automat în timp ce scanerul rulează, trebuie să utilizați comutatorul -m și să le enumerați pe cele de care aveți nevoie, separate prin virgule. Dacă cheia nu este folosită, atunci toate modulele vor funcționa implicit. În cea mai simplă versiune va arăta astfel:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Acest exemplu de utilizare înseamnă că vom folosi numai modulele SQL, XSS și XXE atunci când scanăm ținta. În plus, puteți filtra funcționarea modulelor în funcție de metoda dorită. De exemplu -m „xss: obține, blindsql: post, xxe: post”. În acest caz, modulul xss se va aplica cererilor trimise folosind metoda GET și modulului blibdsql — la solicitări POST, etc. Apropo, dacă un modul care a fost inclus în listă nu a fost necesar în timpul scanării sau durează foarte mult, atunci apăsând combinația Ctrl+C puteți sări peste modulul curent selectând elementul corespunzător din meniul interactiv.

Wapiti acceptă transmiterea cererilor printr-un proxy folosind o cheie -p și autentificare pe site-ul țintă prin parametru -a. De asemenea, puteți specifica tipul de autentificare: De bază, rezumat, Kerberos и NTLM. Ultimele două pot necesita instalarea unor module suplimentare. În plus, puteți insera orice antet în cereri (inclusiv arbitrare Agent de utilizator) și mult mai mult.

Pentru a utiliza autentificarea, puteți folosi instrumentul wapiti-getcookie. Cu ajutorul lui ne formăm fursec, pe care Wapiti o va folosi la scanare. Formare fursec terminat cu comanda:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

În timp ce lucrăm interactiv, răspundem la întrebări și indicăm informațiile necesare, cum ar fi autentificare, parolă etc.:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Ieșirea este un fișier în format JSON. O altă opțiune este să adăugați toate informațiile necesare prin intermediul parametrului -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Rezultatul va fi similar:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Luând în considerare funcționalitatea principală a scanerului, cererea finală de testare a aplicației web în cazul nostru a fost:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

unde, printre alți parametri:

-f и -o — formatul și calea pentru salvarea raportului;

-m — conectarea tuturor modulelor nu este recomandată, deoarece va afecta timpul de testare și dimensiunea raportului;

--culoare — evidențiați vulnerabilitățile găsite în funcție de criticitatea lor conform Wapiti însuși;

-c - folosind un fișier cu fursec, generat folosind wapiti-getcookie;

--sfera de aplicare — alegerea unei ținte pentru atac. Selectarea unei opțiuni dosar Fiecare URL va fi accesată cu crawlere și atacată, începând cu cea de bază. URL-ul de bază trebuie să aibă o bară oblică (fără nume de fișier);

--sesiune-de-schimbare — permite scanarea repetată, în care rezultatele anterioare nu vor fi luate în considerare;

-A - proprii Agent de utilizator;

-p — adresa serverului proxy, dacă este necesar.

Un pic despre raport

Rezultatul scanării este prezentat sub forma unui raport detaliat asupra tuturor vulnerabilităților găsite în format de pagină HTML, într-o formă clară și ușor de citit. Raportul va indica categoriile și numărul de vulnerabilități găsite, descrierile acestora, solicitările, comenzile pentru răsuci și sfaturi despre cum să le închideți. Pentru ușurința navigării, la numele categoriilor va fi adăugat un link, făcând clic pe care puteți accesa el:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Un dezavantaj semnificativ al raportului este absența unei hărți a aplicației web ca atare, fără de care nu va fi clar dacă toate adresele și parametrii au fost analizați. Există, de asemenea, posibilitatea de fals pozitive. În cazul nostru, raportul include „fișiere de rezervă” și „fișiere potențial periculoase”. Numărul lor nu corespunde realității, deoarece nu existau astfel de fișiere pe server:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Poate că modulele care funcționează incorect vor fi remediate în timp. Un alt dezavantaj al raportului este lipsa de colorare a vulnerabilităților găsite (în funcție de criticitatea acestora), sau cel puțin împărțirea lor pe categorii. Singura modalitate prin care putem înțelege în mod indirect criticitatea vulnerabilității găsite este să folosim parametrul --culoare în timpul scanării, iar apoi vulnerabilitățile găsite vor fi colorate în diferite culori:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Dar raportul în sine nu oferă o astfel de colorare.

Vulnerabilități

SQLi

Scannerul a făcut față parțial căutării SQLi. Când căutați vulnerabilități SQL în paginile în care nu este necesară autentificarea, nu apar probleme:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

Nu a fost posibil să se găsească o vulnerabilitate pe paginile accesibile numai după autentificare, chiar și folosind valid fursec, deoarece, cel mai probabil, după autentificarea cu succes, sesiunea lor va fi „deconectată” și fursec va deveni invalid. Dacă funcția de dezautorizare ar fi implementată ca un script separat responsabil de procesarea acestei proceduri, atunci ar fi posibil să o excludem complet prin parametrul -x și, prin urmare, să împiedicați declanșarea acesteia. În caz contrar, nu va fi posibilă excluderea procesării acestuia. Aceasta nu este o problemă cu un anumit modul, ci cu instrumentul în ansamblu, dar din cauza acestei nuanțe, nu a fost posibilă detectarea mai multor injecții într-o zonă de resurse închisă.

XSS

Scannerul a făcut față perfect sarcinii date și a găsit toate vulnerabilitățile pregătite:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

LFI/RFI

Scanerul a găsit toate vulnerabilitățile de bază:

Wapiti - verificarea unui site pentru vulnerabilități pe cont propriu

În general, în ciuda falselor pozitive și a vulnerabilităților lipsă, Wapiti, ca instrument gratuit, arată rezultate destul de bune de performanță. În orice caz, merită să recunoaștem că scanerul este destul de puternic, flexibil și multifuncțional și, cel mai important, este gratuit, deci are dreptul de a fi folosit pentru a ajuta administratorii și dezvoltatorii să obțină informații de bază despre starea de securitate a unui web. aplicarea.

Rămâneți sănătoși și protejați!

Sursa: www.habr.com

Adauga un comentariu