Exploração de padding oracle para Oracle Access Manager (CVE-2018-2879), permitindo a descriptografia de cookies criptografados e a criptografia de texto simples arbitrário para bypass de autenticação durante testes de penetração.
Este exploit foi desenvolvido durante atividades de pentest contra o Oracle OAM 11.1.2.3.0. Foi desenvolvido com base na descrição técnica da sec-consult
https://www.sec-consult.com/en/blog/2018/05/oracle-access-managers-identity-crisis/
O exploit depende do python-paddingoracle, que pode ser baixado daqui
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
O exploit recebe o URL do recurso que exige autenticação do Oracle OAM. Ele realiza as seguintes etapas:
O pentester pode especificar qualquer valor criptografado (encquery, encreplay, cookie) que deseje descriptografar usando a flag -d.
O pentester pode especificar qualquer valor em texto puro que deseje criptografar usando a flag -e.
ao fazer engenharia reversa do SDK do Oracle OAM, podemos ver que o cookie consiste na estrutura abaixo
Salt= ACL= AuthId= Ip= TCT= SessionId= userId= validate=BASE64Encode(MD5(Salt+AuthId+Ip+ACL+TCT+SessionId))
Então, para construir um cookie, obtenha um válido em texto puro usando a flag -d, modifique-o e criptografe-o novamente usando a flag -e.
