◆葉和平
(廣東科學(xué)技術(shù)職業(yè)學(xué)院 廣東 519090)
操作系統(tǒng)、網(wǎng)絡(luò)體系與服務(wù)器技術(shù)
Linux特殊權(quán)限位及其在提權(quán)攻擊中的應(yīng)用
◆葉和平
(廣東科學(xué)技術(shù)職業(yè)學(xué)院 廣東 519090)
Linux系統(tǒng)中的每個(gè)文件和目錄都有訪問許可權(quán)限,用以確定誰能通過何種方式對(duì)文件和目錄進(jìn)行訪問和操作。但一些進(jìn)程或使用者由于特定的需求而需要對(duì)文件或目錄設(shè)置特殊權(quán)限。本文介紹特殊位操作對(duì)系統(tǒng)安全帶來的危害并演示了如何從普通用戶到超級(jí)用戶的權(quán)限提升。
Linux系統(tǒng);特殊權(quán)限位;提權(quán)攻擊
Linux系統(tǒng)中的每個(gè)文件和目錄都有訪問許可權(quán)限,文件或目錄的訪問權(quán)限分為只讀(r),只寫(w)和可執(zhí)行(x)三種[1]。
只讀權(quán)限表示只允許讀其內(nèi)容,而禁止對(duì)其做所有的更改操作??蓤?zhí)行權(quán)限表示允許將該文件作為一個(gè)程序執(zhí)行。文件被創(chuàng)建時(shí),文件所有者自動(dòng)擁有對(duì)該文件的讀、寫和可執(zhí)行權(quán)限,以便于對(duì)文件的閱讀和修改。用戶也可根據(jù)需要把訪問權(quán)限設(shè)置為需要的權(quán)限組合。
針對(duì)這些權(quán)限,有三種不同類型的用戶可對(duì)文件或目錄進(jìn)行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創(chuàng)建者。所有者能允許同組用戶有權(quán)訪問文件,還能將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中每一位用戶都能訪問該用戶擁有的文件或目錄。
Linux的文件與目錄除了前面介紹的一般訪問權(quán)限外, 還有所謂的特殊權(quán)限。由于特殊權(quán)限會(huì)擁有一些“特權(quán)”,因而用戶若無特殊需求,不應(yīng)該啟用這些權(quán)限,避免安全方面出現(xiàn)嚴(yán)重漏洞,以防黑客入侵。
這些特殊權(quán)限位分別是:
(1)s或S(SUID,Set UID):可執(zhí)行的文件搭配這個(gè)權(quán)限,便能得到特權(quán),任意存取該文件的所有者能使用的全部系統(tǒng)資源。請(qǐng)注意具備SUID權(quán)限的文件,黑客經(jīng)常利用這種權(quán)限,以SUID配上root賬號(hào)擁有者,無聲無息地在系統(tǒng)中開扇后門,供日后進(jìn)出使用。
(2)s或S(SGID,Set GID):設(shè)置在文件上面,其效果與SUID相同,只不過將文件所有者換成用戶組,該文件就可以任意存取整個(gè)用戶組所能使用的系統(tǒng)資源。
(3)T或T(Sticky):/tmp和 /var/tmp目錄供所有用戶暫時(shí)存取文件,亦即每位用戶皆擁有完整的權(quán)限進(jìn)入該目錄,去瀏覽、刪除和移動(dòng)文件。
SUID的操作有三點(diǎn):只對(duì)二進(jìn)制程序有效;執(zhí)行者對(duì)于程序需要有x權(quán)限;在程序運(yùn)行過程中,執(zhí)行者擁有程序擁有者的權(quán)限。
以Linux系統(tǒng)中的cat命令為例,其基本權(quán)限信息如圖1:
圖1 linux系統(tǒng)中cat基本權(quán)限信息
假定有一普通用戶 test希望查看/root下的某個(gè)數(shù)據(jù)文件(exam.txt),則正常情況下查看結(jié)果為圖2所示:
圖2 普通用戶test查看/root/exam.txt被禁止
為了使得普及用戶test能夠正常查看該文件,則如操作權(quán)限修改:即為/bin/cat設(shè)置suid權(quán)限位。如圖3所示:
圖3 /bin/cat設(shè)置了suid位
此時(shí),當(dāng)普通用戶test執(zhí)行cat命令查看文件內(nèi)容時(shí),就相當(dāng)于以root身份在執(zhí)行查看命令。因而能夠正常查看文件內(nèi)容。
4.1 基本場(chǎng)景介紹
從所周知,網(wǎng)絡(luò)入侵者不可能直接由服務(wù)器本地登錄,一般都以遠(yuǎn)程連接的方式實(shí)施入侵。而系統(tǒng)通常會(huì)設(shè)置不允許超級(jí)用戶的身份進(jìn)行遠(yuǎn)程連接登錄,因此入侵者會(huì)使用常見的掃描工具探測(cè)系統(tǒng)洞,如:實(shí)施弱口令掃描等[2-3]。
假定系統(tǒng)中test用戶的口令設(shè)置過于簡(jiǎn)單,比如為888888,且系統(tǒng)開戶了ssh服務(wù),則會(huì)出現(xiàn)圖4的掃描結(jié)果:
圖4 x-scan對(duì)系統(tǒng)弱口令的掃描結(jié)果
4.2 提權(quán)攻擊
入侵者使用遠(yuǎn)程連接工具如 ssh等以普通用戶登錄到系統(tǒng)中,執(zhí)行如下操作:
第一步:編輯一個(gè)輔助腳本fz.sh,內(nèi)容為:
#! /bin/bash -x
echo
添加執(zhí)行權(quán)限:chmod u+x fz.sh
第二步:編輯提權(quán)文件tq.c、編譯并賦予執(zhí)行權(quán)限:
#include
int main (void) {
setuid(0);
system(“/bin/sh”);
return(0); }
編譯為tq:gcc -o tq tq.c
第三步:利用sudo本身漏洞及SUID的特殊權(quán)限位完成提權(quán)攻擊。
$setenv SHELLOPTS xtrace
$setenv PS4 '$(chown root:root ex;chmod u+s tq)'
$sudo ./fz.sh
此時(shí)可以發(fā)現(xiàn) tq 可執(zhí)行程序的屬主和組,同時(shí)為其設(shè)置suid。
最后,執(zhí)行tq,則把普通用戶的id設(shè)置成為了0,即已獲取超級(jí)用戶的權(quán)限[4-5]。如圖5所示:
圖5 普通用戶獲取了超級(jí)用戶權(quán)限
Linux特殊權(quán)限位為系統(tǒng)某些情況下的特殊需要提供了方便,但對(duì)這些權(quán)限的權(quán)限需要極其小心,否則極易為入侵者提供方便之門[6]。由于篇幅所限,文章僅對(duì)一般權(quán)限位的功能作了介紹,僅演示SUID權(quán)限位及其結(jié)合sudo漏洞完成了提權(quán)攻擊過程的用法。因此,管理人員要檢測(cè)普通用戶的弱口令設(shè)置及善于使用日志等分析是否有入侵者留下的痕跡。
[1]楊云.Linux網(wǎng)絡(luò)操作系統(tǒng)及應(yīng)用[M].北京:人民郵電出版社,2013.
[2]張玉清.網(wǎng)絡(luò)攻擊與防御技術(shù)[M].北京:清華大學(xué)出版社,2011.
[3]薛向杰.Linux操作系統(tǒng)的網(wǎng)絡(luò)安全及其應(yīng)對(duì)措施[J].電子技術(shù)與軟件工程,2015.
[4]張喜英.在網(wǎng)絡(luò)系統(tǒng)中Linux的安全設(shè)置與管理[J].電腦知識(shí)與技術(shù),2007.
[5]孫悅,張姝,李京等.基于Linux操作系統(tǒng)文件權(quán)限的設(shè)置[J].計(jì)算機(jī)安全,2008.
[6]董句.基于Linux系統(tǒng)網(wǎng)絡(luò)安全策略的分析與研究[J].網(wǎng)絡(luò)空間安全,2016.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2017年4期