¿Qué son la inclusión de archivos y la ejecución de código arbitrario? - MalCare

Publicado: 2023-04-13

Inclusión de archivos y ejecución de código arbitrario: a principios de este mes, un sitio web de boletos de avión creado en WordPress fue pirateado, dejando expuestos los datos personales de cientos de miles de visitantes. En una publicación anterior sobre por qué los piratas informáticos piratean , discutimos todas las razones por las que los piratas informáticos piratean, incluido el robo de datos, el envío de correos electrónicos no deseados, incluso podrían estar utilizando técnicas de Black Hat SEO para clasificar sus propios productos (lectura recomendada: piratería farmacéutica) , etc.

Aprender cómo los piratas informáticos piratean un sitio web es clave para prevenirlos, por lo que enumeramos los ataques de piratería más comunes realizados en sitios web de WordPress en un artículo anterior.

Cuando hablamos de ataques de hackers comunes, es muy probable que pienses en ataques de fuerza bruta. Pero, ¿sabía que la inclusión de archivos y la ejecución de código arbitrario también es uno de los ataques de pirateo más comunes realizados en los sitios web de WordPress? En este post profundizaremos un poco más en estos ataques con vistas a entenderlos en detalle.

Para entender cómo funcionan estos ataques, lo primero que debes saber es que se trata de archivos PHP.Debes estar preguntándote ¿por qué? Se debe a que tanto los ataques de inclusión de archivos como los de ejecución de código arbitrario implican el uso de archivos PHP.

Pero, ¿qué es un archivo PHP? Piensa en un mueble de cocina. Dentro del gabinete, hay una serie de artículos como azúcar, sal, especias, utensilios, etc. Cada uno de estos artículos tiene un propósito para servir en la cocina.Un archivo PHP es un gabinete y los códigos dentro de los archivos son los elementos que permiten la ejecución de ciertas funciones deseadas por el hacker.Esta es la razón por la cual los piratas informáticos prefieren cargar un archivo PHP sobre cualquier otro archivo, como archivos JPEG o PDF. Los archivos JPEG y PDF no son ejecutables, es decir, los piratas informáticos no pueden utilizar estos archivos para ejecutar ninguna función. Uno solo puede leerlos (es decir, verlos). No se pueden usar para realizar cambios en un sitio pirateado.

Un pirata informático que ha cargado un archivo PHP en el servidor de su sitio web puede usarlo para hacer cualquier cosa en su sitio web. Y es por eso que los archivos PHP se utilizan para ejecutar ataques de inclusión de archivos y ejecución de código arbitrario.

¿Qué es un ataque de inclusión de archivos?

La mejor manera de entender un ataque complejo a un sitio web como este es ejemplificar un escenario real. Supongamos que ejecuta un sitio web para su institución y el sitio se llama college.com. Permite que algunos estudiantes accedan al sitio para que puedan publicar fotografías tomadas durante un evento universitario reciente. Alguien hace un mal uso del acceso que le diste y carga un archivo PHP malicioso (llamado hack.php) en el sitio web. El objetivo es hacerse con el control de los sitios web de las universidades. Cuando el estudiante carga el archivo PHP malicioso, por defecto se almacena en la carpeta Cargar.Cualquiera que conozca la estructura básica de WordPresssabe adónde va un archivo cargado.

Inclusión de archivos y ejecución de código arbitrario
Cualquier carga que no sea un tema o complemento se almacena en la carpeta Cargar. Cualquiera que conozca la estructura de WordPress sabe dónde se puede encontrar la carpeta Cargar. Para aquellos que no saben, aquí es donde se encuentra la carpeta Cargar. Abra el Administrador de archivos desde el cPanel de Web Hosting, luego vaya a Public_html > wp-content > uploads.

El archivo actúa como una puerta que permite al hacker interactuar con el archivo de forma remota. Tenga en cuenta que el pirata informático aún no tiene control sobre el sitio, solo tiene una ventana para comunicarse. Para que sea más fácil de entender, imagine que la persona A quiere ir a un país donde no se le permite. Así que envía a un agente, la persona B. La persona A es el hacker, el país representa el sitio web de la universidad y la persona B es el archivo hack.php.

Archivos PHP cargados en el sitio web de la universidad —-> El archivo se almacena en el servidor del sitio web

La persona B solo está capacitada en unas pocas cosas y solo puede hacer mucho. Entonces, la persona A necesita instruirlo sobre qué hacer a continuación. Del mismo modo, el archivo PHP crea una ventana de comunicación y luego espera más comandos del hacker.

Supongamos que el hack.php se crea de una manera que permite cargar más archivos en el sitio web. El hacker crea un archivo (llamado control.php) que cargará usando hack.php que ya está presente en el servidor del sitio web. El nuevo archivo – control.php le permitirá al hacker tener acceso completo al sitio web. Utiliza la ventana proporcionada por el archivo hack.php para cargar el archivo control.php en el sitio.Este proceso de cargar el archivo control.php usando un archivo (hack.php) que ya está presente en el servidor del sitio web se llama Inclusión de archivos locales .

Un gran ejemplo de la ejecución local de archivos es la vulnerabilidad observada en el complemento Easy Forms for MailChimp WordPress (v 6.0.5.5) . Con el complemento de MailChimp, los propietarios de sitios web pueden agregar diferentes tipos de formularios a su sitio de WordPress. Una vulnerabilidad permitió a los piratas informáticos cargar un archivo PHP en un servidor de sitio web utilizando el formulario de MailChimp.Una vez que el archivo se almacena en el servidor del sitio web, los piratas informáticos pudieron comunicarse con ellos y ejecutar códigos que les permitirán controlar el servidor o dañar el sitio de muchas maneras.

Aquí hay un escenario: el sitio web de la universidad tiene un firewall instalado y, por lo tanto, el pirata informático no puede cargar el control.php. Si bien no puede cargar otro archivo separado, puede 'incluir' un archivo. Significa que puede insertar un archivo dentro del archivo hack.php que ya está presente en el servidor del sitio web de la universidad. Si el pirata informático pudo cargar el archivo control.php, el servidor del sitio web leería el archivo y ejecutaría el código que contiene, lo que le permitirá al pirata informático hacer lo que quiera. Pero debido a que no puede cargar el archivo, tendrá que encontrar otras formas de hacer que el servidor lea el archivo control.php. Una ruta creada por un pirata informático está disponible en línea y el servidor del sitio web de la universidad debería poder leerla. Por lo tanto, el pirata informático crea una ruta y los pone a disposición en línea para que el servidor del sitio web de la universidad pueda leerlos. Luego, el servidor comienza a ejecutar el código adquirido de la ruta y, dado que el código está escrito de una manera que le permitirá al pirata informático el control total del sitio, el pirateo ahora controla el sitio web de la universidad. Este proceso de hacer que el servidor lea un archivo remoto se denomina Inclusión de archivos remotos.

Inclusión de archivos y ejecución de código arbitrario
Un ejemplo que demuestra cómo se produjo el ataque de TimThumb

El caso de vulnerabilidad de TimThumb es un ejemplo popular de inclusión de archivos remotos. TimThumb era un complemento de WordPress que permitía editar imágenes fácilmente en un sitio de WordPress. Permitió que cualquier persona usara imágenes obtenidas de sitios web para compartir imágenes como imgur.com y flickr.com. TimThumb reconoce imgur como un sitio válido (o incluido en la lista blanca). Los piratas informáticos que se aprovechan de este criterio crean archivos con URL que mencionan un sitio válido como http://www.imgur.com.badsite.com.Cuando cargan un archivo malicioso con una URL como la que mencionamos anteriormente, se engaña al complemento haciéndole creer que el archivo proviene de un sitio web válido.Y permite subir un archivo malicioso al servidor del sitio web. Todo este proceso de incluir un archivo malicioso desde fuera del servidor del sitio web aprovechando una vulnerabilidad en un complemento es Inclusión remota de archivos. Una vez que el archivo PHP malicioso se almacena en el servidor del sitio web, los piratas informáticos pueden comunicarse con él para ejecutar las acciones deseadas.

¿Qué es un ataque de ejecución de código arbitrario?

Ahora que sabemos qué es la inclusión remota y local de archivos, avancemos e intentemos comprender qué es la ejecución de código arbitrario. La inclusión de archivos y la inclusión de código arbitrario están interrelacionadas entre sí. En cualquier caso de inclusión de archivos, el objetivo de los piratas informáticos es ejecutar un código arbitrario en el sitio web. Volvamos al ejemplo de Inclusión de archivos locales donde el pirata informático cargó un hack.php en el sitio web de la universidad y luego cargó control.php con la ayuda de hack.php.La frase Ejecución de código arbitrario es una descripción de la capacidad de un pirata informático para ejecutar cualquier comando de su elección en un sitio web pirateado.Una vez que los archivos PHP (hack.php y control.php) están en el servidor del sitio web, el hacker puede ejecutar cualquier código que desee. Este proceso de ejecutar cualquier código de los archivos que cargó se denomina Ejecución de código arbitrario.
Los hacks son complejos. En esta publicación, tratamos de explicarlo de manera simple, pero si hay una parte que no tiene sentido para usted, instamos a nuestros lectores a que nos escriban . En la siguiente publicación, analizaremos otro ataque de hackeo común en un sitio de WordPress llamado Cross-Site Scripting (XSS). Echar un vistazo.