# PHP SSRF {% hint style="success" %} Ucz się i ćwicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Ucz się i ćwicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie dla HackTricks * Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)! * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
{% endhint %} **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %} *** ### Funkcje SSRF PHP Niektóre funkcje, takie jak **file\_get\_contents(), fopen(), file(), md5\_file()** akceptują URL-e jako dane wejściowe, które będą śledzone, co może prowadzić do **możliwości luk SSRF**, jeśli użytkownik może kontrolować dane: ```php file_get_contents("http://127.0.0.1:8081"); fopen("http://127.0.0.1:8081", "r"); file("http://127.0.0.1:8081"); md5_file("http://127.0.0.1:8081"); ``` ### Wordpress SSRF poprzez DNS Rebinding Jak [**wyjaśniono w tym poście na blogu**](https://patchstack.com/articles/exploring-the-unpatched-wordpress-ssrf), nawet funkcja Wordpress **`wp_safe_remote_get`** jest podatna na DNS rebinding, co czyni ją potencjalnie podatną na ataki SSRF. Główna walidacja, którą wywołuje, to **wp\_http\_validate\_url**, która sprawdza, czy protokół to `http://` lub `https://` oraz czy port to jeden z **80**, **443** lub **8080**, ale jest **podatna na DNS rebinding**. Inne podatne funkcje według posta to: * `wp_safe_remote_request()` * `wp_safe_remote_post()` * `wp_safe_remote_head()` * `WP_REST_URL_Details_Controller::get_remote_url()` * `download_url()` * `wp_remote_fopen()` * `WP_oEmbed::discover()` ### CRLF Co więcej, w niektórych przypadkach może być nawet możliwe wysyłanie dowolnych nagłówków za pomocą "podatności" CRLF w poprzednich funkcjach: ```php # The following will create a header called from with value Hi and # an extra header "Injected: I HAVE IT" ini_set("from", "Hi\r\nInjected: I HAVE IT"); file_get_contents("http://127.0.0.1:8081"); GET / HTTP/1.1 From: Hi Injected: I HAVE IT Host: 127.0.0.1:8081 Connection: close # Any of the previously mentioned functions will send those headers ``` {% hint style="warning" %} Aby uzyskać więcej informacji na temat tej podatności CRLF, sprawdź ten błąd [https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1) {% endhint %} Zauważ, że te funkcje mogą mieć inne metody ustawiania dowolnych nagłówków w żądaniach, takie jak: ```php $url = ""; $options = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept-language: en\r\n" . "Cookie: foo=bar\r\n" . // check function.stream-context-create on php.net "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad ) ); $context = stream_context_create($options); $file = file_get_contents($url, false, $context); ``` **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %} {% hint style="success" %} Ucz się i ćwicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Ucz się i ćwicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie HackTricks * Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)! * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
{% endhint %}