9200 - Pentesting Elasticsearch
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
अपने वेब ऐप्स, नेटवर्क और क्लाउड पर एक हैकर का दृष्टिकोण प्राप्त करें
महत्वपूर्ण, शोषण योग्य कमजोरियों को खोजें और रिपोर्ट करें जिनका वास्तविक व्यावसायिक प्रभाव है। हमारे 20+ कस्टम टूल का उपयोग करें ताकि हमले की सतह का मानचित्रण कर सकें, सुरक्षा मुद्दों को खोज सकें जो आपको विशेषाधिकार बढ़ाने की अनुमति देते हैं, और आवश्यक सबूत इकट्ठा करने के लिए स्वचालित शोषण का उपयोग करें, जिससे आपका कठिन काम प्रभावशाली रिपोर्टों में बदल जाए।
Elasticsearch एक वितरित, ओपन सोर्स खोज और विश्लेषण इंजन है जो सभी प्रकार के डेटा के लिए है। यह अपनी गति, स्केलेबिलिटी, और सरल REST APIs के लिए जाना जाता है। यह Apache Lucene पर आधारित है, और इसे पहली बार 2010 में Elasticsearch N.V. (अब Elastic के रूप में जाना जाता है) द्वारा जारी किया गया था। Elasticsearch Elastic Stack का मुख्य घटक है, जो डेटा इनजेशन, समृद्धि, भंडारण, विश्लेषण, और दृश्यता के लिए ओपन सोर्स टूल का एक संग्रह है। इस स्टैक को सामान्यतः ELK स्टैक के रूप में जाना जाता है, जिसमें Logstash और Kibana भी शामिल हैं, और अब इसमें बीट्स नामक हल्के डेटा शिपिंग एजेंट हैं।
Elasticsearch का इंडेक्स संबंधित दस्तावेजों का एक संग्रह है जो JSON के रूप में संग्रहीत होते हैं। प्रत्येक दस्तावेज में कुंजी और उनके संबंधित मान (स्ट्रिंग, नंबर, बूलियन, तिथियाँ, एरे, भू-स्थान, आदि) होते हैं।
Elasticsearch तेज पूर्ण-पाठ खोजों को सुविधाजनक बनाने के लिए एक कुशल डेटा संरचना का उपयोग करता है जिसे इनवर्टेड इंडेक्स कहा जाता है। यह इंडेक्स दस्तावेजों में प्रत्येक अद्वितीय शब्द को सूचीबद्ध करता है और उन दस्तावेजों की पहचान करता है जिनमें प्रत्येक शब्द प्रकट होता है।
इंडेक्सिंग प्रक्रिया के दौरान, Elasticsearch दस्तावेजों को संग्रहीत करता है और इनवर्टेड इंडेक्स का निर्माण करता है, जिससे लगभग वास्तविक समय में खोज करना संभव होता है। इंडेक्स API का उपयोग एक विशिष्ट इंडेक्स के भीतर JSON दस्तावेज़ जोड़ने या अपडेट करने के लिए किया जाता है।
डिफ़ॉल्ट पोर्ट: 9200/tcp
Elasticsearch तक पहुँचने के लिए उपयोग किया जाने वाला प्रोटोकॉल HTTP है। जब आप HTTP के माध्यम से इसे एक्सेस करते हैं तो आपको कुछ दिलचस्प जानकारी मिलेगी: http://10.10.10.115:9200/
यदि आप /
तक पहुँचने पर वह प्रतिक्रिया नहीं देखते हैं तो निम्नलिखित अनुभाग देखें।
डिफ़ॉल्ट रूप से Elasticsearch में प्रमाणीकरण सक्षम नहीं है, इसलिए डिफ़ॉल्ट रूप से आप किसी भी क्रेडेंशियल का उपयोग किए बिना डेटाबेस के अंदर सब कुछ एक्सेस कर सकते हैं।
आप एक अनुरोध के साथ सत्यापित कर सकते हैं कि प्रमाणीकरण अक्षम है:
हालांकि, यदि आप /
पर एक अनुरोध भेजते हैं और निम्नलिखित प्रतिक्रिया प्राप्त करते हैं:
यह मतलब है कि प्रमाणीकरण कॉन्फ़िगर किया गया है और आपको कोई भी जानकारी प्राप्त करने के लिए मान्य क्रेडेंशियल्स की आवश्यकता है। फिर, आप इसे ब्रूटफोर्स करने की कोशिश कर सकते हैं (यह HTTP बेसिक ऑथ का उपयोग करता है, इसलिए BF HTTP बेसिक ऑथ का उपयोग करने वाली कोई भी चीज़ इस्तेमाल की जा सकती है)। यहाँ आपके पास डिफ़ॉल्ट उपयोगकर्ता नामों की सूची है: elastic (सुपरयूजर), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system, _anonymous_._ Elasticsearch के पुराने संस्करणों में इस उपयोगकर्ता के लिए डिफ़ॉल्ट पासवर्ड changeme है।
यहाँ कुछ endpoints हैं जिन्हें आप GET के माध्यम से जानकारी प्राप्त करने के लिए एक्सेस कर सकते हैं elasticsearch के बारे में:
/_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
भूमिका रखता है।
आप सभी इंडेक्स को एक्सेस करके इकट्ठा कर सकते हैं http://10.10.10.115:9200/_cat/indices?v
एक इंडेक्स के अंदर कौन सा डेटा सहेजा गया है, इस बारे में जानकारी प्राप्त करने के लिए आप एक्सेस कर सकते हैं: 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
एक पल लें और बैंक इंडेक्स के प्रत्येक दस्तावेज़ (एंट्री) की सामग्री की तुलना करें और इस इंडेक्स के फ़ील्ड जो हमने पिछले अनुभाग में देखे थे।
तो, इस बिंदु पर आप देख सकते हैं कि "hits" के अंदर "total" नाम का एक फ़ील्ड है जो यह दर्शाता है कि इस इंडेक्स के अंदर 1000 दस्तावेज़ पाए गए लेकिन केवल 10 को पुनः प्राप्त किया गया। इसका कारण यह है कि डिफ़ॉल्ट रूप से 10 दस्तावेज़ों की सीमा है।
लेकिन, अब जब आप जानते हैं कि इस इंडेक्स में 1000 दस्तावेज़ हैं, आप उनमें से सभी को डंप कर सकते हैं यह बताते हुए कि आप कितनी एंट्रीज़ को डंप करना चाहते हैं size
पैरामीटर में: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000
asd
&#xNAN;नोट: यदि आप बड़ा नंबर निर्दिष्ट करते हैं, तो सभी एंट्रीज़ वैसे भी डंप हो जाएंगी, उदाहरण के लिए आप size=9999
निर्दिष्ट कर सकते हैं और यह अजीब होगा यदि अधिक एंट्रीज़ हों (लेकिन आपको जांचना चाहिए)।
सभी को डंप करने के लिए आप बस पहले की तरह उसी पथ पर जा सकते हैं लेकिन किसी इंडेक्स को निर्दिष्ट किए बिना http://host:9200/_search?pretty=true
जैसे http://10.10.10.115:9200/_search?pretty=true
याद रखें कि इस मामले में डिफ़ॉल्ट 10 परिणामों की सीमा लागू होगी। आप बड़ी मात्रा में परिणामों को डंप करने के लिए size
पैरामीटर का उपयोग कर सकते हैं। अधिक जानकारी के लिए पिछले अनुभाग को पढ़ें।
यदि आप कुछ जानकारी की तलाश कर रहे हैं, तो आप सभी इंडेक्स पर कच्ची खोज कर सकते हैं 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 पैरामीटर नियमित अभिव्यक्तियों का समर्थन करता है
आप एक Elasticsearch सेवा को फज़ करने के लिए https://github.com/misalabs/horuz जैसी चीज़ों का भी उपयोग कर सकते हैं।
आप एक नए इंडेक्स के अंदर एक नया दस्तावेज़ बनाने की कोशिश करके अपनी लिखने की अनुमति की जांच कर सकते हैं, कुछ इस तरह चलाकर:
उस cmd से एक नया इंडेक्स bookindex
नाम से बनेगा जिसमें books
प्रकार का एक दस्तावेज़ होगा जिसमें "bookId", "author", "publisher" और "name" विशेषताएँ होंगी।
ध्यान दें कि नया इंडेक्स अब सूची में दिखाई दे रहा है:
और ध्यान दें कि स्वचालित रूप से बनाए गए गुण:
कुछ उपकरण पहले प्रस्तुत किए गए डेटा में से कुछ डेटा प्राप्त करेंगे:
port:9200 elasticsearch
अपने वेब ऐप्स, नेटवर्क और क्लाउड पर हैकर के दृष्टिकोण को प्राप्त करें
वास्तविक व्यावसायिक प्रभाव के साथ महत्वपूर्ण, शोषण योग्य कमजोरियों को खोजें और रिपोर्ट करें। हमारे 20+ कस्टम टूल का उपयोग करके हमले की सतह को मैप करें, उन सुरक्षा मुद्दों को खोजें जो आपको विशेषाधिकार बढ़ाने की अनुमति देते हैं, और आवश्यक सबूत इकट्ठा करने के लिए स्वचालित शोषण का उपयोग करें, जिससे आपका कठिन काम प्रभावशाली रिपोर्टों में बदल जाए।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)