*白百合めも*

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

Metasploitable2落城計画〜その3 🍰最終章🍰

こんにちは!白百合です!

前々回(Metasploitable2落城計画〜その1〜 - *白百合めも*
前回(Metasploitable2落城計画〜その2〜 - *白百合めも*
と、Metasploitable2の攻略を行ってきましたが、、、

今回の記事でラストにしたいと思います!!😎



(Metasploitable2の記事は)最後なので再度、以下の点を心に置いてくださいね!
・できれば一度自分でMetasploitable2に対しての攻撃を考えてから記事を見るようにしてください🍮
・攻撃や診断の許可をもらっていないシステムやネットワークに対して攻撃施行しないでください
・自分達のシステムを守るために攻撃法を学んでいるということを忘れないでください

OK!!という方は早速最終章に入っていきましょう!



nmapで見つかったポート・サービスのうち、今回はこれらについて見ていきます🍦

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))  
6667/tcp  open  irc         UnrealIRCd  


・攻撃法

❤️2121/tcp open ftp ProFTPD 1.3.1


早速なんですが、このバージョンには簡単に突ける脆弱性があまりないのです。。。

ProFTPD 1.3.1 は、CVSS9.0のCVE-2011-4130(解放済みのヒープ領域を利用して、任意のコードを走らせる手法であるUse-after-freeの脆弱性)があるのですが、 攻撃者がFTP接続できていることが前提なのとPoCなどがパッと見当たらないので、やめておきます⚡️
(Use-after-freeに関してはこちらをみて学びたい http://www.atmarkit.co.jp/ait/articles/1409/22/news010.html


ProFTPD 1.3.5だったら、任意コマンド実行できるCVE-2015-3306(CVSS10.0)も試せたのになー!!!
https://www.rapid7.com/db/modules/exploit/unix/ftp/proftpd_modcopy_exec
https://esc.sh/blog/proftp-vulnerability-could-allow-an-attacker-to-gain-a-shell-in-your-server/

しょうがないので、今回は辞書攻撃でFTP認証突破します!

auxiliary/scanner/ftp/ftp_loginというモジュールを使っていきます✨
https://www.offensive-security.com/metasploit-unleashed/scanner-ftp-auxiliary-modules/
f:id:white-lily6u6:20181118170812p:plain:w400

今回は時間短縮のため、ユーザ名とパスワードを同じ文字列で試していきます❗️
ユーザ名のファイルには/usr/share/metasploit-framework/data/wordlists/unix_users.txtを使用します!
(framework内にあるwordlistはこちらを確認してみよう→https://github.com/rapid7/metasploit-framework/tree/master/data/wordlists
パスワードファイルは、事前にblank.txt等空のファイルを用意しておき、それをセットしましょう🌷
f:id:white-lily6u6:20181118173227p:plain

パスワードにユーザ名を使うUSER_AS_PASSをtrueに設定し、
ブルートフォースを行うスピードを設定し(0〜5 DoSを防ぐため遅めにする)、攻撃対象のIPアドレスとポートを設定すればOKです!✨
f:id:white-lily6u6:20181118173312p:plain

exploitします!
f:id:white-lily6u6:20181118173346p:plain:w400

すると辞書攻撃が始まっていき、以下の2つ(service:service, user,user)が発見されました🍫
f:id:white-lily6u6:20181118173429p:plain
f:id:white-lily6u6:20181118173444p:plain


あとはuser:userなどでftpログインしてみて、.bash_historyなどで情報を得たり(msfadminというSSH可能ユーザがいることがわかるのでここからまた辞書攻撃したり)、.ssh以下のuserの秘密鍵を持ってきたり色々とやってみましょう*
f:id:white-lily6u6:20181118173514p:plain

不完全燃焼感ありますが、とりあえず今回はここまでです!


❤️3306/tcp open mysql MySQL 5.0.51a-3ubuntu5


こちらもですね、ちょうど良い脆弱性がなくて辞書攻撃になります⚡️
2回似たようなこと書くのは嫌なので詳しい説明は省きます!

モジュールは、auxiliary/scanner/mysql/mysql_loginを使い、 rootでパスワードなしでアクセスできることが見つかったとします🍧
f:id:white-lily6u6:20181124131630p:plain

実際にこれでmysql接続してみます!
全権限持ってること確認できますね!
f:id:white-lily6u6:20181124133305p:plain
せっかく入れたので、/etc/passwdでも見てみたいと思います! f:id:white-lily6u6:20181124133317p:plain:w400
f:id:white-lily6u6:20181124133327p:plain
はい!msfadminなども普通にいますね!
ここからユーザ名指定の辞書攻撃してもいいですし、
DBの色んなテーブル覗きに行ったりして色んな情報取ってきても良いと思います!

詳しくはこちらをみてね Metasploitable/MySQL - charlesreid1



❤️3632/tcp open distccd distccd v1 (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)


distccとは、ネットワーク上の複数ホストで分散コンパイルを行うためのプログラムですね!
コンパイルを高速に行うことができます!

① 一般ユーザのシェルを奪取する

こちらのバージョンを検索すると、CVE-2004-2687が見つかりました!(https://www.cvedetails.com/cve/cve-2004-2687
モジュール exploit/unix/misc/distcc_exec  を使ってexploitすると簡単にシェルゲットできちゃいます。
f:id:white-lily6u6:20181118204420p:plain

ただ、よく見てみるとdaemonユーザとなっていますね⚡️
なんとかrootになりたい!

② 権限昇格〜脆弱性&exploitコード探し〜

ここからローカルエクスプロイトをしてrootに権限昇格していきたいのですが、
https://www.youtube.com/watch?v=DoUZFHwZntY
こちらのビデオにその例の1つが載っていたのでこちらをやっていこうと思います!
(ほぼ同じようなことを書くのでビデオだけ見ればOKだと思います)


権限昇格を行うときには、動いているプロセスなどをチェックしましょう!
ローカルエクスプロイトできる脆弱性のあるバージョンのサービス等が動いているかもしれません!

daemonユーザでシェルをとってるMetasploitable2上で、動くプロセスを確認(ps aux)すると・・・
f:id:white-lily6u6:20181124022420p:plain
udev(接続デバイス管理用のツール)というものがあります!
今回はこれに注目していきましょう!

バージョンを確認すると、このように出てきます*
f:id:white-lily6u6:20181124090604p:plain:w400
さて、udev 117-8の脆弱性を突けるexploitがあるか探してみます!

WebのExploit-DBで探してもいいですが、検索するときに例の私はロボットでは〜を行う必要があるので、
CLIで探しちゃいましょう!
searchsploit コマンドでExploit-DBに載ってるexploitと同じものが表示されます!
udevで検索すると・・・
f:id:white-lily6u6:20181124091023p:plain 4つ出てきました!
udevのバージョンは117-8、Metasploitable2のOSはUbuntuで、kernelバージョンは2.6.24なので、
上から二番目の8572.cというexploitが使えそうですね!


③ 権限昇格〜exploitコードを攻撃対象サーバに送る〜

ではこいつをMetasploitable2のサーバに送り込みます!
1. Kali linuxのドキュメントルートにexploitコードを置く
2. apacheを起動する
3. daemonユーザでシェルをとってるMetasploitable2にて、このexploitコードをwgetでとってくる
という順番でやっていきますよ!

ドキュメントルートに8572.cをコピーして・・・
f:id:white-lily6u6:20181124105746p:plain
apacheを起動!
f:id:white-lily6u6:20181124105807p:plain

Metasploitable2のシェルの方に戻り、現在のディレクトリを確認です!
f:id:white-lily6u6:20181124110209p:plain:w150

ここにwgetで、msp2.cという名前で先ほどのexploitコードをとってきます! f:id:white-lily6u6:20181124110311p:plain
はい、持ってこれましたね!

ついでにコンパイルもしておきます!(なんか最後に改行がないらしく怒られてしまってるけど)
f:id:white-lily6u6:20181124182556p:plain:w400
ここまででMetasploitable2にexploitコードを持ってくるミッションは達成したので、 次は実際に実行していきましょう*


④ 権限昇格〜exploitコードの実行〜

まず、exploitコードの使い方を確認しましょう↓
https://www.exploit-db.com/exploits/8572/

Usageのところを見ると、
・udev netlink socket のPIDを第一引数として渡してね
・このexploitはrootユーザとして/tmp/runを実行するから、そこに好きなペイロードを配置してね
とあります*

まずは、/tmp/runに、netcatのコマンドを実行するシェルスクを書いていきましょう!
f:id:white-lily6u6:20181124110339p:plain これで、exploitが成功した後にこのrunが実行され、
Kali linuxの5555ポートにnetcatで繋げにいきます!(接続時に/bin/sh が実行される)

exploit前に、先にKaliの方で、5555ポートでnetcat待ち受けしておきます!
f:id:white-lily6u6:20181124112248p:plain:w400

最後にMetasploitable2の方に戻ってexploit、msp2を実行していきます*
その際にudev netlink socketのPIDを指定する必要があるので忘れずに!
msp2に実行権限付与して、PIDを指定して実行です✨
f:id:white-lily6u6:20181124112314p:plain すると、先ほど5555ポートで待ち受けていたKaliの方で、connect to~と出て、Metasploitable2と接続完了したことがわかります! ちゃんとrootユーザでシェル取れてるので、これで完璧ですね✨ f:id:white-lily6u6:20181124112344p:plain

ちょっと長くなりましたが、リモートエクスプロイト〜ローカルエクスプロイトの流れを確認できてよかったです!



❤️6667/tcp open irc UnrealIRCd

みなさんお馴染み(?)のInternet Relay Chat(IRC)ですね!

実際にHexChatでMetasploitable2のIRCサーバに繋いでみると・・・ f:id:white-lily6u6:20181124152015p:plain バージョンが、Unreal3.2.8.1だということが分かりましたね🌹

CVE-Detailsで調べると、こちらの脆弱性が出てきます*
CVE-2010-2075 : UnrealIRCd 3.2.8.1, as distributed on certain mirror sites from November 2009 through June 2010, contains an externally


ここを見ると、
Some versions of Unreal3.2.8.1.tar.gz contain a backdoor - UnrealIRCd Forums
配布してたUnreal3.2.8.1.tar.gzが、いつの間にかにバックドアがあるバージョンに書き換えられてみたいですね。そんなことあるんだ・・・

今回は、vsftpdの脆弱性( :) )の時とちょっと似てます!
システムコマンドとして"AB"という文字列を送った後、好きなペイロードを実行できちゃいます。
とても簡単なので早速やっていきましょう!

まずは、Kaliの5555ポートでnetcat接続待受けを行っておきます!
f:id:white-lily6u6:20181124154314p:plain:w300

次に、もう1つターミナルを開いて、Metasploitable2の6667に繋ぎます!
その後、AB; に続いて、Kaliの5555ポートに繋ぐnetcatコマンドを書くと・・・ f:id:white-lily6u6:20181124154324p:plain

こんなに簡単にシェルが取れてしまいました!
f:id:white-lily6u6:20181124154334p:plain
その他、Exploit-DBのコード使ったりMetasploitのモジュール使ったりする方法は、
こちらをみると良いと思います*
Hacking Unreal IRCd 3.2.8.1 on Metasploitable 2 - Hacking Tutorials


❤️その他

ちょっと記事が長くなってしまったので、書ききれなかったものはここに簡単にメモとして残しておこうと思います!
(以下以外にも、一部記載していないものもあります。全部は網羅していないので注意してね。)

5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
Metasploitモジュールauxiliary/scanner/postgres/postgres_login
辞書攻撃でユーザ:パスワード入手しPostgreSQLに接続後、色んなファイルやDBを見て最終的にrootでSSH接続
https://www.computersecuritystudent.com/SECURITY_TOOLS/METASPLOITABLE/EXPLOIT/lesson12/index.html


5900/tcp open vnc VNC (protocol 3.3)
Metasploitモジュールuxiliary/scanner/vnc/vnc_login で辞書攻撃
https://pentestlab.blog/2012/10/30/attacking-vnc-servers/

8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
metasploitなしでhackできそう
https://www.youtube.com/watch?v=hOHXSUtzJMQ
(あとで観る!)

8787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
Metasploitモジュール xploit/linux/misc/drb_remote_codeexec
rootシェル奪取可能
https://www.youtube.com/watch?v=q7G6qG_03Jk



今回はnetcat(nc)が大活躍の回でしたね!さすが又の名をアーミーナイフ……
今回のMetasploitable2攻略を始めるきっかけは、検索した時に昔の記事が出てきて恥ずかしかったというのもあるんですが、
「サイバーセキュリティテスト完全ガイド」を読む前の事前準備の一つに、Metasploitable2やっといてね、と書いてあったというのもあります!
まだ他にも事前準備あるからやっていくぞ……!

ただ、しばらくはこちらのIppSecさんの動画を観ていこうかな〜とか思ってます❗️
IppSec - YouTube
楽しみ💖

最後に、結構前に撮ったやつなんですが、 Afternoon Teaアフタヌーンティーセットでお別れです!
また食べにいきたい(^q^)🍰
f:id:white-lily6u6:20181124162635j:plain:w500