
このエクスプロイトは、Oracle OAM 11.1.2.3.0 に対するペネトレーションテスト中に開発されました。これは、sec-consult による技術解説に基づいて開発されています。
https://www.sec-consult.com/en/blog/2018/05/oracle-access-managers-identity-crisis/
このエクスプロイトは python-paddingoracle に依存しています。ここからダウンロードできます。
https://github.com/mwielgoszewski/python-paddingoracle
# python oracle-oam-exploit.py -h
####### # # # #######
# # # # ## ## # # # ##### # #### # #####
# # # # # # # # # # # # # # # # # #
# # # # # # # ##### ## # # # # # # #
# # ####### # # # ## ##### # # # # #
# # # # # # # # # # # # # # #
####### # # # # ####### # # # ###### #### # #
Oracle Padding Oracle
coded by: Mostafa Soliman
usage: oracle-oam-exploit.py [-h] [-e ENCRYPT] [-d DECRYPT] [-v] URL
positional arguments:
URL Target resource URL
optional arguments:
-h, --help show this help message and exit
-e ENCRYPT, --encrypt ENCRYPT
Encrypt plain text data
-d DECRYPT, --decrypt DECRYPT
Decrypt base64 encode cipher text
-v, --verb Show decrypt block info
このエクスプロイトは、Oracle OAM 認証が必要なリソースの URL を受け取ります。以下の手順を実行します。
ペネトレーションテスターは、-d フラグを使用して、復号したい任意の暗号化値(encquery、encreplay、cookie)を指定できます。
ペネトレーションテスターは、-e フラグを使用して、暗号化したい任意の平文値を指定できます。
Oracle OAM sdk をリバースエンジニアリングすると、クッキーが以下の構造で構成されていることがわかります。
Salt= ACL= AuthId= Ip= TCT= SessionId= userId= validate=BASE64Encode(MD5(Salt+AuthId+Ip+ACL+TCT+SessionId))
したがって、クッキーを構築するには、-d フラグを使用して有効な平文のクッキーを取得し、それを変更してから、-e を使用して再度暗号化します。
