Outils pour utilisateurs

Outils du site


With Lucas “retiring”, I thought we could fill his space with something that is more of the same, yet different. I want to vault us into some ‘capture the flag’ type-of-stuff, but we need to lay some groundwork first. I will use the words directories and folders interchangeably. The reason for this is that there are GUI jockeys out there who will be reading this, who are not interested in terminal (shell) terminology. I want them to feel welcome reading this piece.

Lucas prenant sa « retraite », je crois que nous pouvons remplir cet emplacement avec quelque chose qui reste proche, tout en étant différent.

Je veux que nous plongions dans une sorte de « capture du drapeau », mais nous devons d'abord préparer le terrain. J'utiliserai indifféremment les mots répertoires et dossiers, pour la raison qu'il y a dans le coin des jockeys de l'interface utilisateur qui vont le lire et qui ne sont pas intéressés par la terminologie des terminaux (shell). Je veux qu'ils se sentent à l'aise en lisant ce texte.

Let’s talk about privilege escalation in Linux. Because Linux has an all powerful user named ‘root’, that is our aim, well… a root shell… Sometimes getting root is as easy as exploiting a program or misconfigured service. Sometimes you have to string things together to step over the wall, so to speak. Sometimes you need to push the enter key 790 times…. But I am getting ahead of myself. We need to talk about permissions first. (What is privilege escalation, but breaking and defying your set permissions?) <play “I want to break free” by Freddy Mercury for dramatic effect> :) When you look at Linux permissions, there are users and groups on one side, and files and folders (directories) on the other. (Yes, ‘others’ too, but I want you to paint a mental picture, OK?)

Parlons d'escalade des privilèges dans Linux. Comme Linux a un utilisateur tout-puissant nommé « root », c'est cela notre but, hum… un shell root. Parfois, il est aussi facile de devenir root que de pirater un programme ou un service mal configuré. Parfois, vous devez chaîner des choses les unes derrière les autres pour sauter par dessus le mur, façon de parler. Parfois, vous devez appuyer sur la touche Entrée 790 fois… Mais je me laisse emporter. Nous devons commencer par parler des permissions. (Qu'est-ce que l'escalade des privilèges, sinon casser et défier vos permissions en place ?) <écouter « I want to break free » de Freddy Mercury pour un effet dramatique> :)

Quand vous regardez les permissions dans Linux, il y a, d'un côté, des utilisateurs et des groupes et, de l'autre, des dossiers (répertoires). (Oui, d'« autres » aussi, mais je veux que vous vous en fassiez une image mentale, d'accord ?)

All users’ passwords are hashed and stored in “/etc/shadow”, but the accounts are still in “/etc/passwd”. You will notice root has a UID of 0, and, depending on your Linux system, users will start at UID 500 or UID 1000. UID 0 has access to everything, thus making it the target for privilege escalation. Groups can have many users, and users can be in many groups. However, all files and folders have one owner and group. Like the other permissions, groups are stored in “/etc/groups”. Permissions granted or denied are by read ®, write (w), and execute (x). Do a ‘ls -la’ in the folder where you are right now. Look at the leftmost column. You will likely see something like “-rw-r–r–” a number, then the owner (user and group). Only the owner or root can change permissions. The very first one is sometimes “d” for directory, so ignore that. Thereafter, the first triplet is for the owner, the next triplet is for the group, then the last triplet is for “other”. “Other” is sometimes called “world”, but do not confuse the (w) for ‘write’ with ‘world’.

Tous les mots de passe des utilisateurs sont moulinés et stockés dans « /etc/shadow », mais les comptes sont toujours dans « /etc/passwd ». Vous noterez que root a 0 comme UID (identifiant utilisateur) et, suivant votre système Linux, les utilisateurs commencent à l'UID 500 ou l'UID 1000. L'UID 0 a accès à tout, devenant ainsi la cible de l'escalade des privilèges. Les groupes peuvent avoir de nombreux utilisateurs et les utilisateurs peuvent faire partie de nombreux groupes. Cependant, tous les fichiers ont un seul propriétaire et groupe. Comme les autres permissions, les groupes sont stockés dans « /etc/groups ». Les permissions accordées ou refusées sont la lecture (r - read), l'écriture (w - write) et l'exécution (x - execute). Faites un « ls -la » dans le dossier où vous vous trouvez actuellement. Regardez la colonne la plus à gauche. Vous verrez certainement quelque chose comme « -rw-r–r– » suivi d'un nombre, puis le propriétaire (utilisateur et groupe). Seul le propriétaire ou root peut changer les permissions. Le tout premier caractère est parfois un « d » pour un répertoire (directory), et vous pouvez l'ignorer. Ensuite, le premier triplet est pour l'utilisateur, le triplet suivant pour le groupe et le dernier triplet pour « les autres ». Les autres sont parfois aussi appelés « le monde » (world), mais ne confondez pas le « w » de « write » avec « world ».

On a file ® (w) or (x) is just what they say, but they are slightly different on directories / folders. Here, ® is list contents, (w) allows sub-directories to be created, and (x) is the gatekeeper, allowing you access to the other two permissions. If (x) is not set, you cannot get to ® or (w). But it does not end there. There are SUID and SGID bits. When this bit is set, SUI, files execute with the permissions of the file owner. The same with SGID. SGID also allows sub-directories to inherit group permissions from the parent. You will see an (s) in the (x) position.

Pour un fichier, ® (w) or (x) sont juste ce qu'ils veulent dire, mais c'est légèrement différent pour les répertoires/dossiers. Dans ce cas, ® accorde la liste du contenu, (w) permet de créer des sous-répertoires et (x) est le portier, vous permettant d'accéder aux deux autres permissions. Si (x) n'est pas réglé, vous ne pouvez, ni lire, ni écrire.

Mais ça ne s'arrête pas là. Il y a aussi les bits SUID et SGID. Quand ce bit, SUID, est mis, les fichiers s'exécutent avec les permissions du propriétaire du fichier. Même chose pour SGID. SGID permet aussi aux sous-répertoires d'hériter des permissions de groupe de leur parent. Vous le verrez comme un (s) à la place du (x).

Which brings us to “su” and “sudo” and the like. When you change users, you get what is known as an ‘effective ID’, which is not your ‘real ID’. (Thank goodness there are no step-permissions! Hahaha!). The effective ID is used to verify your access more often than the real ID. Now if that was not confusing enough, there is also a “saved ID”. This keeps track of who you really are, when you switch permissions temporarily. When you use the “who” command, you get your effective ID, and when you use the “id” command, you should see your real ID as well as your effective ID. Look for (euid) and (egid). Most of the time, these will be the same as your UID. Run the “id” command as yourself, then run it as “sudo id”, and su before running id and see how it changes.

Ce qui nous conduit à « su », « sudo » ou équivalents. Quand vous modifiez les utilisateurs, vous obtenez ce qui est connu comme un « ID effectif », qui n'est pas notre « ID réel ». (Dieu merci, il n'y a pas de permissions ponctuelles, ah ! ah! ah !) L'ID effectif est utilisé pour vérifier votre accès plus fréquemment qu'avec votre ID réel. Maintenant, si vous n'êtes pas déjà trop perdu, il y a aussi l'« ID sauvegardé ». Celui-ci garde une trace de qui vous êtes vraiment, quand vous changez temporairement de permissions.

Quand vous utilisez la commande « who », vous obtenez votre ID effectif, et quand vous utilisez la commande « id », vous devriez voir votre ID réel et votre ID effectif. Regardez (euid) et (egid). La plupart du temps, ils seront identiques à votre ID réel. Lancez la commande « id » en tant que vous-même, puis lancez « sudo id », et faites su avant de lancer id ; voyez les différences.

Processes also have permissions. To see the permissions of your terminal (shell), type: ‘cat /proc/$$/status | grep id’ and in the centre you will see, Uid and Gid. Note that the shell is the current process. If your system is Ubuntu, you should see 1000 repeated a couple of times, and if you used su, you should see 1000 followed by zeroes. (I am assuming that you are the only user on your system). You also need to know that Linux is divided into user space and kernel space. Even your CPU is divided into user mode and protected mode. Are you seeing a pattern here? On the CPU, you usually have “rings” – ring 0 through ring 3 if I remember correctly. (Hello Greg!, I sort of remembered!). However, in modern CPUs, they go into the negative too. Linux uses ring 0 for kernel space and ring 3 for user space. This is why some hackers work so hard on “undocumented features” because, if you can talk to ring 0, you can bypass all the operating system permissions. This is beyond what we are going to cover, but at least you know about it.

Les processus ont aussi des permissions. Pour voir les permissions de votre terminal (shell), tapez : « cat /proc/$$/status | grep id » et, au milieu, vous verrez Uid et Gid. Notez que le shell est le processus actif. Si votre système est Ubuntu, vous devriez voir 1000 répété plusieurs fois et, si vous avez utilisé su, vous devriez voir 1000 suivi de zéros. (Je pars du principe que vous êtes le seul utilisateur de votre système.) Vous devez aussi savoir que Linux est divisé, avec un espace de l'utilisateur et un espace du noyau. Même votre processeur est divisé entre un mode utilisateur et un mode protégé. Voyez-vous se dessiner quelque chose, là ? Sur le processeur, vous avez en général des anneaux (ring) - de ring 0 à ring 3 - si ma mémoire est bonne. (Hello Greg ! m'en suis plus ou moins souvenu !) Cependant, dans les processeurs modernes, il y en a aussi des négatifs. Linux utilise l'anneau 0 pour l'espace du noyau et l'anneau 3 pour l'espace utilisateur. C'est pourquoi certains pirates travaillent tant sur les « fonctionnalités non documentées » parce que, si vous pouvez parler à l'anneau 0, vous pouvez outrepasser toutes les permissions du système d'exploitation. C'est au-delà de ce dont je voudrai vous parler, mais, au moins, vous êtes au courant.

Did you learn something today? Did I make a boo-boo? Are you as excited as I am? Let us know. misc@fullcirclemagazine.org

Avez-vous appris quelque chose aujourd'hui ? Ai-je fait une erreur ? Êtes-vous aussi passionné que moi ? Dites-le nous. misc@fullcirclemagazine.org

Encart Podcast p. 18 :

Join our new hosts Wayne and Joe as they present you with a short podcast (<10min) with just the news. No chit-chat. No time wasting. Just the latest FOSS/Linux/ Ubuntu news.

Rejoignez nos nouveaux hôtes Wayne et Joe qui vous présentent un court podcast (< 10 mn) contenant juste les nouvelles. Pas de bla-bla. Pas de temps perdu. Rien que les dernières nouvelles des FOSS/Linux/Ubuntu.

issue153/c_c.txt · Dernière modification: 2020/02/03 14:12 par auntiee