====== 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
\\