Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Named Pipe mit verminderten Rechten (https://www.delphipraxis.net/156430-named-pipe-mit-verminderten-rechten.html)

Shark99 1. Dez 2010 18:44

Named Pipe mit verminderten Rechten
 
Ich versuche unter Windows 7 ein Named Pipe zu erzeugten welches mit verminderten Sicherheitsattributen läuft damit der Internet Explorer im Protected Mode darauf zugreifen kann.

Es klappt jedoch nicht.

LastGetError liefert das: "The revision level is unknown".

Wenn ich @FSA durch nil ersetzte wird ein normaler Named Pipe erzeugt, der auch funktioniert.

Hier der Code:
Delphi-Quellcode:
...

uses
   Classes,
   JwaAclApi,
   JwaAccCtrl,
   JwaSddl,
   JwaWinBase,
   Windows,
   JwaWinNT,
   Dialogs,
   SysUtils;

...

implementation

procedure StartServer;
var
  FSA: SECURITY_ATTRIBUTES;
  FSD : JwaWinNT.PSECURITY_DESCRIPTOR;
  sDescriptor: string;
begin

 FHandle := INVALID_HANDLE_VALUE;

 sDescriptor := 'S:(ML;;NW;;;LW)';

 if JwaSddl.ConvertStringSecurityDescriptorToSecurityDescriptor( PChar(sDescriptor),
                                                                  SECURITY_DESCRIPTOR_REVISION,
                                                                  FSD,
                                                                  NIL ) then
 begin                                                                                                                                
      FSA.lpSecurityDescriptor := @FSD;
      FSA.nLength := sizeof(SECURITY_ATTRIBUTES);
      FSA.bInheritHandle := True;

      FHandle := CreateNamedPipe(PChar(FPipeName), PIPE_ACCESS_DUPLEX,
                                 PIPE_TYPE_MESSAGE or PIPE_READMODE_MESSAGE or PIPE_WAIT,
                                 PIPE_UNLIMITED_INSTANCES, SizeOf(RPIPEMessage), SizeOf(RPIPEMessage),
                                 NMPWAIT_USE_DEFAULT_WAIT, @FSA);

          if FHandle = INVALID_HANDLE_VALUE then
           ShowMessage('error: '+SysErrorMessage(GetLastError));
 end else
 begin
     Showmessage('error #1');
 end;
end;

Assarbad 1. Dez 2010 19:37

AW: Named Pipe mit verminderten Rechten
 
Guck mal hier.

Dezipaitor 1. Dez 2010 19:53

AW: Named Pipe mit verminderten Rechten
 
Du musst erstmal mit dem Besitzer, der Gruppe und der DACL anfangen:
Code:
O:BAD:(A;;CCDC;;;IU)
Sieh auch:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Shark99 1. Dez 2010 21:11

AW: Named Pipe mit verminderten Rechten
 
Zitat:

Zitat von Dezipaitor (Beitrag 1065515)
Du musst erstmal mit dem Besitzer, der Gruppe und der DACL anfangen:
Code:
O:BAD:(A;;CCDC;;;IU)
Sieh auch:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Nicht unbedingt, siehe:

http://msdn.microsoft.com/en-us/library/bb625958.aspx

An example of the SDDL for a mandatory label ACE in a SACL that specifies NO_WRITE_UP policy for low integrity level is the following: S:(ML;;NW;;;LW).

Shark99 1. Dez 2010 22:00

AW: Named Pipe mit verminderten Rechten
 
p.s.

Habe eben festgestellt dass wenn ich meine App als Admin starte alles glatt durchgeht. Ist leider keine Lösung.

Dezipaitor 2. Dez 2010 20:42

AW: Named Pipe mit verminderten Rechten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Shark99 (Beitrag 1065528)
Zitat:

Zitat von Dezipaitor (Beitrag 1065515)
Du musst erstmal mit dem Besitzer, der Gruppe und der DACL anfangen:
Code:
O:BAD:(A;;CCDC;;;IU)
Sieh auch:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Nicht unbedingt, siehe:

http://msdn.microsoft.com/en-us/library/bb625958.aspx

An example of the SDDL for a mandatory label ACE in a SACL that specifies NO_WRITE_UP policy for low integrity level is the following: S:(ML;;NW;;;LW).

Das mag ja sein, aber dies bezieht sich eigentlich auf [S|G]et[Named]SecurityInfo. Da kannst du nur den gewünschten Teil ändern. Aber für das Erstellen eines Objektes musst du etwas mehr tun, da sonst der SD anders aussieht als wenn man nil angeben würde. Das könnte sich auf den Zugriff auswirken. Siehe angehängtes Bild.

Ach übrigens:
Zitat:

Zitat von Shark99 (Beitrag 1065537)
p.s.

Habe eben festgestellt dass wenn ich meine App als Admin starte alles glatt durchgeht. Ist leider keine Lösung.

Seltsam, dass es mit Admin geht, denn dieser Code: ...
Delphi-Quellcode:

FSA.lpSecurityDescriptor := @FSD;
... sollte so aussehen:
Delphi-Quellcode:

FSA.lpSecurityDescriptor := FSD;
Dann klappt es auch mit der Pipe, denn FSD ist doch schon ein Zeiger auf einen SD. :)


:warn:Interessant ist aber auch, dass ein nachträgliches Ändern des Integrity Labels, wie in diesem Kapitel Lowering Resource Integrity (bitte die Suche benutzen) nicht mit NamedPipes funktioniert (Fehler 5 : Zugriff verweigert), jedoch mit Dateien und MemoryMappedFiles (andere habe ich nicht weiter ausprobiert).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.

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