
目前我正在使用該標準netcat -e /bin/sh
來提供遠端 shell 供其他電腦存取。
但問題是這個 shell 相當糟糕,因為它的輸出有限。例如,如果我發送一些無效的命令xxxxx
,我將不會從機器得到任何回應,但在機器上,終端上會出現錯誤,提示/bin/sh: xxxxx: not found
。
如果我使用 shell 啟動控制台應用程序,通常我看不到控制台應用程式輸出的任何內容,並且我無法Ctrlz通過 shell,因為這會關閉電腦上的 netcat。這是一團糟,我希望它像 SSH 一樣工作(我不能使用)。
/bin/sh
是否可以建立一個自訂應用程式來顯示終端機中的所有輸出,而不是像我使用 netcat 那樣將所有內容透過管道傳輸?是否有可能以某種方式從終端獲取文本,無論寫入的是什麼進程?
是否可以sshd
在盒子上啟動,然後netcat -e "ssh root@localhost"
這樣做? (我已經嘗試過這個,似乎不起作用)。
我正在尋找任何類型的解決方案。
答案1
建立「自訂應用程式」將重新實作 telnet / ssh。這當然是可能的,但不是必需的。
如果主機上有 sshd (或 telnetd),您可以使用 例如 從 netcat-shell 工作階段啟動它,/usr/sbin/sshd -p <port> -D 2>&1
然後ssh -p <port> root@<host>
在您的用戶端上執行此操作。您可能需要向 sshd 添加更多選項,也許創建一個設定檔並在命令列中給出它:/usr/sbin/sshd -f <config-file> ...
如果沒有,您可以使用 netcat 會話上傳 telnetd 或 sshd,設定所需的環境/配置並在某個連接埠上執行它。
您也可以在 shell 周圍建立一個包裝器,將 stderr 重定向到 stdout,例如/bin/sh 2>&1
,這將允許您在 netcat 會話中看到 stderr,但不會為您提供「真正的終端」功能。
另一個選擇是DISPLAY=<client>:0 xtrem
主機上有 xterm 或同等版本,客戶端上有 X Server。