💻
My Personal Hacking Path
  • 👓Wellcome
    • My Personal Hacking Path
      • Whoami
  • 📚Mi Metodología de Pentesting
    • Tipos de evaluaciones
      • El día a día en pentesting
    • Metodología Propia
      • OWASP
      • OSSTMM
      • PTES
      • CEH Hacking Metodology (CHM)
      • Cyber Kill Chain
      • MITRE Att&ck
    • Fase 0 - Pre Evalaución
    • Fase 1 - Reconocimiento
      • Web / Host
      • SubDominios
      • Descubrimiento de correos electrónicos
      • Escaneo de Puertos
      • Credenciales y brechas de seguridad
      • ¿Sin Ideas?
    • Fase 2 - Explotación
      • Shells
        • Diferencia entre una WebShell y Reverse Shell
      • Payload
      • Network Penetration Services
        • 20|21 - FTP
        • 22 - SSH
        • 139|445- SMB
        • 80|443 - HTTP/HTTPS
    • Fase 3 - Post Explotación
      • Enumeración
      • Linux
        • Enumeración
        • Privilege Escalation
      • Windows
        • Revershell
        • Windows Enum
        • Privilege Escalation
    • Fase 4 - Reporting
      • CVSS
        • v4.0
      • Toma de notas
  • 👾Malware
    • Malware DevOps
    • Arquitectura de Windows
      • Windows API
      • Procesos de Windows
      • Estructuras no documentadas
    • PE
      • DLL
    • Almacenamiento del Payload
      • .data & .rdata
      • .text
      • .rsrc
    • Cifrado de Payload
      • XOR
      • RC4
      • AES
    • Ofuscación de Payload
      • IPv4/IPv6Fuscation
      • MACFucscation
      • UUIDFuscation
    • Process Injectión
      • DLL Injection
      • Shellcode Injection
      • APC Injection
  • 🌐Web-Pentesting
    • Metodología para Pentesting Web
    • Footprinting
      • Identificación Tecnologías web
        • WordPress
        • Joomla
        • Drupal
        • Magento
      • Fuzzing
      • Validación de los certificados
    • Vulnerabilidades comunes
      • File Upload
      • SQL Injection
      • Cross-site scripting
      • XXE Injection
      • LFI - Local File Inclusion
        • Log Poisoning
      • RFI - Remote File Inclusión
      • CSRF - Cross-Site Request Forgery
      • SSRF - Server-Side Request Forgery
      • SSTI - Server-Side Template Injection
      • CSTI - Client-Side Template Injection
      • Padding Oracle Attack
      • NoSQL Injection
      • LDAP Injection
    • Laboratorios
  • ☁️AWS Pentesting
    • Introducción a Amazon Web Services AWS
    • Acceso Inicial
    • IAM
      • Políticas de IAM
      • Enumeraciones
      • Privesc-Paths
        • Permisos de IAM
        • Permisos sobre políticas
        • AssumeRolePolicy Update
        • IAM:PassRole*
          • PassExistingRoleToCloudFormation
    • S3
      • Enumeración
      • S3_public
      • OSINT
    • Lambda
      • Enum Lambda
      • Enum API Gateway
      • Privesc-Paths
        • RCE sobre Lambda
        • PassExistingRoleToNewLambdaThenInvoke
        • PassRoleToNewLambdaThenTrigger
        • EditExistingLambdaFunctionWithRole
    • EC2
      • Enumeración
      • Privesc-Paths
        • EC2_SSRF
        • CreateEC2WhithExistingIP
        • PassExistingRoleToNewGlueDevEndpoint
        • ECS_takeover
    • VPC
      • Enumeración
      • PivotingInTheCloud
    • Bases de Datos
      • RDS
        • Enumeración
      • DynamoDB
        • Enumeración
    • ECS
      • Enum ECR
      • Enum ECS
      • Enum EKS
    • AWS Secrets Manager
      • Enumeración
    • Análisis de vulnerabilidades Automatizado
    • Blue Team AWS
      • CloudTrail
      • CloudWatch
      • GuardDuty
      • AWS Inspector
      • AWS Shield
      • Web Application Firewall
    • Notas
      • Terraform
  • 🔫Red_Team
    • Introducción a Red Team
      • Assume breach
    • ¿Qué es MITRE ATT&CK?
      • Guia de uso de Invoke-AtomicRedTeam
    • C2 Comando y control
      • Sliver C2
        • Instalación
        • Beacons y Sesiones
        • Perfiles
        • mTLS y WiewGuard
        • HTTP / HTTPS
        • DNS
        • Stagers: Basics
        • Stagers: Proccess Injection
        • Basics de Implates
        • Ejecución de Assembly
        • Sideload
        • SpawnDLL
        • Sliver Extensions
  • 💾Active Directory
    • Teoria
      • Componentes Físicos
      • Componentes Lógicos
      • GPO VS ACL
      • Kerberos
        • Funcionamiento de Kerberos
      • Usuarios por defecto
    • Enumeraciones
      • ¿Por qué enumerar?
      • Enumeración manual
      • Enumeración con PowerView
    • Ataques en AD
      • Mimikats
        • Comandos
      • Password Spraying
      • LLMNR Poisoning
      • Relay Attacks
        • NTLM
      • Kerberoasting
    • Tools
      • AuxRecon
      • Powershell
      • PowerView.ps1
      • ADPeas
      • Mimikatz
        • Comandos
    • AD Lab
  • 🌩️Azure Coud Pentesting
    • Introducción a Azure y Office 365
    • Introducción a Microsoft Indentity Services
    • Enumeración
    • Azure Files
      • Encontrar Fuga de Datos
    • Microsoft Graph
    • Notas
  • 📱Mobile Pentesting
    • Análisis de Aplicaciones Móviles en MobSF
    • ¿Cómo interceptar tráfico de una aplicación Flutter Android con Burp?
  • 📶Wireless
    • Terminología
    • Tipos de Wireless Networks
    • Formas de Autenticación
    • Cifrados
      • WEP
      • WPA
      • WPA2
      • WPA3
    • Ataques
  • 😎Extras
    • Docker
      • Port Forward y volúmenes
      • Docker Compose
      • Container Breakouts
    • Comandos Utiles
    • Fliper Zero
    • Páginas útiles
  • Kali Set Up
Con tecnología de GitBook
En esta página
  • Laboratorio
  • Configuración Inicial
  • Explotación
  1. AWS Pentesting
  2. EC2
  3. Privesc-Paths

EC2_SSRF

Lab: CloudGoat

AnteriorPrivesc-PathsSiguienteCreateEC2WhithExistingIP

Última actualización hace 1 año

Laboratorio

En este apartado se observará el ejemplo utilizando el laboratorio cloudgoat el escenario ec2_ssrf. En este escenario comenzaremos con el usuario SOLUS que tiene bajos privilegios y luego de una enumeración sobre la infraestructura, lograremos identificar un aplicativo web que está alojado en un EC2 vulnerable a ataques SSRF. Luego de aprovechar esta vulnerabilidad, lograremos comprometer unas credenciales de acceso por medio del servicio de metadatos

El desarrollo de este ejercicio puede llegar a consumir recursos económicos dentro de las cuentas de AWS.

Objetivo: Invocar la función de Lambda "cg-lambda-[ CloudGoat ID ]".

Configuración Inicial

Checar instalación de CloudGoad en:

Lanzar el escenario con

./cloudgoat.py create ec2_ssrf

Configurar las credenciales iniciales al finalizar el comando anterior

aws configure --profile solus

Explotación

cliam aws enumerate iam s3 ec2 lambda --profile solus

Al parecer el usuario tiene capacidad de list sobre el servicio lambda de AWS, el objetivo de del laboratorio es ejecutar la función "cg-lambda-[ CloudGoat ID ]", se procede a buscar e intentar ejecutar la función:

aws lambda list-functions --profile solus

Como se observa en la salida, se puede saber el nombre de la función "cg-lambda-ec2_ssrf_cgiddojqir0rks". También se observar variables de ambiente que contiene las credenciales del rol que se conecta con la instancia EC2, procedemos a intentar ejecutar la función

aws lambda invoke --function-name cg-lambda-ec2_ssrf_cgiddojqir0rks ./out.txt --profile solus

Al parecer, el usuario inicia no tiene permisos de ejecución sobre lambdas, se procede a configurar las llaves encontradas en la función y enumerar:

aws configure --profile lambda
aws sts get-caller-identity --profile lambda

Al realizar la enumeración, parece que el perfil lambda tiene full permisos en los servicios EC2

Se procede intentar listar las instancias en la nube

Existe una instancia en la nube que ofrece una IP publica con un DNS, se procede a realizar OSINT sobre ese dominio para saber que servicios ofrece:

sudo nmap -sS -sV -T4 -Pn domain

Al parecer, la computadora que corre sobre el servicio EC2 es un Ubuntu que expone el puerto 80 para dar servicio de http con el framework Node.js, procedamos a consumir ese servicio por medio de un navegador web:

Al entrar por la web, el aplicativo expone un error indicando sobre un parámetro faltante en la petición, al colocarlo se obtiene lo siguiente:

El aplicativo, parece hacer una llamada sobre el parámetro y exponer el valor de entrada en el aplicativo, en un péntesting web se puede realizar diferentes ataques, como XSS, OS Inyection, entre otros, en este caso el aplicativo es claro que trata de hacer una petición a otro sitio, al coloral el valor www.google.com se puede observar esta acción:

Se tiene que hacer explotación de la vulnerabilidad conocida como SSFF. La falsificación de solicitudes del lado del servidor (también conocida como SSRF) es una vulnerabilidad de seguridad web que permite a un atacante inducir a la aplicación del lado del servidor a realizar solicitudes a una ubicación no deseada.

Como lo estudiado previamente en este blog en la entrada:

Existe un End Point en AWS al cual todas las maquinas EC2 puede consumir de manera interna para la consulta de los metadatos, estos metadatos son ocupados por las instancias para configurar o administrar la instancia en ejecución, estos metadatos de instancia se dividen en categorías, como, por ejemplo, nombre de host, eventos y grupos de seguridad.

Como indica la documentación de amazon AWS, estos metadatos no está protegidos criptográficamente, entonces aprovechando la vulnerabilidad del sitio web, se puede realizar una llamada sobre en endpoint http://169.254.169.254/latest/meta-data para tratar de consumir estos metadatos.

curl http://domain.com/?url=http://169.254.169.254/latest/meta-data

En este punto, se pueden listar las carpetas y la información valiosa, un servicio que es interesante de consumir es el siguiente:

curl http://domain.com/?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/rol

Esta api, permite generar nuevas llaves de acceso para el rol / usuario que administra la Instancia EC2, se procede a configurarlas y enumerar

¿Qué hacer cuando se tienen credenciales? enumerar, enumerar y enumerar

Al parecer este rol solo tiene acceso a listar buckets, pues listemos buckets s3

aws s3 ls --profile ec2

¿Se podrá listar el contendio y descargar archivos? ¡Pongámoslo a prueba !

aws s3 ls s3://cg-secret-s3-bucket-<cloudgoat_id> --profile ec2

aws s3 cp s3://cg-secret-s3-bucket-<cloudgoat_id>/admin-user.txt ./ --profile ec2

cat admin-user.txt

Al parecer, este bucket es para guardar un archivo muy secreto donde contiene las credenciajes de administrador de algo... encontramos credenciales, procedemos a configurarlas y usarlas, a ver si con este usuario podemos ejecutar la función inicial:

¿Conque shepard ? ejecutemos la función lambda inicial y obtengamos la bandera

Como en toda fase de pentesting, primero se inicia con la enumeración, en este caso se hará uso de la herramienta , pero se puede hacer de manera manual o con otras herramientas:

☁️
Privesc-Paths
cliam
EC2
cloudgoat/scenarios/ec2_ssrf at master · RhinoSecurityLabs/cloudgoatGitHub
What is SSRF (Server-side request forgery)? Tutorial & Examples | Web Security AcademyWebSecAcademy
Logo
Metadatos de instancia y datos de usuario - Amazon Elastic Compute CloudAmazon Elastic Compute Cloud
Logo
Logo