Enumerando HTTPS

O netcat não suporta o SSL para fazer a conexão, com isso podemos utilizar o openssl. Temos que informar o método que queremos e o host. Um detalhe, é que nesse caso é importante utilizar o HTTP/1.1 para identificarmos Web Application Firewall ou Proxys, que serão serviços que estão no meio do caminho. O host também é necessário informar, para que o servidor possa nos responder corretamente.

Ao fazer a requisição, ele retorna um código 301 que indica que o recurso requisitado foi movido permanentemente para a URL dada pelo cabeçalho, nesse caso é www.tesla.com. Então precisamos enviar uma requisição para esse domínio.

user@xubuntu:~$ openssl s_client -quiet -connect tesla.com:443
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
verify return:1
depth=0 C = US, ST = California, L = Palo Alto, O = "Tesla, Inc.", OU = Traffic Engineering, CN = *.tesla.com
verify return:1
HEAD / HTTP/1.1
Host: tesla.com

HTTP/1.0 301 Moved Permanently
Location: https://www.tesla.com/
Server: BigIP
Connection: Keep-Alive
Content-Length: 0

Assim conseguimos obter as informações.

user@xubuntu:~$ openssl s_client -quiet -connect www.tesla.com:443
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = US, ST = California, L = Palo Alto, O = "TESLA, INC.", CN = *.tesla.com
verify return:1
HEAD / HTTP/1.1
Host: www.tesla.com

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.4.16
X-Drupal-Dynamic-Cache: MISS
X-UA-Compatible: IE=edge
Content-Language: en
Last-Modified: Sat, 10 Jul 2021 05:40:11 GMT
ETag: "1625895611"
X-Generator: Drupal 8 (https://www.drupal.org)
X-Drupal-Cache: HIT
Cache-Control: max-age=60s
X-TZLA-EDGE-HOSTNAME-VCL: drupal8-prod
X-TZLA-EDGE-BACKEND-FETCH-IF-STALE: true
X-TZLA-EDGE-WAS-304: false
X-TZLA-EDGE-Age: 60.000
X-TZLA-EDGE-Grace: 86400.000
X-TZLA-EDGE-BACKEND-RETRY: 0
X-TZLA-EDGE-BACKEND-CONN-TIME: 0.000
X-TZLA-EDGE-BACKEND-TTFB: 0.000
X-TZLA-EDGE-BACKEND-REASON: OK
X-TZLA-EDGE-BACKEND-STATUS: 200
X-Varnish: 25762896 25737020
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-TZLA-EDGE-Cache-Hit: Hit
X-TZLA-EDGE-TTL: 22.412
X-TZLA-EDGE-GRACE-BACKEND-UNHEALTHY: 86400.000
X-TZLA-EDGE-BACKEND-STREAM: false
X-TZLA-EDGE-CLIENT-RESTARTS: 0
X-TZLA-EDGE-CLIENT-REQ-TTL: -1.000
X-TZLA-EDGE-Server: sjc04p1tegvr64.teslamotors.com
X-TZLA-EDGE-Cache-Hits: 4
Date: Sat, 10 Jul 2021 14:00:26 GMT
Connection: keep-alive
Origin_hostname: drupal8-prod.teslamotors.com
Permissions-Policy: interest-cohort=()
Strict-Transport-Security: max-age=15768000

Quando usamos o HTTP/1.0 e não passamos um host, o servidor não retorna um resultado como esperamos, por isso é necessário utilizar o HTTP/1.1 e o host principalmente se ele estiver passando por um WAF ou proxy. Com isso acaba que lidamos diretamente com o web application firewall ou proxy que a aplicação está utilizando, e não com ela diretamente.

user@xubuntu:~$ openssl s_client -quiet -connect www.serasa.com.br:443
depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Organization Validation CA - SHA256 - G2
verify return:1
depth=0 C = BR, ST = SAO PAULO, L = SAO PAULO, OU = Serasa S.A., O = Serasa S.A., CN = *.serasaexperian.com.br
verify return:1
HEAD / HTTP/1.0

HTTP/1.1 503 Service Unavailable
Content-Type: text/html
Cache-Control: no-cache, no-store
Connection: close
Content-Length: 692
X-Iinfo: 3-131528363-0 0NNN RT(1625925716861 8316) q(3 -1 -1 -1) r(3 -1)

<html style="height:100%"><head><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"><meta name="format-detection" content="telephone=no"><meta name="viewport" content="initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></head><body style="margin:0px;height:100%"><iframe id="main-iframe" src="/_Incapsula_Resource?CWUDNSAI=27&xinfo=3-131528363-0%200NNN%20RT%281625925716861%208316%29%20q%283%20-1%20-1%20-1%29%20r%283%20-1%29&incident_id=0-483007950490240963&edet=9&cinfo=ffffffff&rpinfo=0&mth=HEAD" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 0-483007950490240963</iframe></body></html>

Last updated