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

## <mark style="color:green;">Descripción de HTTPS</mark>

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

## <mark style="color:green;">Relevancia en Pentesting</mark>

### <mark style="color:green;">**Importancia de HTTPS en Pentesting**</mark><mark style="color:green;">:</mark>

* <mark style="color:green;">**Seguridad de la Comunicación**</mark><mark style="color:green;">:</mark> HTTPS protege la información sensible (como credenciales de usuario y datos financieros) contra la interceptación.
* <mark style="color:green;">**Configuraciones Incorrectas**</mark><mark style="color:green;">:</mark> 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.
* <mark style="color:green;">**Vulnerabilidades en SSL/TLS**</mark><mark style="color:green;">:</mark> 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.

### <mark style="color:green;">Ejemplo de Escaneo de HTTPS con Nmap</mark>

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

```bash
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**

```plaintext
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
```

## <mark style="color:green;">Interpretación de la Salida</mark>

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