banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

Five86-1-Vulnhub のウォークスルー

靶機アドレス

靶機難易度:初級 +

ツール及び脆弱性情報#

  • netdiscover
  • nmap
  • gobuster
  • OpenNetAdmin コマンドインジェクション
  • crunch 指定した文字から辞書を生成
  • john 辞書攻撃によるハッシュ解読

0x01 情報収集#

靶機スキャン#

netdiscover-rパラメータで192.168.1.0/16をスキャンするか、ルーター管理画面で有線接続のデバイスを確認して靶機のipを取得

nmapでホスト及びポート情報をスキャン:

nmap -sS -A -n -T4 -p- 192.168.1.3

image

靶機は228010000の 3 つのポートが開いており、80ポートを確認すると空白であることがわかり、curlで確認:

image

確かに内容はありません。次に10000ポートを確認:

image

Webminで、バージョンはMiniServ 1.920

ディレクトリスキャン#

gobusterでウェブサイトのディレクトリをスキャン:

gobuster dir -u http://192.168.1.3 -s 200,301,302,307,401,403 -t 100 -q -x .php,.txt,.html,.zip,.bak,.tar.gz -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-large-directories.txt

image

robot.txtと疑わしい401ディレクトリ/reportsが見つかり、アクセスすると認証が必要であることがわかる:

image

robots.txtの中に/onaディレクトリが見つかり、nmapスキャンと一致し、アクセス;

image

openNetAdmin v18.1.1(IP ネットワークシステムとホスト管理システム)

情報収集のまとめ#

現在収集した主な情報は以下の通り:

  • ssh 22 ポートが開いており、ブルートフォースを検討する必要があるか
  • Webmin MiniServ 1.920 10000 ポートに利用可能な脆弱性が存在するか
  • openNetAdmin v18.1.1 /ona ディレクトリに利用可能な脆弱性が存在するか

0x02 OpenNetAdmin 脆弱性#

それではWebminopenNetAdminに利用可能な脆弱性があるか見てみましょう:

exploit-db:

image

image

searchsploit:

image

OK、それではmsfを起動してモジュールを検索:

image

見ると、msfには先ほど見つけたUnauthenticated RCE(Metasploit)はなく、openNetAdminには一つもありませんでした

手動でexploit-dbからexploitファイルをダウンロードし、msfexploitデータベースに移動:

/usr/share/metasploit-framework/modules/exploits/

Metasploit を再起動すれば、2 つの exp を直接使用できるようになります。まずはWebminのを使ってみましょう:

image

なんとWebmin<= 1.910バージョンのみサポートしているようです。それではopenNetAdminを試してみます:

image

meterpreterセッションを成功裏に取得

0x03 一般ユーザーの特権昇格#

meterpreterからshellに入る場合は、Pythonを使ってttyを取得することを忘れないでください。さもないと、一部のコマンドは実行できません

python -c 'import pty; pty.spawn("/bin/bash")' # 一部の環境ではPython2がインストールされていないため、python3 -cに変更する必要があります

ここでは入らず、いつものように現在のディレクトリ、ウェブサイトディレクトリ、ホームディレクトリを確認:

image

現在のディレクトリには特に何もなく、ウェブサイトディレクトリを見てみます:

image

ウェブサイトディレクトリでは、先ほどアクセスできなかった/reportsサブディレクトリの.htaccessファイルにヒントが見つかります

/var/www/.htpasswdの中に以下のヒントが見つかりました:

douglas:$apr1$9fgG/hiM$BtsL9qpNHUlylaLxk81qY1

# 物事を少しでも楽にするために(標準の辞書ではおそらく失敗するでしょう)、
# この10文字のパスワードには次の文字セットを使用してください:aefhrt

ユーザー名とパスワードのhash値が与えられ、ブルートフォースが必要であることが示唆されています。パスワードの桁数は 10 桁で、aefhrtの 6 文字を含みます

kaliに付属のツールcrunchを使用してパスワード辞書を生成します。crunchは指定した文字と最大最小の数に基づいて辞書を作成できます

Usage: crunch <min> <max> [options]

そこで、crunch 10 10 aefhrt -o passwdを使用してパスワード辞書を生成:

image

次にjohnを使用してhashをブルートフォース:

echo '$apr1$9fgG/hiM$BtsL9qpNHUlylaLxk81qY1' > hash
john --wordlist=passwd hash

長い待機の後、パスワードfatherrrrrが得られたので、douglas:sshにログイン:

douglas:fatherrrrr
ssh douglas@192.168.1.3

sudo -lで現在のユーザーの権限を確認

image

jenの権限でcpコマンドを実行できることがわかり、jenアカウントに切り替える準備をします

0x04 root 権限の昇格#

ssh-keygenで鍵を生成し、公開鍵を/home/jen/.sshディレクトリにコピーし、その後jenアカウントでログイン:

ssh-keygen -b 2048
cp /home/douglas/.ssh/id_rsa.pub /tmp/authorized_keys

image

この時、/tmp(一時ディレクトリ)に移動し、authorized_keysファイルに実行権限を与えます

sudoを使用してjenユーザー権限でcpコマンドを実行し、先ほど生成したauthorized_keys/home/jen/.ssh/に移動:

chmod 777 /tmp/authorized_keys
sudo -u jen /bin/cp /tmp/authorized_keys /home/jen/.ssh/
ssh jen@127.0.0.1

image

ここでjenアカウントにログインすると、メールが届いていることが示され、/var/mail/jenという名前のメールを見つけました:

image

メールからユーザーパスワードMoss:Fire!Fire!を知り、SSHでログインします:

moss:Fire!Fire!
ssh moss@192.168.1.3

mossアカウントに切り替えた後、再び私が慣れ親しんだSUID特権昇格に進み、findで確認:

find / -perm -u=s -type f 2>/dev/null

image

/home/moss/.games/upyourgameSUID権限が見つかり、ゲームのようです。遊んでみましょう:

image

何の理屈だ、ただあなたを困らせるだけで、そして直接root権限を与え、最後にrootディレクトリでflagを成功裏に取得:

image

本文完。

参考記事:

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。