Creando una puerta trasera en WordPress
Tags: wordpress, php
Published: 2021-08-04 11:54:19

Cuando eres freelancer, te llegan clientes de todo tipo, y en algunas ocasiones hay que aceptar trabajos por pura necesidad. Muchas de esas ocasiones puede que el cliente se niegue a pagar el trabajo hasta que lo tenga en mano o hasta que lo tenga subido en su servidor, y es aquí cuando tienes que decidir entre perder un cliente o arriesgarte a que no te pague, en ambas situaciones terminas perdiendo.

En algunas situaciones he tenido que aceptar entregar el trabajo antes de recibir el pago, y ante esta situación lo que hice fue crear una puerta trasera (más conocido como «Backdoor») para acceder al panel de administración si decidían no pagarme. Una vez recibido el pago, accedía al backdoor y eliminaba el código del theme desde el panel de administrador. De esta manera no era un problema de seguridad para el cliente una vez haya concluido el trabajo y se haya recibido el pago.

La puerta trasera es una función bastante simple en la que usamos la función de WordPress llamada `wp_set_auth_cookie()` para hacer pensar a WordPress que nos hemos logeado en el sistema con la cuenta de administrador, y después usaremos `wp_redirect()` para redireccionarnos al panel de administración. De esta manera nos saltamos el login de WordPress creando nuestro propio login personalizado a través de una URL.

![Ejemplo 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a31mhsungnvfbuhkka1z.png)

Esto es un ejemplo básico para que se entienda el concepto y la lógica detrás de este backdoor. No obstante, recomiendo cambiar las variables y añadir algo de seguridad para que no sea un problema mientras esté activo.

![Ejemplo 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wi96qmy960ztatfxxslb.png)

El cambio realizado es para que en el código no de la impresión de que es un backdor a primera vista, cambiando el nombre de la función y las variables. Se puede ver un nuevo valor «a» que tiene que ser igual a «acs», después un valor «b» que será el ID de usuario (por defecto sería el ID 1), y un valor «c» que sería la clave de acceso a ese backdoor. La clave de acceso la añado como md5 en el código para después pasar la comprobación del valor «c» con el hash «d». Si «c» es igual al hash md5 añadido en «d», nos dejaría acceder al panel de administrador.

Teniendo nuestro backdoor listo, ahora sólo hace falta añadirlo al theme que hemos creado. Añadimos la función anterior al archivo `functions.php` del theme y después añadimos la función de WordPress llamada `add_action()` debajo del backdoor. De esta manera WordPress iniciará el backdoor una vez cargue el theme. Quedaría algo así:

![Ejemplo 3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jo0739dwf93wu9w9nnsv.png)

Para acceder al backdoor, sólo tenemos que añadir lo siguiente a la url de la web, usando como ejemplo la función anterior.

![Ejemplo 4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttdz0wrctgietwgg806l.png)

Al acceder a esa url, entraremos directamente al panel de administrador de WordPress con la cuenta de administrador, pudiendo hacer lo que queramos hasta que el cliente decida pagar.

**IMPORTANTE**: Si decides usar este backdoor, te recomiendo que cambies las variables e intentes hacerlo algo más seguro. Este código es de uso didáctico y no me hago responsable de cualquier problema que pueda causarte.