Debug de POST em HTTPS

casio_cable

Power Member
Precisava de uma ajuda.

Para efeitos de despiste de um problema aleatorio necessito colocar um script a enviar um http post de X em X minutos, mas acontece que o mesmo sai do browser em https e necessitava ter o cCurl de forma a automatizar o mesmo.

Encontrei um para firefox mas não consigo atinar com a formatação que ele usa.
Quando são pedidos http normalmente basta usar o Inspector do browser ou capturar no wireshark, mas aqui não é opção.

Existe algum plugin/addOn para browser ou outra tool que me permita capturar o post enviado pelo browser antes de ser encapsulado no TLS para seguir em HTTPS?
 
Não sei se percebi o problema - se usas o curl já tens acesso a todo o conteúdo da ligação. Podes usar o -v e registar tanto o pedido como a resposta, ambos com cabeçalhos. Podes recolher ainda mais informação com o --trace (ou o --trace-ascii).

Quando são pedidos http normalmente basta usar o Inspector do browser ou capturar no wireshark, mas aqui não é opção.
Se for o browser a fazer os pedidos, mesmo com TLS isso é opção, o browser mostra-te o conteúdo da ligação. O Wireshark também tem um dissector para TLS, desde que lhe passes os segredos (como a chave privada do servidor). Já tive sucesso com isso no passado, embora tenha sido muito confuso na altura, e não sei se ainda funciona quando o servidor suporta PFS.

Se nada disto servir, o que queres ao certo conseguir ver sobre essa ligação? E que componentes é que controlas?
É um browser a fazer os pedidos ou é o curl? Podes alterar o servidor remoto? Podes, por exemplo, configurar um proxy que termine o TLS e faça proxy_pass em claro para o application server, sendo que aí podes interceptar o tráfego em claro entre ambos?

Tens também a hipótese de usar um proxy HTTP(S) como o OWASP ZAP (FOSS) ou o Burp Suite (comercial), e configuras o curl ou o browser para usarem esse proxy. Mas se quiseres inspeccionar algum detalhe do TLS, essa informação perde-se, e tens de configurar uma root CA nova no browser (ou passar a opção -k ao curl para não validar o certificado). Pode ou não ser o que precisas.

edit - Estou a ver que existe uma página dedicada a este tema, que te pode interessar, mas também pode ser overkill para as tuas necessidades - https://wiki.wireshark.org/TLS ).
A key log file is a universal mechanism that always enables decryption, even if a Diffie-Hellman (DH) key exchange is in use. The RSA private key only works in a limited number of cases.
Isto significa que a hipótese do Wireshark é possível, mesmo quando há PFS.
 
Última edição:
Não sei se percebi o problema - se usas o curl já tens acesso a todo o conteúdo da ligação. Podes usar o -v e registar tanto o pedido como a resposta, ambos com cabeçalhos. Podes recolher ainda mais informação com o --trace (ou o --trace-ascii).


Se for o browser a fazer os pedidos, mesmo com TLS isso é opção, o browser mostra-te o conteúdo da ligação. O Wireshark também tem um dissector para TLS, desde que lhe passes os segredos (como a chave privada do servidor). Já tive sucesso com isso no passado, embora tenha sido muito confuso na altura, e não sei se ainda funciona quando o servidor suporta PFS.

Se nada disto servir, o que queres ao certo conseguir ver sobre essa ligação? E que componentes é que controlas?
É um browser a fazer os pedidos ou é o curl? Podes alterar o servidor remoto? Podes, por exemplo, configurar um proxy que termine o TLS e faça proxy_pass em claro para o application server, sendo que aí podes interceptar o tráfego em claro entre ambos?

Tens também a hipótese de usar um proxy HTTP(S) como o OWASP ZAP (FOSS) ou o Burp Suite (comercial), e configuras o curl ou o browser para usarem esse proxy. Mas se quiseres inspeccionar algum detalhe do TLS, essa informação perde-se, e tens de configurar uma root CA nova no browser (ou passar a opção -k ao curl para não validar o certificado). Pode ou não ser o que precisas.

edit - Estou a ver que existe uma página dedicada a este tema, que te pode interessar, mas também pode ser overkill para as tuas necessidades - https://wiki.wireshark.org/TLS ).

Isto significa que a hipótese do Wireshark é possível, mesmo quando há PFS.


Eu apenas controlo o cliente, o servidor não, se tivesse acesso ao servidor tinha tentado importar o cert.

Eu desconfio que o problema está no lado do servidor, mas queria por isso mandar evidencias, quando reportei indicam-me que deve ser o pedido enviado pelo cliente com algum erro no form, coisa que não acredito, o que pretendo e enviar vários pedidos iguais até reproduzir o erro para poderem analisar.

Encontrei o firebug, vou ver se consigo com isso.
 
Nesse caso a minha recomendação é instalares o OWASP ZAP e configurares um Profile do Firefox para ter o tráfego a ser interceptado pelo ZAP (configurar proxy + instalar root CA). Ficas com o conteúdo de tudo o que acontecer nessa sessão do Firefox, e podes ter mais de uma a correr ao mesmo tempo (via firefox -ProfileManager -no-remote).

Tinha ideia que o Firebug era o que se usava antes das "Developer Tools" dos browsers começarem a ser comuns. Cheguei a usá-lo muito lá para 2007-2008. Ainda existe, e ainda é útil?
 
Back
Topo