curl es una herramienta de línea de comandos que se utiliza para realizar
solicitudes de transferencia de datos a través de diversos protocolos de red. Su
nombre es una abreviatura de “Client for URLs” (Cliente para URLs). La función
principal de curl es transferir datos con URL:
Algunos de los protocolos que curl admite incluyen:
Por ejemplo, este comando realizará una solicitud GET a la URL proporcionada y mostrará la respuesta en la salida estándar:
Si queremos descargar un archivo con curl, utilizamos el parámetro -o de la siguiente forma por ejemplo ante un archivo de github donde tengamos visión de raw:
curl https://raw.githubusercontent.com/Maalfer/ReverseShell_Python/main/atacante.py -o atacante.py
Podemos comprobar si una petición se ha llevado correctamente o no, utilizando curl con los siguientes parámetros:
-s significa “modo silencioso” y se utiliza para hacer que curl no muestre mensajes de progreso ni mensajes de error durante la transferencia de datos.-o se utiliza para especificar el archivo de salida donde se guardará la salida de la solicitud HTTP.-w se utiliza para especificar el formato de salida que se desea mostrar después de que se haya completado la transferencia de datos. En tu comando, se utiliza -w “%{http_code}\n”, lo que significa que solo se imprimirá el código de estado HTTP seguido por un salto de línea.curl -s -o /dev/null -w "%{http_code}\n" https://www.google.com/
Por ejemplo, si deseas subir un archivo llamado imagen.jpg a la URL
http://ejemplo.com/subir, ejecutarías el siguiente comando:
curl -F "file=@/ruta/completa/a/imagen.jpg" http://ejemplo.com/subir
También podemos subir ficheros con curl a través del protocolo FTP de la siguiente manera:
curl -T hola.pdf ftp://192.168.0.20/home/mario/ -u mario:123123
curl -X POST 192.63.12.3/login.php -d 'name=mario&password=123123' -v
Existen varias diferencias importantes entre las peticiones HTTP HEAD, POST y GET:
En resumen, la principal diferencia entre estas peticiones HTTP radica en su objetivo. La petición HEAD se utiliza para obtener información sobre la respuesta HTTP, mientras que las peticiones GET y POST se utilizan para recuperar o enviar información de y hacia un servidor web. La petición GET se utiliza para solicitar información existente, mientras que la petición POST se utiliza para enviar información y crear nuevos recursos en un servidor web.
El parámetro –path-as-is evita que curl modifique la URL original y la utiliza tal como se especificó en la línea de comandos. Esto es útil cuando se necesita acceder a un recurso que tiene una URL compleja o no estándar como en el siguiente caso, donde estamos solicitando un archivo interno de la máquina:
Por ejemplo, si se desea solicitar un recurso con la URL “http://example.com/my%20path/?query=foo&bar=baz”, pero curl modifica la URL automáticamente para que sea “http://example.com/my%2520path/%3Fquery=foo&bar=baz”, el uso del parámetro –path-as-is asegura que la solicitud se realiza con la URL original sin modificar.