<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 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**me en **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).
Copia de: [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/)
SAProuter es básicamente un proxy inverso para sistemas SAP, que generalmente se encuentra entre Internet y los sistemas SAP internos. Su principal propósito es permitir el acceso controlado desde hosts en Internet a los sistemas SAP internos, ya que permite un control más detallado de los protocolos SAP que un firewall típico.
Esto significa que SAProuter usualmente termina estando expuesto a Internet, al permitir el puerto TCP entrante 3299 al host de SAProuter en los firewalls de la organización. Y desde el SAProuter, al menos debería ser posible alcanzar un servidor SAP interno. Esto lo convierte en un objetivo muy interesante, ya que puede proporcionar una vía de acceso a la red de "alto valor".
Primero comenzaremos realizando un escaneo de servicio SAP de la dirección IP expuesta, utilizando el módulo [`sap_service_discovery`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_service_discovery), en este caso, 1.2.3.101.
El escaneo nos muestra que el host está ejecutando un SAP router en el puerto TCP 3299 esperado. Ahora podemos profundizar e intentar obtener información del saprouter. Si ha sido configurado incorrectamente, y a menudo lo está, podría ser posible obtener información interna, como las conexiones establecidas a través del saprouter con hosts internos. Para este propósito utilizamos el módulo [`sap_router_info_request`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_info_request):
Con esta información, ahora podemos comenzar a escanear la red interna. Dado que saprouter funciona como un proxy, intentaremos conectarnos a él y solicitar conexiones a hosts y puertos internos, y ver las respuestas de saprouter. Esto puede proporcionar más información sobre los hosts internos, servicios y ACLs, dependiendo de la configuración del saprouter. Utilizaremos el módulo [`sap_router_portscanner`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_portscanner) para este propósito.
El módulo se conecta al saprouter y solicita conexiones a otros hosts \(definidos en la opción TARGETS\) en puertos TCP específicos. Luego analiza las respuestas y determina si la conexión solicitada es posible o no. Este módulo proporciona algunas opciones que se pueden utilizar:
Al menos deberás establecer la dirección IP del saprouter, en el caso del ejemplo, 1.2.3.101. Luego, configura TARGETS con las direcciones de la red interna que te gustaría escanear, y finalmente establece PORTS con los puertos TCP a escanear.
El módulo también proporciona una opción INSTANCES que permite simplificar la definición de la opción PORTS. Las instalaciones de SAP admiten múltiples instancias, proporcionando servicios similares, por lo que a cada instancia se le asignan puertos TCP. Por ejemplo, la instancia SAP 00 tendrá el servicio de despachador SAP \(donde se conecta SAP GUI\) en el puerto 3200 y la instancia 01 en el puerto 3201. La opción PORTS admite un "comodín" que es "NN" que se reemplazará con el número de instancia, por lo tanto, escaneando puertos para todas las instancias definidas. Entonces, si queremos escanear instancias del 00 al 50, podemos definir las variables INSTANCES y PORTS de esta manera:
Podemos intentar entender por qué algunas conexiones no están permitidas a través del saprouter utilizando la opción VERBOSE. Cuando VERBOSE está configurado en true, podemos ver la respuesta del saprouter y mapear la ACL definida.
Como puede ver, ahora también sabemos que no podemos conectarnos a otro host en el puerto 3200, ya que está bloqueado por la ACL definida en el saprouter.
* Nativa – Estas conexiones son simplemente conexiones TCP;
* Protocolo SAP – Estas son conexiones TCP con un giro, el protocolo establece que todos los mensajes comienzan con 4 bytes que indican la longitud del contenido siguiente.
El protocolo SAP es específico para saprouter y es lo que SAP GUI utiliza para conectarse al puerto SAP DIAG a través del saprouter. El protocolo nativo se utiliza para permitir que otros tipos de conexiones pasen a través del saprouter.
Este módulo permite especificar qué tipo de conexión probar durante el escaneo en la opción MODE. El valor predeterminado es el protocolo SAP, que es el más probable de ser utilizado en producción. Sin embargo, no es raro encontrar otros servicios permitidos a través del saprouter, donde la ACL permitirá conexiones nativas \(TCP\) a través.
Podemos establecer el MODE en TCP para evaluar si este tipo de conexiones están permitidas. Ahora escanearemos los hosts internos, tanto en el puerto 3200 \(SAP DIAG\) como en el 80 \(HTTP\), con VERBOSE establecido en true, en ambas instancias 00 y 01 y veremos qué sucede:
Si recuerdas, comenzamos obteniendo información del saprouter que nos permitió conocer la dirección IP de un host interno, y a partir de ahí continuamos. Pero, ¿qué pasa si el saprouter no nos proporciona esa información?
Una opción es simplemente comenzar a escanear espacios de direcciones privadas y ver qué sucede. La otra es enumerar ciegamente los hosts por nombre de host.
Los saprouters son capaces de resolver nombres de host que les solicitamos conectar. El saprouter también es lo suficientemente amable para hacernos saber cuáles son los errores cuando falla en conectar \(puedes ver las respuestas crudas descomentando la línea 242 en el código fuente del módulo\).
Para esto, necesitamos configurar la opción RESOLVE a "remote". En este caso, el módulo solicitará conexión a los TARGETS definidos, sin resolverlos localmente, y podemos intentar adivinar los hosts internos, y eventualmente conectar a ellos sin conocer nunca sus direcciones IP.
* Obtendremos más información del saprouter si MODE está configurado en SAP_PROTO;
* Es suficiente configurar solo un puerto para escanear, ya que en este punto solo nos interesa la información enviada por el saprouter \(prueba con 3200\);
* Los resultados variarán dependiendo de la ACL configurada. Desafortunadamente, las conexiones bloqueadas no nos darán mucha información.
Del resultado observamos que el host "sap" no existe, pero el host sapsrv sí, aunque es inaccesible, y sapsrv2 existe y podemos conectarnos al puerto 3200.
Esta técnica también se puede utilizar para intentar encontrar otros hosts en la red, no relacionados con SAP, simplemente intenta usar nombres de host comunes, como smtp, exchange, pdc, bdc, fileshare, intranet, o cualquier otro nombre de host interesante que puedas tener en tu bolsa de trucos.
Ahora que hemos obtenido toda esta información, conocemos los hosts internos disponibles, qué servicios están permitidos y qué protocolos podemos usar para atravesar el saprouter, podemos conectarnos realmente a servidores internos y proceder con nuestro pentest.
Metasploit nos proporciona una forma impresionante de usar saprouter como un proxy, utilizando la opción Proxies, gracias a Dave Hartley ([@nmonkee](http://twitter.com/nmonkee)).
Así que en este punto, queremos comenzar a recopilar información sobre el servidor sap interno que hemos descubierto en el host 192.168.1.18. Como ejemplo, utilizaremos el módulo [`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem) que explota CVE-2013-3319 y nos da detalles sobre el sistema operativo en el que se ejecuta el servidor consultando el servicio SAP Host Control en el puerto 1128 a través de una solicitud SOAP no autenticada. Estaremos pivotando a través del saprouter, utilizando el soporte de proxy en metasploit:
Si todo salió bien, tendrás una buena salida del módulo en el botín que contiene información interna interesante del host SAP objetivo \(como nombres de usuario internos que luego puedes intentar forzar bruscamente\).
Hemos visto cómo es posible explotar configuraciones débiles de saprouter que pueden permitir el acceso a hosts internos desde Internet, todo esto utilizando solo el soporte de metasploit para pentesting de sistemas SAP.
Espero que este artículo pueda ayudar a arrojar luz sobre los riesgos asociados con las implementaciones de saprouter, así como sobre la seguridad de SAP en general.
* \[[http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2](http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2) - Mariano Nun ez Di Croce - SAProuter .pdf\]\([http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2](http://conference.hitb.org/hitbsecconf2010ams/materials/D2T2) - Mariano Nunez Di Croce - SAProuter .pdf\)
* [CVE-2013-3319 SAP Host Agent Information Disclosure \| Rapid7](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem)
* [SAPRouter Port Scanner \| Rapid7](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_portscanner)
<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 **sígueme** en **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).