💻
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
  • IAM:CreatePolicyVersion
  • Configuración inicial
  • Explotación
  • IAM:SetDefaultPolicyVersion
  • Configuración inicial
  • Explotación
  • IAM:AttachUserPolicy
  • Configuración inicial
  • Explotación
  • IAM:AttachGroupPolicy
  • Configuración inicial
  • Explotación
  • IAM:AttachRolePolicy
  • Configuración inicial
  • Explotación
  • IAM:PutUserPolicy
  • Configuración inicial
  • Explotación
  • IAM:PutGroupPolicy
  • Configuración inicial
  • Explotación
  • IAM:PutRolePolicy
  • Configuración inicial
  • Explotación
  1. AWS Pentesting
  2. IAM
  3. Privesc-Paths

Permisos sobre políticas

Lab: IAM vulnerable

AnteriorPermisos de IAMSiguienteAssumeRolePolicy Update

Última actualización hace 1 año

Es crucial restringir los permisos en las políticas de AWS tanto como limitar los permisos de los usuarios en sus cuentas y en las de otros usuarios. Las políticas son las que conceden los permisos a los usuarios, ya sea como parte de un grupo o al asumir roles. Los permisos se asignan a través de las políticas aplicadas a esos grupos y roles. Por lo tanto, los administradores deben ser muy cuidadosos al otorgar permisos a los usuarios en relación a las políticas. Específicamente, los siguientes permisos de política pueden conducir a una escalada de privilegios:

  • iam:CreatePolicyVersion

  • iam:SetDefaultPolicyVersion

  • iam:AttachUserPolicy

  • iam:AttachGroupPolicy

  • iam:AttachRolePolicy

  • iam:PutUserPolicy

  • iam:PutGroupPolicy

  • iam:PutRolePolicy

El permiso para crear una nueva versión de la política le permite a un usuario reemplazar completamente los permisos en una política. Si esta política se aplica a ellos, esto abre la puerta para que el usuario simplemente se asigne privilegios administrativos completos de AWS. Adjuntar una política o crear una nueva política para un usuario, grupo o función puede aumentar de manera similar los permisos aplicados al usuario.

IAM:CreatePolicyVersion

Si un atacante tiene el permiso iam:CreatePolicyVersion en AWS, puede crear una nueva versión de una política ya existente. Esto significa que podrían crear una política que permita más permisos de los que tienen actualmente, lo que podría comprometer la seguridad del sistema.

Pasos:

  1. Listar políticas existentes

  2. Crear y establecer por defecto una política con mayores permisos

Configuración inicial

Usuario del laboratorio: privesc1-CreateNewPolicyVersion-user

Encada política existen versiones y donde cada versión puede cambia de forma drástica, se tiene que checar cual es la política por defecto:

Después crear unas llaves de acceso para utilizar el usuario con AWS CLI. Las llaves de acceso se crean por medio de un usuario administrador, y se simula que se obtuvieron mediante algúna brecha dentro de una auditoría.

aws sts assume-role --role-arn arn:aws:iam::651927172911:role/privesc1- CreateNewPolicyVersion-role --role-session-name privesc1

Checar que la configuración esté correcta con:

aws sts get-caller-identity --profile privesc1

Explotación

En este tipo de explotación, se tiene que crear un archivo JSON con las políticas que se quieren agregar. Por ejemplo la política de permitir todo:

admin_policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

Despues, subir el archivo con el el uso de la política IAM:CreatePolicyVersion

aws iam create-policy-version --policy-arn arn:aws:iam::651927172911:policy/privesc1- CreateNewPolicyVersion --policy-document file://admin_politica.json --set-as-default --profile privesc1

IAM:SetDefaultPolicyVersion

_Al modificar una política, AWS crea una nueva versión con todos los cambios, estos cambios se pueden hacer rollback. L_os usuarios con el permiso iam:SetDefaultPolicyVersion pueden establecer qué versión de la política es la versión predeterminada (activa). Entonces si en el pasadó existió una política con demaciados permisiso, este comando puede regresar a un punto en el tiempo para obtener mayores privilegios.

Pasos de explotación:

  1. Identificar políticas y versiones

  2. Identificar la versión con mas permisos

  3. Usar set-default-policy-version a la versión con mayores permisos

Configuración inicial

Usuario del laboratorio: privesc2-SetExistingDefaultPolicyVersion-

user

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Primero se tiene que listar las versiones de una política y luego listar cuales permisos tienen cada versionado. Para esto se tiene que identificar cual política es la afectada y luego listar las versiones con el siguiente comando:

aws iam list-policy-versions --policy-arn arn:aws:iam::651927172911:policy/privesc2- SetExistingDefaultPolicyVersion

Este método de ataque, requiere que la política tenga al menos 2 versiones

Como se observa en la imagen anterior, la versión 1 es la que está por defecto y que existe otra versión la numero 2, se procede a compara cual versión tiene mas privilegios

aws iam get-policy-version --policy-arn arn:aws:aim::some:some --version-id v3 --profile privesc2

Se ve que la política que no está por defecto, tiene mas permisos que la política actual

aws iam get-policy --policy-arn arn:aws:iam::651927172911:policy/privesc2- SetExistingDefaultPolicyVersion

Finalmente, se procede a realizar el cambio de la política por la versión con más permisos

aws iam set-default-policy-version --policy-arn arn:aws:iam::651927172911:policy/privesc2- SetExistingDefaultPolicyVersion --version-id v2 --profile privesc2

IAM:AttachUserPolicy

Un atacante con el permiso iam:AttachUserPolicy puede aumentar los privilegios existentes adjuntando una política a un usuario al que tiene acceso, agregando los permisos de esa política al atacante.

Este Permiso fue explotado contra la empresa Expel en abril del 2022 por medio de credenciales encontradas en un repositorio de código público.

Configuración inicial

Usuario del laboratorio: privesc7-AttachUserPolicy-user con el siguiente rol:

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Para esta explotación, se necesita conocer si existe una política que con mayores permisos, se tiene que hace un listado de políticas por algún medio o utilizar las políticas por defecto de AWS, en este caso se usara la política AdminsitratorAccess que viene por defecto en AWS y se sabe que existe. Después, solo se utiliza el comando attach-user-policy indicando a cual usuario con cual ARN de política se va a agregar.

aws iam attach-user-policy --user-name privesc7-AttachUserPolicy-user --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --profile privesc7

Como se ve en la salida de los comandos anteriores, se hizo correctamente la adición de una política de administradores, escalando privilegios.

IAM:AttachGroupPolicy

Equivalente al anterior método, este permiso permite aumentar los privilegios de un grupo adjuntado políticas al grupo, no afecta a las políticas propias del usuario

Este método de ataque, añade políticas a un grupo si varios usuarios se encuentran en el grupo, todos ellos tendrán elevación de privilegios.

Configuración inicial

Usuario del laboratorio: privesc8-AttachGroupPolicy-user con el rol:

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Dado que los miembros de un grupo heredan los permisos de las políticas asociadas al grupo, solo se tiene que saber el grupo al cual pertenece el usuario y la política que se va a agregar al grupo:

Si el usuario del cual se conocen las credenciales y se tiene el rol IAM:AttachGroupPolicy no pertenece a ningún grupo, no se podrá realizar una escalación de privilegios, pero si afectar los permisos de los demás grupos.

Se podría buscar la forma de modificar un grupo y después añadir el usuario al grupo afectado para hacer la escalación de privilegios, usando múltiples técnicas aquí descritas.

En este caso el nombre del grupo se sacó por medio web, se puede realiza el comando aws iam list-groups-for-user --user-name <User> pero requiere permisos de IAM de list.

Finalmente se agrega la política con permisos avanzados al grupo seleccionado

aws iam attach-group-policy --group-name privesc8-AttachGroupPolicy-group --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --profile privesc8

IAM:AttachRolePolicy

Un atacante con el permiso iam:AttachRolePolicy puede aumentar los privilegios adjuntando una política a una función a la que tiene acceso, agregando los permisos de esa política al atacante.

Configuración inicial

Usuario del laboratorio: privesc9-AttachRolePolicy-user con el rol:

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Parecida a la explotación de Attach User Policy, se tiene que saber el nombre del rol al cual se le va añadir una política, esto se hace con el siguiente comando:

aws iam attach-role-policy --role-name privesc9-AttachRolePolicy-role --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --profile privesc9

Se recomienda en la fase de enumeración, conocer los roles existentes, los roles asociados al usuario a elevar privilegios, y conocer las políticas que podemos añadir al rol.

Despues a veces se tiene que asumir el rol afectado el cual dará nuevos datos de acceso:

aws sts assume-role --role-arn arn:aws:iam::123123:role/Rolename --role-session-name privesc9 --profile privesc9

Normalmente asumir un rol, genera un token de sesión, se tiene que agregar dentro del archivo de credentials

Luego configurar las llaves con AWS configure y se tendrá acceso administrador.

IAM:PutUserPolicy

Un atacante con el permiso iam:PutUserPolicy puede aumentar los privilegios creando o actualizando una política en línea para un usuario al que tiene acceso, agregando los permisos de esa política al atacante.

Configuración inicial

Usuario del laboratorio:privesc10-PutUserPolicy-user con el rol:

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Este ataque consiste en agregar una serie de políticas a un usuario dado un archivo.

admin_policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

Después, se procede a utilizar el comando siguiente para asignar la política al usuario

aws iam put-user-policy --user-name privesc10-PutUserPolicy-user --policy-name politica-PrivEsc-Spartan --policy-document file://admin_politica.json --profile privesc10

IAM:PutGroupPolicy

Un atacante con el permiso iam:PutGroupPolicy puede aumentar los privilegios creando o actualizando una política en línea para un grupo del que forma parte, agregando los permisos de esa política al atacante.

Configuración inicial

Todo

Usuario del laboratorio: privesc11-PutGroupPolicy-user con el rol:

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Como en el caso anterior, se tiene que generar una política para agregar a un grupo de usuarios

admin_policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

Finalmente, se procede con asignar la política a un grupo, requiere de conocer el grupo a cual asignar la política:

aws iam put-group-policy --group-name privesc11- PutGroupPolicy-group --policy-name politica-PrivEsc2- Spartan --policy-document file://admin_politica.json -- profile privesc11

IAM:PutRolePolicy

Un atacante con el permiso iam:PutRolePolicy puede aumentar los privilegios creando o actualizando una política en línea para un rol al que tiene acceso, agregando los permisos de esa política al atacante.

Configuración inicial

Todo

Usuario del laboratorio: privesc12-PutRolePolicy-user con el rol:

Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.

Explotación

Como en el caso anterior, se tiene que generar una política para agregar a un rol

admin_policy.json
{
    "Version": "202-03-12",
    "Statement": [
        {
            "Sid": "PermitirTodo",
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

Finalmente, se tiene que conocer el nombre del rol al cual se le va asignar la política:

aws iam put-role-policy --role-name privesc12- PutRolePolicy-role --policy-name politica-PrivEsc3- Spartan --policy-document file://admin_politica.json --profile privesc12

Si revisamos ahora las políticas insertadas a nuestro rol, lograremos apreciar que hemos adjuntado exitosamente la política de administrador a nuestro usuario inicial por medio del rol.

☁️
Acceso Inicial
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc1
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc2
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc7
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc8
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc9
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc10
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc11
GitHub - BishopFox/iam-vulnerable: Use Terraform to create your own vulnerable by design AWS IAM privilege escalation playground.GitHub
Lab: IAM - Vulnerable | Escenario: privesc12
Incident report: From CLI to console, chasing an attacker in AWSExpel
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Logo
Generación de llaves en AWS CLI
Configuración del usuario privesc1 en AWS CLI
pwned