Exploit de oráculo de relleno para Oracle Access Manager (CVE-2018-2879) que permite el descifrado de cookies cifradas y el cifrado de texto plano arbitrario para el bypass de autenticación durante pruebas de penetración.
Este exploit fue desarrollado durante una actividad de pruebas de penetración contra Oracle OAM 11.1.2.3.0. Se desarrolló basándose en la descripción técnica de sec-consult.
https://www.sec-consult.com/en/blog/2018/05/oracle-access-managers-identity-crisis/
El exploit depende de python-paddingoracle, el cual se puede descargar desde aquí.
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
El exploit recibe la URL del recurso que requiere autenticación de Oracle OAM. Realiza los siguientes pasos:
El pentester puede especificar cualquier valor cifrado (encquery, encreplay, cookie) que desee descifrar usando la bandera -d.
El pentester puede especificar cualquier valor de texto plano que desee cifrar usando la bandera -e.
Al revertir el SDK de Oracle OAM podemos ver que la cookie tiene la siguiente estructura:
Salt= ACL= AuthId= Ip= TCT= SessionId= userId= validate=BASE64Encode(MD5(Salt+AuthId+Ip+ACL+TCT+SessionId))
Por lo tanto, para construir una cookie, obtenga una de texto plano válida usando la bandera -d, modifíquela y luego cifrarla de nuevo usando -e.
