Mis notas de cURL

cURL es un componente imprescindible de la caja de herramientas de un pentester de aplicaciones web. La variedad de opciones que brinda es amplísima y su combinación con los comandos del shell pueden hacer la diferencia entre la descafeinada descripción de una vulnerabilidad versus la ejecución de una prueba de conceptos documentada. En esta entrada voy a ir recopilando algunos trucos y opciones de cURL a modo de memento personal:

Evitando que símbolos como “&” en la URL sean confundidos por Bash como un comando propio

Algunos símbolos de la URL pueden ser interpretados de manera incorrecta en la shell de Bash. Por ejemplo, el símbolo “&” está asociado a las operaciones multihilos. Por este motivo, la mejor práctica es siempre encerrar la URL entre comillas dobles.

Especificando el método HTTP con -X

Si queremos enviar la petición mediante un método HTTP específico, podemos utilizar la opción -X (mayúscula) y a continuación ponemos el nombre del método. cURL utiliza por defecto el método GET. Por supuesto, cURL no puede hacer nada si el servidor web no soporta el método que le indiquemos, para comprobarlo podemos utilizar el método OPTIONS (si está soportado) para conocer los métodos disponibles en el servidor.

Enviando datos en el cuerpo de la petición HTTP desde un archivo con -d @ARCHIVO

cURL permite construir la estructura del cuerpo de la petición HTTP en la misma línea de llamado del comando. No obstante, si se quiere trabajar con más limpieza y orden, se puede escribir todo el cuerpo de la petición en un archivo ASCII y este será enviado utilizando la opción -d (de datos) y anteponiendo el símbolo “@” al nombre del archivo, incluyendo por supuesto la extensión.

Utilizar un certificado sin tener que usar constantemente la opción –cacert

  • El certificado tiene que estar guardado en un archivo .crt
  • Copiarlo el directorio /usr/local/share/ca-certificates/.
  • Ejecutar el comando sudo update-ca-certificates.

Incluir el encabezado de la respuesta HTTP recibida con -i

La llamada simple cURL “URL” devuelve solamente el cuerpo de la respuesta HTTP, la misma información que uno visualiza en un navegador web. Si queremos incluir además los datos asociados al encabezado HTTP recibido debemos incluir la opción –i (minúscula)

Visualizar solamente el encabezado de la respuesta HTTP con –I

Si queremos ver solamente el encabezado de la respuesta HTTP, debemos utilizar el comando –I (i mayúscula). En muchas casos, durante una prueba de seguridad, solo es necesario consultar esta información (Ejemplo HTTP Strict Transport Security).

Continuar la redirección de una página con –L

En algunos casos, las peticiones HTTP son redireccionadas por el servidor y se devuelve un código de respuesta 3XX, cURL no continua por defecto a la nueva dirección, para hacerlo debemos proveer la opción –L.

Guardar el contenido de una página web con –o

Si queremos descargar la página web o el recurso en su concepto más general, podemos usar la opción –o NombreArchivo (archivo donde será copiado el recurso )

Acceder a un recurso con autenticación básica con -u

Muchas aplicaciones web todavía utilizan la autenticación básica de HTTP. Si necesitamos acceder a un recurso protegido con este mecanismo solo precisamos incluir la opción -u username:password.

Descargar un conjunto de recursos secuenciados con #1 y []

En ocasiones necesitamos descargar recursos que se encuentran secuenciados, del tipo:

Si queremos descargar todos estos elementos y guardarlos en archivos secuenciales, podemos utilizar el operador [inicio-fin] y el operador #1 de la siguiente forma:

Utilizar un User-Agent específico con -A

Algunas aplicaciones web individualizan las respuestas según el User-Agent, incluso pueden rechazar la petición si detectan que fue generada con cURL o wget. Para evitarlo podemos suplantar el User-Agent con la opción -A USERAGENT:

Espero que te haya gustado la entrada, yo por mi parte he aprendido bastante escribiéndola.

Utilizar un Referer específico con –referer

Algunas aplicaciones web individualizan las respuestas según el Referer, incluso pueden rechazar la petición si detectan que fue generada con cURL o wget. Para evitarlo podemos suplantar el Referer con la opción –referer REFERER-FALSO:

 

Espero que te haya gustado la entrada, yo por mi parte he aprendido bastante escribiéndola.

S4lud0s y h4st4 el próx1m0 p0st!!!

Anuncios

7 comentarios en “Mis notas de cURL

  1. Pingback: Principales ataques de tipo Username Enumeration | Behique Digital

  2. Pingback: ¿Qué es el Referer? | Behique Digital

  3. Pingback: Apuntes sobre el Referer spoofing, el Referer spam y otros problemas de seguridad relacionados | Behique Digital

  4. Pingback: Análisis de la shellcode IndoXploit | Behique Digital

  5. Pingback: Técnica Fuzzing con OWASP ZAP: Profundizando en el análisis de Directory Traversal y detectando en lote archivos por defecto | Behique Digital

  6. Pingback: Programación segura en PHP: descubre vulnerabilidades en las dependencias de tus proyectos vía Composer y PHP Security Advisories Database | Behique Digital

  7. Pingback: Introducción a la solución de problemas de Web scraping con Bash | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s