有些新手朋友在拿到一個webshell后如果看到服務器是Linux或Unix操作系統的就直接放棄提權,認為Linux或Unix下的提權很難,不是大家能做的,其實Linux下的提權並沒有很多人想象的那么難,你真去嘗試做了,也許你就會發現Linux下的提權並不難,尤其是一些簡單的提權方法是很容易學會的。Linux下的提權我知道的比較簡單的方法都是在命令行下完成的,很多新手叉子可能根本沒接觸過Linux下的一些常用命令,今天危險漫步就給大家介紹一些Linux下提權過程中常用到的Linux命令,由於我也是剛學了幾個Linux命令,介紹的不對或不全的還請大家多多指正和諒解。
對大家來說,在Linux下的提權最簡單也是最有效的方法就是通過本地溢出漏洞提權。找到合適的漏洞利用程序在命令行下運行一下就完成了提權。
由於Linux下的提權大多是在命令行下進行的,因此要提權首先要得到一個執行命令的地方。我們最先得到的是一個webshell,比如PhpSpy。盡管很多Webshell提供了在Linux下執行命令的功能,但往往只能執行一些不需要交互的命令,因此我們首先要得到一個可執行交互命令的窗口,用到的方法是反彈shell到本地。PhpSpy自帶了這個功能,名為“Back Connect”。
要想反彈回shell,你需要一台有公網lP的電腦(當然了,只有內網IP的電腦做了端口映射也可以),然后在你要反彈回來的電腦上首先用nc來監聽要反彈回來的端口,如果要反彈回來的端口為12345,就執行nc -vv -|-p 12345來監聽12345端口。
然后回到PhpSpy中的”Back Connec”,在“Your IP”后面自動識別除了你當前電腦的公網IP,如果要反彈到別的電腦上請輸入要反彈電腦的IP,我這里要反彈到本機,就不需要修改了,“You Port”是你要反彈電腦上正在監聽的端口,默認為12345,知道我上面為什么在本機監聽12345端口了吧,就是在這里不需要修改“Your Port”了,當然,你也可以在本地監聽123456端口,然后把“Your Port”也修改成對應的123456端口就行了。點“Start”按鈕進行反彈,過一會兒本機的監聽窗口看到類似信息就說明反彈成功了,得到了一個可執行交互命令的窗口。接下來執行命令的效果和在Ubuntu的終端中執行命令的效果幾乎完全相同,所以我在Ubuntu 10.10的終端中執行常用的提權中用到的命令來給大家演示。
在反彈回來的權限較低的shell的命令窗口中有權限執行的命令有:
1、uname
輸出一組系統信息。如果不跟隨選項,則視為只附加-s選項。常跟的參數有-a,在我的Ubuntu
10.10的終端中執行uname-a命令后顯示,其中最前面的Linux表示是基於Linux內核的,2.6.35-28是具體的內核版本號。這個內核版本號非常重要,因為如果是采用溢出漏洞提權的話內核版本號是尋找溢出漏洞利用程序最重要的參考信息,根據當前的內核版本號尋找適用於這個版本號的漏洞利用程序。
2、pwd
獲得當前目錄,在用webshell上傳漏洞和用程序前執行一下pwd命令獲得當前目錄,把漏洞利用程序直接上傳到當前目錄,在執行漏洞利用程序時就可以免去輸入目錄的麻煩。執行pwd命令后顯示/home/test,說明當前目錄為/home/test/。
另外,通過webshell比如PhpSpy的“Back Connect”反彈回來的shell默認的當前目錄為webshell所在的目錄。
3、ifconfig
顯示網絡配置信息,比如顯示有哪些網卡,每塊網卡的配置信息(IP地址、MAC地址、子網掩碼)等,常用參數-a執行ifconfig-a命令后顯示。從信息可以知道,當前系統共有一塊網卡etho,IP地址為192.168.19.138,子網掩碼為255.255.255.0。
4、netstat
顯示當前的網絡連接狀態,與Windows系統下的netstat命令寫法相同,功能也差不多。
執行netstat后顯示了很多網絡連接的信息。
5、ps
ps是用來報告程序執行狀況的指令,你可以搭配kill指令隨時中斷,刪除不必要的程序。常用的參數有a,u,x
a 顯示現行終端機下的所有程序,包括其他用戶的程序。
u 以用戶為主的格式來顯示程序狀況。
x 顯示所有程序,不以終端機來區分。
執行ps aux命令后顯示,顯示了程序的進程id,CPU占用率等詳細信息,如果要結束某個程
序,只需要用命令kill-9 PID就可以結束,其中PID就是在執行ps aux命令時顯示的程序的PID,當然前提是要有相應的權限。
6、gcc
很多Linux下的漏洞利用程序都是用C語言寫的,我們得到的很多時候是漏洞利用程序的C語言的源代碼,要想得到可執行程序,需要對源代碼進行編輯,這時候就用到大名鼎鼎的gcc了。個別情況下可能因為兼容性的原因必須需要在要提權的Linux主機上編譯漏洞利用程序,這時候也需要用到gcc。GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發的編程語言編譯器。它是一套以GPL及LGPL許可證所發行的自由軟件,也是GNU計划的關鍵部分,亦是自由的類Unix及蘋果電腦Mac OS X操作系統的標准編譯器。GCC原
名為GNUC語言編譯器,因為它原本只能處理C語言,GCC很快地擴展,變得可處理C++,之后也變得可處理Fortran、Pascal、Objective-C、Java,以及Ada與其他語言。
在大多數情況下,你在本地的Linux系統中編譯好的溢出漏洞利用程序直接上傳到要提權的Linux主機上也能正常使用,不是必須要在要提權的主機上編譯溢出漏洞的利用程序。因為gcc特別強大,功能特別多,用法也特別多,要講全的話估計要一本厚書的篇幅,這里不可能一一介紹,只介紹Linux提權中常用到的兩個方面:
(1)gcc-v
查看安裝的gcc的版本,我們的目的是通過執行gcc-v命令確認系統是否安裝了gcc,如果安裝了會顯示安裝的gcc的版本號如果提示找不到命令等說明gcc沒有安裝。Ubuntu 10.10默認安裝了gcc。
(2)另一個用到的重要功能就是把漏洞利用程序的源代碼編譯成可執行程序了。假設溢出漏洞利用程序源代碼文件是exp.c,通過websbell把exp.c上傳到了要提權的Linux主機的當前目錄下,在反彈回來的命令窗口中執行gcc-o exp exp.c,就會把exp.c編程成可執行程序exp,其中-o參數后面跟着的是編譯生成的可執行程序的名字,這里為exp,另一個參數exp.c是要編譯的溢出漏洞利用程序源代碼的文件名,這里為exp.c。執行命令后如果沒有錯誤提示就說明編譯成功了。執行一下命令ls,發現可執行文件exp已經生成了。
接下來輸入./exp就可以運行漏洞利用程序exp了,如果溢出成功會顯示,注意下面的那個#,對Linux有點了解的都知道#對應的是root權限,看到#就說明提權成功了,接下來你就可以以root權限運行各種命令了。
在通過溢出漏洞獲得root權限后,能執行的命令就多了,很多沒提權前沒權限執行的命令現在都可以執行了。這時候可以執行一些命令來獲取一些敏感信息或進行留后門清理日志等操作,方便更好的控制提權成功的服務器。
1、cat .bash_history
查看該用戶曾經執行過的命令,也就是查看root用戶執行過的命令。因為Linux下很多管理操作都是在命令行下完成的,而正常情況下用root用戶執行命令的是管理員,通過查看管理員輸入的命令,可能得到很多敏感信息。
2、cat/etc/passwd cat/etc/shadow
分別執行cat/etc/passwd,cat/etc/shadow命令后得到passwd和shadow的內容,把兩個文件的內容保存到本地用john掛字典嘗試破解root用戶的密碼,具體怎么破可以自己查詢相關信息。cat/etc/shadow只有root權限才能執行。
3、chmod
在提權成功獲得root權限后你如果想下載服務器上的一個文件到本地,我的方法是先執行cp命令把要下載的文件復制到網站的Web目錄下,但復制過去的文件只有root用戶能訪問,直接用瀏覽器下載會提示沒有權限,這時候就需要用到chmod命令了。chmod命令的作用是變更文件或目錄的權限。如果要下載的文件是shadow1,執行命令chmod 777./shadow1后就可以直接用瀏覽器下載了,不會再有權限問題了。
當然,在獲得root權限后還可以做很多事,比如安裝后門,想辦法搞到root用戶的密碼等,可惜我不會,也和本文的題目“Linux下提權常用小命令”關系不大,這里就不介紹了。在實際提權過程中用到的命令可能遠不止這么多,我介紹的都是大路邊的最常用的。由於我對Linux幾乎也是一竅不通,有介紹的不對的地方還請大家諒解。
以后大家們遇到Linux主機,不要不敢去嘗試提權,大膽嘗試,往往會有驚喜和收獲。