在繼續(xù)Metasploit教程之前廊佩,我想提出這么一個(gè)疑問:到底什么是shell?
在滲透這個(gè)行業(yè)靖榕,你幾乎隨處都可以聽到shell的字眼:你拿到那臺(tái)server2008的shell了么标锄?進(jìn)后臺(tái)getshell了沒?cmd難道不是shell嘛茁计?bash命令windows能用嗎料皇?……
今天我們就來掰扯一下這幾個(gè)shell到底是不是一個(gè)shell!
1.shell的基本含義
我們知道shell的基本意思是:殼星压,這個(gè)概念是區(qū)別與內(nèi)核(kernel)提出的践剂,用戶通過這個(gè)接口訪問操作系統(tǒng)內(nèi)核的服務(wù),也就是由殼到內(nèi)核娜膘。
2.windows中的shell
#cmd
cmd的全稱是Command shell逊脯,微軟官方給出的解釋是:CommandShell是一個(gè)獨(dú)立的應(yīng)用程序,它為用戶提供對(duì)操作系統(tǒng)直接通信的功能竣贪,它為基于字符的應(yīng)用程序和工具提供了非圖形界面的運(yùn)行環(huán)境军洼,它執(zhí)行命令并在屏幕上回顯MS-DOS風(fēng)格的字符。
#PowerShell
從知乎上找到了一個(gè)非常棒的解釋演怎,連接:https://www.zhihu.com/question/22611859?sort=created匕争,powershell為微軟提供的cmd的替代品,其強(qiáng)大之處不虛bash爷耀,它的優(yōu)勢(shì)如下:
破天荒的方便:諸如存儲(chǔ)計(jì)算中GB汗捡,MB,KB單位等畏纲;數(shù)組聲明中的1..n和下標(biāo)為-1的處理;還有所見即所得春缕,通俗易懂的動(dòng)詞+名詞結(jié)構(gòu)Cmdlet盗胀。面向?qū)ο螅号c面向過程,面向文本相比锄贼,面向?qū)ο蟾奖愀菀酌枋霈F(xiàn)實(shí)世界票灰,也算趕上了時(shí)髦。綁上.NET這棵大樹:正所謂大樹下面好乘涼,PowerShell綁上.NET這個(gè)大款了屑迂,借助.NET Framework平臺(tái)強(qiáng)大的類庫(kù)浸策,幾乎讓一切都成為可能。強(qiáng)大的兼容性:完全兼容windows 平臺(tái)上其它調(diào)用惹盼,如可執(zhí)行文件(exe)庸汗,批處理bat和vb script腳本等∈直ǎ基于平臺(tái)的可擴(kuò)展性:這一條是重點(diǎn)蚯舱。微軟有個(gè)優(yōu)點(diǎn),與應(yīng)用相比掩蛤,它更喜歡做平臺(tái)枉昏。PowerShell早已變成一個(gè)平臺(tái),在PowerShell 剛發(fā)布的第二年揍鸟,微軟的System Center Operations Manager 和 SharePoint就提供了針對(duì)該平臺(tái)的組件兄裂,后來的AD,Hyper-V阳藻,Windows Azure晰奖,Office 365就更不用說了。除了微軟稚配,亞馬遜的云平臺(tái)管理畅涂,Dell的out-of-hand 管理,也都提供了基于PowerShell的管理組件道川。PowerShell 儼然變成了一個(gè)標(biāo)準(zhǔn)午衰,變成了一個(gè)規(guī)范。
#explorer
任意一臺(tái)windowsPC冒萄,打開任務(wù)管理器你就會(huì)看到它臊岸,沒錯(cuò),他就是你看到的桌面尊流,這就是區(qū)別于上面提到的cmd帅戒,explorer嚴(yán)格上來講也是一種shell,即圖形shell崖技。
3.linux中的shell
其實(shí)逻住,最初提出shell概念的,正是在Linux中迎献。我們有時(shí)候會(huì)說Shell 語(yǔ)言瞎访,也正是針對(duì)linux,shell自身其實(shí)是一個(gè)用 C 語(yǔ)言編寫的程序吁恍,它是用戶使用 Linux 的橋梁扒秸。而Shell 既是一種命令語(yǔ)言播演,又是一種程序設(shè)計(jì)語(yǔ)言。
Linux 的 Shell 種類眾多伴奥,常見的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
而我們一般在linux中談shell写烤,默認(rèn)指得就是Bourne Again Shell,即bash拾徙,也是linux下最常使用的shell洲炊。
4.網(wǎng)站中的shell
webshell就是以asp、php锣吼、jsp或者cgi等網(wǎng)頁(yè)文件形式存在的一種命令執(zhí)行環(huán)境选浑,也可以將其稱做為一種網(wǎng)頁(yè)后門。它的目的是通過網(wǎng)站端口對(duì)網(wǎng)站服務(wù)器的某種程度上操作的權(quán)限玄叠。其實(shí)某些網(wǎng)站后臺(tái)管理本身就是webshell古徒。
5.payload中的shell
payload?先別急著一棒子打死读恃,其中文為“有效載荷”隧膘,指成功exploit之后,真正在目標(biāo)系統(tǒng)執(zhí)行的代碼或指令寺惫。它可以是dir/ls疹吃,也可以是彈出計(jì)算器,也可以是各種惡意操作西雀。
而我們此時(shí)提到的shell萨驶,精確所指的就是shell code,shell code目的性就不用說了艇肴,目標(biāo)就是為了獲取系統(tǒng)shell執(zhí)行權(quán)限腔呜,emmmm,說了這么多再悼,這里用powershell/bash更專業(yè)精確一點(diǎn)的說核畴。
我們之前在msf中,介紹了三種可以稱之為shell code的payload:Single冲九,stager谤草,stages,(忘記的小伙伴自尋metasploit系列(二))莺奸,接下來我們還會(huì)提及一種特殊的shell code:Meterpreter丑孩。
Meterpreter的特殊之處在哪呢?如果你知道冰河灭贷、灰鴿子嚎杨,那你就應(yīng)該明白我想表達(dá)什么了。
總結(jié):
這篇文章的出現(xiàn)當(dāng)然不是偶然氧腰,不過是為了引出下期metaploit的主角——Meterpreter枫浙。小結(jié)一下,有一種特殊的payload叫shell code古拴,有一種特殊的shell code叫Meterpreter箩帚,相對(duì)于傳統(tǒng)shell code,他能提供強(qiáng)大的超越shell非圖形界面本身的功能黄痪,相對(duì)于傳統(tǒng)冰河紧帕、灰鴿子,emmmm桅打,先不說你能不能找到是嗜,,你能保證過免殺么挺尾?你能對(duì)Linux下手嗎鹅搪?
欲知下文如何,且聽遭铺,emmmmm丽柿,下周出差,可能斷貨幾天魂挂,甫题,就、涂召、就坠非、、幾天果正。炎码。。
Meterpreter的章節(jié)講完后舱卡,可能就要進(jìn)入后滲透階段了辅肾,有興趣的小伙伴可以提前了解一下。