Bash - ssh - location clé privé

Bash - ssh - location clé privé - Shell/Batch - Programmation

Marsh Posté le 16-07-2010 à 16:47:37    

Bonjour,
 
J'ai un petit problème. J'exécute un script avec setuid afin de me faire passer pour USER2, ensuite mon script exécute un ssh "USER2@machin.com". Mon problème est que ssh n'utilise pas la clé privé de USER2. Il doit y avoir un problème d'environnement.
 
Vous avez une idée de comment résoudre ce problème ?

Reply

Marsh Posté le 16-07-2010 à 16:47:37   

Reply

Marsh Posté le 17-07-2010 à 10:02:53    

ffomnislash a écrit :

Bonjour,
 
J'ai un petit problème. J'exécute un script avec setuid afin de me faire passer pour USER2, ensuite mon script exécute un ssh "USER2@machin.com". Mon problème est que ssh n'utilise pas la clé privé de USER2. Il doit y avoir un problème d'environnement.
 
Vous avez une idée de comment résoudre ce problème ?


 
Salut
 
Déjà le setuid sur un script ne fonctionne pas. En effet, dans un script (par exemple shell), c'est le programme /bin/bash qui exécute ton script et donc il faudrait que ce soit /bin/bash qui ait le setuid. Essaye, par exemple, de faire créer par ton script un fichier quelconque dans le home de USER2, ça m'étonnerait que ça marche.
 
Sinon pour ton problème, tu peux encapsuler ton ssh dans un su - USER2 -c "ssh 'USER2@machin.com'" (le petit "-" signifie que le su doit aussi récupérer l'environnement de USER2) ou bien sudo USER2 "ssh 'USER2@machin.com'" (le sudo récupère l'environnement par défaut) et comme ça, plus besoin de setuid...


Message édité par Sve@r le 17-07-2010 à 10:04:06

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 19-07-2010 à 08:15:36    

Désolé j'ai manqué de précision. Le setudi est sur un binaire (écrit en C) qui va exécuter un script qui va faire un ssh.
 
Pour su et sudo il est nécessaire de saisir un mot de passe et je n'ai pas accès à la configuration de la machine. L'avantage du setudi est que je peut le mettre en place sans demander d'autorisation )

Reply

Marsh Posté le 23-07-2010 à 19:32:21    

ffomnislash a écrit :

Désolé j'ai manqué de précision. Le setudi est sur un binaire (écrit en C) qui va exécuter un script qui va faire un ssh.
 
Pour su et sudo il est nécessaire de saisir un mot de passe et je n'ai pas accès à la configuration de la machine. L'avantage du setudi est que je peut le mettre en place sans demander d'autorisation )


 
Ok. Impossible d'appeler su ou sudo.
 
Donc tu crées un exécutable qui va appeler un script qui fait appel à ssh. Le problème, c'est que si tu exécutes cet exécutable, il sera exécuté avec ton environnement. Le setuid change le uid mais ne change pas l'environnement général et ne permet pas de te "faire passer" pour quelqu'un d'autre.
 
Tu vas donc modifier ton exécutable pour que le début ressemble à ceci

Code :
  1. int main(int argc, char *argv[], char *envp[])
  2. {
  3.     char **pt;
  4.     for (pt=envp; *pt; pt++)
  5.     {
  6.          if (strncmp(*pt, "LOGNAME=", 8) == 0)
  7.          {
  8.               strcpy(*pt, "LOGNAME=user2" )
  9.          }
  10.          printf("%s\n", *pt);
  11.     }
  12.     <...la suite reste la même...>
  13. }


 
"Normalement" ça devrait fonctionner. Pour être vraiment béton il faudrait parser tout l'environnement et remplacer partout où il y a "user1" par "user2" (et non pas se contenter de LOGNAME) mais je pense que juste ça, ça suffit...


Message édité par Sve@r le 23-07-2010 à 19:34:37

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed