En aquest exercici pràctic, aplicarem els coneixements adquirits sobre les vulnerabilitats comunes en aplicacions web per identificar possibles problemes de seguretat en un exemple d'aplicació web. Aquest exercici està dissenyat per ajudar-te a reconèixer i comprendre les vulnerabilitats més freqüents, així com a practicar les tècniques d'identificació.
Objectius de l'Exercici
- Identificar vulnerabilitats comunes en aplicacions web.
- Comprendre com aquestes vulnerabilitats poden ser explotades.
- Proposar mesures per mitigar les vulnerabilitats identificades.
Escenari
Tens accés a una aplicació web fictícia anomenada "WebAppDemo". Aquesta aplicació té diverses funcionalitats, com ara registre d'usuaris, inici de sessió, càrrega de fitxers i visualització de dades d'usuaris. La teva tasca és revisar el codi i les funcionalitats de l'aplicació per identificar possibles vulnerabilitats.
Passos a Seguir
- Revisió del Codi Font
Revisa el codi font proporcionat per a l'aplicació "WebAppDemo". Busca patrons de codi que puguin indicar la presència de vulnerabilitats.
Exemple de Codi
// Connexió a la base de dades $conn = new mysqli($servername, $username, $password, $dbname); // Injecció SQL $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = $conn->query($sql); // Visualització de dades d'usuaris if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "ID: " . $row["id"]. " - Nom: " . $row["username"]. " - Email: " . $row["email"]. "<br>"; } } else { echo "0 resultats"; } $conn->close();
- Identificació de Vulnerabilitats
Analitza el codi anterior i identifica les possibles vulnerabilitats. Utilitza la següent taula per anotar les teves troballes:
Vulnerabilitat Identificada | Descripció | Impacte Potencial | Mesures de Mitigació |
---|---|---|---|
Injecció SQL | La consulta SQL utilitza dades d'usuari sense sanititzar. | Accés no autoritzat, manipulació de dades. | Utilitzar consultes preparades. |
Exposició de Dades Sensibles | Les dades dels usuaris es mostren sense cap tipus de control. | Exposició d'informació personal. | Implementar controls d'accés. |
- Proposta de Solucions
Per a cada vulnerabilitat identificada, proposa una solució que pugui mitigar el risc associat. Aquí tens un exemple de com podries millorar el codi anterior per evitar la injecció SQL:
Codi Millorat
// Connexió a la base de dades $conn = new mysqli($servername, $username, $password, $dbname); // Injecció SQL evitada amb consultes preparades $stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $username, $password); $stmt->execute(); $result = $stmt->get_result(); // Visualització de dades d'usuaris amb control d'accés if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "ID: " . htmlspecialchars($row["id"]). " - Nom: " . htmlspecialchars($row["username"]). " - Email: " . htmlspecialchars($row["email"]). "<br>"; } } else { echo "0 resultats"; } $stmt->close(); $conn->close();
- Documentació de les Troballes
Documenta les vulnerabilitats identificades i les solucions proposades en un informe. Aquest informe hauria d'incloure:
- Descripció de la vulnerabilitat.
- Impacte potencial.
- Codi original i codi millorat.
- Mesures de mitigació recomanades.
Conclusió
Aquest exercici t'ha permès practicar la identificació de vulnerabilitats en aplicacions web i proposar solucions per mitigar-les. La revisió del codi i la comprensió de les vulnerabilitats comunes són habilitats essencials per a qualsevol professional de la seguretat en aplicacions web.
Errors Comuns i Consells Addicionals
- Error Comú: No sanititzar les dades d'entrada dels usuaris.
- Consell: Utilitza sempre funcions de sanitització i validació per a les dades d'entrada.
- Error Comú: Mostrar informació sensible sense cap tipus de control.
- Consell: Implementa controls d'accés adequats per assegurar-te que només els usuaris autoritzats poden veure informació sensible.
Aquest exercici és una part fonamental del procés d'aprenentatge en seguretat d'aplicacions web i et prepara per a la identificació i mitigació de vulnerabilitats en entorns reals.
Curs d'OWASP: Directrius i Estàndards per a la Seguretat en Aplicacions Web
Mòdul 1: Introducció a OWASP
Mòdul 2: Principals Projectes d'OWASP
- OWASP Top Ten
- OWASP ASVS (Application Security Verification Standard)
- OWASP SAMM (Software Assurance Maturity Model)
- OWASP ZAP (Zed Attack Proxy)
Mòdul 3: OWASP Top Ten
- A1: Injecció
- A2: Pèrdua d'Autenticació
- A3: Exposició de Dades Sensibles
- A4: Entitats Externes XML (XXE)
- A5: Control d'Accés Trencat
- A6: Configuració Incorrecta de Seguretat
- A7: Cross-Site Scripting (XSS)
- A8: Deserialització Insegura
- A9: Ús de Components amb Vulnerabilitats Conegudes
- A10: Registre i Monitoratge Insuficients
Mòdul 4: OWASP ASVS (Application Security Verification Standard)
Mòdul 5: OWASP SAMM (Software Assurance Maturity Model)
Mòdul 6: OWASP ZAP (Zed Attack Proxy)
- Introducció a ZAP
- Instal·lació i Configuració
- Escaneig de Vulnerabilitats
- Automatització de Proves de Seguretat
Mòdul 7: Bones Pràctiques i Recomanacions
- Cicle de Vida de Desenvolupament Segur (SDLC)
- Integració de Seguretat en DevOps
- Capacitació i Sensibilització en Seguretat
- Eines i Recursos Addicionals
Mòdul 8: Exercicis Pràctics i Casos d'Estudi
- Exercici 1: Identificació de Vulnerabilitats
- Exercici 2: Implementació de Controls de Seguretat
- Cas d'Estudi 1: Anàlisi d'un Incident de Seguretat
- Cas d'Estudi 2: Millora de la Seguretat en una Aplicació Web