Electronic Code Book (ECB)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(ECB) 電子コードブック - 対称暗号化方式で、平文の各ブロックを 暗号文のブロックに置き換えます。これは最も単純な暗号化方式です。主なアイデアは、平文をNビットのブロックに分割し(入力データのブロックサイズ、暗号化アルゴリズムによります)、その後、唯一の鍵を使用して各平文ブロックを暗号化(復号化)することです。
ECBを使用することには複数のセキュリティ上の影響があります:
暗号化されたメッセージからブロックを削除できます
暗号化されたメッセージからブロックを移動できます
アプリケーションに何度もログインすると、常に同じクッキーを取得することを想像してください。これは、アプリケーションのクッキーが**<username>|<password>
であるためです。
次に、同じ長いパスワードとほぼ同じ****ユーザー名を持つ2人の新しいユーザーを生成します。
両方のユーザーの情報が同じである8Bのブロックが 等しいことがわかります。次に、これはECBが使用されている**可能性があると想像します。
次の例のように。これらの2つのデコードされたクッキーが何度もブロック**\x23U\xE45K\xCB\x21\xC8
**を持っていることに注目してください。
これは、それらのクッキーのユーザー名とパスワードに「a」という文字が何度も含まれていたためです(例えば)。異なるブロックは、少なくとも1つの異なる文字を含むブロックです(区切り文字「|」やユーザー名の必要な違いかもしれません)。
さて、攻撃者はフォーマットが<username><delimiter><password>
または<password><delimiter><username>
のどちらであるかを発見する必要があります。そのために、似たような長いユーザー名とパスワードをいくつか生成して、フォーマットと区切り文字の長さを見つけることができます:
2
2
4
8
3
3
6
8
3
4
7
8
4
4
8
16
7
7
14
16
クッキーのフォーマット(<username>|<password>
)を知っているので、ユーザー名admin
を偽装するために、aaaaaaaaadmin
という新しいユーザーを作成し、クッキーを取得してデコードします:
私たちは、ユーザー名に a
のみを含む以前に作成されたパターン \x23U\xE45K\xCB\x21\xC8
を見ることができます。
次に、最初の 8B のブロックを削除すると、ユーザー名 admin
の有効なクッキーが得られます:
多くのデータベースでは、WHERE username='admin';
を検索するのと、WHERE username='admin ';
を検索するのは同じです。 (余分なスペースに注意してください)
したがって、ユーザーadmin
を偽装する別の方法は次のとおりです:
ユーザー名を生成します:len(<username>) + len(<delimiter) % len(block)
。ブロックサイズが8B
の場合、username
というユーザー名を生成できます。区切り文字|
を使用すると、チャンク<username><delimiter>
は2つの8Bのブロックを生成します。
次に、偽装したいユーザー名とスペースを含む正確な数のブロックを埋めるパスワードを生成します:admin
このユーザーのクッキーは3つのブロックで構成されます:最初の2つはユーザー名+区切り文字のブロックで、3つ目は(ユーザー名を偽装している)パスワードです:username |admin
次に、最初のブロックを最後のブロックと置き換えるだけで、ユーザーadmin
を偽装します:admin |username
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)