亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

如何堵住SUID漏洞
2007-10-08   網絡

SUID是網絡入侵者非常愛用的入侵入口,SUID Root程序更是入侵者在UNIX系統留后門的一種主要形式。SUID程序代表了重要的安全漏洞,特別是SUID設為root的程序,隨便翻開一本計算機安全書籍都能夠找到關于注意SUID安全的章節。但到底什么是SUID?SUID的工作原理是什么?入侵者是如何利用SUID程序留下后門的?

1.SUID概述

在解釋SUID之前必須先介紹兩個概念:用戶號UID(User ID)和用戶組號GID(Group ID)。對Unix系統有所了解的朋友都知道,這兩個ID)是UNIX系統用于惟一標識用戶和同組用戶及用戶訪問權限的。當UNIX中的一個進程執行時被分別賦予4個編號,分別為實際UID(realuser ID)和有效的UID(effective user ID)、實際GID(real group ID)和有效的GID(effective group ID)。實際ID是在登錄過程中建立的用戶ID,有效的ID用于確定該進程對于文件的存取許可,通常有效的UID和GID與實際UID和GID是相同的,但是通過設置SUID和SGID位會改變這種情況。

在UNIX系統中,某些時候沒有特權的用戶必須具有某種特權才能完成某項任務。例如passwd程序,它允許用戶改變自己的口令。然而改變用戶口令需要修改/etc/passwd文件,在UNLX系統中,還有許多類似的情況,為了解決這個問題,UNIX采用了設置用戶ID許可SUID  (Set UID)和設置用戶組ID許可SGID(Set GID),使得一些可執行程序在執行時行使第二個用戶或另一組用戶的權限,即在運行時,擁有另一個用戶的UID或另一組的GID(具體的權限是此可執行程序的屬主權限),從而擁有可以訪問本不可以訪問的資源。而這個可以改變UID許可的程序就是SUID程序,可能改變GID許可的就是SGID程序。

如何識別SUID程序呢?我們可以檢查文件的權限模式,在它的第四位如果不是x,而是s,就是一個SUID程序,同時可以用:chmod u+s filename和chmod u-s filename命令來設置或取消一個可執行程序的SUID位。SUID和SGID基本原理是一致的,本文只以SUID為例進行闡述。

上面我們說通常一個進程的有效UID與實際UID是相同的,但通過設置可執行文件得到SUID會改變上述情況。當運行了設置了SUID的可執行文件時,進程有效UID值變為該可執行文件的所有者的有效UID,而不再是執行該程序的用戶的有效UID,因此這時此進程就有了與該文件所有者相同的存取許可,能訪問一些普通用戶不能訪問的資源,但也只能是做些系統規定它做的事情。以passwd為例來具體說明。

在Unix系統的進程數據結構中,有這樣的兩個域:

ushortp_uid;

ushortp_suid。

p_uid中存取進程的UID值,p_suid存儲進程的有效ID值。一般的程序的p_suid和p_uid值是相同的。

在系統中有兩個passwd文件,一個在/etc文件夾下,存放用戶的口令等信息,是—個文本文件,任何用戶都可以讀,另一個在,usr/bin目錄下,是一個可執行命令。先看看/etc/passwd文件:

$ls—l/etc/passwd

rw-r--p-1 root root 1939 Oct 8 06:00/etc/passwd

我們看到/etc/passwd文件是不允許普通用戶修改的,但運行passwd命令卻能修改口令。

再看看/usr/birdpasswd命令文件:

$ls-l/usr/bin/passwd

-r-s--x--x 1 root root 1463Mar 142002/usr/bin/passwd

我們可以看到文件主權限部分的x位被一個s代替了。當一個UID為101的用戶執行

passwd命令改變自己的口令時,該進程的p_uid賦值為101,而因為passwd是SUID root程序,所以它的p_suid有效ID值則被賦值為0。這個時候passwd就能讀寫原本只有超級用戶才能修改的/etc/passwd文件。當然,雖然passwd命令這時可以訪問超級用戶才能訪問的文件,但也只能是修改/etc/passwd中關于用戶自身的信息這項工作而已,而不能干其他事。但如果這些SUID程序是ksh,csh等root shell,那就極度危險了。

2.封堵SUID漏洞

通過上面的闡述,我們對SUID程序及其原理已有所了解,下面講講入侵者是如何利用

SUID程序的。

利用系統中的SUID程序漏洞取得root權限。系統中像passwd這些的SUID程序很多,

它們廣泛存在于系統的/bin,/usr/bin,/usr/bin和/usr/sbin等目錄下,以可執行程序的形式存在,這些文件通常為超級用戶所有。當然,這些SUID root程序也像passwd一樣,雖然能訪問普通用戶不能訪問的資源,但只能做系統規定做的事。但是入侵者卻能利用這些SUID的特性及其編寫時的一些漏洞進行緩沖區溢出,輕易取得系統的超級用戶權限,如Solaris 2.4中的/usr/bn/fdformat是用來格式化軟盤的程序,由于需要寫外部設備,因此系統在安裝時將這個儲蓄的權限設置成SUID root,利用該程序的緩沖區溢出漏洞(溢出代碼可以從www.hack.ha.co找到)可以取得root權限。

另一種威脅UNIX安全的典型攻擊就是通過復制一份ksh,csh等root Shell,然后取個

充滿迷惑性的名字放入比較隱蔽的文件夾下,再將這些復本設置SUID位,通過調用這個后

門,攻擊者可以再次獲得root的權限。

所以管理員們注意了,在離開控制臺時最好鎖屏。許多攻擊是來自內部的,一個有惡意

的人剛好路過,他只要幾秒鐘就可以留個后門。還要注意的是,當http是以root用戶作為屬主運行時,惡意編寫的COI程序也能輕易復制一些SUID shell供入侵者使用。

到此文章該結束了。其實SUID后門雖然流行,但已經很老了,系統管理員應該定期查

看系統中有哪些SUID和SGID文件,也可以用下面的命令實現:

find/-typef(-perm-4000-o-perm-2000)-print

當然,入侵者可以通過修改 find 命令來逃避檢測,所以最好用些運行專門的UNIX檢測軟件(如Tripwire)來檢測,對一些系統帶來的SUID root程序,如果不用,也可以取消其s位。

熱詞搜索:

上一篇:網絡及系統管理的七大關鍵
下一篇:黑客追蹤手記

分享到: 收藏