Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
Les systèmes Linux nous fournissent différents éditeurs. (ed, ne, nano, pico, vim etc)
Certains d'entre eux fournissent des fonctionnalités tierces d'exécution de commande et de navigation dans les fichiers. Les éditeurs comme "vim" nous fournissent l'une des techniques les plus connues pour contourner les restrictions d'un shell.
Vim a une fonctionnalité permettant d'exécuter des scripts et des commandes à l'intérieur. Si vim est disponible, ouvrez-le et lancez la commande suivante:
Cela aura pour effet d'exécuter la commande ls -l et de bypasser la restriction sur la commande ls par exemple.
Il s'agit d'un exemple, on peut donc utiliser cette technique pour n'importe quelle commande.
Exemple pour lancer un shell qui ne contiendra donc pas de restrictions:
Même technique avec l'éditeur ed:
Avec less ou man:
avec awk:
Avec expect:
Avec python:
Avec Ruby:
Avec Perl:
Avec PHP:
[TODO]
[TODO]
Si la réponse à un "sudo -l" renvoie la présence de la variable d'environnement LD_Preload, il est possible d'élever ces privilèges comme ceci:
1) Créer un script shell.c contenant les lignes suivantes
2) Compiler le script
$ gcc -fPIC -shared -o shell.so shell.c -nostartfiles
3) Lancer un des binaires authorisés avec sudo sans mot de passe en utilisant LD_Preload.
$ sudo LD_PRELOAD=/path/to/shell.so <binaire>
Reconnaissance:
$ cat /etc/exports | grep no_root_squash
Si un répertoire est partagé avec ce paramètre, cela veut dire que toutes les actions faitent dans ce répertoire partagé est fait en tant que "root"
On peut alors monter le repértoire partagé sur notre machine hôte:
Il reste ensuite à créer l'exploit dans le répertoire monté et l'exécuter sur le serveur cible.
1) Lister les binaires avec des la permission 4001.
$ find / -type f -perm 4001 -exec ls -l {} \; 2> /dev/null
2) Exécuter chacun des binaires listés.
3) Si une erreur survient disant qu'une librairie est manqueante (exp: libtest.so: cannot open shared object file: No such file or direcory
)
4) trouver le path dans lequel est censé se trouver la lib.
5) Créer un script shell.c contenant les lignes suivantes.
6) Compiler le script.
$ gcc -shared -fPIC -nostartfiles -o lib/libtest.so shell.c
7) Exécuter le binaire vulnérable.
Si on a les droits pour overwrite le fichier executé, alors il est possible de créer un shell facilement à la place du fichier original.
Si cron cherche le fichier sur plusieurs chemins et que le chemin complet du script d'origine n'est pas défini dans crontab, si on a les droits pour créer un fichier sur l'un des chemins recherché en premier, on est alors capable de créer un fichier du même nom dans celui-ci.
LinPEAS est un script qui recherche les chemins possibles pour élever les privilèges sur les hôtes Linux/Unix*/MacOS.
Exemple d'utilisation:
$ ./linpeas.sh -a
LinuxSmartEnumeration est un outils d'énumération Linux pour le pentesting et les CTF inspiré de l'outil LinEnum. Contrairement à LinEnum, LSE tente d'exposer progressivement l'information en fonction de son importance d'un point de vue privé.
Exemple d'utilisation:
$ ./lse.sh -l1
Lynis est un outil d’audit de sécurité pour les systèmes basés sur UNIX comme Linux, macOS, BSD et autres. Il effectue une analyse de sécurité approfondie et fonctionne sur le système lui-même. L’objectif principal est de tester les défenses de sécurité et de fournir des conseils pour renforcer davantage le système.
Utilisation:
$ ./lynis audit system
Eviltree est un remake python3 de la commande classique "tree" avec la fonctionnalité supplémentaire de rechercher des mots-clés/regex fournis par l'utilisateur dans les fichiers, en mettant en évidence ceux qui contiennent des correspondances.
Exemples d'utilisation:
$ python3 eviltree.py -r path/to/repo -k passwd,admin,login,user -v
$ python3 eviltree.py -r path/to/repo -x "<regex>" -v
ressource:
ressource:
ressource:
ressource: