IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

[Sudoers] Faille sécurité


Sujet :

Sécurité

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut [Sudoers] Faille sécurité
    Bonjours,

    Je suis sous archlinux + i3.
    Pour changer mon brightness j'ai fait un petit script qui lit un fichier system et qui ecrit dedant.
    Le soucis pour écrire c'est que je dois être root. Et vue que je veux l'utiliser en shortcut je dois pouvoir le lancer sans mot de passe.

    j'ai donc ajouter une exception au fichier /etc/sudoers pour ne pas me demander de Passwd pour ce script. Sauf que si quelqu'un connait ce chemin et qu'il est sur mon compte users (qui n'a pas les droit admin de base volontairement par sécurité) il peut faire strictement ce qu'il veut en mettant un autre script a la place.

    J'aimerais savoir quelles sont mes possibilités pour lancer un script en root sans mot de passe mais sans compromettre la sécurité de mon system. (Je suis dans une école d'informatique et la moindre erreur d'innatention l'ordi se fait défoncer x) )

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    tu crées un script appartenant à root avec des droits corrects (755) dans un endroit appartenant à root (/usr/local/bin) et après, tu pose le setuid bit dessus.

    Ainsi, le script s'exécute avec les droits root.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Par contre il n'est pas conseillé (et d'ailleurs certaines distrib ne l'autorisent pas) de faire un suid sur un script shell. Il est préférable de le faire sur un script Perl ou sur un binaire.

    Un très bon article sur ce sujet : http://www.tofe.org/suid.php3

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Ok merci beaucoup!
    Très bon article.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Suite a vos conseil voila ce que j'ai fait:
    J'ai un script perl qui doit executer en root:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $content > /sys/class/backlight/radeon_bl0/brightness
    un ls -l brightness me donne:

    -rwxr-xr-x 1 root root 712 Apr 15 18:38 brightness
    Mais lorsque je le lance j'ai un permission denied.
    J'ai oublié quelque chose ?

    Merci d'avance

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Oui, le bit suid n'est pas positionné

    c'est un "chmod 1755" (ou 2755 ou 4755, je ne sais jamais) qu'il faut faire pour le positionner

    les droits doivent être "rwsr-xr-x"
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    ça ne marche pas non plus :/

    j'ai essayé:

    -rwsr-xr-x 1 root root 712 Apr 15 18:38 brightness
    -rwxr-sr-x 1 root root 712 Apr 15 18:38 brightness
    Edit: D'ailleur par logique ça doit faire ça:
    -rwxr-xr-s 1 root root 712 Apr 15 18:38 brightness
    Non ?

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par nsvir Voir le message
    J'ai un script perl qui doit executer en root:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $content > /sys/class/backlight/radeon_bl0/brightness
    C'est du perl ça ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    J'ai juste mis la commande qui nécessite d'être root.
    Sinon voila mon script:

    Code : 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
    #!/usr/bin/perl -w                                                                                                                                                                                                  
    ## test.pl for  in /home/svirch_n/.script                                                                                                                                                                           
    ##                                                                                                                                                                                                                  
    ## Made by nicolas svirchevsky                                                                                                                                                                                      
    ## Login   <nicolas.svirchevsky@gmail.com>                                                                                                                                                                                   
    ##                                                                                                                                                                                                                  
    ## Started on  Sun Apr 14 02:17:25 2013 nicolas svirchevsky                                                                                                                                                         
    ## Last update Mon Apr 15 18:38:19 2013 nicolas svirchevsky                                                                                                                                                         
    ##                                                                                                                                                                                                                  
                                                                                                                                                                                                                        
    open(FIC,"/sys/class/backlight/radeon_bl0/max_brightness") or die ("No open\n");                                                                                                                                    
    read(FIC,my $max, 3) or die ("No read\n");                                                                                                                                                                          
    close(FIC);                                                                                                                                                                                                         
    open(FIC,"/sys/class/backlight/radeon_bl0/brightness") or die ("No open\n");                                                                                                                                        
    read(FIC,my $content, 3) or die ("No read\n");                                                                                                                                                                      
    close(FIC);                                                                                                                                                                                                         
    if (@ARGV) {$content += $ARGV[0];}                                                                                                                                                                                  
    if ($content > $max) {$content = $max;}                                                                                                                                                                             
    elsif ($content <= 0) {$content = 1;}                                                                                                                                                                               
    system "echo $content > /sys/class/backlight/radeon_bl0/brightness";

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je pense que le problème est ici (ceci dit, je ne suis pas un champion de perl) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "echo $content > /sys/class/backlight/radeon_bl0/brightness";
    system() fait un fork/exec d'un shell qui exécute une commande. Il y a de fortes chances que le bit suid soit perdu (pour des raisons de sécurité) lors de cette manip.

    Il va falloir faire la même chose mais en natif perl.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Par natif tu entends que j'ouvre le fichier et que j'écrive dedans ?

    Si il fork un shell ça doit pas etre sécurisé du tout xD

  12. #12
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par nsvir Voir le message
    Par natif tu entends que j'ouvre le fichier et que j'écrive dedans ?
    Oui, open(), write() et close() mais en perl car là, c'est du C
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Tu entends quoi par du C ? x)

    Alors j'ai modifié le script, ce qui donne:

    Code : 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
    #!/usr/bin/perl -w                                                                                                                                                                                                  
    ## test.pl for  in /home/svirch_n/.script                                                                                                                                                                           
    ##                                                                                                                                                                                                                  
    ## Made by nicolas svirchevsky                                                                                                                                                                                      
    ## Login   <svirch_n@epitech.net>                                                                                                                                                                                   
    ##                                                                                                                                                                                                                  
    ## Started on  Sun Apr 14 02:17:25 2013 nicolas svirchevsky                                                                                                                                                         
    ## Last update Mon Apr 15 18:38:19 2013 nicolas svirchevsky                                                                                                                                                         
    ##                                                                                                                                                                                                                  
    
    open(FIC,"/sys/class/backlight/radeon_bl0/max_brightness") or die ("No open max_brightness\n");
    read(FIC,my $max, 3) or die ("No read\n");
    close(FIC);
    open(FIC,"+< /sys/class/backlight/radeon_bl0/brightness") or die ("No open brightness\n");
    read(FIC,my $content, 3) or die ("No read\n");
    if (@ARGV) {$content += $ARGV[0];}
    if ($content > $max) {$content = $max;}
    elsif ($content <= 0) {$content = 1;}
    print {FIC} $content;
    close(FIC);
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [svirch_n](✓)[~/.script] ls -l brightness
    -rwsr-xr-x 1 root root 693 Apr 15 22:38 brightness
    [svirch_n](✓)[~/.script] ./brightness
    No open brightness
    [svirch_n](✗)[~/.script]
    J'ai mal open ?

    Pour info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [svirch_n](✓)[~/.script] ls -l /sys/class/backlight/radeon_bl0/brightness 
    -rw-r--r-- 1 root root 4096 Apr 15 21:55 /sys/class/backlight/radeon_bl0/brightness

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Pour information fonctionne :/

  15. #15
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    J'ai fait un test sur un linux récent (manjaro, basé sur arch) et, même sur du Perl ça ne fonctionne pas.

    Apparement, il faut activer le SUID dans Perl. Concernant les scripts shell, c'est aussi désactivé par défaut dans la plupart des distribs (toujours apparement).

    Pourtant quand j'avais testé sur une debian (Lenny), ça marchait.

    Du coup, ce que tu peux faire c'est garder ton script qui fait la modif, l'associer au root en 555 et donner les droit de sudo sans mot de passe dessus.
    Etant donné qu'il n'est pas modifiable sans mot de passe (pour faire un chmod), ça devrait être relativement sécurisé.

    Après, je suis vraiment novice en sécurité, mais ça me semble sûr.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Je suis en train de m'arracher les cheveux ...
    Pas moyen de donner les droits sudo sans mot de passe sur le script /usr/bin/brightness
    (Absolument besoin car je l'appelle avec des shortcuts)

    J'ai mis dans /etc/sudoers:
    svirch_n ALL=NOPASSWD: /usr/bin/brightness
    et ça nous fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [svirch_n](✓)[~] ls -l /usr/bin/brightness 
    -r-x--x--x 1 root root 698 Apr 17 01:12 /usr/bin/brightness
    [svirch_n](✓)[~] sudo /usr/bin/brightness 
    [sudo] password for root:
    Comment ça se fait ? :/

    Merci d'avance

  17. #17
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Si tuveux mon avis, je ferais un petit binaire en c, je lui mettrais le bit suid root et là, ca marche !
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  18. #18
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 876
    Points
    876
    Par défaut
    Salut,

    pour ce qui est des droits tu as ici les réponses (+ ou-) parcontre coté sécurité si tu utilise system/open tu ouvre une grosse faille de sécurité desp lus primaire et par conséquent trés facilement exploitable !

    En effet en l'état une modification de la variable d'environnement $PATH pourrait conduire à ce que ta machine se fasse rooted, soit prudent!

    (pour plus d'info google-> faille system() ).

    Cdlt.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Oue j'ai lu des artciles.
    J'ai modifié mon script pour le mettre en natif perl.

    Bon ba je vais le faire en C.
    Mais c'est beaucoup plus long qu'en perl.. :/

  20. #20
    Membre éclairé Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Points : 876
    Points
    876
    Par défaut
    Attention toutefois, ça n'évite pas ce type de vuln, bien au contraire...

Discussions similaires

  1. [debutant] Faille Sécurité XSS
    Par pierre50 dans le forum Langage
    Réponses: 3
    Dernier message: 09/11/2010, 00h17
  2. [Sécurité] Les failles les plus courantes
    Par Lootro dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 94
    Dernier message: 11/02/2008, 08h43
  3. [Failles] Logiciels de sécurité
    Par Commodore dans le forum Sécurité
    Réponses: 4
    Dernier message: 04/08/2006, 20h11
  4. [Sécurité] Y à t'il une faille ?
    Par Nadd dans le forum Langage
    Réponses: 2
    Dernier message: 21/05/2006, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo