以下の内容はhttps://cysec148.hatenablog.com/entry/2025/06/22/170929より取得しました。


第31回:入力フォームやファイルアップロードに注目しよう

Hello there, ('ω')ノ

1. 入力フォームが狙われやすい理由

観点 内容
自由度 テキスト・数値・ファイル・URL など多様な入力を受け取る
コード密度 バリデーション、DB 書き込み、メール送信など処理が複数絡む
「動くからOK」思考 ユーザテストは通るがセキュリティテストは後回しになりがち

“表示は問題なくても裏側は穴だらけ”――フォームでは日常茶飯事です。


2. 代表的なフォーム系脆弱性とテスト例

脆弱性 簡易 PoC 影響
XSS(反射型) 検索欄に <script>alert(1)</script> 盗用 Cookie → セッション乗っ取り
SQLインジェクション コメント欄に ' OR 1=1-- DB 情報漏えい・改ざん
CSRF 自作 HTML で自動 POST ユーザ権限で設定変更
メールヘッダインジェクション \r\nBcc: spam@example.com スパム送信/情報流出

テスト Tips

  1. Burp Suite Repeater でリクエストを手動送信しながらパラメータ改ざん
  2. エラーメッセージ観察:SQL エラーや stacktrace はお宝ヒント
  3. Content-Type 変更application/jsontext/plainで思わぬ動作を誘発

3. ファイルアップロードで起こる 5 大トラブル

リスク 攻撃シナリオ
拡張子偽装 shell.php.jpg サーバ上で PHP として実行→RCE
MIME タイプバイパス Content-Type: image/png だが中身は HTML XSS → Cookie 窃取
画像処理ライブラリ脆弱性 ImageMagick “ImageTragick” コマンド注入でシステム操作
ストレージ直アクセス /uploads/2025/06/confidential.pdf 認可チェックなし→機密閲覧
Zip Slip(パス トラバーサル) ../../../../etc/passwd を内包する zip 解凍でシステムファイル上書き

速攻チェック 3 ステップ

  1. 拡張子チェンジ.php, .svg, .jsp を順に試す
  2. polyglot ファイル:画像+スクリプト混在ペイロードで実行可否を見る
  3. アップロード後の URL 推測/uploads/ など規則性を探り直接 GET

4. 実戦ミニシナリオ:画像アップロードで RCE

  1. テスト環境で file.php.jpg をアップロード
  2. アップ後 URL:https://site.com/uploads/2025/06/file.php.jpg
  3. 直接アクセス → 404。ただし file.php へアクセスすると コード実行
  4. <?php system('id'); ?> が走り、uid=33(www-data) 表示 → Critical バグ確定

5. 開発・運用側の防御チェックリスト

項目 推奨設定
入力バリデーション フロント+バックで必須。サーバ側は Allowlist 方式
エンコーディング HTML Entity / SQL プレースホルダ 徹底
ファイルストレージ ウェブルート外+ UUID リネーム
MIME & マジックナンバー検査 file --mime-type で2段階判定
画像処理 外部ツール呼び出しよりライブラリ組込+サンドボックス

6. バグハンター向け簡易ツールセット

目的 ツール ワンライナー例
XSS ペイロード生成 xsser / Dalfox dalfox url https://target.com?q=
マジックバイト確認 xxd / binwalk xxd -l 20 file.jpg
画像ポリグロット生成 b374k / phpbypass cat shell.php >> image.jpg
拡張子辞書テスト ffuf ffuf -w ext.txt -u https://site.com/fileFUZZ

7. 報告時のポイント

  • 再現手順は 3 行以内 に簡潔化(例:ログイン→アップロード→URL 実行)
  • 影響度を具体化:「管理者権限で RCE → 全データ取得可能」
  • 修正ガイドContent-Disposition による強制ダウンロード、.htaccess で PHP 実行無効化など提案すると評価↑

まとめ:ユーザー入力=“信頼ゼロ”を前提に

  • 入力フォームは 「何を・どう処理するか」 を必ずサーバ側で検証
  • アップロードは 保存場所・実行権限・表示方法 の 3 点でガード
  • バグハンターは 「想定外の値+想定外の拡張子」 を突っ込む癖を!

“外から来るものは全て敵” くらいの気持ちでチェックすると、高確率でバグを仕留められます。

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/06/22/170929より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14