Software Design

Design de software em C, C++, Java, etc…

Teste de conexão HTTPS utilizando netcat + stunnel

Em um post anterior mostrei como fazer para interceptar uma conexão utilizando o netcat. Aquela dica é muito útil porém só serve para conexões não-seguras. Se você precisa testar uma conexão HTTPs por exemplo, precisará que a conexão com o servidor seja criptografada, mas mesmo assim você pode utilizar o netcat em conjunto com o stunnel para fazer isso.

Stunnel é um wrapper SSL, ou seja, você envia dados em formato ASCII pra ele, e ele estabelece uma conexão segura com a outra ponta enviando dados criptografados. Existem diversas aplicações para esse software, hoje vou demonstrar como utilizar ele para estabelecer uma conexão HTTPs ( para testes )

Para este exemplo, estou utilizando a versão 4 do stunnel, essa versão precisa que você crie um arquivo de configuração bem simples:

client = yes
[pseudo-https]
accept = 8080
connect = httpbin.org:443

Salve este arquivo como https.stunnel ( ou qualquer outro nome que você preferir ). O que este arquivo faz basicamente é:

  • Configura o stunnel como um client.
  • Especifica em qual porta o stunnel vai esperar por conexões
  • Especifica host/porta de destino ( onde ele vai se conectar como cliente )

Você pode se perguntar porque um client precisa abrir esperar por conexões… A resposta é que, ele precisa enviar uma requisição para o servidor e a forma mais simples de você fazer isso é enviar a requisição via socket pra ele portanto ele também é um servidor.

Para iniciar o stunnel e abrir a porta 80 o comando é:

stunnel https.stunnel

Pronto, se você olhar no netstat a porta 8080 estará aberta, agora é só enviar as requisições para ela. No caso do pastebin ele tem um url /ip que retorna o endereço ip do requisitante. Você pode utilizar o telnet ou netcat para enviar essa requisição:

$ telnet localhost 8080
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
GET http://httpbin.org/ip HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 18 Dec 2012 15:33:08 GMT
Server: gunicorn/0.13.4
Content-Length: 33
Connection: keep-alive
{
“origin”: “100.200.100.140”
}

Pronto, você fez uma requisição plain-text e recebeu uma resposta plain-text, no entanto a comunicação ocorreu de forma criptografada.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado em dezembro 18, 2012 por em Uncategorized.
%d blogueiros gostam disto: