- 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:
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.

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 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.

Métodos HTTP
Os métodos, também conhecidos como verbos HTTP, são os seguintes:
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.
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:
Eu costumo usar muito os recursos do firefox para analisar as requisições e respostas HTTP, os principais addon são estes:

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.

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] : #
Click here to print.
Copyright © 2007 Wagner Elias - Think Security First | BCP, BIA, DRP, Security Assessment, Risk Assessment, Security Developer. All rights reserved.
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
#2 Comment By Elias Wagner On 9 09America/Denver February, 2009 @ 9:34 am
Obrigado Rafael.
#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!
#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
#5 Comment By Felipe Gasparelo On 10 10America/Denver February, 2009 @ 11:11 pm
Muito bom…parabens.. muito didático e esclarecedor!!
#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!
#7 Comment By Elias Wagner On 2 02America/Denver April, 2009 @ 7:51 pm
Obrigado Chris!
Espero escrever cada vez mais.
Abs.
#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 [...]