Ich richte ein eingeschränktes Benutzerkonto für Benutzer ein ricardo
, ein problematischer Benutzer auf meinem System. Ich möchte ihm das Recht einräumen, Verzeichnisse zu verwenden sudo
, was er manchmal tun muss. Ich betrachte diese Regel in meiner /etc/sudoers
Datei:
ricardo ALL=(root) NOPASSWD: /bin/mkdir
Gibt es eine Möglichkeit, mit der Ricardo das System absichtlich oder versehentlich gefährden kann, wenn er nur diese Regel verwendet?
Antworten:
Ich vermute, dass ein solcher Angriff funktionieren würde, bei dem "something" ein Kernelmodul ist, das versucht, nach dem Laden von rootfs zu laden:
Beachten Sie auch, dass Sie abhängig von den im Modul deklarierten Aliasnamen andere Namen verwenden können. Ich nehme an, es wird nicht geladen, bis depmod ausgeführt wird. Dies geschieht, wenn das nächste Mal ein Kernel-Update durchgeführt wird. Das
mkdir
wird also erst kürzlich im sudo-Protokoll angezeigt.Es gibt viele Dinge in / etc, die alle Dateien in einem Verzeichnis lesen, manchmal rekursiv. Schlimmer noch, einige dieser Verzeichnisse existieren standardmäßig nicht und die einzige Möglichkeit, etwas über sie zu erfahren, besteht darin, die Manpage, Init-Skripte usw. für das Programm zu lesen, das sie verwendet. Einige, noch schlimmer, sind veraltete Abwärtskompatibilitätsprobleme und werden möglicherweise nicht mehr dokumentiert.
edit: Dachte an ein paar weitere Verzeichnisse, diese in
/usr/local
:/usr/local/lib/perl/5.14.2
(unterscheidet sich je nach Perl-Version, versuchen Sieperl -V
es herauszufinden). Erstellen Sie dort einFile
Unterverzeichnis und legen Sie einFind.pm
darin ab. Wann immer jemand es benutztFile::Find
, wird er die Version des Angreifers benutzen. Ähnlich verfahren Sie mitGetopt::Long
. Systemdienstprogramme werden häufig in Perl geschrieben, daher gibt dies wahrscheinlich root. (Versuchack-grep --color -a 'use.+::' /usr/sbin | less -R
)/usr/local/include
.quelle
sudo mkdir
, um ein neues Verzeichnis zu erstellen, in dem er kann.Durch die Ausführung
mkdir
als root kann der Benutzer andere Prozesse / Benutzer daran hindern, neue Dateien und Verzeichnisse zu erstellen, indem er zuvor Verzeichnisse mit identischen Namen (und / oder falschen Rechten) erstellt.Dies kann insbesondere bei Protokoll- und Sperrdateien sicherheitsrelevant sein .
Wie bereits erwähnt, kann auch die maximale Anzahl von Inodes aufgebraucht werden, wodurch das gesamte System blockiert werden kann.
Indem Sie den Benutzer bestimmten Gruppen hinzufügen (oder ACLs verwenden ), sollten Sie in der Lage sein, die Probleme zu lösen, ohne Rechte über zu erteilen
sudo
.quelle
mkdir
die Liste der Befehle weglassen, die Ricardo verwenden darf.for((i = 0;; i++)); do touch $i; done
Wille aus (Bashismus, sorry; aber Sie haben die Idee).sudo
Befehle, die OP in Betracht zieht, die Erschöpfung von Inodes ermöglichen. OP muss sich dieses DoS-Vektors bewusst sein.Sie sollten ihn in ein Chroot-Gefängnis umleiten. Oder noch besser, zu einer kleinen VM, dass er einmal pro Stunde abstürzen kann. Sie müssen lediglich eine neue Kopie bereitstellen.
quelle
Es gibt Möglichkeiten, Verzeichnisse mit Schreibzugriff zu erstellen. Mit
mkdir -m 777 blah
demricardo
User kann man schreiben was man will in das neue Verzeichnis. Sie benötigen einen Prozess auf dem System, der bereits als anderer Benutzer ausgeführt wird und einen Verzeichnisbaum herunterfährt, um die Konfiguration, Skripte oder Module zu laden. Dann könnte der Benutzer möglicherweise seine eigenen Dinge hinzufügen, die geladen oder ausgeführt werden sollen. Das erste, woran ich denken kann, ist, wenn Sie einen Webserver betreiben, der PHP oder CGI ausführen kann. Sie könnten dann Skripte als dieser Benutzer ausführen. Ich habe Mühe, realistischere Beispiele zu finden, insbesondereroot
solche, aber ich bin mir sicher, dass es sich um solche handelt.ssh ist ein Beispiel für einen Daemon, der diese Art von Szenario abfängt. Wenn Sie ein
.ssh
Verzeichnis für einen Benutzer erstellt haben, der kein Verzeichnis hat, und Ihre eigeneauthorized_hosts
Datei erstellt haben.sshd
stellt fest, dass die Verzeichnisberechtigungen zu offen sind, und ignoriert den öffentlichen Schlüssel.Sie könnten sich definitiv die Mühe machen, Verzeichnisse zu erstellen, in denen Dateien auftauchen sollen (wie temporäre Dateien oder Auslagerungsdateien), mit denen viele Programme nicht gut umgehen würden.
Sie könnten viele Gruppen erstellen, aber es sieht so aus, als würden Sie nichts damit anfangen. Möglicherweise können Sie ein System zumindest auf die Knie zwingen. Es dauerte ungefähr 10000 cgroups auf einer Box mit 256 M, bis der OOM-Killer sshd herausholte.
Wenn Sie die
-m
Option zumkdir
und die UMASK dersudo
Umgebung steuern, denke ich, ist es nur ein Ärgernis.quelle