Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix
En l'últim article n'hem parlat Nemesida WAF gratuït - una eina gratuïta per protegir els llocs web i les API dels atacs de pirates informàtics, i en aquesta vam decidir revisar un popular escàner de vulnerabilitats Elk.

Escanejar un lloc web per detectar vulnerabilitats és una mesura necessària que, juntament amb l'anàlisi del codi font, permet avaluar el seu nivell de seguretat davant les amenaces de compromís. Podeu escanejar un recurs web mitjançant eines especialitzades.

Nikto, W3af (escrit en Python 2.7, que ja no és compatible) o Arachni (ja no és compatible des del febrer) són les solucions més populars presentades al segment gratuït. Per descomptat, n'hi ha d'altres, per exemple, Wapiti, en què vam decidir centrar-nos.

Wapiti treballa amb els següents tipus de vulnerabilitats:

  • expansió de fitxers (local i remot, fopen, readfile);
  • injeccions (injecció PHP / JSP / ASP / SQL i injecció XPath);
  • XSS (Cross Site Scripting) (reflexiu i persistent);
  • detecció i execució d'ordres (eval(), system(), passtru());
  • Injeccions CRLF (divisió de resposta HTTP, fixació de sessió);
  • Incrustació de XXE (entitat externa XML);
  • SSRF (falsificació de sol·licituds del costat del servidor);
  • ús de fitxers coneguts potencialment perillosos (gràcies a la base de dades Nikto);
  • configuracions .htaccess febles que es poden evitar;
  • la presència de fitxers de còpia de seguretat que revelen informació confidencial (divulgació del codi font);
  • Shellshock;
  • redireccions obertes;
  • mètodes HTTP no estàndard que es poden resoldre (PUT).

Característiques:

  • Compatibilitat amb proxy HTTP, HTTPS i SOCKS5;
  • autenticació mitjançant diversos mètodes: Basic, Digest, Kerberos o NTLM;
  • la possibilitat de limitar l'àrea d'escaneig (domini, carpeta, pàgina, URL);
  • eliminació automàtica d'un dels paràmetres de l'URL;
  • múltiples precaucions contra bucles d'exploració interminables (exemple: ifor, valors límit per a un paràmetre);
  • la possibilitat d'establir una prioritat per examinar els URL (encara que no estiguin a l'àrea d'escaneig);
  • possibilitat d'excloure alguns URL de l'exploració i dels atacs (per exemple: tancament de sessió d'URL);
  • importar galetes (aconseguir-les mitjançant l'eina wapiti-getcookie);
  • possibilitat d'activar/desactivar la verificació del certificat SSL;
  • la capacitat d'extreure URL de JavaScript (un intèrpret JS molt senzill);
  • interacció amb HTML5;
  • diverses opcions per gestionar el comportament i les restriccions del rastrejador;
  • establir el temps màxim per al procés d'escaneig;
  • afegir algunes capçaleres HTTP personalitzades o configurar un User-Agent personalitzat.

Característiques adicionals:

  • creació d'informes de vulnerabilitat en diversos formats (HTML, XML, JSON, TXT);
  • aturar i reprendre una exploració o un atac (mecanisme de sessió utilitzant bases de dades SQLite3);
  • retroil·luminació al terminal per destacar les vulnerabilitats;
  • diferents nivells de registre;
  • Una manera ràpida i senzilla d'activar/desactivar mòduls d'atac.

Instal · lació

La versió actual de Wapiti es pot instal·lar de dues maneres:

  • descarregar la font des de l'oficial lloc i executeu l'script d'instal·lació, havent instal·lat prèviament Python3;
  • utilitzant l'ordre pip3 install wapiti3.

Després d'això, Wapiti estarà a punt per marxar.

Treballant amb l'eina

Per demostrar el treball de Wapiti, utilitzarem un estand especialment preparat sites.vulns.pentestit.ru (recurs intern), que conté diverses vulnerabilitats (Injection, XSS, LFI/RFI) i altres deficiències de les aplicacions web.

La informació es proporciona només amb finalitats informatives. No infringeixis la llei!

Ordre bàsica per iniciar l'escàner:

# wapiti -u <target> <options>

Al mateix temps, hi ha ajuda força detallada amb un gran nombre d'opcions de llançament, per exemple:

--abast - Àrea d'aplicació
Si especifiqueu el paràmetre d'abast juntament amb l'URL de rastreig, podeu ajustar l'àrea de rastreig del lloc especificant tant una pàgina única com totes les pàgines que es poden trobar al lloc.

-s и -x — opcions per afegir o eliminar URL específics. Aquestes opcions són útils quan necessiteu afegir o eliminar un URL específic durant el procés de rastreig.

--Omet — el paràmetre especificat amb aquesta clau serà escanejat, però no serà atacat. Útil si hi ha paràmetres perillosos que es poden excloure millor durant l'escaneig.

--verify-ssl — activar o desactivar la verificació del certificat.
L'escàner Wapiti és modular. Tanmateix, per llançar mòduls específics, inclosos els que es connecten automàticament mentre s'executa l'escàner, heu d'utilitzar l'interruptor -m i llistar els que necessiteu, separats per comes. Si no s'utilitza la clau, tots els mòduls funcionaran per defecte. A la versió més senzilla tindrà aquest aspecte:

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

Aquest exemple d'ús significa que només utilitzarem els mòduls SQL, XSS i XXE quan escanegem l'objectiu. A més, podeu filtrar el funcionament dels mòduls en funció del mètode desitjat. Per exemple -m "xss: obtenir, blindsql: publicació, xxe: publicació". En aquest cas, el mòdul xss s'aplicarà a les sol·licituds enviades mitjançant el mètode GET i el mòdul blibdsql - a POST sol·licituds, etc. Per cert, si algun mòdul inclòs a la llista no es necessitava durant l'escaneig o triga molt de temps, prement la combinació Ctrl+C podeu ometre l'ús del mòdul actual seleccionant l'element corresponent al menú interactiu.

Wapiti admet passar sol·licituds a través d'un servidor intermediari mitjançant una clau -p i autenticació al lloc de destinació mitjançant el paràmetre -a. També podeu especificar el tipus d'autenticació: Bàsic, Resum, Kerberos и NTLM. Els dos últims poden requerir la instal·lació de mòduls addicionals. A més, podeu inserir qualsevol capçalera a les sol·licituds (incloses les arbitràries Agent d'usuari) i molt més.

Per utilitzar l'autenticació podeu utilitzar l'eina wapiti-getcookie. Amb la seva ajuda ens formem galeta, que Wapiti utilitzarà en escanejar. Formació galeta fet amb l'ordre:

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

Mentre treballem de manera interactiva, responem preguntes i indiquem la informació necessària com ara inici de sessió, contrasenya, etc.:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

La sortida és un fitxer en format JSON. Una altra opció és afegir tota la informació necessària mitjançant el paràmetre -d:

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

El resultat serà similar:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

En considerar la funcionalitat principal de l'escàner, la sol·licitud final per provar l'aplicació web en el nostre cas va ser:

# 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

on entre altres paràmetres:

-f и -o — format i camí per desar l'informe;

-m — No es recomana connectar tots els mòduls, perquè afectarà el temps de prova i la mida de l'informe;

--color — destacar les vulnerabilitats trobades en funció de la seva criticitat segons el mateix Wapiti;

-c - utilitzant un fitxer amb galeta, generat utilitzant wapiti-getcookie;

--abast - triar un objectiu per a l'atac. Seleccionant una opció folder Cada URL serà rastrejat i atacat, començant per la base. L'URL base ha de tenir una barra inclinada (sense nom de fitxer);

--sessió-descarregada — permet l'exploració repetida, en la qual no es tindran en compte els resultats anteriors;

-A - propi Agent d'usuari;

-p — Adreça del servidor intermediari, si cal.

Una mica sobre l'informe

El resultat de l'escaneig es presenta en forma d'informe detallat de totes les vulnerabilitats trobades en format de pàgina HTML, d'una forma clara i fàcil de llegir. L'informe indicarà les categories i el nombre de vulnerabilitats trobades, les seves descripcions, peticions, ordres ris i consells sobre com tancar-los. Per facilitar la navegació, s'afegirà un enllaç als noms de les categories, fent clic al qual hi podreu anar:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

Un desavantatge important de l'informe és l'absència d'un mapa d'aplicacions web com a tal, sense el qual no quedarà clar si s'han analitzat totes les adreces i paràmetres. També hi ha la possibilitat de falsos positius. En el nostre cas, l'informe inclou "fitxers de còpia de seguretat" i "fitxers potencialment perillosos". El seu nombre no correspon a la realitat, ja que no hi havia aquests fitxers al servidor:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

Potser els mòduls que funcionen incorrectament s'arreglaran amb el temps. Un altre inconvenient de l'informe és la manca de coloració de les vulnerabilitats trobades (segons la seva criticitat), o almenys dividir-les en categories. L'única manera en què podem entendre indirectament la criticitat de la vulnerabilitat trobada és utilitzar el paràmetre --color durant l'escaneig i, a continuació, les vulnerabilitats trobades tindran colors diferents:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

Però l'informe en si no proporciona aquest color.

Vulnerabilitats

SQLi

L'escàner va fer front parcialment a la cerca SQLi. Quan cerqueu vulnerabilitats SQL a pàgines on no es requereix autenticació, no hi ha cap problema:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

No va ser possible trobar una vulnerabilitat a les pàgines accessibles només després de l'autenticació, fins i tot utilitzant vàlid galeta, ja que el més probable és que després de l'autenticació correcta, la seva sessió es tancarà i galeta quedarà invàlid. Si la funció de desautorització s'implementés com un script independent responsable del processament d'aquest procediment, seria possible excloure-la completament mitjançant el paràmetre -x i, per tant, evitar que s'activi. En cas contrari, no es podrà excloure el seu tractament. Això no és un problema amb un mòdul específic, sinó amb l'eina en el seu conjunt, però a causa d'aquest matís, no va ser possible detectar diverses injeccions en una àrea de recursos tancada.

XSS

L'escàner va fer front perfectament a la tasca donada i va trobar totes les vulnerabilitats preparades:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

LFI/RFI

L'escàner va trobar totes les vulnerabilitats subjacents:

Wapiti: comprovació d'un lloc per detectar vulnerabilitats per si mateix

En general, malgrat els falsos positius i les vulnerabilitats que falten, Wapiti, com a eina gratuïta, mostra resultats de rendiment força bons. En qualsevol cas, val la pena reconèixer que l'escàner és bastant potent, flexible i multifuncional, i el més important, és gratuït, per la qual cosa té dret a ser utilitzat per ajudar els administradors i desenvolupadors a obtenir informació bàsica sobre l'estat de seguretat d'una web. aplicació.

Mantingueu-vos sans i protegits!

Font: www.habr.com

Afegeix comentari