¿Cómo podemos testear posibles vulnerabilidades de seguridad de un sitio web mientras ejecutamos pruebas funcionales automatizadas? ¿Es funcional mi software si tiene un issue de seguridad? En este artículo, detallamos cómo hacer la integración de Selenium y OWASP ZAP para lograr un testing de seguridad con Selenium eficiente y de calidad.
Antes de adentrarnos en la integración para poder realizar testing de seguridad con Selenium, nos gustaría detenernos por un momento para hablar sobre OWASP y específicamente sobre OWASP ZAP (Zed Attack Proxy).
OWASP es una organización y comunidad referente en temas de seguridad web y ahora también móvil. Propone una metodología de código abierto y colaborativa para auditorías de seguridad que permiten garantizar la revisión regular de un proyecto para minimizar errores y riesgos.
La labor de OWASP resulta fundamental en una era en la cual resulta cada vez más urgente lograr un tratamiento adecuado de la seguridad informática. Según el Informe de Riesgos Globales 2023 del Foro Económico Mundial, la tecnología “exacerbará las desigualdades” mientras que “los riesgos de ciberseguridad seguirán siendo una preocupación constante” durante los próximos 10 años.
Hacer pruebas de seguridad con Selenium, gracias a la integración con OWASP ZAP, es un gran paso que nos permitirá ahorrar tiempo, ya que podremos aprovechar la ejecución de las pruebas funcionales automatizadas para detectar posibles vulnerabilidades en nuestras aplicaciones web.
OWASP ZAP es una herramienta de prueba de seguridad de aplicaciones web de código abierto, utilizada para detectar vulnerabilidades en aplicaciones web y proporcionar una evaluación de seguridad completa.
Entre las características de OWASP ZAP, se incluyen:
✅Escaneo de vulnerabilidades automatizado
Puede realizar pruebas de vulnerabilidades automatizadas para detectar problemas como inyección de SQL, XSS, vulnerabilidades de sesión, vulnerabilidades de autenticación, y más.
✅Soporte para varios protocolos
Admite HTTP, HTTPS y TCP.
✅Interceptor de proxy
Actúa como un proxy entre el navegador y la aplicación web, lo cual permite interceptar y modificar solicitudes y respuestas.
✅Modo de exploración manual
Permite explorar manualmente las aplicaciones web. Esto resulta de gran utilidad para probar funcionalidades específicas y personalizadas.
✅Informes detallados
Proporciona informes detallados sobre las vulnerabilidades detectadas. Esto incluye información sobre la gravedad de la vulnerabilidad y sugerencias sobre cómo corregirla.
✅Integración con otros sistemas
Puede integrarse con otros sistemas de prueba de seguridad y automatización de pruebas, como Jenkins, Selenium, etc.
✅Soporte multiplataforma
Es compatible con Windows, Linux y Mac OS X.
✅Personalización y extensibilidad
Es altamente personalizable y extensible, lo que permite a los usuarios agregar sus propios scripts de prueba y ajustar la herramienta para satisfacer sus necesidades específicas.
Integración de OWASP ZAP con Selenium
El objetivo de este proyecto es lograr realizar testing de seguridad con Selenium. En este camino, primero es necesario tener un proyecto Selenium para combinar con ZAP. Es preciso configurar el proxy de ZAP en los scripts de proyecto Selenium para que todas las solicitudes HTTP que nuestro sitio bajo prueba realice sean enviadas a través de ZAP, así ZAP puede interceptar todas las solicitudes y respuestas de la aplicación web y analizar la seguridad en tiempo real.
A continuación, compartimos una guía con un paso a paso sobre cómo lograr esta integración, con el fin de lograr testing de seguridad con Selenium:
1️⃣Instalar OWASP ZAP (versión 2.10.0 o superior)
Lo más sencillo es instalar la GUI de ZAP, pero puede hacerse levantando el proxy con Docker.
2️⃣Iniciar OWASP ZAP
Configurar el puerto y la dirección IP para que Selenium pueda conectarse. Por defecto, la IP será localhost y el puerto será 8080. Para obtener la API KEY, abrir la GUI e ir a Tools > Options > API, y copiar la cadena que se encuentra en el input API Key.
3️⃣Configurar Selenium para usar el proxy de ZAP
Detener un proyecto Selenium creado con sus dependencias configuradas correctamente y agregar el proxy con el siguiente código:
@BeforeMethod
public void setup(){
String proxyServerUrl = ZAP_PROXY_ADDRESS + ":" + ZAP_PROXY_PORT;
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyServerUrl);
proxy.setSslProxy(proxyServerUrl);
ChromeOptions co = new ChromeOptions();
co.setAcceptInsecureCerts(true);
co.setProxy(proxy);
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver(co);
api = new ClientApi(ZAP_PROXY_ADDRESS, ZAP_PROXY_PORT,
ZAP_API_KEY);
}
4️⃣Generar un reporte
Después de ejecutar las pruebas, se puede generar un reporte detallado de las vulnerabilidades detectadas por ZAP en el método tearDown (o el modo en que sea denominado en cada caso).
@AfterMethod
public void tearDown() throws Exception{
if (api != null) {
String title = "POC ZAP Selenium - Abstracta";
String template = "traditional-html";
String description = "This is a ZAP test report";
String reportfilename = "abstracta-web-security-report.html";
String targetFolder = System.getProperty("user.dir");
try {
ApiResponse res = api.reports.generate(title, template,
null, description, null, null, null,null, null,
reportfilename,null, targetFolder,null);
System.out.println("ZAP report generated here: " +
res.toString());
} catch (ClientApiException ex) {
throw new Exception(ex);
}
}
}
Para tener una demostración de su funcionamiento y poder probar rápidamente la integración de ZAP con Selenium, compartimos una prueba de concepto en nuestro GitHub. No dudes en probarla y dejarnos tus comentarios.
¿Estás buscando ayuda con testing de seguridad? Contáctanos y conversemos sobre cómo podemos ayudarte a llevar a cabo una estrategia de testing de seguridad efectiva.
¿Te interesa conocer más sobre testing de seguridad en aplicaciones móviles con OWASP? Te lo contamos en este artículo.
Síguenos en LinkedIn, X, Facebook, Instagram y YouTube para ser parte de nuestra comunidad!
Posts Relacionados
¿Qué son las pruebas de observabilidad y por qué son importantes en la calidad?
Para crear software de cada vez mejor calidad, es crucial realizar diferentes tipos de análisis y desde distintos ángulos: ¿cuál es la relevancia de la observabilidad? ¿Cómo se relaciona con el monitoreo, el testing y la ingeniería del caos? ¡Descúbrelo aquí!
¿Cómo optimizar la cobertura de las pruebas de software a largo plazo?
Es clave elegir los criterios que mejor se adapten a las necesidades de tu proyecto. Conoce nuestro método para mejorar la cobertura de las pruebas en múltiples ciclos y a largo plazo.