# Puerto 443: HTTPS

**HTTPS (Hypertext Transfer Protocol Secure)** es la versión segura del protocolo HTTP, utilizado para la comunicación segura a través de la red. HTTPS se ejecuta sobre el puerto 443 por defecto y emplea SSL/TLS (Secure Sockets Layer/Transport Layer Security) para cifrar los datos transferidos entre el cliente y el servidor, garantizando la confidencialidad e integridad de la información.

### Descripción de HTTPS <a href="#descripcion-de-https" id="descripcion-de-https"></a>

* **Protocolo**: HTTPS combina HTTP con SSL/TLS para proporcionar una conexión segura. Opera sobre el puerto 443.
* **Cifrado**: SSL/TLS cifra los datos transmitidos, protegiéndolos contra la interceptación y los ataques man-in-the-middle (MITM).
* **Autenticación**: HTTPS verifica la identidad del servidor mediante certificados digitales emitidos por autoridades de certificación (CAs).
* **Integridad de Datos**: Utiliza sumas de verificación y algoritmos hash para asegurar que los datos no sean alterados durante la transmisión.

### Relevancia en Pentesting <a href="#relevancia-en-pentesting" id="relevancia-en-pentesting"></a>

#### **Importancia de HTTPS en Pentesting**: <a href="#importancia-de-https-en-pentesting" id="importancia-de-https-en-pentesting"></a>

* **Seguridad de la Comunicación**: HTTPS protege la información sensible (como credenciales de usuario y datos financieros) contra la interceptación.
* **Configuraciones Incorrectas**: Los pentesters buscan configuraciones incorrectas en la implementación de HTTPS, como certificados expirados, cifrados débiles, y falta de configuraciones de seguridad como HSTS.
* **Vulnerabilidades en SSL/TLS**: Los pentesters también identifican vulnerabilidades en la configuración de SSL/TLS, como soporte para versiones obsoletas y cifrados inseguros, que pueden ser explotadas.

#### Ejemplo de Escaneo de HTTPS con Nmap <a href="#ejemplo-de-escaneo-de-https-con-nmap" id="ejemplo-de-escaneo-de-https-con-nmap"></a>

Para identificar servidores HTTPS activos y verificar posibles vulnerabilidades, se puede utilizar Nmap. El siguiente comando escanea el puerto 443 y ejecuta scripts NSE específicos para HTTPS.

**Comando Nmap**

Copiar

```
nmap -p 443 --script ssl-enum-ciphers,ssl-cert,ssl-dh-params target-ip
```

**Explicación del Comando**

* `nmap`: Ejecuta el comando Nmap.
* `-p 443`: Especifica que Nmap debe escanear el puerto 443, el puerto predeterminado para HTTPS.
* `--script ssl-enum-ciphers,ssl-cert,ssl-dh-params`: Utiliza scripts NSE para detectar configuraciones y vulnerabilidades en el servicio HTTPS.
  * `ssl-enum-ciphers`: Enumera los cifrados soportados por el servidor.
  * `ssl-cert`: Recupera y muestra detalles del certificado SSL/TLS.
  * `ssl-dh-params`: Verifica la fuerza de los parámetros Diffie-Hellman utilizados por el servidor.
* `target-ip`: Especifica la dirección IP del objetivo.

**Ejemplo de Salida de Nmap**

Copiar

```
Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-18 20:45 UTC
Nmap scan report for 192.168.1.80
Host is up (0.00021s latency).

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|     compressors:
|       NULL
|   TLSv1.3:
|     ciphers:
|       TLS_AES_256_GCM_SHA384 - A
|       TLS_AES_128_GCM_SHA256 - A
|       TLS_CHACHA20_POLY1305_SHA256 - A
|_  least strength: A
| ssl-cert: Subject: commonName=example.com/organizationName=Example Corp/stateOrProvinceName=CA/countryName=US
| Issuer: commonName=Example CA/organizationName=Example Cert Authority/stateOrProvinceName=CA/countryName=US
| Public Key type: RSA
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-04-01T00:00:00
| Not valid after:  2025-04-01T23:59:59
| MD5:   2d:4b:12:89:ef:23:45:67:8a:90:bc:de:f1:23:45:67
| SHA-1: 3a:34:2b:56:cd:78:ef:90:12:34:56:78:90:ab:cd:ef:12:34:56:78
|_SHA-256: 12:34:56:78:9a:bc:de:f1:23:45:67:8a:90:bc:de:f1:23:45:67:8a:90:bc:de:f1:23:45:67:8a:90:bc:de
|_ssl-dh-params: DH parameters appear to be safe

Nmap done: 1 IP address (1 host up) scanned in 5.92 seconds
```

### Interpretación de la Salida <a href="#interpretacion-de-la-salida" id="interpretacion-de-la-salida"></a>

* **Host is up**: Indica que el sistema objetivo está en línea y responde.
* **443/tcp open https**: El puerto 443 está abierto y el servicio HTTPS está activo.
* **ssl-enum-ciphers**: Enumera los cifrados soportados por el servidor para las versiones TLSv1.2 y TLSv1.3.
  * **TLSv1.2**: Soporta cifrados fuertes como `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`.
  * **TLSv1.3**: Soporta cifrados modernos y seguros como `TLS_AES_256_GCM_SHA384` y `TLS_CHACHA20_POLY1305_SHA256`.
* **ssl-cert**: Proporciona detalles del certificado SSL/TLS.
  * **Subject**: El nombre común del certificado (`example.com`) y la organización (`Example Corp`).
  * **Issuer**: La entidad emisora del certificado (`Example CA`).
  * **Public Key**: Tipo y tamaño de la clave pública (RSA 2048 bits).
  * **Validity**: Fechas de validez del certificado (desde 2024-04-01 hasta 2025-04-01).
  * **Hashes**: Huellas digitales MD5, SHA-1 y SHA-256 del certificado.
* **ssl-dh-params**: Verifica que los parámetros Diffie-Hellman utilizados sean seguros.
