当前位置:   article > 正文

如何启动netcat_netcat的正确打开方式

渗透测试netcat开机不自动启动

简介

nc(netcat)是一个能通过TCP和UDP读写数据的工具,很多Linux发行版已经预装。最近发现了关于nc的很多有趣的应用场景,果然名副其实,很是牛叉。。。于是简单梳理了一下。

参数说明

-g 设置路由器跃程通信网关,最丢哦可设置8个。

-G 设置来源路由指向器,其数值为4的倍数。

-h 在线帮助。

-i 设置时间间隔,以便传送信息及扫描通信端口。

-l 使用监听模式,管控传入的资料。

-n 直接使用IP地址,而不通过域名服务器。

-o 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。

-p 设置本地主机使用的通信端口。

-r 乱数指定本地与远端主机的通信端口。

-s 设置本地主机送出数据包的IP地址。

-u 使用UDP传输协议。

-v 显示指令执行过程。

-w 设置等待连线的时间。

-z 使用0输入/输出模式,只在扫描通信端口时使用。

使用场景

测试端口连通性

使用nc -z可以测试远程主机端口的连通性。

以前我们测试某台远程主机的某个端口是否能连通,通常都是用telnet ip port,现在可以用nc来替代了。

示例:

nc -z 192.168.1.60 19011

Connection to 192.168.1.60 port 19011 [tcp/*] succeeded!

端口扫描

使用-z参数时,还可以指定一个端口范围进行扫描。

以后简单场景下,就不需要动用nmap这种专业工具了。

示例:

TCP:

nc -z -v 192.168.1.60 19000-19100 2>&1 | grep succeeded

UDP:

nc -z -v -u 192.168.1.60 19000-19100 2>&1 | grep succeeded

启监听端口

很多时候,如果拜托网管为我们做一个NAT映射,或新配置了一个防火墙策略后,通常要启一个临时的tomcat/apache/nginx行测试,非常麻烦。

如果只是临时测试的话,直接使用nc -l 端口号就可以启一个监听了,如果早点知道的话就可以省去很多时间了。

示例:

nc -l 33333

HTTP服务健康监控

nc配合echo来使用,可以模拟发送一段HTTP请求报文,对一个HTTP服务进行健康度检测。

如果服务支持HEAD方法的话,可以尽量使用HEAD以减轻测试时对服务端的压力。

于是简单场景下,我们又可以抛弃wget和curl了。。。

示例:

echo -e "GET /mobsale-service/health HTTP/1.0\r\n\r\n" |nc -t 192.168.1.60 19011

echo -e "HEAD /mobsale-service/client HTTP/1.0\r\n\r\n" |nc -t 192.168.1.60 19011

文件传输

通常,我们在两台服务器之前传递文件,首选都是sftp/scp,或者ftp,或者更古老的sz/rz。

但如果这些方式都被禁用的话怎么办呢?可以用nc来自己铺路,只要能连网,就能传文件!

示例:

传递方:

cat readme.txt | nc -l 33333

收接方:

nc 192.168.1.61 33333 > readme.txt

如果要传递目录的话,需要配合tar/zip等工具进行打包。

聊天工具

还可以使用nc来进行单方向聊天,这貌似是一个然并卵的东西。。。

和文件传输的原理其实是一样的。

示例:

接收方:

nc -l 33333

发送方:

nc 192.168.1.61 33333

发送发输入内容回车之后,接收方就会显示了

简易WEB服务器

不借助tomcat/nginx/httpd等WEB容器,仅用nc就可以用快速搭建一个单页面的WEB服务器。

首先新建一个index.html文件:

Test Page

It Works!

执行以下脚本,将一个简单的HEAD与index.html中的BODY拼接并输出:

while true;do { printf '%b\r\n' 'HTTP/1.1 200 OK' '%b\r\n';cat index.html; }|nc -l 33333;done

远程桌面

设想如下场景:

如果某台远程主机禁用了某用户(例如root)的SSH远程登录权限,只能通过低权限的管理用户登录,再用su -的方式切换过去进行操作。如果觉得不爽,有没有可能绕过这个限制呢?

使用nc就可以在远程新开一个任意监听端口,然后在本地就可以模拟SSH登录了,可以说是命令行版的"远程桌面"吧。

原理如下:

从网络收到命令写入fifo文件中

cat命令读取fifo文件,并且发送到bash命令

bash执行完的结果发送给nc

nc通过网络把内容发送给客户端

远程:

mkfifo /tmp/tmp_fifo; cat /tmp/tmp_fifo | /bin/bash -i 2>&1 | nc -l 33333 > /tmp/tmp_fifo

本地:

nc -n 192.168.1.60 33333

四层反向代理

与上面的"模拟SSH登录"原理类似,nc的另一个场景是可以充当一个4层的反向代理,这个比较实用了,LVS/HA/Nginx统统都可以下岗了。。。

示例:

mkfifo backpipe; nc -l 33333 0backpipe

后记

大体先写这么多了,以后的使用过程中如果还有新的发现,随时补充。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/194637?site
推荐阅读
相关标签
  

闽ICP备14008679号