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 :
- int main(int argc, char *argv[], char *envp[])
- {
- char **pt;
- for (pt=envp; *pt; pt++)
- {
- if (strncmp(*pt, "LOGNAME=", 8) == 0)
- {
- strcpy(*pt, "LOGNAME=user2" )
- }
- printf("%s\n", *pt);
- }
- <...la suite reste la même...>
- }
|
"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.