GNU/Linux >> Znalost Linux >  >> Linux

Proč je „nodev“ v /etc/fstab tak důležitý? Jak používat znaková zařízení k hackování?

Učím se o zabezpečení linuxu a snažím se pochopit, proč je USB klíčenka se znakovým zařízením potenciálně nebezpečná.

Pokud mám USB klíčenku se spustitelným souborem bash, na kterém je setuid root, nebezpečí je zřejmé:Kdokoli s takovým USB klíčem může získat práva root na mém počítači, pokud mám záznam jako

/dev/sdb1 /media/usbstick auto defaults 0 0

v mém /etc/fstab protože defaults zahrnuje suid .

Ale co zařízení na postavy? Jak mohu použít znakové zařízení k získání práv root nebo k porušení obsahu, pokud se USB klíčenka se znakovým zařízením připojí pomocí dev nebo defaults ?

Přijatá odpověď:

Vzhledem k tomu, že přístup k základnímu zařízení je ve výchozím nastavení řízen pouze oprávněními k souborům, takže pokud váš USB flash disk obsahuje souborový systém POSIX se světově zapisovatelným uzlem zařízení odpovídajícím skutečnému zařízení v systému, můžete tento uzel zařízení použít k přístupu k odpovídajícímu zařízení jako „prostý“ uživatel. Představte si zařízení odpovídající jednomu ze zvukových zařízení, vaší webové kameře, /dev/sda (což je blokové zařízení spíše než znakové zařízení, ale argument je stejný)…

Zde je příklad, aby bylo vše jasnější. Řekněme, že chcete získat přístup k /dev/sda (pak můžete s obsahem disku dělat cokoli, včetně zasazení programu, který vám umožní stát se root; toto je blokové zařízení, ale problém je stejný se znakovými zařízeními). Na vašem cílovém systému ls -l /dev/sda ukazuje

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

To znamená /dev/sda je blokové zařízení (b na začátku řádku), s hlavním číslem 8 a vedlejším číslem 0 (8, 0 uprostřed řádku). Zařízení je přístupné pouze pro root (čtení/zápis) a členy disk skupina (také čtení/zápis).

Nyní si představte, že se v tomto systému nemůžete stát root ale z nějakého důvodu můžete připojit USB klíče jako uživatel bez nodev . Na jiném systému, kde jste root , můžete vytvořit odpovídající speciální soubor na vašem USB klíči:

mknod -m 666 usersda b 8 0

Tím se vytvoří speciální soubor s názvem usersda , čitelná a zapisovatelná pro každého.

Připojte klíč na váš cílový systém a hej, můžete použít usersda zařízení stejným způsobem jako /dev/sda , ale bez omezení přístupu…

Související:Používání uniq na text Unicode?

(Toto bude fungovat i se zašifrovanými systémy souborů, pokud budete mít přístup k dešifrovanému mapovacímu zařízení:vytvořte zařízení, které odpovídá příslušnému /dev/mapper vstup.)


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Jak úplně umlčet Cronjob do /dev/null/?

  3. Jak se aktualizuje /etc/motd?

  1. CentOS / RHEL :Jak upřednostnit zařízení použitá pro odkládací oddíl

  2. CentOS / RHEL :Jak obnovit ze smazaného souboru /etc/passwd

  3. Jak mohu nastavit automatické dokončování pro příkazy Git?

  1. Jak nastavit ssh bez hesla pomocí klíčů RSA

  2. K čemu se používá `/dev/console`?

  3. Jak nastavit /etc/issues, aby zobrazoval IP adresu pro eth0