SlideShare una empresa de Scribd logo
PyGoat: Analizando la
seguridad en aplicaciones
Django José Manuel Ortega
@jmortegac
Agenda
● Introducción a la seguridad en aplicaciones
Django
● Pygoat como ejemplo de aplicación vulnerable
● Vulnerabilidades OWASP top 10 y mitigación
Introducción a la seguridad en aplicaciones Django
● Inyección SQL: El ORM (Object-Relational Mapping) de Django puede
prevenir algunos tipos de inyección SQL, pero no es infalible. Se debe
tener cuidado de escapar correctamente cualquier entrada
suministrada por el usuario al crear consultas SQL.
● Cross-site scripting (XSS): El motor de plantillas de Django escapa
automáticamente cualquier dato que se muestre en una página, pero
aún es posible crear una vulnerabilidad si los datos suministrados por el
usuario se incluyen en un script JavaScript.
● Falsificación de petición en sitios cruzados (CSRF): Django incluye
protección contra CSRF por defecto, pero esta protección puede ser
eludida si el desarrollador no toma las medidas adecuadas.
Introducción a la seguridad en aplicaciones Django
● Vulnerabilidades de carga de archivos: Si una aplicación permite a los
usuarios subir archivos, es importante validar correctamente los
archivos para evitar que se ejecute código malicioso en el servidor.
● Vulnerabilidades de divulgación de archivos: Los desarrolladores
deben asegurarse de que cualquier archivo que no esté destinado a ser
accesible públicamente esté debidamente protegido contra el acceso
no autorizado.
● Validación de entrada inadecuada: Los desarrolladores no
comprueban las entradas del usuario, lo que da lugar a posibles
inyecciones de código en la plantilla. Esto se conoce comúnmente como
CWE-20: Improper Input Validation.
Introducción a la seguridad en aplicaciones Django
● Vulnerabilidades SQL Injection
● CVE-2022-34265: Potential SQL injection via
Trunc(kind) and Extract(lookup_name) arguments
Introducción a la seguridad en aplicaciones Django
● https://github.com/django/django/commit/54eb8
a374d5d98594b264e8ec22337819b37443c
Introducción a la seguridad en aplicaciones Django
● Vulnerabilidades SQL Injection
● CVE-2023-31047: Potential bypass of validation
when uploading multiple files using one form field
● https://www.djangoproject.com/weblog/2023/ma
y/03/security-releases/
● https://nvd.nist.gov/vuln/detail/CVE-2023-31047
Introducción a la seguridad en aplicaciones Django
Introducción a la seguridad en aplicaciones Django
● Vulnerabilidades SQL Injection
def insecure(request):
with connection.cursor() as cursor:
baz = request.GET.get('baz')
cursor.execute(f"SELECT foo FROM bar WHERE baz =
{baz}")
row = cursor.fetchone()
# ...
1 ; DELETE FROM users ;
Introducción a la seguridad en aplicaciones Django
● Vulnerabilidades SQL Injection
def secure(request):
with connection.cursor() as cursor:
baz = request.GET.get('baz')
cursor.execute("SELECT foo FROM bar WHERE baz = %s",
[baz])
row = cursor.fetchone()
Introducción a la seguridad en aplicaciones Django
● Vulnerabilidades SQL Injection
● Utilizar un mapeador relacional de objetos (ORM). Te ahorra escribir
consultas SQL manualmente y previene automáticamente inyecciones
SQL.
● El ORM más popular es SQLAlchemy https://www.sqlalchemy.org
Introducción a la seguridad en aplicaciones Django
● Impacto SQL Injection
● Exponer información confidencial
● Acceso no autorizado
● Denegación de servicio
● Ejecución de código
Introducción a la seguridad en aplicaciones Django
● Prevenir SQL Injection
● Consultas parametrizadas
● Validaciones en parámetros de entrada
● Prácticas de codificación segura
● Firewall de aplicaciones web (WAF)
Pygoat como ejemplo de aplicación vulnerable
● https://owasp.org/www-project-pygoat
● https://github.com/adeyosemanputra/pygoat
● https://hub.docker.com/r/pygoat/pygoat
$ docker pull pygoat/pygoat
$ docker run --rm -p 8000:8000
pygoat/pygoat
Vulnerabilidades OWASP top 10 y mitigación
● A1: Broken Access Control(Control de acceso roto)
● El control de acceso, a veces llamado autorización, es la
forma en que una aplicación web otorga acceso al
contenido y las funciones a algunos usuarios y no a otros.
● Estas comprobaciones se realizan después de la
autenticación y rigen lo que los usuarios "autorizados"
pueden hacer.
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
● A1: Broken Access Control(Control de acceso roto)
● Implementar mecanismos de control de acceso una vez y
reutilizarlos en toda la aplicación.
● Los controles de acceso al modelo deben validar que el usuario
pueda crear, leer, actualizar o eliminar cualquier registro.
● Deshabilitar la lista de directorios del servidor web
● Los identificadores de sesión con estado deben invalidarse en el
servidor después de cerrar sesión.
Vulnerabilidades OWASP top 10 y mitigación
● A1: Broken Access Control(Control de acceso roto)
● Los tokens de sesión (como los JWT) incluyen información sobre el
usuario que ha iniciado sesión.
○ Validar que el token de sesión no está caducado
○ Comprobar que el token es válido
○ Verificar si el usuario (su información está en el token de
sesión) tiene permitido realizar peticiones al endpoint actual
Vulnerabilidades OWASP top 10 y mitigación
● A3: Inyección
● La inyección ocurre cuando un atacante introduce datos
que no son de confianza y engaña al intérprete para que
haga cosas que no debería, como ejecutar comandos no
deseados o acceder a datos no autorizados.
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
● A3: Inyección
● Proporcionar una interfaz parametrizada o utilizar otras herramientas de
mapeo relacional de objetos (ORM).
● Realizar validación de parámetros de entrada del lado del servidor.
● Para cualquier consulta dinámica, escapar los caracteres especiales
utilizando la sintaxis de escape específica para ese intérprete.
Vulnerabilidades OWASP top 10 y mitigación
● A5: Security Misconfiguration
● Se habilitan o instalan funciones innecesarias (por ejemplo, puertos,
servicios, páginas, cuentas o privilegios innecesarios).
● Las cuentas predeterminadas y sus contraseñas están habilitadas.
● El manejo de errores revela seguimientos de pila u otros mensajes de
error demasiado informativos para los usuarios.
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
● A5: Security Misconfiguration
● El modo de depuración de Django estaba habilitado. Esto puede provocar
que se muestren a los usuarios mensajes de error y variables de entorno.
● En un entorno de producción, el modo de depuración debe desactivarse
utilizando la siguiente configuración de Django (settings.py):
● DEBUG = False
Vulnerabilidades OWASP top 10 y mitigación
● A8 Software and Data Integrity Failures
● Las errores de integridad del software y de los datos se relacionan con
código e infraestructura que no protegen contra violaciones de
integridad. Un ejemplo de esto es cuando una aplicación depende de
bibliotecas o módulos de fuentes, repositorios que no son confiables.
● Ataques relacionados con objetos y estructuras de datos en los que el
atacante modifica la lógica de la aplicación o logra la ejecución remota de
código arbitrario si hay clases disponibles para la aplicación que pueden
cambiar el comportamiento durante o después de la deserialización.
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
● A8 Software and Data Integrity Failures
● user+<script>document.getElementById("download_link").setA
ttribute("href"%2C"%2Fstatic%2Ffake.txt")%3B<%2Fscript>us
er+<script>document.getElementById("download_link").setAttr
ibute("href"%2C"%2Fstatic%2Ffake.txt")%3B<%2Fscript>
● La URL de descarga se modifica y el usuario puede descargar un archivo
arbitrario confiando en el dominio.
Vulnerabilidades OWASP top 10 y mitigación
● A8 Software and Data Integrity Failures
Vulnerabilidades OWASP top 10 y mitigación
● A10: Server Side Request Forgery (SSRF)
● Esta vulnerabilidad ocurre cada vez que una aplicación web busca un
recurso remoto sin validar la URL proporcionada por el usuario.
● Permite que la aplicación redireccione a una URL controlada por el
atacante.
● Ataques comunes: ataques a servicios/archivos internos, ataques a URL
externas (DoS)
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
Vulnerabilidades OWASP top 10 y mitigación
https://github.com/boomcamp/django-security
Vulnerabilidades OWASP top 10 y mitigación
from django.contrib.auth.decorators import
login_required
from django.http import HttpResponse
@login_required
def secure_view(request):
# Your view logic here
return HttpResponse(“This is a secure view”)
Vulnerabilidades OWASP top 10 y mitigación
from functools import wraps
from django.http import HttpResponse
def admin_only(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
if request.user.is_superuser:
return view_func(request, *args, **kwargs)
else:
return HttpResponse(“Access Denied”)
return wrapper
Vulnerabilidades OWASP top 10 y mitigación
from django.contrib.auth import authenticate, login
from django.http import HttpResponse
def login_view(request):
if request.method == ‘POST’:
username = request.POST[‘username’]
password = request.POST[‘password’]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return HttpResponse(“Login successful”)
else:
return HttpResponse(“Invalid credentials”)
else:
# Render login form
return HttpResponse(“Login form”)
Vulnerabilidades OWASP top 10 y mitigación
from django.http import HttpResponsePermanentRedirect
class EnforceHttpsMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if not request.is_secure():
url = request.build_absolute_uri(request.get_full_path())
secure_url = url.replace(‘http://’, ‘https://’)
return HttpResponsePermanentRedirect(secure_url)
return self.get_response(request)
Vulnerabilidades OWASP top 10 y mitigación
from django.core.validators import FileExtensionValidator
from django.forms import forms
class FileUploadForm(forms.Form):
file = forms.FileField(validators=[FileExtensionValidator(allowed_extensions=[‘pdf’,
‘docx’])])
Vulnerabilidades OWASP top 10 y mitigación
<form method=”post” action=”/submit-form/”>
{% csrf_token %}
<!—Form fields –>
<button type=”submit”>Submit</button>
</form>
Vulnerabilidades OWASP top 10 y mitigación
from django import forms
from django.utils.html import escape
class SecureForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
def clean_name(self):
name = self.cleaned_data[‘name’]
# Sanitize user input
sanitized_name = escape(name)
return sanitized_name
def clean_email(self):
email = self.cleaned_data[‘email’]
# Validate and sanitize user input
if not email.endswith(‘@domain.com’):
raise forms.ValidationError(“Invalid email domain”)
sanitized_email = escape(email)
return sanitized_email
¡Gracias!
@jmortegac
https://www.linkedin.com/in/jmortega1
https://jmortega.github.io
https://josemanuelortegablog.com
https://www.marcombo.com/desarrollo-
de-microservicios-con-python-9788426
737199
https://www.marcombo.com/desarrollo-
seguro-en-ingenieria-del-software-aplic
aciones-seguras-con-android-nodejs-p
ython-y-c-9788426728005/

Más contenido relacionado

PDF
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
PPTX
Owasp top 10 2017
PPTX
Temas owasp
PDF
OWASP Top 10 2017
PDF
Owasp top 10_2007_spanish
PPTX
Owasp top ten 2019
PDF
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
PPTX
Los 10 principales riesgos en aplicaciones web #CPMX5
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Owasp top 10 2017
Temas owasp
OWASP Top 10 2017
Owasp top 10_2007_spanish
Owasp top ten 2019
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Los 10 principales riesgos en aplicaciones web #CPMX5

Similar a PyGoat Analizando la seguridad en aplicaciones Django.pdf (20)

PPT
Owasp Top10 Spanish
PPTX
OWASP TOP TEN 2013.pptx
PPTX
01 - Sesión 09 - Fallos de Seguridad.pptx
PPTX
Owasp top 10
PPTX
OpenSouthCode '18 - OWASP Top 10 (2017) [2018-June-01]
PDF
TOP10 - Owasp 2017
PDF
S13 - PRUEBAS DE SOFTWARE OWA - PRUEBAS DE SOFTWARE
PPT
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
PDF
Owasp top 10 2010: Riesgos de seguridad en las Aplicaciones Web
PDF
In seguridad de aplicaciones web
PDF
Owasp proyecto
PDF
Seguridad web
PDF
Inyección, XSS, CSRF en ChelaJS
PDF
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
PPS
Seguridad en Aplicaciones Web
PDF
Seguridad en servidores WEB. Modulo mod_security
PDF
Seguridad en las relaciones de confianza. VI Foro de Seguridad de RedIRIS
PDF
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
PDF
Diseño y desarrollo.Protección aplicativa-v2.pdf
PPTX
01 - Sesión 10 - OWASP, Vulberabilidad_.pptx
Owasp Top10 Spanish
OWASP TOP TEN 2013.pptx
01 - Sesión 09 - Fallos de Seguridad.pptx
Owasp top 10
OpenSouthCode '18 - OWASP Top 10 (2017) [2018-June-01]
TOP10 - Owasp 2017
S13 - PRUEBAS DE SOFTWARE OWA - PRUEBAS DE SOFTWARE
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
Owasp top 10 2010: Riesgos de seguridad en las Aplicaciones Web
In seguridad de aplicaciones web
Owasp proyecto
Seguridad web
Inyección, XSS, CSRF en ChelaJS
Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas
Seguridad en Aplicaciones Web
Seguridad en servidores WEB. Modulo mod_security
Seguridad en las relaciones de confianza. VI Foro de Seguridad de RedIRIS
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
Diseño y desarrollo.Protección aplicativa-v2.pdf
01 - Sesión 10 - OWASP, Vulberabilidad_.pptx
Publicidad

Más de Jose Manuel Ortega Candel (20)

PDF
Seguridad y auditorías en Modelos grandes del lenguaje (LLM)
PDF
Seguridad y auditorías en Modelos grandes del lenguaje (LLM).pdf
PDF
Beyond the hype: The reality of AI security.pdf
PDF
Seguridad de APIs en Drupal_ herramientas, mejores prácticas y estrategias pa...
PDF
Security and auditing tools in Large Language Models (LLM).pdf
PDF
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
PDF
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
PDF
Evolution of security strategies in K8s environments- All day devops
PDF
Evolution of security strategies in K8s environments.pdf
PDF
Implementing Observability for Kubernetes.pdf
PDF
Computación distribuida usando Python
PDF
Seguridad en arquitecturas serverless y entornos cloud
PDF
Construyendo arquitecturas zero trust sobre entornos cloud
PDF
Tips and tricks for data science projects with Python
PDF
Sharing secret keys in Docker containers and K8s
PDF
Implementing cert-manager in K8s
PDF
Python para equipos de ciberseguridad(pycones)
PDF
Python para equipos de ciberseguridad
PDF
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
PDF
ELK para analistas de seguridad y equipos Blue Team
Seguridad y auditorías en Modelos grandes del lenguaje (LLM)
Seguridad y auditorías en Modelos grandes del lenguaje (LLM).pdf
Beyond the hype: The reality of AI security.pdf
Seguridad de APIs en Drupal_ herramientas, mejores prácticas y estrategias pa...
Security and auditing tools in Large Language Models (LLM).pdf
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Evolution of security strategies in K8s environments- All day devops
Evolution of security strategies in K8s environments.pdf
Implementing Observability for Kubernetes.pdf
Computación distribuida usando Python
Seguridad en arquitecturas serverless y entornos cloud
Construyendo arquitecturas zero trust sobre entornos cloud
Tips and tricks for data science projects with Python
Sharing secret keys in Docker containers and K8s
Implementing cert-manager in K8s
Python para equipos de ciberseguridad(pycones)
Python para equipos de ciberseguridad
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
ELK para analistas de seguridad y equipos Blue Team
Publicidad

Último (20)

PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPT
Que son las redes de computadores y sus partes
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
taller de informática - LEY DE OHM
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Maste clas de estructura metálica y arquitectura
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
Yogurt de tocosh (1).pptx preparacion receta
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PDF
diagrama de pareto.pdf valerie giraldo diaz
PPTX
Presentación de Redes de Datos modelo osi
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PPTX
Administración se srevidores de apliaciones
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
SAP Transportation Management para LSP, TM140 Col18
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Que son las redes de computadores y sus partes
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
Plantilla para Diseño de Narrativas Transmedia.pdf
taller de informática - LEY DE OHM
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Maste clas de estructura metálica y arquitectura
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
REDES INFORMATICAS REDES INFORMATICAS.pptx
Yogurt de tocosh (1).pptx preparacion receta
Las nuevas tecnologías en la salud - enfermería técnica.
diagrama de pareto.pdf valerie giraldo diaz
Presentación de Redes de Datos modelo osi
Temas y subtemas de las fichas 1 y 2.pdf
Introduccion a servidores de Aplicaciones (1).pptx
Administración se srevidores de apliaciones
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
SAP Transportation Management para LSP, TM140 Col18
Trabajo colaborativo Grupo #2.docxmkkkkkkl

PyGoat Analizando la seguridad en aplicaciones Django.pdf

  • 1. PyGoat: Analizando la seguridad en aplicaciones Django José Manuel Ortega @jmortegac
  • 2. Agenda ● Introducción a la seguridad en aplicaciones Django ● Pygoat como ejemplo de aplicación vulnerable ● Vulnerabilidades OWASP top 10 y mitigación
  • 3. Introducción a la seguridad en aplicaciones Django ● Inyección SQL: El ORM (Object-Relational Mapping) de Django puede prevenir algunos tipos de inyección SQL, pero no es infalible. Se debe tener cuidado de escapar correctamente cualquier entrada suministrada por el usuario al crear consultas SQL. ● Cross-site scripting (XSS): El motor de plantillas de Django escapa automáticamente cualquier dato que se muestre en una página, pero aún es posible crear una vulnerabilidad si los datos suministrados por el usuario se incluyen en un script JavaScript. ● Falsificación de petición en sitios cruzados (CSRF): Django incluye protección contra CSRF por defecto, pero esta protección puede ser eludida si el desarrollador no toma las medidas adecuadas.
  • 4. Introducción a la seguridad en aplicaciones Django ● Vulnerabilidades de carga de archivos: Si una aplicación permite a los usuarios subir archivos, es importante validar correctamente los archivos para evitar que se ejecute código malicioso en el servidor. ● Vulnerabilidades de divulgación de archivos: Los desarrolladores deben asegurarse de que cualquier archivo que no esté destinado a ser accesible públicamente esté debidamente protegido contra el acceso no autorizado. ● Validación de entrada inadecuada: Los desarrolladores no comprueban las entradas del usuario, lo que da lugar a posibles inyecciones de código en la plantilla. Esto se conoce comúnmente como CWE-20: Improper Input Validation.
  • 5. Introducción a la seguridad en aplicaciones Django ● Vulnerabilidades SQL Injection ● CVE-2022-34265: Potential SQL injection via Trunc(kind) and Extract(lookup_name) arguments
  • 6. Introducción a la seguridad en aplicaciones Django ● https://github.com/django/django/commit/54eb8 a374d5d98594b264e8ec22337819b37443c
  • 7. Introducción a la seguridad en aplicaciones Django ● Vulnerabilidades SQL Injection ● CVE-2023-31047: Potential bypass of validation when uploading multiple files using one form field ● https://www.djangoproject.com/weblog/2023/ma y/03/security-releases/ ● https://nvd.nist.gov/vuln/detail/CVE-2023-31047
  • 8. Introducción a la seguridad en aplicaciones Django
  • 9. Introducción a la seguridad en aplicaciones Django ● Vulnerabilidades SQL Injection def insecure(request): with connection.cursor() as cursor: baz = request.GET.get('baz') cursor.execute(f"SELECT foo FROM bar WHERE baz = {baz}") row = cursor.fetchone() # ... 1 ; DELETE FROM users ;
  • 10. Introducción a la seguridad en aplicaciones Django ● Vulnerabilidades SQL Injection def secure(request): with connection.cursor() as cursor: baz = request.GET.get('baz') cursor.execute("SELECT foo FROM bar WHERE baz = %s", [baz]) row = cursor.fetchone()
  • 11. Introducción a la seguridad en aplicaciones Django ● Vulnerabilidades SQL Injection ● Utilizar un mapeador relacional de objetos (ORM). Te ahorra escribir consultas SQL manualmente y previene automáticamente inyecciones SQL. ● El ORM más popular es SQLAlchemy https://www.sqlalchemy.org
  • 12. Introducción a la seguridad en aplicaciones Django ● Impacto SQL Injection ● Exponer información confidencial ● Acceso no autorizado ● Denegación de servicio ● Ejecución de código
  • 13. Introducción a la seguridad en aplicaciones Django ● Prevenir SQL Injection ● Consultas parametrizadas ● Validaciones en parámetros de entrada ● Prácticas de codificación segura ● Firewall de aplicaciones web (WAF)
  • 14. Pygoat como ejemplo de aplicación vulnerable ● https://owasp.org/www-project-pygoat ● https://github.com/adeyosemanputra/pygoat ● https://hub.docker.com/r/pygoat/pygoat $ docker pull pygoat/pygoat $ docker run --rm -p 8000:8000 pygoat/pygoat
  • 15. Vulnerabilidades OWASP top 10 y mitigación ● A1: Broken Access Control(Control de acceso roto) ● El control de acceso, a veces llamado autorización, es la forma en que una aplicación web otorga acceso al contenido y las funciones a algunos usuarios y no a otros. ● Estas comprobaciones se realizan después de la autenticación y rigen lo que los usuarios "autorizados" pueden hacer.
  • 16. Vulnerabilidades OWASP top 10 y mitigación
  • 17. Vulnerabilidades OWASP top 10 y mitigación
  • 18. Vulnerabilidades OWASP top 10 y mitigación
  • 19. Vulnerabilidades OWASP top 10 y mitigación
  • 20. Vulnerabilidades OWASP top 10 y mitigación ● A1: Broken Access Control(Control de acceso roto) ● Implementar mecanismos de control de acceso una vez y reutilizarlos en toda la aplicación. ● Los controles de acceso al modelo deben validar que el usuario pueda crear, leer, actualizar o eliminar cualquier registro. ● Deshabilitar la lista de directorios del servidor web ● Los identificadores de sesión con estado deben invalidarse en el servidor después de cerrar sesión.
  • 21. Vulnerabilidades OWASP top 10 y mitigación ● A1: Broken Access Control(Control de acceso roto) ● Los tokens de sesión (como los JWT) incluyen información sobre el usuario que ha iniciado sesión. ○ Validar que el token de sesión no está caducado ○ Comprobar que el token es válido ○ Verificar si el usuario (su información está en el token de sesión) tiene permitido realizar peticiones al endpoint actual
  • 22. Vulnerabilidades OWASP top 10 y mitigación ● A3: Inyección ● La inyección ocurre cuando un atacante introduce datos que no son de confianza y engaña al intérprete para que haga cosas que no debería, como ejecutar comandos no deseados o acceder a datos no autorizados.
  • 23. Vulnerabilidades OWASP top 10 y mitigación
  • 24. Vulnerabilidades OWASP top 10 y mitigación
  • 25. Vulnerabilidades OWASP top 10 y mitigación
  • 26. Vulnerabilidades OWASP top 10 y mitigación ● A3: Inyección ● Proporcionar una interfaz parametrizada o utilizar otras herramientas de mapeo relacional de objetos (ORM). ● Realizar validación de parámetros de entrada del lado del servidor. ● Para cualquier consulta dinámica, escapar los caracteres especiales utilizando la sintaxis de escape específica para ese intérprete.
  • 27. Vulnerabilidades OWASP top 10 y mitigación ● A5: Security Misconfiguration ● Se habilitan o instalan funciones innecesarias (por ejemplo, puertos, servicios, páginas, cuentas o privilegios innecesarios). ● Las cuentas predeterminadas y sus contraseñas están habilitadas. ● El manejo de errores revela seguimientos de pila u otros mensajes de error demasiado informativos para los usuarios.
  • 28. Vulnerabilidades OWASP top 10 y mitigación
  • 29. Vulnerabilidades OWASP top 10 y mitigación ● A5: Security Misconfiguration ● El modo de depuración de Django estaba habilitado. Esto puede provocar que se muestren a los usuarios mensajes de error y variables de entorno. ● En un entorno de producción, el modo de depuración debe desactivarse utilizando la siguiente configuración de Django (settings.py): ● DEBUG = False
  • 30. Vulnerabilidades OWASP top 10 y mitigación ● A8 Software and Data Integrity Failures ● Las errores de integridad del software y de los datos se relacionan con código e infraestructura que no protegen contra violaciones de integridad. Un ejemplo de esto es cuando una aplicación depende de bibliotecas o módulos de fuentes, repositorios que no son confiables. ● Ataques relacionados con objetos y estructuras de datos en los que el atacante modifica la lógica de la aplicación o logra la ejecución remota de código arbitrario si hay clases disponibles para la aplicación que pueden cambiar el comportamiento durante o después de la deserialización.
  • 31. Vulnerabilidades OWASP top 10 y mitigación
  • 32. Vulnerabilidades OWASP top 10 y mitigación ● A8 Software and Data Integrity Failures ● user+<script>document.getElementById("download_link").setA ttribute("href"%2C"%2Fstatic%2Ffake.txt")%3B<%2Fscript>us er+<script>document.getElementById("download_link").setAttr ibute("href"%2C"%2Fstatic%2Ffake.txt")%3B<%2Fscript> ● La URL de descarga se modifica y el usuario puede descargar un archivo arbitrario confiando en el dominio.
  • 33. Vulnerabilidades OWASP top 10 y mitigación ● A8 Software and Data Integrity Failures
  • 34. Vulnerabilidades OWASP top 10 y mitigación ● A10: Server Side Request Forgery (SSRF) ● Esta vulnerabilidad ocurre cada vez que una aplicación web busca un recurso remoto sin validar la URL proporcionada por el usuario. ● Permite que la aplicación redireccione a una URL controlada por el atacante. ● Ataques comunes: ataques a servicios/archivos internos, ataques a URL externas (DoS)
  • 35. Vulnerabilidades OWASP top 10 y mitigación
  • 36. Vulnerabilidades OWASP top 10 y mitigación
  • 37. Vulnerabilidades OWASP top 10 y mitigación
  • 38. Vulnerabilidades OWASP top 10 y mitigación https://github.com/boomcamp/django-security
  • 39. Vulnerabilidades OWASP top 10 y mitigación from django.contrib.auth.decorators import login_required from django.http import HttpResponse @login_required def secure_view(request): # Your view logic here return HttpResponse(“This is a secure view”)
  • 40. Vulnerabilidades OWASP top 10 y mitigación from functools import wraps from django.http import HttpResponse def admin_only(view_func): @wraps(view_func) def wrapper(request, *args, **kwargs): if request.user.is_superuser: return view_func(request, *args, **kwargs) else: return HttpResponse(“Access Denied”) return wrapper
  • 41. Vulnerabilidades OWASP top 10 y mitigación from django.contrib.auth import authenticate, login from django.http import HttpResponse def login_view(request): if request.method == ‘POST’: username = request.POST[‘username’] password = request.POST[‘password’] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return HttpResponse(“Login successful”) else: return HttpResponse(“Invalid credentials”) else: # Render login form return HttpResponse(“Login form”)
  • 42. Vulnerabilidades OWASP top 10 y mitigación from django.http import HttpResponsePermanentRedirect class EnforceHttpsMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if not request.is_secure(): url = request.build_absolute_uri(request.get_full_path()) secure_url = url.replace(‘http://’, ‘https://’) return HttpResponsePermanentRedirect(secure_url) return self.get_response(request)
  • 43. Vulnerabilidades OWASP top 10 y mitigación from django.core.validators import FileExtensionValidator from django.forms import forms class FileUploadForm(forms.Form): file = forms.FileField(validators=[FileExtensionValidator(allowed_extensions=[‘pdf’, ‘docx’])])
  • 44. Vulnerabilidades OWASP top 10 y mitigación <form method=”post” action=”/submit-form/”> {% csrf_token %} <!—Form fields –> <button type=”submit”>Submit</button> </form>
  • 45. Vulnerabilidades OWASP top 10 y mitigación from django import forms from django.utils.html import escape class SecureForm(forms.Form): name = forms.CharField(max_length=100) email = forms.EmailField() def clean_name(self): name = self.cleaned_data[‘name’] # Sanitize user input sanitized_name = escape(name) return sanitized_name def clean_email(self): email = self.cleaned_data[‘email’] # Validate and sanitize user input if not email.endswith(‘@domain.com’): raise forms.ValidationError(“Invalid email domain”) sanitized_email = escape(email) return sanitized_email