2020年内のOSCP取得に向けた学習を兼ねて、VulnHubの仮想マシンの中でも最もOSCPっぽいと名高いKioptrixシリーズに挑戦する。
過去にこのブログで攻略記事を書いていたHackmeは、用意されたWebアプリケーション上の脆弱性を各レベルで1つずつ突いていく構成だった。
少なくとも自分がクリアしたLv1~Lv4については、Webセキュリティにおける脆弱性攻撃の基礎を手で学ぶための、どちらかというと初学者向けのサービスだ。
Kioptrixは、ネットワーク越しに仮想マシンの管理者権限を取得するという目的において、攻撃面はWebに限定されない。
自分が現在クリアしているLv1~Lv2に関していえば、むしろWebだけでは不充分だ。実際の侵入テストと同じく、ステップバイステップで情報を集め、攻撃を試していく必要がある。
その分だけHackmeより多角的・実践的な技術が求められるというわけだ。
とはいえ自分もこういったテストの経験はあまりないので、試行錯誤しながら進めている。
同じくトライ&エラーで進めた方が様々勉強になるのは明らかなので、「何から手を付ければいいのか全然わからねぇ...」というシャイボーイ以外はここでページを閉じ、まず自力で解いてみることをお勧めする。
なお、ただ解き方を書き残すのではなく、どう考えて何をしたのか?をちまちま書いているため長いです。
仮想マシンの立ち上げについては詳細割愛する。
Kioptrixのrarファイルをダウンロードして展開してVirtualBoxで仮想マシンを立ち上げてネットワークアダプタをNATネットワークにするだけ。たぶん。
(Lv1だけはちょっと設定が面倒なので、このサイトを参考にしてください。)
攻撃にはKali Linuxを使う。基本的に、自身が操作するのは全部Kali。こちらの立ち上げやツールの使い方等についても割愛。
では!
0.Kioptrixマシンを探す
KioptrixマシンはKaliと同じネットワークに存在するはず。なのでまずKaliのIPアドレスを確認する。ifconfig
自分の環境ではKaliのIPアドレスは10.0.2.5なので、10.0.2.5/24を探索対象にしよう。
nmap 10.0.2.5/24 -T5単純にnmapでネットワークスキャン。
KioptrixマシンのIPがわかればいいので"-T5"オプションで高速化する。
開いているサービスを見るに、10.0.2.6がKioptrixマシンのようだ。
1.ポートスキャン
KioptrixマシンのIPアドレスを指定して、サービスのバージョンを詳しく調べてみる。nmap -Pn -sV -p- 10.0.2.6前回の結果で疎通可能なのは明らかなので"-Pn"でpingを省略し、"-p-"で全ポートを指定した上で"-sV"でバナー情報を取得する。
うーん古い!(古いVMだから当然だけど)
Webシステムのプラットフォームの脆弱性診断なんかをやっていると、よく使われるサービスのバージョン感というか、「このサービスの最新はこのバージョンで、どのバージョンにはこういう脆弱性が報告されている」というのをなんとなく覚えてしまう。
なのでOpenSSH 2.9やらApache 1.3.20やらを見ると、まるで古代遺跡を掘り当てた考古学者のように、これは大変なお宝が眠っていそうだぜ!とわくわくするのだ。
バージョンは出ていないがSambaも気になる。
2.Webアプリケーションのチェック
脆弱性情報を調べる前に、ポート80/443でWebサーバが稼働しているようなので、とりあえずブラウザでアクセスしてみよう。"Test Page"?ほーん
どんなページがあるか探してみる。
python3 dirsearch.py -u http://10.0.2.6/ -e * -x 403,404Webサイトのページを探索するツールは色々あるが、自分はdirsearchをよく使う。結果は...
[01:18:34] 200 - 3KB - /index.html [01:18:35] 301 - 294B - /manual -> http://127.0.0.1/manual/ [01:18:40] 200 - 27B - /test.php [01:18:40] 200 - 4KB - /usage/
RCEか、それに繋がるような脆弱性があるかもしれないと考え、test.phpとusage/を軽く確認したが、特に実りなし。
本格的にWebの脆弱性を探し始めるとかなり時間がかかってしまうので保留とする。
ちなみに、usage/のページに記載されていた、ページで利用されているのであろうソフトウェア「Webalizer Version 2.01」にはRCEの脆弱性(CVE-2002-0180)が報告されている。
しかしそのCVEに対応するExploitは見つけられなかった。
3.サービスのチェックと脆弱性攻撃
nmapで得たバナー情報によると、Kioptrixマシン上で気になるサービスが3つ稼働している。- OpenSSH 2.9p2
- Apache/1.3.20 (Unix)(Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
- Samba
この3つについて、RCE等でCVSSの高い(必要条件の緩いRCEなので体感CVSS7.0以上くらいの)脆弱性を順番に探していく。
OpenSSH 2.9p2
Webでざっと調べたところ、該当しそうなCVEは4つ。ただ、これらのExploitは見つけられなかった。- CVE-2002-0639
- CVE-2002-0640
- CVE-2006-5051
- CVE-2010-4478
OpenSSHにはユーザ列挙の脆弱性がある(&それ脆弱性じゃないぞと公式見解が出た)ことは有名なので、それを試してみる。
Metasploitを使う。
msfconsoleSSHのユーザ列挙の脆弱性をsearchで見つけ、実行する。
use auxiliary/scanner/ssh/ssh_enumusers set RHOSTS 10.0.2.6 set THREADS 8 set USER_FILE '/usr/share/wordlists/metasploit/unix_users.txt' run結果は...
[+] 10.0.2.6:22 - SSH - User 'adm' found [+] 10.0.2.6:22 - SSH - User 'bin' found [+] 10.0.2.6:22 - SSH - User 'daemon' found [+] 10.0.2.6:22 - SSH - User 'ftp' found [+] 10.0.2.6:22 - SSH - User 'games' found [+] 10.0.2.6:22 - SSH - User 'gopher' found [+] 10.0.2.6:22 - SSH - User 'halt' found [+] 10.0.2.6:22 - SSH - User 'lp' found [+] 10.0.2.6:22 - SSH - User 'mail' found [+] 10.0.2.6:22 - SSH - User 'news' found [+] 10.0.2.6:22 - SSH - User 'nobody' found [+] 10.0.2.6:22 - SSH - User 'operator' found [+] 10.0.2.6:22 - SSH - User 'postgres' found [+] 10.0.2.6:22 - SSH - User 'root' found [+] 10.0.2.6:22 - SSH - User 'sync' found [+] 10.0.2.6:22 - SSH - User 'uucp' found結構たくさんユーザがいるようで。
ちなみにこれらのユーザに対してhydraで総当たり攻撃してもパスワードは見つけられませんでした。
リストはMetasploit標準のものを使ったとはいえ、そんな文字通り力づくな方法でクリアできたらつまんないよね。
というわけで、OpenSSHから攻めるのは諦める。
Samba
Webアプリケーションの脆弱性は見つかっていないので、気分転換のためApacheではなくSambaを調べることに。smbclient -L 10.0.2.6これで普通に接続しただけではバージョンはわからなかった。
まぁこんなのでわかるならきっとnmapが突き止めてくれているか。
他にバージョンを確認する手段を調べたところ、Metasploitに該当するモジュールがあることがわかったので早速使ってみる。
use auxiliary/scanner/smb/smb_version set RHOSTS 10.0.2.6 set THREADS 8 run
あっさりわかった。Samba 2.2.1aだ。このバージョンに対応する、ちょうどいいCVEは...
- CVE-2003-0201
Metasploitモジュール含め4つほど試してみたが、うまくいったのはこの1つだけ。
https://www.exploit-db.com/exploits/22469
他はモジュールのコード修正したりgccのオプションいじってみたりしたけど実りなし...ここですごく時間がかかった。
Apache/1.3.20 (Unix)(Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
「"Apache 1.3.20" "exploit" -"kioptrix"」といったキーワードでWeb検索すると、何やらものものしい名称のExploitがすぐに見つかった。このExploitのREADMEを読めば書いてあるが、なぜそんな名前に...
https://github.com/heltonWernik/OpenLuck
git clone https://github.com/heltonWernik/OpenFuck.git gcc -o OpenFuck OpenFuck.c -lcrypto ./OpenFuck 0x6b 10.0.2.6 -c 50
4.コマンド実行
SambaやApacheの脆弱性を突いて、Kioptrixマシン上でコマンドを実行できるようになった。まず確認すべきは自分の権限だ。whoamiで簡単に確認する。
whoami"root"と出力され、管理者権限でコマンドを実行できていることがわかる。
次に、既存ユーザのパスワードを調べてみる。
cat /etc/passwd cat /etc/shadowOpenSSHでのユーザ列挙で判明していたユーザ名がちらほら。
これらの表示結果を基にパスワードハッシュを解析してみたが、10分ほど経過しても解析しきれなかったので中断。
ハッシュ解析にはJohn the Ripperを使った。このツールの使い方はHackme攻略 Lv3の記事を参照。
既存ユーザがだめなら新しいユーザを作ってやる、と考えユーザ作成コマンドを実行
useradd fakeuser adduser fakeuser...するも悉く失敗。
仕方ないのでrootのパスワードを変更する。
passwdこれでSSHでログインできるようになったので、試してみる。
やったぜ。
さて、VulnHubのページには"Flag(s) EMail"と記載されているので、メールを探す。
いくつかディレクトリを眺めていると、/var/mail/rootというパスを見つけた。
cd /var/mail more rootこれでファイルを読んでみると...
"If your are reading this, you got root. Congratulations. Level 2 won't be as easy..."
Lv1クリア!
なお、ふと「これsendmailかな」と思いsendmailコマンドを打ってみるとビンゴだったので、moreじゃなくてmailコマンドでもメールが読めます。
あとついでにSSH接続でuseraddしたらユーザ作成できたけど理由がよくわかってない
--------------------------------
久し振りに長めの記事を書いたけどめちゃくちゃ疲れた...Lv2以降書くの億劫だな...