viernes, 5 de abril de 2013

SAPHack

SAPHack


Bien, este es el primer capítulo de todo este cuento. Aunque pueda sonar extraño, el título no es lo que parece, ya lo iras entendiendo.

En definitiva todo sistema se compone de lo esencial, un soporte donde almacenar información. Si subimos más arriba, podemos ver que dicho soporte no es más que unos ficheros o tablas donde esta información está catalogada y descrita. No obstante esto no tiene que suponer ningún problema.

En el caso de SAP, estamos hablando de una aplicación Cliente-Servidor, como ya sabéis, SAP dispone de un servidor donde guarda toda la información y unos FrontEnds o Clientes donde el usuario final puede atacar (trabajar) contra la máquina SAP. Esto implica que los programas no se ejecutan en nuestra maquina y que la información tampoco se haya en nuestro terminal, está todo guardado en el servidor.

La diferencia es que SAP, siendo un ERP tan abierto, se nos permite hacer cualquier cosa mientras tengamos autorización para ello y como SAP es tan abierto, los códigos fuentes de todos los programas están a disposición para que los modifiquemos, sea por propia nota de SAP o por decisión del cliente.

Disponemos de un WorkBench donde poder trabajar y unas herramientas más que suficientes. Así que lo demás sale solo.


Partiendo de que tenemos cualquier código fuente, saltárselo o alterarlo (incluso el standard) no es difícil, sólo hay que tener la paciencia suficiente como para encontrar el lugar adecuado. 


Nota: Realmente no disponemos del código fuente, hay algunas rutinas/programas que están implementadas directamente en el servidor, en código C, que es así como está programado SAP a bajo nivel.
Por ejemplo, cuando uno se pregunta por la rutina de encryptado de password de usuario, deberemos ir a mirar el propio ejecutable de SAP (del server), ya que no existe ningún ABAP o ejecutable local con dicha información.
Existen también, herramientas ocultas o no documentadas que sólo las aplica SAP a su gusto y placer, no obstante vamos a intentar desvelarlas un poquito, en la sección de Undocumented.

/H :
Este es el pan nuestro de cada día, la función de debug. Con esta función se puede trabajar directamente con el código fuente, viendo paso a paso lo que está haciendo a cada momento. Lo importante es que con esta herramienta vamos a poder ver el contenido de las variables y tablas, así como otras zonas de memorias que físicamente no son accesibles, pero que están ahí.

A partir de este momento y con estos nuevos conocimientos (crees que son pocos) ya puedodemos hacer lo que queramos con SAP. 
He aquí unos ejemplos: 
  • Obtener privilegios de SAP*
  • Editar códigos fuentes standard.
  • Saltarse protecciones por perfil.
  • etc. 


Ejemplos prácticos:

1. Para poder abrir cualquier tipo de programa, tan solo es necesario visualiza el código fuente del programa: RDDINSYS y poner un sencillo break-point. en la linea 376. 

Es un case que controla el resultado de una función. Una vez puesto el break, bastará con salgamos del editor y editemos el programa que vamos a utilizar con mano-negra. Al apretar sobre el botón de edit, saltará el DEBUG en la línea indicada y simplemente cambiando el valor de la variable sy-subrc podremos acceder a cualquier fuente. 

La transacción SE16 es una de las herramientas más utiles del sistema ya que nos permite acceder a las tablas, ver su contenido y como no... Modificarlo. Si alguna vez no te aparece las opciones de actualización, no te preocupes. Simplemente accede al registro el cual quieres "maquillar" y utiliza el DEBUG. Veras que existe un código como okcode, que cambiandolo por el que quieras podrás hacer lo que te plazca.    |||_ó

2. Cuantas veces nos ha salido el mensaje "Falta autorización para transacción" ("You are not authorized to use transaction") y tenemos que recurrir al equipo de Basis que tardan cerca de los mil años en darnos el permiso necesario para poder acceder.

He aqui la solucion:

1- Nos dirigimos a la transaccion SE37 ( si no tenemos acceso a esta transacción, no tengo otra formula mágica)

2- Ponemos la siguiente función: RS_HDSYS_CALL_TC_VARIANT

3- Pulsamos F8

4- Campo TCODE con la transaccion que necesitamos acceder Campo AUTHORITY_CHECK borrar la X

5- F8


3. Si por algún motivo queremos que nuetro código ABAP, de un programa no sea visible, solo tendremos que indicar al principio del programa, lo siguente: *@#@@[SAP].
Es muy complicado volver a atrás después de hacer esto por ello se recomienda hacer una copia del programa en tu pc.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.