最近大熱的bug時(shí)間,,就是Linux sudo權(quán)限繞過漏洞CVE-2019-14287事件,,對(duì)此,我們做了一些研究,。雖然各大平臺(tái)已經(jīng)把核心的東西曬出來了,,但是,因?yàn)槟壳皼]有說的特別完整的,,所以,,筆者研究一番后,總算是把這個(gè)過程都弄明白了,。 關(guān)于sudo的定義,,我們就不細(xì)說了,不了解的小伙伴可以問度娘,。這里我們主要說一下漏洞的問題,。 本漏洞存在于sudo 1.8.28之前的版本,隨便打開個(gè)虛擬機(jī)看看當(dāng)前版本,。如果版本沒有問題,,那就直接開擼。 先附上發(fā)現(xiàn)者蘋果信息安全部門Joe Vennix的原文: 從這里我們知道,,要復(fù)現(xiàn)這個(gè)漏洞是有前提的,,上文中作者賦予bob用戶通過sudo命令執(zhí)行vi命令的權(quán)利,但是只擁有除了root權(quán)限以外的權(quán)限,,很明顯,,這樣以來,是不能修改和訪問root用戶和用戶組的文件的,。 而如果不添加這個(gè)權(quán)限,,bob是不能執(zhí)行sudo命令的,舉個(gè)例子: 文件中并沒有賦予其他用戶使用sudo命令的權(quán)利,我們切換到common用戶,,執(zhí)行sudo命令: 很明顯,,common用戶不能使用sudo,我們將common用戶添加到sudoers中,,也賦予非root權(quán)限執(zhí)行vi命令: 首先賦予sudoers root用戶寫的權(quán)利,,原本sudoers是沒有寫的權(quán)利的: 然后將非root使用vi命令的權(quán)利賦給common: 我們現(xiàn)在來試試common的sudo vi: OK,我們可以使用sudo vi修改文件了,,但是現(xiàn)在沒有root權(quán)限,,所以無法修改root組的/etc/passwd文件。 我們知道,,root用戶的id是0,,如果我們能將common用戶的id也變成0就可以執(zhí)行root的權(quán)限了,這也就是漏洞的原理所在,,當(dāng)前sudo版本會(huì)將id為-1和4294967295的用戶作為id為0來進(jìn)行識(shí)別,,所以我們只需要將uid指定為0或4294967295均可繞過上面的權(quán)限控制執(zhí)行root權(quán)限: OK,這樣我們就可以讓common用戶以root權(quán)限執(zhí)行vi命令了,。 |
|