netcat 被称为网络瑞士军刀,是一个功能强大设计优雅的网络工具。
netcat 介绍
netcat 是什么,引用 wiki 的说明如下:
Netcat (often abbreviated to nc) is a computer networking utility for reading from and writing to network connections using TCP or UDP. Netcat is designed to be a dependable back-end that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and investigation tool, since it can produce almost any kind of connection its user could need and has a number of built-in capabilities.
Its list of features includes port scanning, transferring files, and port listening, and it can be used as a backdoor.
自己解释下,即:
- netcat 是一个计算机网络工具,可以读取和写入使用 TCP 或 UDP 的网络连接数据。
- netcat 被开发为一个可靠的后台工具,可以被其他程序和脚本直接或间接地使用。
- netcat 也是一个功能丰富的网络调试和检查工具,可以生成几乎所有你想要的网络连接。
- netcat 拥有很多内建功能。包括但不限于端口扫描,文件传输,端口监听,以及后门等功能。
netcat 功能
能够用好 netcat,其实可以解决渗透测试的很多问题。下面对其功能做些测试。
HTTP 请求
netcat 可以通过发送 HTTP request 给 Web 服务器,获取 Web 返回的 response 和页面数据。从而知道 Web 服务器的容器,脚本语言,以及其他 Banner 信息,很简单就可以做些渗透测试的信息收集。
要获取返回的 response 用 HEAD 请求。
echo -ne "HEAD / HTTP/1.1\r\nHost:192.168.1.3\r\n\r\n" | nc 192.168.1.3 80
.
要获取页面数据一般用 GET 请求。
echo -ne "GET / HTTP/1.1\r\nHost:192.168.1.3\r\n\r\n" | nc 192.168.1.3 80
.
这里的 echo 命令会将输入的字符串送往标准输出,通过管道传给 nc 命令,即为 nc 命令的输入。echo 输出的字符串间以空白字符隔开, 并在最后加上换行号,加上 -n
表示不要在最后自动换行,加上 -e
表示会将 \r
\n
处理为换行符。
端口扫描
netcat 可以用于简单的端口扫描,如:
nc -v -n