2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なんだかよくわからないけど、初のハッキング!

2
Last updated at Posted at 2026-07-05

今回は前回に続き、初の「ハッキング」に挑戦です!
ですが、分からないこともあり大苦戦の回になりました...
主が分からなかった専門用語や意味も深掘りして簡潔にまとめていきたいと思います!
それではやっていきます...!

ハッキングの準備

URLから「Potatoマシン(仮想マシン)」のOVAファイルをダウンロードし、VirtualBoxでインポートします。




1. netdiscoverを使用してネットワーク内のIPアドレスを確認する

netdiscoverコマンドを使用すると、同一ネットワーク内に接続されている機器のIPアドレスやホスト名を確認できます。

実行コマンド

sudo netdiscover -i enp0s3 -r 192.168.56.0/24

コマンドの説明

オプション 説明
sudo 管理者権限でコマンドを実行します。
netdiscover ネットワーク内の端末を検出するコマンドです。
-i enp0s3 使用するネットワークインターフェースを指定します。
-r 192.168.56.0/24 スキャンするIPアドレスの範囲を指定します。

実行結果

192.168.56.100    DHCPサーバー
192.168.56.112    Potato

結果を表にまとめると以下のようになります。

IPアドレス ホスト名 説明
192.168.56.100 DHCPサーバー DHCPサーバーとして動作している端末
192.168.56.112 Potato 今回対象となるサーバー




2. 環境変数にIPアドレスを設定する

次に、exportコマンドを使用して環境変数を設定します。

PotatoマシンのIPアドレスは今後何度も使用するため、環境変数IPに設定しておきます。
(主の場合はアダプター変更の影響でIPアドレスが192.168.178.3になっています。)

image.png

実行コマンド

export IP=192.168.56.112

設定した環境変数の内容は、echoコマンドで確認できます。

echo $IP

実行結果

192.168.56.112

コマンドの説明

コマンド 説明
export IP=192.168.56.112 IPという名前の環境変数に、PotatoマシンのIPアドレスを設定します。
echo $IP 環境変数IPに設定されている値を表示します。




3. 実験用ディレクトリの作成とPotatoマシンのポートスキャン

次に、実験用のディレクトリを作成し、その中でPotatoマシンのポートスキャンを実行します。

まず、mkdirコマンドで作業用ディレクトリvulnhubと、その配下にpotatoディレクトリを作成します。

その後、cdコマンドでpotatoディレクトリへ移動し、nmapを使用してPotatoマシンのポートスキャンを実行します。

スキャン結果はportscan_result.txtというファイルに保存されます。

image.png

実行コマンド

mkdir vulnhub

mkdir vulnhub/potato

cd vulnhub/potato/

sudo nmap -sC -sV -Pn -p- $IP -oN portscan_result.txt

コマンドの説明

コマンド 説明
mkdir vulnhub vulnhubという作業用ディレクトリを作成します。
mkdir vulnhub/potato vulnhubディレクトリ内にpotatoディレクトリを作成します。
cd vulnhub/potato/ 作成したpotatoディレクトリへ移動します。
sudo nmap -sC -sV -Pn -p- $IP -oN portscan_result.txt Potatoマシンに対して全ポートのスキャンを実行し、サービスやバージョン情報を取得します。結果はportscan_result.txtに保存されます。

nmapオプションの説明

オプション 説明
-sC Nmapのデフォルトスクリプトを実行し、追加情報を収集します。
-sV 稼働しているサービスのバージョン情報を取得します。
-Pn Pingによるホスト確認を行わず、対象ホストが起動しているものとしてスキャンします。
-p- 1~65535までのすべてのTCPポートをスキャンします。
$IP あらかじめ環境変数に設定したPotatoマシンのIPアドレスを指定します。
-oN portscan_result.txt スキャン結果を通常形式でportscan_result.txtに保存します。




4. FTPクライアントをインストールしてPotatoマシンへ接続する

次に、FTPサービスへ接続するためにFTPクライアントをインストールします。

まず、パッケージ一覧を更新した後、ftpコマンドをインストールします。

インストール後は、ftp -hコマンドを実行して、FTPコマンドが正常に利用できることを確認します。

その後、PotatoマシンのFTPサービス(ポート2112)へ接続します。
(主はユーザー名をanonymous、パスワードをhogehogeにしました。)

スクリーンショット 2026-06-29 144206.png

実行コマンド

sudo apt update

sudo apt install ftp

ftp -h

インストールが完了したら、以下のコマンドを実行してPotatoマシンへ接続します。

ftp $IP 2112

コマンドの説明

コマンド 説明
sudo apt update パッケージ一覧を最新の状態に更新します。
sudo apt install ftp FTPクライアントをインストールします。
ftp -h FTPコマンドのヘルプを表示し、正常にインストールされていることを確認します。
ftp $IP 2112 PotatoマシンのFTPサービス(ポート2112)へ接続します。

コマンドの補足

項目 説明
ftp FTP(File Transfer Protocol)を利用してサーバーへ接続するコマンドです。
$IP あらかじめ環境変数に設定したPotatoマシンのIPアドレスを指定します。
2112 PotatoマシンでFTPサービスが待ち受けているポート番号を指定します。




5. FTPサーバー内のファイルを確認してダウンロードする

FTPサーバーへ接続したら、lsコマンドでサーバー内に保存されているファイルを確認します。

今回の環境では、welcome.msgindex.php.bakの2つのファイルが存在していました。

これらのファイルは、getコマンドを使用することでローカル環境へダウンロードできます。

作業が終了したら、exitコマンドでFTP接続を終了します。

FTPとは

FTP(File Transfer Protocol)とは、ネットワーク上でファイルを送受信するための通信プロトコルです。

FTPを利用することで、サーバー内のファイルを一覧表示したり、ファイルのダウンロードやアップロードを行うことができます。

ただし、通常のFTPは通信内容(ユーザー名・パスワード・ファイル内容)が暗号化されないため、本番環境では暗号化されたSFTPやFTPSが利用されることが一般的です。

実行コマンド

ls

get welcome.msg

get index.php.bak

exit

実行結果

welcome.msg
index.php.bak

コマンドの説明

コマンド 説明
ls FTPサーバー内に保存されているファイルやディレクトリを一覧表示します。
get welcome.msg welcome.msgをローカル環境へダウンロードします。
get index.php.bak index.php.bakをローカル環境へダウンロードします。
exit FTPサーバーとの接続を終了します。

ダウンロードしたファイル

ファイル名 説明
welcome.msg FTPサーバーに保存されていたメッセージファイルです。
index.php.bak Webサーバーで使用されていたPHPファイルのバックアップです。脆弱性診断やCTFでは、バックアップファイルから重要な情報が見つかることがあります。




6. HTTPサービスへアクセスしてWebサイトを調査する

次に、Potatoマシンで公開されているHTTPサービスへアクセスし、Webサイトに脆弱性がないか調査します。

WebブラウザでPotatoマシンのIPアドレスへアクセスすると、HTTPサービスが提供されていることを確認できます。

今回は、トップページを確認しただけでは脆弱性につながる情報は見つからなかったため、FTPサーバーから取得したindex.php.bakを参考に、別のページについても調査を進めます。

その準備として、WebサイトのURLを環境変数URLへ設定します。

スクリーンショット 2026-06-29 153023.png

実行コマンド

export URL="http://$IP:80/"

echo $URL

実行結果

http://192.168.56.112:80/

コマンドの説明

コマンド 説明
export URL="http://$IP:80/" WebサーバーのURLを環境変数URLに設定します。
echo $URL 環境変数URLに設定されている内容を表示します。

HTTPとは

HTTP(HyperText Transfer Protocol)とは、WebブラウザとWebサーバーが通信を行うためのプロトコルです。

HTTPを利用することで、Webページや画像などのデータを取得できます。一般的なWebサイトでは80番ポートでHTTPサービスが提供されており、通信内容は暗号化されません。そのため、現在では暗号化されたHTTPS(443番ポート)が広く利用されています。

補足

今回のトップページを確認した限りでは、目立った脆弱性や公開情報は見つかりませんでした。

そのため、FTPサーバーから取得したindex.php.bakを調査し、Webアプリケーションに隠された機能やアクセス可能なページがないかを確認していきます。




7. Gobusterでディレクトリを探索する

次に、Webサーバー上に公開されているディレクトリを調査するため、Gobusterを使用してディレクトリスキャンを実行します。

トップページからは管理画面などへのリンクが表示されていない場合でも、推測可能なディレクトリ名を総当たりで調査することで、隠されたページを発見できることがあります。

Gobusterとは

Gobusterとは、WebサーバーやDNSなどに対してブルートフォース(総当たり)で探索を行うツールです。

Webアプリケーションの診断では、公開されていないディレクトリやファイルを発見するために使用されることが多く、ペネトレーションテストやCTFでもよく利用されています。

スクリーンショット 2026-06-29 160406.png
スクリーンショット 2026-06-29 155519.png

実行コマンド

gobuster dir -u $URL -w /usr/share/wordlists/dirb/common.txt

実行結果(一部)

/admin (Status: 301)

コマンドの説明

コマンド 説明
gobuster ディレクトリやファイルを探索するツールです。
dir ディレクトリ探索モードを指定します。
-u $URL スキャン対象となるWebサイトのURLを指定します。
-w /usr/share/wordlists/dirb/common.txt ディレクトリ名の候補が記載されたワードリストを指定します。

Gobusterオプションの説明

オプション 説明
dir Webサーバーのディレクトリやファイルを探索します。
-u スキャン対象のURLを指定します。
-w 使用するワードリストを指定します。

発見したディレクトリの確認

Gobusterの実行結果から、/adminディレクトリが存在することを確認できました。

そこで、Webブラウザから以下のURLへアクセスします。

http://192.168.56.112/admin

アクセスすると、管理者向けのログイン画面が表示されました。

このことから、/adminは管理画面であり、ここから管理者認証を行えるページであると推測できます。

補足

Webサイトには、通常の画面からはリンクされていない「隠しディレクトリ」や「管理画面」が存在することがあります。

Gobusterを利用することで、このような公開されていないディレクトリを効率的に発見できるため、ペネトレーションテストでは非常に有効な情報収集手法の一つです。




8. Burp SuiteでHTTPリクエストを確認する

次に、Burp Suiteを使用して、ブラウザとWebサーバー間で送受信されるHTTPリクエストを確認します。

Burp Suiteは、Webアプリケーションの動作を解析したり、HTTP通信を確認したりするための代表的なWebセキュリティ診断ツールです。

Burp Suiteとは

Burp Suiteは、PortSwigger社が提供するWebアプリケーション診断ツールです。

ブラウザとWebサーバーの間で通信を仲介する「プロキシ」として動作し、HTTPリクエストやHTTPレスポンスの内容を確認できます。

ペネトレーションテストやWebアプリケーションの開発・デバッグなど、さまざまな用途で利用されています。

操作手順

  1. Burp Suiteを起動します。
  2. Proxyタブを開きます。
  3. Open browserをクリックし、Burp Suite専用ブラウザを起動します。
  4. ブラウザから管理画面へアクセスし、ログインフォームへ任意の認証情報を入力します。
  5. Interceptが有効になっている場合、送信されるHTTPリクエストがBurp Suiteに表示されます。
  6. Rawタブでは、HTTPリクエストの内容をテキスト形式で確認できます。
  7. Forwardをクリックすると、リクエストがWebサーバーへ送信されます。

スクリーンショット 2026-06-29 161326.png
スクリーンショット 2026-06-29 161853.png
スクリーンショット 2026-06-29 161926.png
スクリーンショット 2026-06-29 162003.png

Interceptとは

Intercept機能は、ブラウザから送信されるHTTPリクエストを一時停止し、その内容を確認できる機能です。

この機能を利用することで、リクエストヘッダーやCookie、フォームデータなどを確認し、Webアプリケーションの通信内容を理解できます。

補足

Burp Suiteは、Webアプリケーションの動作確認やセキュリティ診断を行う際に広く利用されています。

利用する際は、必ず自分が管理している環境や、明示的な許可を得た検証環境でのみ使用してください。




9. ディレクトリトラバーサル脆弱性を確認する

次に、Webアプリケーションにディレクトリトラバーサルの脆弱性が存在するかを調査します。

ディレクトリトラバーサルとは、ユーザーから渡されたファイル名やパスの入力値を適切に検証していない場合に、本来アクセスできないディレクトリやファイルへアクセスできてしまう脆弱性です。

ディレクトリトラバーサルとは

ディレクトリトラバーサル(Directory Traversal)は、Webアプリケーションの入力値を悪用し、本来参照できないファイルへアクセスできてしまう脆弱性です。

この脆弱性が存在すると、サーバー内の設定ファイルやログファイルなどの重要な情報が漏えいする可能性があります。

「../」とは

../は、LinuxやUnix系OSにおいて「1つ上のディレクトリへ移動する」ことを表します。

例えば、現在のディレクトリが

/var/www/html/

である場合、../を指定すると

/var/www/

へ移動します。

スクリーンショット 2026-07-06 031437.png

スクリーンショット 2026-07-06 032124.png
パスワードファイルが表示された。

脆弱性が存在した場合の影響

項目 説明
情報漏えい 本来閲覧できないファイルが公開される可能性があります。
設定情報の漏えい アプリケーションの設定情報や認証情報が取得される危険性があります。
システム情報の漏えい サーバー構成やOSに関する情報が取得される可能性があります。

対策

対策 説明
入力値の検証 ユーザー入力を適切に検証し、不正なパスを受け付けないようにします。
ホワイトリスト方式 アクセス可能なファイルのみを許可します。
パスの正規化 パスを正規化し、想定外のディレクトリへアクセスできないようにします。
最小権限の原則 Webサーバーがアクセスできるファイルを必要最小限に制限します。




10. John the Ripperでパスワードハッシュを解析する

次に、取得したパスワードハッシュを解析するため、John the Ripperを使用します。

John the Ripperは、オフライン環境でパスワードの強度を検証するために利用される代表的なパスワード監査ツールです。

セキュリティ診断やペネトレーションテストでは、許可された環境において、パスワードの安全性を評価する目的で利用されます。

John the Ripperとは

John the Ripperは、オープンソースのパスワード監査ツールです。

主に、パスワードハッシュを解析し、設定されているパスワードが十分に強固であるかを確認するために使用されます。

辞書攻撃や総当たり攻撃などの手法に対応しており、多くのOSやハッシュ形式をサポートしています。

パスワードハッシュとは

パスワードハッシュとは、パスワードをハッシュ関数によって一定の文字列へ変換したものです。

通常、システムではパスワードそのものではなく、ハッシュ値を保存することで、万が一データベースが漏えいした場合でもパスワードが直接知られないようにしています。

スクリーンショット 2026-06-22 162302.png
今回はパスワードが、doragonだったことが分かります。

コマンドの説明

項目 説明
John the Ripper パスワードハッシュを解析し、パスワードの強度を検証するためのオープンソースツールです。
オフライン解析 ネットワーク経由ではなく、取得済みのハッシュデータをローカル環境で解析する手法です。
辞書攻撃 あらかじめ用意された単語リストを利用してパスワードを検証する方法です。
ブルートフォース攻撃 あらゆる文字の組み合わせを試行してパスワードを検証する方法です。

補足

John the Ripperは、システム管理者やセキュリティ診断担当者が、パスワードの安全性を確認する目的で利用するツールです。

実際の運用環境で使用する場合は、必ず対象システムの管理者から明示的な許可を得たうえで実施する必要があります。




11. SSHでリモートサーバーへ接続する

次に、SSHを利用してリモートサーバーへ接続します。

SSHは、ネットワーク経由でサーバーへ安全にログインし、コマンド操作を行うためのプロトコルです。

接続後は、現在のユーザーが利用可能なsudo権限を確認します。

スクリーンショット 2026-07-06 035000.png
ssh webadmin@$IP のコマンドを実行するとwebadminユーザーでのログインに成功できる。

スクリーンショット 2026-07-06 035154.png
次にsudo -l コマンドでwebadminユーザーがsudoを実行できるか確認する。
確認すると、/bin/niceプログラムの実行と、/notesディレクトリー配下のファイルを指定することをできることが分かる。

SSHとは

SSH(Secure Shell)は、ネットワーク越しにサーバーを安全に操作するための通信プロトコルです。

通信内容は暗号化されるため、ユーザー名やパスワードなどの認証情報を安全に送受信できます。Linuxサーバーのリモート管理で広く利用されています。

実行コマンド

ssh webadmin@$IP

sudo -l

コマンドの説明

コマンド 説明
ssh webadmin@$IP webadminユーザーとして指定したサーバーへSSH接続します。
sudo -l 現在ログインしているユーザーが実行可能なsudoコマンドや権限を一覧表示します。

sudoとは

sudo(Super User DO)は、一般ユーザーが管理者権限を必要とするコマンドを実行するための仕組みです。

管理者はsudoersファイルを利用して、ユーザーごとに実行できるコマンドを細かく制御できます。

sudo -lとは

sudo -lは、現在のユーザーに許可されているsudo権限を一覧表示するコマンドです。

システム管理者はこのコマンドを利用して、ユーザーに付与されている権限を確認できます。また、セキュリティ監査においても、権限設定が適切かを確認する目的で利用されます。




12. niceコマンドでルートシェルを剥奪する

niceコマンドでシェルをroot権限で実行してroot.txtファイルを読み込みます。

スクリーンショット 2026-07-06 040627.png
licorne unijambiste qui fuit au bout d'un double arc-en-ciel. フランス語でこのような結果が出ました。
日本語に翻訳すると、「二重の虹の先へ逃げていく片足のユニコーン。」です。

niceコマンドとは

niceコマンドは、Linuxでプログラムを実行する際のCPU使用優先度(Nice値)を設定するためのコマンドです。

Nice値を変更することで、実行するプログラムの優先度を調整でき、システム全体の負荷を管理しやすくなります。

一般ユーザーは優先度を下げる(Nice値を大きくする)ことはできますが、優先度を上げる(Nice値を小さくする)には管理者権限が必要です。

基本的な使い方

nice コマンド

または、Nice値を指定して実行する場合は次のように記述します。

nice -n 10 コマンド

利用例

niceコマンドは、バックアップ処理や大容量ファイルの圧縮など、CPU負荷の高い処理を他の作業へ影響を与えにくく実行したい場合によく利用されます。




終わり

これでPotatoマシンの攻略は終了です!
正直、最初は分からないことだらけで苦戦しました。
少しづつでも理解してこれからの攻略に繋げていきたいです!
次回も引き続きがんばって行きます!
長々とご覧いただきありがとうございました!!

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?