
Un exemple d'exploitation de CVE-2016-5195.
dcow est une exploitation possible de la vulnérabilité CVE-2016-5195. En exécutant le programme en tant qu'utilisateur non privilégié sur un système vulnérable, il modifiera le fichier /etc/passwd, en imposant le mot de passe « dirtyCowFun » (SHA-512, mais pourrait être modifié pour les normes plus anciennes). En cas d’exécution réussie, un « su » avec ce mot de passe donnera accès à un shell root. En utilisant l’option -s (recommandée), un shell root s’ouvrira automatiquement. Une sauvegarde du fichier /etc/passwd original sera créée dans le répertoire d’exécution courant sous le nom .ssh_bak, si dcow est utilisé sans option ou avec -n (voir exemple ci‑dessous).
Ce code a été publié à des fins d’information et d’éducation. L’intrusion dans des systèmes ou services sans l’autorisation du propriétaire est illégale. L’utilisation abusive des informations et du logiciel contenus dans ce dépôt peut entraîner des poursuites pénales contre l’auteur de l’infraction. Toute action ou activité liée au matériel présent dans ce dépôt Git relève de votre seule responsabilité. L’auteur ne pourra être tenu responsable en cas de poursuites pénales engagées contre des individus qui utiliseraient abusivement les informations ou le logiciel de ce site pour enfreindre la loi.
Un système vulnérable à CVE-2016-5195.
Le programme a été utilisé avec succès avec :
et compilé avec :
EDB-ID : 40847
https://www.exploit-db.com/exploits/40847/
Compiler le programme : make
Lancer le programme :
./dcow
ou
./dcow -s # Ouvre automatiquement un shell root et restaure le fichier passwd.
./dcow -s -n # Ouvre automatiquement un shell root mais ne restaure pas le fichier passwd.
Aide en ligne :
./dcow -h
Dans la section « wiki » de cette page se trouve une liste partielle des noyaux/distributions vulnérables.
Dans le répertoire « legacy » se trouve un portage brut de ce programme qui permet la compilation avec des compilateurs antérieurs à C++11.
Une version de cet exploit écrite en Go + CGO est présente dans le répertoire « golang ». Elle permet de créer un exécutable statique sans dépendances externes.