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.
$ ./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.
$ docker build -t challenge .
- Lancer un conteneur utilisant l’image challenge, en redirigeant le serveur web sur le port local 10000.
$ 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.
$ ./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 imagelibcrypto.so.3
is the OpenSSL 3.0.5 vulnerable librarynginx.conf
is the config file for the web server usedsrv.ext
is used to generate a web server certificate for localhost domain
Scripts
cleancrt
removes the certs directoryexploit
tries to connect to the web server using the client cert as authenticationgencerts
generates the CA and signed web server certgenclientcrt
generates and sign the malicious client cert