Comment utiliser psexec sans privilèges d'administrateur sur la machine cible?


27

Est-il possible d'utiliser psexecpour exécuter une commande sur une machine distante sans avoir les privilèges d'administrateur sur la machine distante?

J'ai essayé de courir psexec \\<machine> -u <username> -p <password>, où <username>et <password>sont des informations d'identification non administrateur, mais j'obtiens une erreur "accès refusé"

Je peux bureau à distance dans la machine distante avec les mêmes informations d'identification sans aucun problème.

Mon ordinateur local exécute Windows 7 Enterprise 64 bits et l'ordinateur distant exécute Windows Server 2008 64 bits. J'ai des privilèges d'administrateur sur la machine locale.

EDIT : À toutes les personnes qui votent contre cette question: je n'essaie pas de contourner une sorte de mesure de sécurité. Je peux déjà exécuter le processus sur la machine distante en installant le bureau à distance sur la machine distante et en l'exécutant. Je cherche simplement un moyen en ligne de commande pour faire quelque chose que je peux déjà faire via une interface graphique.


C'est une mauvaise question car sur ce site, nous nous opposons aux utilisateurs finaux qui nous demandent comment contourner les systèmes de sécurité. Vous devriez peut-être lire celui-ci: meta.serverfault.com/questions/1659/… , suivi d'une lecture de la FAQ.
John Gardeniers

7
Je n'essaie pas de contourner un système de sécurité. J'essaie de faire quelque chose que je peux déjà faire via une interface graphique, via la ligne de commande à la place, ce que je trouve plus pratique. Veuillez m'expliquer en quoi cela constitue un contournement d'un système de sécurité.
HC4 - réintègre Monica le

4
Il arrive souvent qu'une personne qui est administrateur ait de bonnes raisons de trouver un moyen d'exécuter un processus sans utiliser les droits administratifs complets. Parfois, bien sûr, ce n'est pas possible ou pas pratique, mais si quelques ajustements au système peuvent faire la différence entre ouvrir un système complètement et le configurer pour qu'il soit accessible à l'aide d'un compte plus limité, alors il est souvent bon de faire le travail nécessaire pour exécuter sous le compte plus limité.
Shannon Wagner

8
J'administre des hôtes Windows, Linux et UNIX dans mon rôle et si je devais répondre à la question d'un utilisateur en l'attaquant pour lui avoir posé la question, je serais bientôt sans emploi. Cette personne ne demande pas de méthode pour contourner les droits administratifs. Il demande une méthode d'utilisation de PSEXEC avec des droits limités pour exécuter un processus qu'il a déjà le droit d'exécuter via l'interface graphique.
Robert Ebers

Réponses:


26

Tel que trouvé sur: /programming/534426/psexec-help-needed

Vous devez avoir des droits d'administrateur sur la cible dans le cadre de psexec démarre un service Windows sur la cible, et vous avez besoin des droits d'administrateur pour pouvoir le faire.

psexec copie un fichier psexecsvc sur le partage admin, puis à l'aide de la gestion à distance démarre un service utilisant ce fichier. Il ouvre des canaux nommés et les utilise pour d'autres communications. Une fois terminé, il se range après lui-même.

Bien que je ne trouve pas de documentation OFFICIELLE qui dit la même chose.


5

Demandez à être administrateur local sur la machine.

Modifier: ou exécutez la commande en tant que tâche planifiée. Ou utilisez le commutateur -l dans PsExec: Exécuter le processus en tant qu'utilisateur limité (supprime le groupe Administrateurs et n'autorise que les privilèges attribués au groupe Utilisateurs). Sous Windows Vista, le processus s'exécute avec une faible intégrité. Voir ici: http://technet.microsoft.com/en-us/sysinternals/bb897553 . Désolé de dire mais RTFM!

Par exemple: Pour exécuter Internet Explorer avec des privilèges d'utilisateur limité, utilisez cette commande:

psexec -l -d "c: \ program files \ internet explorer \ iexplore.exe"

Notez que le mot de passe est transmis en texte clair au système distant.


1
Les administrateurs système ne le permettront pas, et cela ne devrait pas être nécessaire. Ce n'est pas nécessaire sous Linux.
HC4 - réintègre Monica le

4
@ HighCommander4, quelle différence cela importe-t-il si c'est nécessaire sous Linux? Il s'agit d'un environnement Windows. Arrêtez de comparer les pommes aux oranges.
John Gardeniers

2
@John: J'expliquais simplement que je n'essayais pas de faire quoi que ce soit qui devrait nécessiter des privilèges d'administrateur. J'ai deux machines, avec un compte sur chacune, et j'essaie de démarrer à distance un processus sur une machine à partir de l'autre machine. Cela me semble une chose très naturelle à faire, et il semble absurde d'exiger des privilèges d'administrateur pour le faire.
HC4 - réintègre Monica le

@ HighCommander4, ce que vous essayez de faire, c'est-à-dire accéder administrativement à un ordinateur distant, nécessite un accès administrateur sous Windows. Bien que cela puisse vous paraître absurde, cela est parfaitement logique pour ceux qui doivent administrer un réseau Windows.
John Gardeniers

4
@John: Qu'est-ce qui est "administratif" pour exécuter un programme sur votre propre compte?
HC4 - réintègre Monica le

2

Non, pas d'une manière utile. Pourquoi voudriez-vous faire cela et ne pas être administrateur?


2
Demandez à votre administrateur de domaine de le faire pour vous. Ce qui ne devrait pas être un problème sauf si ce que vous faites est louche, non?
Safado

2
Demander à mon administrateur de domaine de faire quoi pour moi? Je peux déjà exécuter le processus en installant le bureau à distance sur la machine en utilisant le compte non administrateur et en exécutant le processus sous ce compte, c'est-à-dire que le processus lui-même n'a pas besoin de privilèges d'administrateur pour s'exécuter. Je veux juste être en mesure de le faire à partir de la ligne de commande plutôt que d'avoir à bureau à distance dans la machine.
HC4 - réintègre Monica le

1
Est-il possible d'installer ssh sur un serveur Windows sans privilèges d'administrateur? Si oui, pourriez-vous me diriger vers un lien? J'ai essayé OpenSSH mais il semble nécessiter des privilèges d'administrateur.
HC4 - réintègre Monica le

1
@tony roth: Vous n'avez pas besoin de perms élevés pour exécuter un démon SSH sous Linux. Vous avez juste besoin de perms élevés pour l'exécuter sur un port privilégié (0-1023). Vous pouvez configurer le client et le serveur pour utiliser un port non privilégié, sans avoir besoin de perms élevés sur l'une ou l'autre machine.
HC4 - réintègre Monica le

2
Et en fait, j'ai réussi à configurer OpenSSH sur le serveur Windows sans aucun privilège d'administrateur en exécutant le démon SSH sur un port non privilégié. Allez-y et votez contre moi pour avoir osé prendre l'initiative d'augmenter ma productivité dans mon travail sans consulter au préalable les Holy Sysadmins.
HC4 - réintègre Monica le


0

Une solution consisterait à utiliser un script AutoIT pour vous connecter à votre bureau à distance selon un calendrier à partir de votre poste de travail. Demandez à votre dossier «démarrage» d'exécuter votre processus via un script batch ou un autre script AutoIT (afin que vous puissiez annuler si vous effectuez un autre travail). Ce n'est pas une ligne de commande, mais cela automatise votre travail dans les paramètres que votre administrateur système vous a donné. J'espère que ça aide.


-1

Il y a probablement un moyen de le faire. C'est probablement aussi simple que de modifier les autorisations WMI sur la machine. Si ce n'est pas possible, alors utiliser quelque chose comme WinRM fonctionnerait certainement.

Mais tout cela est théorique pour vous. Vous n'avez pas du tout accès administrateur à la machine. Par conséquent, vous ne pouvez effectuer aucune des modifications nécessaires pour que cela fonctionne. Vous devez régler cela avec votre administrateur système au lieu de nous demander de vous aider à le contourner. Souvenez-vous d'une chose très clairement, la plupart d'entre nous ici sont des administrateurs système et nous n'aimons pas que les utilisateurs essaient de nous contourner. Cela ne nous rend pas très susceptibles de vous aider à essayer de contourner vos administrateurs système.


2
Je ne vois pas comment j'essaye de "contourner" quoi que ce soit. Les administrateurs système veulent que je puisse exécuter des processus sur cette machine, sinon je ne pourrais pas y installer de bureau à distance. Tout ce que je veux, c'est un moyen d'exécuter le processus en utilisant la ligne de commande plutôt que l'interface graphique du bureau distant. Maintenant, je pourrais aller bogue les administrateurs système à ce sujet, ou je pourrais simplement trouver un moyen de le faire moi-même. Je pensais qu'une communauté d'administrateurs système professionnels essaierait de m'aider, pas de me faire la leçon.
HC4 - réintègre Monica le

@HighCommander - La réponse est que les administrateurs système doivent vous fournir cette capacité. Vous ne pouvez pas le faire vous-même car vous n'avez pas de droits administratifs sur la machine. S'ils l'approuvent vraiment, demandez-leur de vous donner les droits dont vous avez besoin pour pouvoir faire ce que vous devez faire.
Jason Berg

-1

`const string subkey =" Software \ Sysinternals \ PsExec ";

        if (Environment.Is64BitOperatingSystem)
        {
            // For 64 Bit PC
            RegistryKey registryKey64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
            RegistryKey NDPKey64 = registryKey64.OpenSubKey(subkey);
            if (NDPKey64 != null)
            {
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
            else
            {
                RegistryKey regKey64 = registryKey64.OpenSubKey("Software", true);
                regKey64.CreateSubKey("Sysinternals\\PsExec", RegistryKeyPermissionCheck.ReadWriteSubTree);
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
        }
        else
        {
            //For 32 bit PC
            RegistryKey registryKey32 = Registry.CurrentUser.OpenSubKey(subkey);
            if (registryKey32 != null)
            {
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
            else
            {
                RegistryKey regKey32 = Registry.CurrentUser.OpenSubKey("Software", true);
                regKey32.CreateSubKey("Sysinternals\\PsExec", RegistryKeyPermissionCheck.ReadWriteSubTree);
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
        }`

4
Un moyen sûr de vous attirer l'attention du système est de publier des réponses identiques à de vieilles questions. Vider simplement le code sans explication n'est pas génial non plus. Veuillez mettre à jour vos réponses avec quelques explications sur ce que fait le code et comment il résout le problème des PO.
user9517 prend en charge GoFundMonica

1
Ok, parfois l'événement PsExec, bien qu'il soit installé, n'invoquera pas d'autres exes sur demande. Le problème est lié à la définition de la valeur DWORD EulaAccepted sur 1. Je n'ai pas pu trouver une page qui traite de ce problème, donc ajoutée ici.
Shyam

-1

Pourquoi ne dit-on pas simplement que ce n'est pas possible? J'ai besoin de faire quelque chose de similaire (Remote Exec a SAS Program), auquel j'ai accès si je RDP sur ce serveur (c'est-à-dire que j'ai un accès de connexion au serveur. J'ai un accès par système de fichiers au dossier du code source et j'ai accès pour exécuter SAS).

Aucun sysadmin n'est son bon esprit va m'accorder tous les droits d'administrateur sur cette boîte juste pour exécuter à distance. Fondamentalement, PSTools est un outil sysadmin non conçu pour être utilisé pour le déploiement de solutions de système informatique réelles.


1
Cette diatribe ne répond pas du tout à la question.
Flup

En fait, c'est le cas. +1
Amit Naidu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.