9200 - Pentesting Elasticsearch

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मूल जानकारी

एलास्टिकसर्च एक वितरित, ओपन सोर्स खोज और विश्लेषण इंजन है जो सभी प्रकार के डेटा के लिए है। यह अपनी गति, स्केलेबिलिटी, और सरल REST API के लिए प्रसिद्ध है। Apache Lucene पर निर्मित, यह 2010 में पहली बार Elasticsearch N.V. (अब Elastic के रूप में जाना जाता है) द्वारा जारी किया गया था। Elasticsearch Elastic Stack का मूल घटक है, डेटा इनजेक्शन, एनरिचमेंट, स्टोरेज, विश्लेषण, और विजुअलाइजेशन के लिए ओपन सोर्स उपकरणों का एक संग्रह है। यह स्टैक, जिसे आमतौर पर ELK स्टैक कहा जाता है, लॉगस्टैश और किबाना को भी शामिल करता है, और अब बीट्स नामक हल्के डेटा शिपिंग एजेंट्स हैं।

एलास्टिकसर्च इंडेक्स क्या है?

एक एलास्टिकसर्च इंडेक्स एक संबंधित दस्तावेज़ों का संग्रह है जो JSON के रूप में स्टोर किए जाते हैं। प्रत्येक दस्तावेज़ में कुंजी और उनके संबंधित मान (स्ट्रिंग, संख्या, बूलियन, तारीखें, एरे, भू-स्थान आदि) होते हैं।

एलास्टिकसर्च एक प्रभावी डेटा संरचना का उपयोग करता है जिसे उल्टा इंडेक्स कहा जाता है जो तेज फुल-टेक्स्ट खोज को सुविधाजनक बनाने में मदद करता है। यह इंडेक्स दस्तावेज़ों में हर अद्वितीय शब्द को सूचीबद्ध करता है और प्रत्येक शब्द में किस दस्तावेज़ में वह शब्द पाया जाता है, वह पहचानता है।

इंडेक्सिंग प्रक्रिया के दौरान, एलास्टिकसर्च दस्तावेज़ों को संग्रहित करता है और उल्टा इंडेक्स निर्माण करता है, जिससे नजदीकी वास्तविक समय में खोज की जा सकती है। इंडेक्स API का उपयोग किसी विशिष्ट इंडेक्स के भीतर JSON दस्तावेज़ जोड़ने या अपडेट करने के लिए किया जाता है।

डिफ़ॉल्ट पोर्ट: 9200/tcp

मैनुअल गणना

बैनर

एलास्टिकसर्च तक पहुंचने के लिए उपयोग किया जाने वाला प्रोटोकॉल HTTP है। जब आप इसे HTTP के माध्यम से एक्सेस करते हैं तो आपको कुछ दिलचस्प जानकारी मिलेगी: http://10.10.10.115:9200/

यदि आप / तक पहुंचते समय उस प्रतिक्रिया को नहीं देखते हैं, तो निम्नलिखित खंड देखें।

प्रमाणीकरण

डिफ़ॉल्ट रूप से एलास्टिकसर्च में प्रमाणीकरण सक्षम नहीं है, इसलिए डेटाबेस के अंदर कुछ भी उपयोग करते हुए आप इसका एक्सेस कर सकते हैं बिना किसी प्रमाणों का उपयोग किए।

आप यह सत्यापित कर सकते हैं कि प्रमाणीकरण अक्षम है एक अनुरोध के साथ:

curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
{"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500}

हालांकि, अगर आप / पर एक अनुरोध भेजते हैं और निम्नलिखित तरह की प्रतिक्रिया प्राप्त करते हैं:

{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

यह यहाँ यह मतलब है कि प्रमाणीकरण कॉन्फ़िगर किया गया है और आपको मान्य क्रेडेंशियल्स की आवश्यकता है ताकि आप एलास्टिकसर्च से कोई भी जानकारी प्राप्त कर सकें। फिर, आप इसे ब्रूटफ़ोर्स करने की कोशिश कर सकते हैं (यह HTTP बेसिक ऑथ का उपयोग करता है, इसलिए कुछ भी जो बीएफ़ HTTP बेसिक ऑथ कर सकता है, उसका उपयोग किया जा सकता है)। यहाँ आपके पास एक सूची डिफ़ॉल्ट उपयोगकर्ता नाम हैं: एलास्टिक (सुपरयूजर), रिमोट_मॉनिटरिंग_यूज़र, बीट्स_सिस्टम, लॉगस्टैश_सिस्टम, किबाना, किबाना_सिस्टम, एपीएम_सिस्टम, _एनोनिमस_।_ एलास्टिकसर्च के पुराने संस्करणों में इस उपयोगकर्ता के लिए डिफ़ॉल्ट पासवर्ड changeme होता है।

curl -X GET http://user:password@IP:9200/

मूल उपयोगकर्ता जांच

#List all roles on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role"

#List all users on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user"

#Get more information about the rights of an user:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/<USERNAME>"

Elastic Info

यहाँ कुछ endpoints हैं जिन्हें आप GET के माध्यम से पहुंच सकते हैं ताकि आप elasticsearch के बारे में कुछ जानकारी प्राप्त कर सकें:

_cat/_cluster/_security

/_cat/segments

/_cluster/allocation/explain

/_security/user

/_cat/shards

/_cluster/settings

/_security/privilege

/_cat/repositories

/_cluster/health

/_security/role_mapping

/_cat/recovery

/_cluster/state

/_security/role

/_cat/plugins

/_cluster/stats

/_security/api_key

/_cat/pending_tasks

/_cluster/pending_tasks

/_cat/nodes

/_nodes

/_cat/tasks

/_nodes/usage

/_cat/templates

/_nodes/hot_threads

/_cat/thread_pool

/_nodes/stats

/_cat/ml/trained_models

/_tasks

/_cat/transforms/_all

/_remote/info

/_cat/aliases

/_cat/allocation

/_cat/ml/anomaly_detectors

/_cat/count

/_cat/ml/data_frame/analytics

/_cat/ml/datafeeds

/_cat/fielddata

/_cat/health

/_cat/indices

/_cat/master

/_cat/nodeattrs

/_cat/nodes

ये endpoints दस्तावेज़ से लिए गए हैं जहाँ आप अधिक जानकारी पा सकते हैं। इसके अलावा, यदि आप /_cat तक पहुंचते हैं तो प्रतिक्रिया में उस उदाहरण के /_cat/* endpoints शामिल होंगे जिन्हें इंस्टेंस समर्थित करता है।

/_security/user में (यदि प्रमाणीकरण सक्षम है) आप देख सकते हैं कि कौन सा उपयोगकर्ता भूमिका superuser रखता है।

Indices

आप http://10.10.10.115:9200/_cat/indices?v पहुंचकर सभी अनुक्रमों को एकत्र कर सकते हैं

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana 6tjAYZrgQ5CwwR0g6VOoRg   1   0          1            0        4kb            4kb
yellow open   quotes  ZG2D1IqkQNiNZmi2HRImnQ   5   1        253            0    262.7kb        262.7kb
yellow open   bank    eSVpNfCfREyYoVigNWcrMw   5   1       1000            0    483.2kb        483.2kb

इंडेक्स के अंदर कौन सी प्रकार की डेटा सहेजी गई है के बारे में जानकारी प्राप्त करने के लिए आप एक्सेस कर सकते हैं: http://host:9200/<index> जैसे कि इस मामले में http://10.10.10.115:9200/bank

इंडेक्स डंप

अगर आप एक इंडेक्स के सभी सामग्री को डंप करना चाहते हैं तो आप एक्सेस कर सकते हैं: http://host:9200/<index>/_search?pretty=true जैसे कि http://10.10.10.115:9200/bank/_search?pretty=true

एक क्षण लेकर बैंक इंडेक्स के प्रत्येक दस्तावेज (एंट्री) की सामग्री और इस इंडेक्स के फील्ड की तुलना करने के लिए.

इसलिए, इस बिंदु पर आपको ध्यान देना चाहिए कि "हिट्स" के अंदर "टोटल" नामक एक फील्ड है जो इस इंडेक्स के अंदर 1000 दस्तावेज मिले हैं लेकिन केवल 10 पुनरावृत्ति किए गए हैं। यह इसलिए है क्योंकि डिफ़ॉल्ट रूप से 10 दस्तावेजों की सीमा होती है। लेकिन, अब जब आप जान चुके हैं कि इस इंडेक्स में 1000 दस्तावेज हैं, तो आप सभी उन्हें डंप कर सकते हैं जिसे आप डंप करना चाहते हैं उसे इंडिकेट करते हुए साइज़ पैरामीटर में: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000 नोट: यदि आप बड़ी संख्या इंडिकेट करते हैं तो सभी दस्तावेज फिर भी डंप हो जाएंगे, उदाहरण के लिए आप साइज़=9999 इंडिकेट कर सकते हैं और अगर अधिक दस्तावेज होते हैं तो यह अजीब होगा (लेकिन आपको जांचना चाहिए)।

सभी डंप

सभी डंप करने के लिए आप पिछले इंडेक्स के बिना जाने के लिए वही पथ चलेंhttp://host:9200/_search?pretty=true जैसे कि http://10.10.10.115:9200/_search?pretty=true ध्यान रखें कि इस मामले में डिफ़ॉल्ट सीमित 10 परिणाम लागू होगा। आप साइज़ पैरामीटर का उपयोग करके अधिक संख्या के परिणाम डंप कर सकते हैं। अधिक जानकारी के लिए पिछले खंड को पढ़ें।

खोज

यदि आप कुछ जानकारी खोज रहे हैं तो आप सभी इंडेक्स पर रॉ सर्च कर सकते हैं http://host:9200/_search?pretty=true&q=<search_term> जैसे कि http://10.10.10.115:9200/_search?pretty=true&q=Rockwell

यदि आप केवल एक इंडेक्स पर खोजना चाहते हैं तो आप पथ पर इंडिकेट कर सकते हैं: http://host:9200/<index>/_search?pretty=true&q=<search_term>

ध्यान दें कि खोज सामग्री को खोजने के लिए उपयोग किए जाने वाले q पैरामीटर नियमित अभिव्यक्तियों का समर्थन करता है

आप एक एलास्टिकसर्च सेवा को फज़ करने के लिए https://github.com/misalabs/horuz जैसी कुछ भी उपयोग कर सकते हैं।

लेखन अनुमतियाँ

आप अपनी लेखन अनुमतियों की जांच कर सकते हैं एक नए इंडेक्स के अंदर एक नए दस्तावेज बनाने की कोशिश करके कुछ ऐसा चला सकते हैं:

curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d'
{
"bookId" : "A00-3",
"author" : "Sankaran",
"publisher" : "Mcgrahill",
"name" : "how to get a job"
}'

वह cmd एक नया इंडेक्स बनाएगा जिसका नाम bookindex होगा और जिसमें एक डॉक्यूमेंट प्रकार books होगा जिसमें "bookId", "author", "publisher" और "name" विशेषताएँ होंगी।

ध्यान दें कि नया इंडेक्स अब सूची में दिखाई दे रहा है:

और स्वचालित रूप से बनाए गए गुण को ध्यान से देखें:

स्वचालित गणना

कुछ उपकरण पहले प्रस्तुत किए गए डेटा को प्राप्त करेंगे:

msf > use auxiliary/scanner/elasticsearch/indices_enum

शोडन

  • port:9200 एलास्टिकसर्च

जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated