Warum ist dies für chroot(2)
nicht privilegierte Benutzer nicht verfügbar?
Ich verstehe die vorhandenen Antworten im Internet nicht. Zum Beispiel dieses https://lists.freebsd.org/pipermail/freebsd-security/2003-April/000123.html .
Würde sudo
wirklich funktionieren, wenn /etc/sudoers
und /etc
nicht im Besitz von root? Ein nicht privilegierter Benutzer kann nicht einfach Root-eigene Setuid-Binärdateien in chroot erstellen, oder?
Wie genau kann ein nicht privilegierter Benutzer die Chroot-Umgebung untergraben?
Ich kann mir nur so etwas vorstellen
ln /mnt/backup/XYZ/etc/sudoers $CHROOT/etc/sudoers
ln /usr/bin/sudo $CHROOT/usr/bin/sudo
Dabei handelt es sich um XYZ
eine Sicherungsinstanz, bei der der Administrator wirklich Fehler gemacht hat und meinem Benutzer etwas Gefährliches erlaubt hat. Aber das ist etwas Besonderes. Gibt es eine einfachere Möglichkeit zum Ausnutzen, chroot(2)
wenn es nicht privilegierten Benutzern zur Verfügung stand?
Laut Brad Spengler unter https://forums.grsecurity.net/viewtopic.php?f=7&t=2522 gibt es eine einfache Möglichkeit, mit UID 0 zu eskalieren
CAP_SYS_CHROOT
(die Fähigkeit zu verwendenchroot(2)
:quelle
chroot(2)
ändert das Arbeitsverzeichnis nicht, so dass nach dem Aufruf.
außerhalb des Baumes verwurzelt sein kann/
. Sie können dann eine beliebige setuid-Binärdatei innerhalb der Chroot ausführen, indem Sie einen relativen Pfad verwenden. Es gibt wahrscheinlich viele Möglichkeiten, dies auszunutzen. Durch Ändern/etc/ld.so.preload
in Ihrem chroot-Verzeichnis können Sie beispielsweise beliebigen Code mit Root-Rechten ausführen. Sie können sich ein Beispiel ansehen .quelle