タイトルの通りです。
外側から確認できる内容をチェックしているだけなので、
サーバーの設定によってはチェックできない項目もあります
チェック内容
PHP2Shell
| チェック内容 |
チェック対象 |
| PHPバージョンを修正版(8.2.35 / 8.3.36 / 8.4.27 / 8.5.12)と照合、8.1以前は修正なしと判定 |
以下の1章・2章で見つかったPHPバージョンすべて |
1. バージョン露出
| チェック内容 |
チェック対象 |
| PHPバージョンが表示されているか |
X-Powered-By ヘッダー |
| ソフトウェアのバージョンが表示されているか |
Server ヘッダー |
| トップページと違うPHPバージョンが出ていないか |
ページ内のフォーム送信先・.php・/api/ のURL(最大5件) |
サーバー署名(Apache/2.4.xx Server at ...)が出ていないか |
存在しないURLで返る404ページ |
ディストリのビルド表記(-1ubuntu2.xx など)があるか |
見つかったPHPバージョン |
2. 置き忘れファイル・情報漏えい
| チェック内容 |
チェック対象 |
| phpinfo() のページが表示されないか |
/phpinfo.php /info.php /test.php /php.php /i.php
|
| Apacheのステータスページが外から見えないか |
/server-status /server-info
|
| 環境変数・設定ファイルが読めないか(値は伏せて表示) |
/.env /config.php.bak /config.php~ /wp-config.php.bak
|
| Gitリポジトリが公開されていないか |
/.git/HEAD |
| 依存ライブラリの情報が読めないか |
/composer.json /composer.lock /vendor/composer/installed.json
|
| ファイル一覧(Index of)が出ないか |
/uploads/ /backup/ /vendor/
|
| 管理ページがログインなしで見えないか(Moodle を検出したときだけ) |
/admin/phpinfo.php /admin/environment.php
|
3. エラー表示・設定の露出
| チェック内容 |
チェック対象 |
| PHPエラー(Warning / Fatal error と内部パス)が表示されないか |
入力URLの最初のパラメータを配列化したURL(?id[]=1、1回だけ)、トップページ、404ページ |
| スタックトレースが出ないか |
404ページ、配列化したURL |
| SQL文やDBエラーが出ていないか(クォートは送らない) |
取得済みのページ |
| TRACE / PUT / DELETE が許可されていないか |
OPTIONS リクエストの Allow ヘッダー |
4. セッション・Cookie
| チェック内容 |
チェック対象 |
| Secure / HttpOnly / SameSite が付いているか |
Set-Cookie ヘッダー(PHPSESSID などのセッションCookie) |
| URLやフォームにセッションIDが付いていないか |
ページ内のリンク、フォームの hidden 項目、リダイレクト先 |
5. CMS/LMS/ライブラリのバージョン
| チェック内容 |
チェック対象 |
| バージョン付きの製品名が出ていないか |
<meta name="generator"> |
| WordPress のバージョンとユーザー一覧が読めないか |
/readme.html、?ver=、/wp-json/、/wp-json/wp/v2/users
|
| WordPress プラグインのバージョンが読めないか |
/wp-content/plugins/<名前>/readme.txt(最大8件) |
| Moodle のバージョン(4.5未満はサポート終了と判定) |
ページ内の docs.moodle.org/405/ などのリンク |
| jQuery が 3.5 未満でないか、ほかのJSライブラリのバージョン |
<script src> のファイル名、jQuery ファイル先頭のバージョン表記 |
| 使用しているPHPライブラリの一覧(読めること自体が問題) |
2章で読めた composer.lock
|
6. 通信・HTTPヘッダー全般
| チェック内容 |
チェック対象 |
| http で開いたとき https へ転送されるか |
http:// のトップページ |
| HSTS があり、max-age が180日以上か |
Strict-Transport-Security |
| クリックジャッキング対策があるか |
X-Frame-Options、CSP の frame-ancestors
|
| MIMEスニッフィング対策があるか |
X-Content-Type-Options: nosniff |
CSP があり、unsafe-inline / unsafe-eval を含まないか |
Content-Security-Policy |
| 証明書が有効で期限が近くないか、TLS 1.0/1.1 が無効か |
443番ポートの TLS 接続 |