Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Benutzerrechte: Token Handle woher? (https://www.delphipraxis.net/35896-benutzerrechte-token-handle-woher.html)

Motzi 13. Dez 2004 22:13

Re: Benutzerrechte: Token Handle woher?
 
Zitat:

Zitat von Luckie
Benutzer ruft mit Admin Account Programm A auf. Programm B ruft Programm C mit den rechnten des Benutzers auf, der Programm A gestartet hat. Genau das wird nur mit Passwort gehen.

Nein, sofern Programm B sich per OpenProcess und OpenProcessToken erfolgreich das Token von Programm A holt kann man dieses benutzen um einen Prozess im selben Security-Kontext wie Programm A zu starten. Eine andere Möglichkeit wäre, dass Programm A sein Token per DuplicateHandle direkt an Programm B weitergibt...

Luckie 13. Dez 2004 22:14

Re: Benutzerrechte: Token Handle woher?
 
Argh. Das habe ich vergessen.

freakfly 14. Dez 2004 07:47

Re: Benutzerrechte: Token Handle woher?
 
Danke für die Posts! Ich glaub so langsam weiß ich selber nichtmehr was ich eigentlich wollte... :shock:

Ich bin am Computer angemeldet als Benutzer "David".
David startet ein Programm, dieses Programm (start.exe) startet dann ein anderes Programm (Daten.exe) mittels MSDN-Library durchsuchenCreateProcessWithLogonW unter dem Benutzer "Software".
Programm start.exe beendet sich nach 30 Sekunden selber.
Das Programm Daten.exe soll nun ein Programm starten, mit den Rechten des angemeldeten Benutzers in dem jetztigen Fall "David". Es kann aber sein, dass morgen ein anderer Benutzer angemeldet ist!

Wenn ichs jetzt richtig sehe müsste das dass sein, was ich will.
Soweit... Werde jetzt mal CreateProcess und Shellexecute ausprobieren, wobei das die Rechte eigentlich vererben müsste. Und somit ungeeigent wäre.

Gruß, freakfly

Motzi 14. Dez 2004 09:59

Re: Benutzerrechte: Token Handle woher?
 
Zitat:

Zitat von freakfly
Ich bin am Computer angemeldet als Benutzer "David".
David startet ein Programm, dieses Programm (start.exe) startet dann ein anderes Programm (Daten.exe) mittels MSDN-Library durchsuchenCreateProcessWithLogonW unter dem Benutzer "Software".
Programm start.exe beendet sich nach 30 Sekunden selber.
Das Programm Daten.exe soll nun ein Programm starten, mit den Rechten des angemeldeten Benutzers in dem jetztigen Fall "David". Es kann aber sein, dass morgen ein anderer Benutzer angemeldet ist!

Dann würde ich so vorgehen:
start.exe startet Daten.exe per CreateProcessWithLogonW und erhält daraufhin ein Prozess-Handle des neuen Prozesses. Über dieses Handle kann start.exe nun sein Token per DuplicateHandle an Daten.exe vererben. Daten.exe kann dieses Token dann benutzen um einen neuen Prozess unter diesem Security-Kontext zu starten.

freakfly 14. Dez 2004 11:57

Re: Benutzerrechte: Token Handle woher?
 
Also wenn ich dich richtig verstehe, baue ich die start.exe als einen Art Wrapper, oder?
Denn das Problem ist das Daten.exe eine 16bit Appl. ist, die ich nicht beeinflussen kann.
Im ganzen werde ich aber erstmal so vorgehen, wie du das beschrieben hast, wie das mit dem Handle kopieren u.s.w. geht muss ich mir mal anschauen.
Wichtig ist mir jetzt, dass ich weiss, das ich den Handle kopieren kann. Noch besser wäre natürlich wenn ich den Handle des angemeldeten Benutzers irgendwo herbekommen würde.

Danke euch soweit!!!

Motzi 14. Dez 2004 12:20

Re: Benutzerrechte: Token Handle woher?
 
Zitat:

Zitat von freakfly
Wichtig ist mir jetzt, dass ich weiss, das ich den Handle kopieren kann. Noch besser wäre natürlich wenn ich den Handle des angemeldeten Benutzers irgendwo herbekommen würde.

Es gibt kein Handle für einen angemeldeten Benutzer, es gibt nur einen sogenannten Token (ok, genau genommen ist das auch wieder nur ein Handle), der alle Daten des Security-Kontext enthält. Wichtig ist: Handles können nicht "einfach so" kopiert werden, sondern müssen per DuplicateHandle dupliziert werden.

Aber wenn Daten.exe ein Programm ist, dass du nicht beeinflussen kannst, was bringt es dann wenn du ihm das Token vererbst? Schließlich weiß das Programm nicht was es damit anfangen soll... oder?

freakfly 15. Dez 2004 06:53

Re: Benutzerrechte: Token Handle woher?
 
@Motzi, da hast du recht. Aber wenn ich im "Wrapper" per CreateProcessWithLogonW die Daten.exe mit erweiterten Rechten starte, und gleichzeitig im Wrapper den Token (Handle, wie auch immer) bereithalte, dann kann ich doch vom Wrapper aus auch Programme starten mit den Rechten des angemeldeten Users, ich muss nur noch den Wrapper dazu bringen, auf bestimmt Windows Messages oder ähnliches zu reagieren....
(Oje, ein drei-zeilen Satz)

Gruß, freakfly

Motzi 15. Dez 2004 10:20

Re: Benutzerrechte: Token Handle woher?
 
OK.. ganz prinzipiell - wenn du ein Token hast, kannst du über diesen Token einen Prozess in diesem Security-Kontext starten, egal wie du zu diesem Token gekommen bist.

Hast du jetzt schon eine Idee / einen Ansatz wie du das ganze lösen kannst?

freakfly 15. Dez 2004 11:30

Re: Benutzerrechte: Token Handle woher?
 
Hmm.. mein Plan bisher sieht folgendermaßen aus:

Die start.exe wird gestartet, und wird der Token kopiert und im Programm gehalten. Das Programm startet mit CreateProcessWithLogonW die daten.exe. start.exe minimiert sich. Die daten.exe wiederum über gibt irgendwie die Parameter an start.exe weiter, die Infos enthalten welches Programm gestartet werden soll. Das Programm holten den alten, ersten Token wieder und startet mit dieser Berechtigung das Programm "x.exe".

So in der Art.. Jetzt muss ich nur noch Zeitfinden, um das umzusetzen......


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz