mitm-find-enumerable について
mitmproxyの通信ログを調べ、IDを列挙できるエンドポイントや予測可能なパターンを探すセキュリティスキルです。パラメーターや範囲、露出データ、修正案を報告します。
主な機能
- 01連番や予測可能なIDの検出
- 02弱いエンコードの識別子の確認
- 03ページネーション制限不足の検出
- 04パターン・範囲・露出データの報告
活用シーン
- 01取得した通信ログから列挙可能なエンドポイントを確認
- 02リソースの一括取得リスクを評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ instavm/ security-skills --skill mitm-find-enumerableインストール後、Claude Code で/mitm-find-enumerableを入力して読み込まれたか確認します。
詳細
列挙可能なエンドポイントを見つける
mitmproxy のダンプ(log.txt)を分析し、列挙可能なエンドポイントを探します:$ARGUMENTS
必要条件:カレントディレクトリに
log.txtが必要です。存在しない場合は、先にトラフィックをキャプチャしてください:mitmdump --set flow_detail=3 2>&1 | tee log.txt
エンドポイントが列挙可能となる条件
1. 連続する ID
/api/user/1、/api/user/2、/api/user/3/order/100001、/order/100002/transaction/TXN00001
2. 予測可能なパターン
- 日付ベース:
/report/2024-01-01 - タイムスタンプ:
/log/1704067200 - 任意のパラメーターの単純な増分
3. 弱いエンコード
- Base64 形式の数値:
/profile/MTIzNDU=(12345) - 16 進数:
/data/0x1A2B - URL セーフな Base64
4. ページネーションの制限がない
/api/users?limit=999999/search?count=all
テスト用コマンド
# Sequential iteration
for i in {1..100}; do
curl -s "https://target.com/api/resource/$i" >> output.json
sleep 0.5
done
# Base64 iteration
for i in {1000..1100}; do
id=$(echo -n $i | base64)
curl -s "https://target.com/api/resource/$id"
done
# Date iteration
for d in {01..31}; do
curl -s "https://target.com/api/report/2024-01-$d"
done
出力形式
各検出項目について:
- エンドポイント:URL パターン
- パラメーター:反復可能な値
- パターン:連続値/Base64/日付など
- サンプル範囲:観測された値
- 公開されるデータ:各反復で明らかになる内容
- 一括テスト:一括抽出用の curl コマンド
- 修正方法:UUID の使用、認証の追加、レート制限
コメント
Markdown 対応