====== Proves de seguretat ====== Tal i com s'explica a la [[https://www.zaproxy.org/getting-started/|web de l'eina ZAP Proxy]], les **proves de seguretat de programari** comprenen l'**avaluació** i el **//test//** per descobrir riscos de seguretat i vulnerabilitats del sistema i les seves dades. L'**avaluació de riscos** es pot definir com l'anàlisi i el descobriment de vulnerabilitats sense intentar explotar-les. Les **proves** o **//tests// de seguretat** son el descobriment i intent d'explotació de vulnerabilitats. {{tag> #FpInfor #Ceti #Ciber #CetiMp03 #CiberMp03 #CetiMp05 #CiberMp05 #Daw #DawMp07 #DawMp07Uf3 #DawMp07Uf03 test scan proves sql_injection php dvwa }} \\ ===== Tipus de proves de seguretat ===== Es poden establir diversos tipus o nivells de proves de seguretat: * **Revisió de codi**: revisió detallada i anàlisi del codi de l'aplicació i del sistema a la cerca específica de possibles escletxes de seguretat. * **Detecció de vulnerabilitats**: el sistema s'escaneja a la cerca de possibles problemes de seguretat. * **Tests de penetració (//pentesting//)**: simulació d'atacs d'usuaris malintencionats. * **Tests en temps d'execució**: proves de l'aplicació i sistema complert per part d'usuaris finals. ===== Entorns de test ===== Hi ha una sèrie de recursos d'aplicacions web vulnerables per a practicar el //pentesting// de les quals es poden destacar: * [[https://owasp.org/www-project-juice-shop/|Juicy Shop]] : botiga virtual implementada en NodeJS. És la web vulnerable oficial d'OWASP. * [[https://github.com/digininja/DVWA|DVWA o Damn Vulnerable Web Application]] : //digininja// ens facilita una web molt senzilla pensada per a aprendre a practicar //pentesting// amb un ample catàleg de vulnerabilitats i enllaços a tutorials. A més, disposa de diversos nivells de seguretat en la implementació i un examinador del codi emprat, pel què resulta molt adequada per il·lustrar com es donen les vulnerabilitats i les millores progressives del codi. Per posar en marxa DVWA: $ git clone https://github.com/digininja/DVWA $ cd DVWA $ docker-compose up -d --build Es posarà en marxa i la podem visualitzar a http://localhost:4280 {{ :burp:dvwa-1.png?500 }} \\ ===== Eines de test per a aplicacions web ===== Les dues eines d'anàlisi més populars per a proves de seguretat per a aplicacions web son les següents: * [[https://www.zaproxy.org/|OWASP ZAP Project]]: és l'eina oficial i un dels projectes principals d'OWASP. És una aplicació de programari lliure i permet treballar amb //proxy// i l'escaneig automatitzat de les sites. * [[https://portswigger.net/burp|BURP Suite]]: eina privativa de PortSwigger, empresa dedicada a la ciberseguretat i que ofereix l'esmentada eina i diversos tutorials per a emprar-la. Té diverses edicions: //Community// (gratuïta), //Professional// (amb possible llicència de prova gratuïta temporal) i //Enterprise//. **BURP Suite Community** permet el treball d'exploració manual amb //proxy// però no permet un escaneig automàtic de vulnerabilitats. Per a aquest objectiu necessitarem la **versió Professional** o Enterprise. ==== Proxy per al navegador web ==== La funció més destacable de les eines d'anàlisi d'aplicacions web és el //proxy// per al //browser//, a mode de //man-in-the-middle// de les comunicacions, el què facilita la seva anàlisi i examen per intentar detectar vulnerabilitats. {{ :burp:browser-no-proxy.png?500 }} Si es desitja una anàlisi dels missatges HTTPS caldrà que el //proxy// pugui llegir-los. Per aconseguir-ho, aquest necessitarà poder descodificar el trànsit i requerirà que el //browser// confii en els certificats que el //proxy// li oferirà, enlloc dels autèntics certificats de la site que es vol testejar. Per a que el //browser// confii caldrà instal·lar-hi les AC (Autoritats de Certificació) del //proxy//. Això es pot aconseguir de dues maneres: * Deixar que el programari de //proxy// engegui el navegador en mode automàtic (similar a com fa la llibreria Selenium pels tests) i que automatitza la creació d'una excepció per confiar en els certificats que el //proxy// oferirà. * Utilitzar un //browser// de la nostra elecció, configurant-hi el //proxy// manualment i instal·lant-hi els certificats adequats perquè hi confii. En la següent seqüència es pot veure com treballar amb el mode //proxy// de BURP Suite: {{ :burp:burp-suite-proxy.png?500 }} Browser proxificat per BURP Suite: el navegador web adverteix del //proxy// i de la comunicació insegura en la barra d'adreces. Omplim formulari de login amb credencials. {{ :burp:burp-suite-browser-2.png?500 }} La secció HTTP History de BURP Suite ens permet visualitzar les dades de les credencials transmeses. {{ :burp:burp-suite-http-history.png?500 }} Com hem pogut veure, un cop intervingudes dades sensibles (com usuari i contrasenya però també d'altres com tokens, cookies de sessió, etc.) es poden efectuar atacs de repetició i manipulació amb les eines Intruder i Repeater. ==== Escaneig automatitzat i informes de vulnerabilitats ==== Una de les funcions més importants que realitzen aquestes eines és l'escaneig automatitzat de vulnerabilitats. BURP Suite resulta més fàcil de configurar que ZAP, però la versió gratuïta //Community Edition// no disposa d'aquesta funcionalitat. Cal emprar les versions de pagament, si bé la //Professional Edition// disposa d'un període de prova gratuït. **Els escanejos automatitzats poden trigar molt de temps (fàcilment poden arribar a vàries hores)** ja que cal fer primer un catàleg de URLs a investigar (//crawl//) i després provar a cadascuna d'elles un catàleg d'atacs (//audit//). Quanta més estona d'anàlisi permetem, més vulnerabilitats podem detectar, i menys probabilitat de deixar escletxes de seguretat. Vulnerabilitats detectades a l'aplicació DVWA en 30' d'anàlisi automatitzat amb BURP Suite: més de 17000 requests per trobar 14 vulnerabilitats greus i 17 de severitat mitjana: {{ :burp:burp-suite-scan-results-2.png?600 }} A partir dels resultats trobats per l'eina d'anàlisi es poden crear **informes amb les vulnerabilitats trobades**, una explicació detallada d'aquestes i propostes per a la seva solució. \\ ===== Exercicis ===== **Escaneig amb BURP Suite** - Descarrega la versió Professional i subscriu una //trial key//. - Fes un //scan// sobre DVWA anant a ''New scan''. * Apunta la URL ''http://localhost:4280'' (o aquella on hagis instal·lat DVWA * Per optimitzar l'escaneig convé afegir que NO segueixi les URLs: http://localhost:4280/logout.php http://localhost:4280/setup.php http://localhost:4280/security.php * Ho pots configurar aScan details -> Detailed scope configuration -> Excluded URL prefixes * Quantes vulnerabilitats trobes? - Fes un //scan// configurant ara usuari i contrasenya al menú "Application Login". Quantes en trobes ara? - Esbrina el nivell de seguretat de DVWA que s'ha estat utilitzant durant l'escaneig. - Elabora un informe HTML de les vulnerabilitats trobades de categoria "High", "Medium" i "Low" (excloem "Info"). Etiqueta'l amb "DVWA security impossible". Configuració de credencials en un escaneig de vulnerabilitats en BURP Suite: {{ :burp-suite-scan-config.png?500 }} ==== Registre de seqüències d'inici de sessió ==== Probablement trobis que l'escaneig s'ha fet en mode de seguretat "impossible", pel què el nombre de vulnerabilitats descobertes serà baix. Anem a assegurar que fem un **escaneig en mode de seguretat "low"**. La solució serà que, enlloc de fer un //login// automàtic indicant credencials, iniciarem la sessió amb una seqüència d'entrada que enregistrarem prèviament amb un //plugin// per Chrome: **Escaneig amb BURP Suite i seqüència d'ordres d'inici** - Instal·la el navegador Chrome i la seva extensió [[https://chromewebstore.google.com/detail/burp-suite-navigation-rec/anpapjclbjicacakeoggghfldppbkepg|Burp Suite Navigation Recorder]]. - Ves a la configuració de l'extensió de Chrome i activa les opcions: * Permet en mode incògnit * Fixa a la barra d'eines - Obre una finestra d'incògnit de Chorme (ho necessitem així perquè és com l'escàner trobarà l'aplicació DVWA quan l'obri per primer cop). - Activa l'enregistrament:BURP Suite Navigation Recorder -> New recording - Vés a la URL d'inici ''http://localhost:4280'' - Fes el login. - Comprova que el nivell de seguretat és "impossible" (per defecte ho hauria de ser). - Ves a la **secció Scurity** i selecciona el **nivell de seguretat "low"**. - Atura la gravació:BURP Suite Navigation recorder -> Stop recording - Copia la seqüència d'accions:BURP Suite Navigation recorder -> Copy to clipboard Amb la seqüència d'inici de sessions registrada, passarem a configurar un nou escaneig. Enlloc de //login// amb credencials ho farem amb la seqüència registrada: - New scan - Scan details: URLs to scan ''http://localhost:4280'' (only specified protocols) - Excloure paths (ecloem pàgina de //login// perquè ja no calen credencials): http://localhost:4280/login.php http://localhost:4280/logout.php http://localhost:4280/setup.php http://localhost:4280/security.php - Selecciona:Application login -> Use recorded login -> New * Enganxa la seqüència d'instruccions de login que hem aconseguit amb el //plugin// de Chrome. * Guardem la seqüència amb ''Save to library'' per posteriors scans. - Realitza el //scan//. - Elabora un informe HTML de les vulnerabilitats trobades de categoria "High", "Medium" i "Low" (excloem "Info"). Etiqueta'l amb "DVWA security low". - Compara els resultats dels dos informes. \\ ==== Alternatives ==== Una opció alternativa per assegurar que estem fent un escaneig en el mode adequat seria assegurar que posem les //cookies// adequades amb l'eina //Cookie jar// en //Settings//: * https://portswigger.net/support/manually-setting-a-cookie-for-burp-suites-crawl-and-audit * https://portswigger.net/burp/documentation/desktop/settings/sessions \\