Cover Image

Comment effectuer une élévation de privilèges sur les systèmes Unix depuis crontab ?


Comprendre l’élévation de privilèges via les crontab sur Unix

Les crontabs sont des fichiers de configuration qui permettent à l’utilisateur de planifier l’exécution de tâches régulières sur un système Unix. Les tâches programmées peuvent inclure des sauvegardes, des mises à jour de base de données, des scripts de nettoyage et d’autres tâches similaires. Les tâches programmées sont exécutées en arrière-plan, ce qui permet aux utilisateurs de planifier des tâches à exécuter automatiquement à des moments précis, sans avoir besoin de les exécuter manuellement.

Comment les crontab peuvent être exploités pour l’élévation de privilèges

L’exploitation de crontab pour l’élévation de privilèges peut se faire de plusieurs manières, mais l’une des méthodes les plus courantes est l’injection de commandes malveillantes dans un fichier de crontab. Les utilisateurs non autorisés peuvent modifier les fichiers de crontab pour exécuter des commandes malveillantes avec des privilèges élevés. Les commandes malveillantes peuvent inclure des scripts qui ouvrent des connexions inverses, exécutent des attaques par déni de service, volent des informations sensibles et bien plus encore.

Exemple de vulnérabilité de crontab

Supposons qu’un utilisateur malveillant ait accès en écriture à un fichier de script shell situé dans le répertoire /usr/local/share/date.sh et qu’il souhaite exploiter une vulnérabilité dans un fichier de crontab pour élever ses privilèges. L’utilisateur malveillant peut ajouter la tâche de crontab suivante en tant qu’utilisateur non privilégié :

* * * * * /usr/local/share/date.sh

Cette tâche de crontab exécute le script shell date.sh toutes les minutes. Le script shell écrit la date actuelle dans un fichier nommé date.txt dans le répertoire /tmp. En raison des permissions de fichier par défaut dans /tmp, ce fichier sera accessible en lecture et en écriture par tous les utilisateurs du système, y compris les utilisateurs non privilégiés.

L’utilisateur malveillant peut alors modifier le script shell pour y inclure une commande malveillante. Par exemple, l’utilisateur malveillant peut ajouter une commande pour ajouter les privilèges SUID au fichier /bin/bash :

#!/bin/bash
chmod +s /bin/bash
date >> /tmp/date.txt

Lorsque la tâche de crontab s’exécute, le script shell est exécuté et ajoute les privilèges SUID au fichier /bin/bash toutes les minutes. Cela permet à l’utilisateur malveillant d’exécuter des commandes avec des privilèges de superutilisateur en exécutant simplement la commande /bin/bash.

Exploitation de la vulnérabilité

Après avoir ajouté la commande pour ajouter les privilègèes SUID au fichier /bin/bash dans le script shell de la tâche de crontab, l’utilisateur malveillant peut exécuter la commande /bin/bash avec des privilèges élevés. Pour vérifier si le fichier /bin/bash a des privilèges SUID, l’utilisateur malveillant peut exécuter la commande suivante :

$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1183320 Feb 10  2021 /bin/bash

Le “s” dans la sortie de la commande ls indique que le fichier /bin/bash a les privilèges SUID. Maintenant, l’utilisateur malveillant peut exécuter la commande /bin/bash avec les privilèges de superutilisateur en exécutant simplement la commande suivante :

$ /bin/bash -p
bash-5.1# id
uid=1000(john) gid=1000(john) euid=0(root) groups=1000(john)

La commande id renvoie les informations d’identification de l’utilisateur. La sortie montre que l’utilisateur malveillant john a maintenant des privilèges de superutilisateur.

Mesures de sécurité pour prévenir l’élévation de privilèges via les crontab

Pour prévenir l’élévation de privilèges via les crontab, il est important de suivre les bonnes pratiques de sécurité, telles que :

  • Limiter les permissions d’écriture sur les fichiers de configuration de crontab. Les fichiers de crontab doivent être accessibles en écriture uniquement par les utilisateurs autorisés à les modifier.

  • Utiliser des comptes utilisateur avec des privilèges limités pour exécuter les tâches de crontab. Les comptes utilisateur avec des privilèges de superutilisateur ne doivent être utilisés que lorsque cela est absolument nécessaire.

  • Vérifier régulièrement les fichiers de crontab pour détecter les modifications non autorisées. Les fichiers de crontab doivent être surveillés pour détecter les modifications non autorisées et les activités suspectes.

  • Restreindre l’accès aux fichiers système critiques. Les fichiers système critiques, tels que /bin/bash, doivent être protégés contre l’accès non autorisé en utilisant des mécanismes de contrôle d’accès appropriés.

En suivant ces mesures de sécurité, les utilisateurs peuvent aider à prévenir les attaques par élévation de privilèges via les crontab et protéger leurs systèmes Unix contre les compromis de sécurité.