PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 Also hinter das File gehört eine Pipe. Das war auch in der Vorlage bereits so angegeben. VG PSAdmin Zitieren Link zu diesem Kommentar
testperson 1.680 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 vor 27 Minuten schrieb HeizungAuf5: $password = "HierDasPasswortDenken" #erzeugt die Credentials $credential = New-Object System.Management.Automation.PsCredential($user,$password) In dem Fall musst du aus $password noch einen SecureString machen. ;) $User = "PC\User" $Password = "HierDasPasswortDenken" New-Object -TypeName System.Management.Automation.PSCredential ($User, $(ConvertTo-SecureString $Password -AsPlainText -Force)) oder eben $User = "PC\User" $Password = ConvertTo-SecureString "HierDasPasswortDenken" -AsPlainText -Force New-Object -TypeName System.Management.Automation.PSCredential ($User, $Password) Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 vor 10 Minuten schrieb testperson: oder eben $User = "PC\User" $Password = ConvertTo-SecureString "HierDasPasswortDenken" -AsPlainText -Force New-Object -TypeName System.Management.Automation.PSCredential ($User, $Password) danke. Ich hatte das immer "falschrum". Also "PasswortHier" | ConvertTo-SecureString -AsPlainText -Force Aber irgendwie scheint es der Server geradezu auf Pügel anzulegen... Start-Process : Dieser Befehl kann aufgrund des folgenden Fehlers nicht ausgeführt werden: Der Benutzername oder das Kennwort ist falsch. In C:\tools\usv_shutdown\runasAdministrator.ps1:12 Zeichen:1 + Start-Process powershell -Credential $credential $script #-ArgumentLi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand Das Passwort ist definitiv richtig. Mit dem hab ich mich ja per RDP am Server angemeldet... Zitieren Link zu diesem Kommentar
testperson 1.680 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 vor 2 Minuten schrieb HeizungAuf5: Start-Process powershell -Credential $credential $script Entweder muss da $script weg oder du benötigst noch "-Argumentlist $script". Oder es ist noch was ganz anderes. ;) Dafür müsste man aber jetzt nochmal den Rest vom Script sehen. Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 vor 1 Minute schrieb testperson: Entweder muss da $script weg oder du benötigst noch "-Argumentlist $script". Oder es ist noch was ganz anderes mit $script wird die Datei die ausgeführt wird gesetzt #eigentlicher PS Skript, der z.B. als Admin etc ausgeführt wird $script = "C:\tools\usv_shutdown\test.ps1" #Skript Aufruf Start-Process powershell -Credential $credential $script #-ArgumentList vor 1 Minute schrieb testperson: Dafür müsste man aber jetzt nochmal den Rest vom Script sehen. cls #legt Ausführungsbenutzer fest $user= "SERVERNAME\Administrator" #lädt Passwortdatei $File="C:\tools\usv_shutdown\user.pwd" $password = ConvertTo-SecureString "HierDasPasswortDenken" -AsPlainText -Force #erzeugt die Credentials $credential = New-Object System.Management.Automation.PsCredential($user,$password) #eigentlicher PS Skript, der z.B. als Admin etc ausgeführt wird $script = "C:\tools\usv_shutdown\test.ps1" #Skript Aufruf Start-Process powershell -Credential $credential $script #-ArgumentList #schließt den Intialisierungsskript Zitieren Link zu diesem Kommentar
testperson 1.680 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 In deinem Fall müsste es Start-Process powershell -Credential $credential -ArgumentList $("-File " + $script) sein. (Optimalerweise bzw.) ich baue mir das immer so: $PowerShellPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" $PowerShellArgs = $("-NoProfile -ExecutionPolicy Bypass -File " + $script) Start-Process $PowerShellPath -Credential $credential -ArgumentList $PowerShellArgs Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 vor 4 Minuten schrieb testperson: (Optimalerweise bzw.) ich baue mir das immer so: $PowerShellPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" $PowerShellArgs = $("-NoProfile -ExecutionPolicy Bypass -File " + $script) Start-Process $PowerShellPath -Credential $credential -ArgumentList $PowerShellArgs Hab ich mir mal so zusammen gebaut. Funktioniert genau so wie vorher. Er sagt das Lobeswort ist falsch, ich sag, das kann nicht sein, mit dem Benutzernamen und Passwort habe ich mich angemeldet. Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 vor 22 Minuten schrieb testperson: In deinem Fall müsste es Start-Process powershell -Credential $credential -ArgumentList $("-File " + $script) sein. (Optimalerweise bzw.) ich baue mir das immer so: $PowerShellPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" $PowerShellArgs = $("-NoProfile -ExecutionPolicy Bypass -File " + $script) Start-Process $PowerShellPath -Credential $credential -ArgumentList $PowerShellArgs Stimmt so nicht mit dem -File, er nimmt es als Default Parameter :) Zitieren Link zu diesem Kommentar
daabm 1.355 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 Hier ist sehr viel durcheinander, und in jedem Beitrag gibt es Codeschnipsel, die auch immer nur auszugsweise sind. Vielleicht mal zurück auf Los und "komplett schildern"? Zum Anfangsproblem: Aus einer CMD mit .\script.ps1 zu arbeiten ist grenzwertig. Du weißt nicht, was das aktuelle Arbeitsverzeichnis ist ("cd" ohne Parameter verrät Dir das). Mit %~dp0 kommst Du an das Verzeichnis ran, in dem die CMD liegt (mehr dazu: "for /?"). Und mit >>log.txt 2>&1 kannst Du Batch-Output in eine Datei schreiben. Bei den Credentials hast Du vermutlich einen recht trivialen Logikfehler drin, aber in den Codeschnipseln von bisher ist das total undurchsichtig. "Falsches Kennwort" sagt für mich, daß Du Dich irgendwie im Konvertieren verrannt hast. 1 Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 5. Juni 2019 Autor Melden Teilen Geschrieben 5. Juni 2019 Hallo zussammen, sorry für die verspätete Antwort. Ich habe das Problem nun auf eine "eigene" Art lösen können: Ich hab die Powershell Datei als Automatische Aufgabe in Windows angelegt, dort mit allen Privilegien ausgestattet und die CMD-Datei startet einfach die Aufgabe. Zwar über mehrere Ecken, dafür spar ich mit die zweite PowerShell Datei und es funktioniert immerhin ;) Grüße! Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 5. Juni 2019 Melden Teilen Geschrieben 5. Juni 2019 Ich bin immer bei Aufgaben mit hohen Berechtigungen vorsichtig. Hier kann einfach der Inhalt verändert werden. Das würde bei der Aufgabe ohne erneute Passworteingabe nicht funktionieren. Das kann durch die Signierung des Skript verhindert werden. Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 9. Juni 2019 Autor Melden Teilen Geschrieben 9. Juni 2019 Hallo @MurdocX, Am 5.6.2019 um 15:06 schrieb MurdocX: Hier kann einfach der Inhalt verändert werden. Das haben wir intern ebenfalls schon aufgegriffen. Allerdings halten wir es für unsinnig, das Script, beziehungsweise die Aufgabe zu sichern. Wer bereits auf den Server zugriff hat, auf dem die Aufgabe und das Script liegt, der ändert kein Powershell Script mehr ab, dass ausgeführt wird, wenn der Strom ausfällt, sondern kann dort ganz andere Dinge abziehen, die schneller von Erfolg gekrönt sein dürften, als dort in dem Script (welches im Übrigen gemonitored wird) anzupassen und zu hoffen, dass der Strom ausfällt. Grüße! 1 Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 9. Juni 2019 Melden Teilen Geschrieben 9. Juni 2019 vor 13 Minuten schrieb HeizungAuf5: Wer bereits auf den Server Zugriff hat, auf dem die Aufgabe und das Script liegt, der ändert kein Powershell Script mehr ab, dass ausgeführt wird, wenn der Strom ausfällt, sondern kann dort ganz andere Dinge abziehen, die schneller von Erfolg gekrönt sein dürften, als dort in dem Script (welches im Übrigen gemonitored wird) anzupassen und zu hoffen, dass der Strom ausfällt. Eine alternative Option wäre hier, um keine mögliche Privilege Escalation zu hinterlassen, das Skript in einen Bereich abzulegen auf die nur der Admin "Schreiben" Berechtigung hat. Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 9. Juni 2019 Autor Melden Teilen Geschrieben 9. Juni 2019 vor 10 Minuten schrieb MurdocX: in einen Bereich abzulegen auf die nur der Admin "Schreiben" Berechtigung Sowas ist schon mit eingebaut. Wir sind sogar noch einen schritt weiter gegangen und haben der Admingruppe auch nur das Recht zu lesen hinterlassen. Geschrieben wird in den Ordner eh nichts. Klar kann jemand, der auf den Server zugreifen kann diese Berechtigung wieder setzen, aber somit ist dem "schnellen Zugriff" schon mal ein Riegel vor geschoben. Zudem haben wir im Moitoring eine Überprüfung laufen, welche testet, welchen Inhalt die .ps1 Datei hat und wenn dieser sich ändern eben anschlägt. Grüße! Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 9. Juni 2019 Melden Teilen Geschrieben 9. Juni 2019 Die Umsetzung klingt gut. Jedoch solltet Ihr die Signierung der Skripte nicht generell aus den Augen verlieren und euch schon mal ansatzweise damit beschäftigen. Das ist nie zu eurem Nachteil Wenn der Zugriff auf den Server gelingt, soll nur die Escalation in eine höhere Ebene verhindert werden. Falls der Angreifer schon Admin-Berechtigung besitzt, dann ist jede Hürde nur noch Schein. Dann interessiert euer Skript auch nicht mehr. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.