GNU/Linux >> Znalost Linux >  >> Linux

Eskalace oprávnění pomocí souboru passwd

Hesla jsou normálně uložena v /etc/shadow , který není pro uživatele čitelný. Historicky však byly uloženy ve světově čitelném souboru /etc/passwd spolu se všemi informacemi o účtu. Z důvodu zpětné kompatibility, pokud je hash hesla uveden ve druhém sloupci v /etc/passwd , má přednost před tím v /etc/shadow .

Historicky prázdné druhé pole v /etc/passwd znamená, že účet nemá žádné heslo, tj. kdokoli se může přihlásit bez hesla (používá se pro účty hostů). To je někdy zakázáno. Pokud jsou účty bez hesla deaktivovány, můžete zadat hash hesla podle svého výběru. Můžete použít crypt funkce pro generování hodnot hash hesel, například perl -le 'print crypt("foo", "aa")' nastavte heslo na foo .

Je možné získat root přístup, i když můžete přidat pouze /etc/passwd a nepřepisovat obsah. Je to proto, že je možné mít více záznamů pro stejného uživatele, pokud mají různá jména – uživatelé jsou identifikováni svým ID, nikoli svým jménem, ​​a definujícím rysem účtu root není jeho jméno, ale skutečnost, že má ID uživatele 0. Můžete tedy vytvořit alternativní účet root připojením řádku, který deklaruje účet s jiným jménem, ​​heslem dle vašeho výběru a ID uživatele 0.


Stačí napsat:

echo root::0:0:root:/root:/bin/bash > /etc/passwd

su

a vy jste root.

(Odstranění x znamená, že root již nevyžaduje žádné heslo, můžete použít sed místo echo přesto to stačí k získání root shellu)


Můžete použít tuto nedestruktivní metodu:

# to generate hash of the password
openssl passwd mrcake
hKLD3431415ZE

# to create a second root user with "mrcake" password
echo "root2:WVLY0mgH0RtUI:0:0:root:/root:/bin/bash" >> /etc/passwd

# to switch to a root2
su root2
Password: mrcake 

Linux
  1. Jak automatizovat přenosy souborů sftp pomocí nástroje expect

  2. Použití nc pro přenos velkých souborů

  3. Povolení automatického spouštění příkazů jako root v Linuxu pomocí SSH

  1. Umožňují sudo a .profile/.bashrc triviální eskalaci oprávnění?

  2. Obnovení hesla root

  3. Je možné změnit soubor databáze hesel (/etc/passwd) v linuxu?

  1. Začínáme s ls

  2. Jak změníme heslo root?

  3. Připojit se k MySQL pomocí příkazového řádku bez použití hesla root?