Auf einem Linux-Server muss ich Root-Berechtigungen von einer Gruppe von Benutzern entfernen. Diese Benutzer haben jedoch berechtigte Gründe, das Dienstprogramm "Suchen" verwenden zu können, um nach Dateien zu suchen, die auf Dateinamen, Änderungsdaten und anderen Metadaten basieren.
Auf dem Server sind Dateinamen nicht vertraulich, der Dateiinhalt jedoch möglicherweise.
Ich möchte sudo verwenden, damit die Benutzer überall auf dem Server nach Dateien suchen können. Das Dienstprogramm "find" ist großartig, erlaubt jedoch alle Arten von Nebenwirkungen, z. B. die Verwendung von "-exec", um beliebige Befehle zu erzeugen.
Kann ich find
mit meinen Einschränkungen arbeiten?
Antworten:
Was ist mit lokalisieren ?
Oder vielleicht sogar aufschlitzen :
quelle
locate
braucht nichtsudo
; Nur für seineupdatedb
Arbeit sind besondere Berechtigungen erforderlich. Ihre Benutzer sollten daher niemals ausgeführt werden oder ausgeführt werden könnensudo locate
.-d
Flag setzt nur den Datenbankpfad? Vielleicht habe ich dich falsch verstanden.Gemäß
man 7 capabilities
Das hat bei mir funktioniert. (Zeilen, die mit '#' beginnen, sind root, Zeilen mit '$' sind nicht root) In diesem Fall befindet sich der Benutzer ohne root in der
wheel
Gruppe.In Anbetracht dessen, was die Fähigkeit gewährt, passt sie genau zu dem, was Sie wollen. Ich habe nicht ausführlich geprüft, ob
find
es eine Funktion gibt, mit der Sie Bytes in Dateien lesen können, aber offensichtliche Dinge wieLD_PRELOAD
und Shim-Angriffe auf Bibliotheken sollten aufgrund der Art der Setuid-Überprüfungen unter Linux nicht funktionieren und die Fähigkeitsbits werden nicht angezeigt entweder von untergeordneten Prozessen geerbt (im Gegensatz zu Raw Setuid), das ist also ein weiterer Bonus.Denken Sie daran, dass das, was Sie tun möchten, möglicherweise Bedenken hinsichtlich des Datenschutzes in Bezug auf die temporäre Erstellung oder den Zugriff auf Dateien aufwirft. Das Programm kann als Grundlage für die Bereitstellung eines Eskalationsversuchs für Race-Bedingungen / Berechtigungen verwendet werden (gegen Programme, die bekannte Dateinamen erstellen aber keine korrekten Sicherheitsüberprüfungen durchführen).
Einige schlecht geschriebene Anwendungen können sich auch auf Dateimetadaten oder Baumstrukturen stützen, um Bedeutung zu vermitteln oder Daten zu verbergen. Dies kann dazu führen, dass eingeschränkte Informationen veröffentlicht werden oder privilegierte Dokumente enthüllt werden, über die sonst nichts bekannt ist (Sicherheit durch Unbekanntheit, die ich kenne, aber dies ist eine Sache, die insbesondere Closed-Source-Anbieter leider gerne tun).
Seien Sie daher vorsichtig und seien Sie vorsichtig, wenn Sie dies tun, und verstehen Sie, dass damit immer noch ein Risiko verbunden ist, auch wenn die offensichtlichen Dinge nicht funktionieren.
Oh, und es würde mich interessieren, ob jemand einen Proof-of-Concept-Angriff hat, der diesen Mechanismus als Grundlage für die Eskalation von Berechtigungen in den Kommentaren verwendet!
quelle
find
die Möglichkeit bieten, vom Benutzer bereitgestellten Code direkt auszuführen, ähnlich wieawk
dies möglich ist.Ich würde den Benutzern die richtigen Berechtigungen geben.
Wenn die Umask aktiviert ist
022
, werden standardmäßig Verzeichnisse erstellt, damit jeder die darin enthaltenen Dateien auflisten und statisieren kann. Wenn nicht, können Sie die Berechtigung des Verzeichnisses manuell in bitweise oder in die alten Berechtigungen ändern und0555
:Und wenn diese Benutzer nicht über Ausführungsberechtigungen für alle übergeordneten Elemente dieses Verzeichnisses verfügen (z. B. das Ausgangsverzeichnis eines anderen Benutzers), bedeutet dies wahrscheinlich, dass Sie das erste Verzeichnis an einer anderen Stelle ablegen sollten.
Wenn Sie nur einigen Benutzern erlauben möchten, dieses Verzeichnis zu lesen und auszuführen, können Sie den Modus in ändern
0750
, diese Benutzer in eine Gruppe einordnen und den Gruppeneigentümer des Verzeichnisses in diese Gruppe ändern:quelle