- Wagner Elias – Think Security First - http://wagnerelias.com -

HTTP Essentials

Posted By Elias Wagner On 6 06America/Denver February, 2009 @ 3:55 pm In Security Developer | 8 Comments

Como diz meu amigo Sp0oker [1]: "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 [2]. 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 HTTP

O 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 4

Quando estamos falando de aplicações WEB geralmente estamos sempre fazendo referência a URL(Uniform Resource Locators) como http://wagnerelias.com, técnicamente a URL serve apenas para fazer referência a um determinado domínio, quando precisamos acessar recursos WEB via browser utilizamos a URI (Uniform Resource Identifiers). Para conseguir identificar e explorar determinados recursos de uma aplicação é essencial que se entenda exatamente o que cada parte de uma URI representa, na figura 5 temos uma descrição de cada parte de uma URI.


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 [3]. 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 [4]



Modify Headers [5]


HTTPFox


Tamper Data [6]

Além dos addon do firefox eu estou usando uma ferramenta desenvolvida pelo tiger team 514 [7] 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.

8 Comments (Open | Close)

8 Comments To "HTTP Essentials"

#1 Comment By rafael motta On 7 07America/Denver February, 2009 @ 10:29 am

Muito bom o post Wagner. mesmo pra quem já conhece aborda vários detalhes que as vezes até passam despercebidos.
eu que ultimamente não tenho mexido mais com esses detalhes de http/servidores foi bom para relembrar algumas coisas.

abraços

[8] [8]

#2 Comment By Elias Wagner On 9 09America/Denver February, 2009 @ 9:34 am

Obrigado Rafael.

[8] [8]

#3 Comment By Walter Cruz On 10 10America/Denver February, 2009 @ 11:21 am

Gostei do texto, direto ao ponto, indo além do básico. Abraço!

[8] [8]

#4 Comment By Daniel Moro On 10 10America/Denver February, 2009 @ 7:41 pm

Parabéns pelo post!

Objetivo e muito bem escrito.

Com certeza, a comunidade agradece!

[]s

[8] [8]

#5 Comment By Felipe Gasparelo On 10 10America/Denver February, 2009 @ 11:11 pm

Muito bom…parabens.. muito didático e esclarecedor!!

[8] [8]

#6 Comment By Chris Benseler On 31 31America/Denver March, 2009 @ 4:45 pm

Cara, teu blog é mto bacana! Dificilmente encontramos tanto material de qualidade sobre segurança (e afins) no ambiente web! Já tá add nos meus feeds!
Vejo que tenho muita coisa ainda a aprender nessa área!

Abraços, e valeu pelo comentário lá no meu!

[8] [8]

#7 Comment By Elias Wagner On 2 02America/Denver April, 2009 @ 7:51 pm

Obrigado Chris!

Espero escrever cada vez mais. :)

Abs.

[8] [8]

#8 Pingback By Introdução ao protocolo HTTP On 10 10America/Denver February, 2009 @ 11:00 am

[...] por Wagner Elias (weliasΘconviso·com·br) – referência [...]

[8] [8]

Article printed from Wagner Elias – Think Security First: http://wagnerelias.com

URL to article: http://wagnerelias.com/2009/02/06/http-essentials/

URLs in this post:

[1] Sp0oker: http://spookerlabs.multiply.com/

[2] treinamento de web hacking techniques: http://www.ucon-conference.org/web-hacking-techniques.php?hl=pt

[3] obtida aqui: http://www.tutorialspoint.com/http/http_status_codes.htm

[4] Live HTTP Headers: https://addons.mozilla.org/en-US/firefox/addon/3829

[5] Modify Headers: https://addons.mozilla.org/en-US/firefox/addon/967

[6] Tamper Data: https://addons.mozilla.org/en-US/firefox/addon/966

[7] tiger team 514: http://www.514.es/2008/02/httpmethods_1.html

[8] : #

Copyright © 2007 Wagner Elias - Think Security First | BCP, BIA, DRP, Security Assessment, Risk Assessment, Security Developer. All rights reserved.