Share
## https://sploitus.com/exploit?id=03B24501-49F1-51BA-B330-F46FB0952F15
# CVE-2022-3786 challenge

## Comment utiliser
- Il faut gĂ©nĂ©rer le certificat racine et le certificat du serveur, c’est pour permettre de connaitre le certificat CA. Dans la rĂ©alitĂ© on suppose que l’attaquant aurait accĂšs au CA ou du moins aurait un moyen de faire signer son certificat malveillant.
```shell
$ ./gencerts
```

- Construire l’image docker, qui va copier les certificats gĂ©nĂ©rĂ©s
pour les utiliser avec le serveur web qui Ă©coute sur le port 443.
```shell
$ docker build -t challenge .
```

- Lancer un conteneur utilisant l’image challenge,
en redirigeant le serveur web sur le port local 10000.
```shell
$ docker run -p 10000:443 challenge
```

- Il faut générer et signer un certificat dont le champ emailAddress du sujet est trop long.
Un exemple de commandes est donné dans le fichier `genclientcrt`.

- Lorsque le certificat client malicieux et sa clé privée sont générés.
l’exploit peut ĂȘtre tentĂ© avec le fichier exploit.
```shell
$ ./exploit
```

- Une fois l’exploit effectuĂ© et si il a fonctionnĂ©,
le serveur devrait avoir crash et une nouvelle tentative de connexion devrait Ă©chouer.

## Files
- `Dockerfile` contains the instruction to generate the challenge image
- `libcrypto.so.3` is the OpenSSL 3.0.5 vulnerable library
- `nginx.conf` is the config file for the web server used
- `srv.ext` is used to generate a web server certificate for localhost domain

## Scripts
- `cleancrt` removes the certs directory
- `exploit` tries to connect to the web server using the client cert as authentication
- `gencerts` generates the CA and signed web server cert
- `genclientcrt` generates and sign the malicious client cert