如何實(shí)現(xiàn)sudo權(quán)限繞過(guò)漏洞分析與復(fù)現(xiàn),針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)專(zhuān)注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、陽(yáng)東網(wǎng)絡(luò)推廣、小程序開(kāi)發(fā)、陽(yáng)東網(wǎng)絡(luò)營(yíng)銷(xiāo)、陽(yáng)東企業(yè)策劃、陽(yáng)東品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供陽(yáng)東建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
有的用戶可能知道,如果將sudo配置為允許用戶通過(guò)Runas規(guī)范中定義的ALL關(guān)鍵字來(lái)以任意用戶身份運(yùn)行命令的話,那么攻擊者將有可能通過(guò)制定用戶ID -1或4294967295來(lái)以root權(quán)限執(zhí)行惡意命令。
實(shí)際上,只要用戶的權(quán)限足夠高,即擁有最高sudo權(quán)限的用戶,并且在Runas規(guī)范中定義了ALL關(guān)鍵字的話,他們就可以運(yùn)行Runas規(guī)范中明確禁止使用的那些root命令,而且以這種方式運(yùn)行的命令其日志項(xiàng)所顯示的目標(biāo)用戶為4294967295,而不是root。與此同時(shí),在執(zhí)行相應(yīng)命令的過(guò)程中,PAM會(huì)話模塊將不會(huì)運(yùn)行。
Sudo 的全稱(chēng)是“superuserdo”,它是Linux系統(tǒng)管理指令,允許用戶在不需要切換環(huán)境的前提下以其它用戶的權(quán)限運(yùn)行應(yīng)用程序或命令。通常以 root 用戶身份運(yùn)行命令,是為了減少 root 用戶的登錄和管理時(shí)間,同時(shí)提高安全性。
2019年10月14日,Sudo官方發(fā)布了Sudo 1.8.28版本,其中包含sudo root權(quán)限繞過(guò)漏洞(CVE-2019-14287)的補(bǔ)丁修復(fù)。
CVE為該漏洞分配的漏洞CVE編號(hào)為CVE-2019-14287。
一般情況下,大多數(shù)Linux發(fā)行版的Runas規(guī)范(/etc /sudoers)都如下圖所示,其中定義的ALL關(guān)鍵字將允許admin或sudo組中的用戶以目標(biāo)系統(tǒng)中的任意用戶身份來(lái)運(yùn)行命令:
如果想利用該漏洞來(lái)實(shí)施攻擊,用戶需要擁有sudo權(quán)限,并允許用戶使用任意用戶ID來(lái)運(yùn)行命令。通常來(lái)說(shuō),這意味著用戶的sudoer項(xiàng)在Runas規(guī)范中定義了特殊的ALL值。
如果sudoer策略允許的話,sudo支持由用戶指定的用戶名或用戶ID來(lái)運(yùn)行命令。比如說(shuō),下列sudoer項(xiàng)允許我們以任意用戶的身份來(lái)運(yùn)行id命令,因?yàn)樵赗unas規(guī)范中它包含了ALL關(guān)鍵字。
alice myhost = (ALL) /usr/bin/id
除了以任意有效用戶的身份運(yùn)行id命令之外,我們還能夠以任意用戶ID來(lái)運(yùn)行該命令,此時(shí)需要使用#uid語(yǔ)句:
sudo -u#1234 id -u
該命令將返回“1234”。但是,sudo可以使用setresuid(2)和setreuid(2)這兩個(gè)系統(tǒng)調(diào)用來(lái)在命令運(yùn)行之前修改用戶ID,并將用戶ID修改為-1(或未簽名的等價(jià)用戶ID-4294967295):
sudo -u#-1 id -u
或
sudo -u#4294967295 id -u
上述命令運(yùn)行之后,將返回“0”。這是因?yàn)閟udo命令本身已經(jīng)在以用戶ID“0”運(yùn)行了,所以當(dāng)sudo嘗試將用戶ID修改為“-1”時(shí),不會(huì)發(fā)生任何變化。
但是,sudo日志條目中記錄下的命令運(yùn)行用戶的ID為“4294967295”,而并非root用戶(或用戶ID為“0”),除此之外,因?yàn)橛脩鬒D是通過(guò)-u選項(xiàng)指定的,并且不會(huì)在密碼數(shù)據(jù)庫(kù)中存儲(chǔ),所以PAM會(huì)話模塊也不會(huì)運(yùn)行。
如果sudoer條目允許用戶以任意用戶身份運(yùn)行命令(非root),那么攻擊者就可以利用該漏洞來(lái)繞過(guò)這種限制了。比如說(shuō),我們有下列sudoer條目:
bob myhost = (ALL, !root) /usr/bin/vi
用戶bob能夠以除了root之外的其他任意用戶身份來(lái)運(yùn)行命令vi,但由于該漏洞的存在,bob實(shí)際上能夠通過(guò)下列命令來(lái)以root權(quán)限運(yùn)行vi命令,并繞過(guò)目標(biāo)系統(tǒng)中的安全策略:
sudo -u#-1 vi
只有當(dāng)包含了ALL關(guān)鍵詞的sudoer條目存在于Runas規(guī)范中時(shí),該漏洞才存在。比如說(shuō),如果規(guī)范中包含下列sudoer條目的話,目標(biāo)系統(tǒng)是不會(huì)受到該漏洞影響的:
alice myhost = /usr/bin/id
在上述例子中,alice只能夠以root權(quán)限運(yùn)行id命令,任何以不同身份用戶運(yùn)行命令的嘗試都將被拒絕。
版本號(hào) < 1.8.28的Sudo版本均將受到該漏洞的影響。
Sudo v1.8.28版本已修復(fù)該漏洞,建議廣大Linux用戶盡快手動(dòng)將sudo包更新至最新版本。
關(guān)于如何實(shí)現(xiàn)sudo權(quán)限繞過(guò)漏洞分析與復(fù)現(xiàn)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。