Como diz meu amigo
Sp0oker: "como falar de payload para pessoas que não sabem o que é um Three Way Handshake?" Pensando nisso eu resolvi divulgar esta parte sobre http do material do
treinamento de web hacking techniques. O conteúdo é o básico para conhecer como funciona o protocolo HTTP, essencial para análise de segurança em aplicações WEB.
O que é o protocolo HTTPO HTTP (Hypertext Transfer Protocol) é um protocolo que atua na camada de aplicação de acordo com o modelo OSI e estabelece um conjunto de regras, padrão para troca de mensagens entre recursos na WEB.
O HTTP possui as seguintes versões:
- HTTP/0.9 (Criado em 1991)
- HTTP/1.0 (Criado em 1996)
- HTTP/1.1 (Criado em 1999)
Não é o propósito deste tutorial explicar os detalhes de cada versão, mais detalhes podem ser obtidos na RFC 2145 (Use and Interpretation of HTTP Version Numbers).
Como trabalha o protocolo HTTP
O protocolo HTTP tem uma característica que é de fundamental entendimento para quem analisa segurança em aplicações WEB, é o fato dele ser stateless, isso significa que ele não mantém uma conexão, ele sempre conecta, envia uma mensagem, recebe uma resposta e desconecta, como ilustra a figura 1.
Figura 1
Por este motivo é utilizado recursos extras como cookie e/ou sessões para garantir a persistência dos dados e informações que são disponibilizados em aplicações.
A figura 2 mostra a visão do protocolo HTTP e seus dados frente a camada TCP/IP, na figura 3 podemos identificar como funciona a comunicação em uma rede de dados e na figura 4 um exemplo de um header (cabeçalho) HTTP.
Figura 2
Figura 3
Figura 4Quando estamos falando de aplicações WEB geralmente estamos sempre fazendo referência a URI (Uniform Resource Identifiers) como http://wagnerelias.com, técnicamente a URI serve apenas para fazer referência a um determinado domínio, quando precisamos acessar recursos WEB via browser utilizamos a URL(Uniform Resource Locators). Para conseguir identificar e explorar determinados recursos de uma aplicação é essencial que se entenda exatamente o que cada parte de uma URL representa, na figura 5 temos uma descrição de cada parte de uma URL.

Figura 5
Já sabemos o que é um protocolo HTTP, quais as suas principais características, mas é preciso entender quais são seus principais métodos e códigos de status, na figura 6 temos um representação de uma requisição do browser e uma resposta do servidor.
Figura 6
Métodos HTTP
Os métodos, também conhecidos como verbos HTTP, são os seguintes:
- GET: é o método mais comum e tem como característica enviar seus parâmetros direto na URI
- POST: é um método que envia os dados no corpo do header e possui características mais seguras para se enviar requisições ao servidor
- HEAD: semelhante ao GET mas não obtem o recurso, apenas meta dados
- PUT: envia um recurso para o servidor
- DELETE: exclui um recurso do servidor
- TRACE: através da resposta obtida por uma requisição trace é possível saber o que foi alterado na requisição por um servidor intermediário
- OPTIONS: consulta os métodos HTTP que o servidor aceita
- CONNECT: usado em soluções de proxy
Os métodos são informados no momento que é feito uma requisição HTTP ao servidor de aplicação.
Código de Status do HTTP
Os códigos de status estão classificados em cinco tipos.
- 1xx: Informação
- 2xx: Sucesso
- 3xx: Redirecionamento
- 4xx: Erro no cliente
- 5xx: Erro no server
Uma lista completa de códigos de status pode ser
obtida aqui. Sempre que uma requisição usando um método HTTP é feita ao server é recebido uma resposta com um status code.
O HTTP também possui recursos de autenticação nativos que pretendo falar mais sobre eles em um post futuro, os dois modelos são:
- Autenticação Básica
- Autenticação Digest
Eu costumo usar muito os recursos do firefox para analisar as requisições e respostas HTTP, os principais addon são estes:
Live HTTP Headers
Além dos addon do firefox eu estou usando uma ferramenta desenvolvida pelo
tiger team 514 que faz várias requisições usando métodos diferentes e dando o status code de cada uma.
HTTP Methods Este post foi uma introdução sobre o funcionamento e principais características do http. As referências para este tutorial foram os livros: Whiley - HTTP Essentials Protocols for Secure, Scaleable Web Sites; O'Reilly - HTTP Definitive Guide; Sams - HTTP Developer's Handbook.