Archivo

Archive for the ‘Internet’ Category

Videotutoriales sobre Packet Injection (inyección de paquetes)

Vagando por el mundo HTTP llegué a un sitio donde se encuentran una serie de videotutoriales muy interesantes sobre Packet Injection. Explican desde el concepto, pasando por la estructura de los paquetes, hasta cómo armar nuestro propio inyector.

Muy interantes, aunque lamentablemente están en inglés.

La URL del sitio: www.security-freak.net/packet-injection/packet-injection.html.

Además en la sección videos de esa web pueden encontrar videos sobre seguridad informática bastantes interesantes.

Protocolo HTTP: GET y POST

Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado en cada transacción de la World Wide Web. HTTP fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, colaboración que culminó en 1999 con la publicación de una serie de RFC, el más importante de ellos es el RFC 2616 que especifica la versión 1.1. HTTP define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como “user agent” (agente del usuario). A la información transmitida se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc.

Resumiendo en pocas palabras, es el protocolo que utilizan los sitios webs para intercambiar datos con los usuarios. Es decir, un cliente contacta con un servidor web mediante una serie de comandos, y el servidor le contesta enviandole los datos requeridos.
HTTP consta de una serie de comandos mediante los cuales hace posible la conexión. Yo les enseñaré los 2 principales y los más importantes: GET y POST

 

Funcionamiento de un Navegador

Para comenzar con la explicación primero tenemos que entender cómo funciona un navegador, que es la aplicación que nos permite conectarnos a un sitio web y ver su contenido.
Antes de presentarnos el contenido tal como lo vemos, el navegador realiza una “traducción”, o más bien una interpretación del código HTML de la página para convertirlo en contenido legible para nuestra vista.

El código HTML son una serie de etiquetas encerradas entre > y < que cumplen diferentes funciones como darle un color, un estilo, un tamaño o una posición específica a una palabra, una imagen o algún otro objeto.
El navegador, mediante una serie de comandos (GETs y POSTs) se conecta a dicha web y le realiza una petición para que esta le envíe el código HTML que lo lee de los archivos .html que están dentro de la página. Entonces, si los comandos enviados son correctos, el servidor web accede a enviarla el código HTML. Y allí es cuando el navegador realiza su función de “traductor”, intepretando las etiquetas HTML y conviertiendo el contenido para que sea legible para nuestra vista.

Entonces es mediante estos comandos que el navegador interactúa con el servidor web para requerirle una página.

 

GET

Principalmente mediante este comando el navegador le pide al sitio que le envíe el código HTML para interpretarlo.

Aquí un ejemplo del comando GET que envía al servidor web:

GET / HTTP/1.1
Host: sitioweb.com

Y la función del servidor web es interpretar estos comandos para enviarle lo que requirió el navegador o el cliente, en este caso, el código html de la página principal del sitio web (generalmente se llama index.html, index.htm o index.php pero se coloca / ya que se refiere a la raíz del sitio web que sería la página principal).

 

POST

Este comando es utilizado para enviar datos al sitio web.

Los datos que se envían al sitio web son intepretados o procesados por funciones PHP declaradas junto con el código HTML dentro de las páginas del sitio web. Son una especie de variables.

Aquí un ejemplo del comando POST:

POST / HTTP/1.1
User-Agent: Mozilla/4.0
Host: sitioweb.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

user=usuario&pass=contrasenia

Explicación de cada parámetro:
POST / HTTP/1.1 Indica que se va a postear o enviar datos a la página principal del sitio web. También podría colocar /mensaje.php si fuera a enviar datos al archivo PHP llamado “mensaje.php” que se encuentre en la carpeta raíz del sitio. HTTP/1.1 indica la versión del protocolo http.
User-Agent: Mozilla/4.0 Indica el navegador que estoy usando para conectarme. En este caso es la versión 4.0 de Mozilla Firefox. Podría colocar cualquier otro o inventarme uno.
Host: sitioweb.com Indica el host, es decir la dirección del sitio web. Es necesaria.
Content-Type: application/x-www-form-urlencoded Está indicando el tipo de contenido que voy a enviar. En este caso estoy enviando datos a un formulario (form), los cuales serán procesado por PHP.
Content-Length: 29 Es el tamaño de los datos que estoy enviando. En este caso son la cantidad de letras que estoy enviando.
user=usuario&pass=contrasenia Esto son los datos que estoy enviando. Los datos son usuario y contrasenia, lo que declaré delante de estos son los nombres de las variables, por así decirlo, que el sitio me pide para procesar los datos dentro de estas. Los nombres de estas “variables” (user y pass) son declarados en el formulario creado en HTML (lo veremos más adelante).
En pocas palabras, lo que aquí le estoy diciendo al servidor web es que a “user” le doy el valor “usuario” y a “pass” le doy el valor “contrasenia”, y el sitio luego procesará estos datos o variables para realizar las acciones correspondientes con estos. Lo formularios utilizados para registrarte dentro de un sitio web cumplen con esta función.