你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux上一个非常强大的工具——netcat工具

[复制链接]
gaosmile 发布时间:2020-9-2 21:27
对于nc命令来说,可真的是要一行代码调半天。因为这行代码的威力是非常大的!当然,用不好的话,还会给自身带来麻烦。
netcat这个工具,简称nc,是Linux上一个非常强大的工具(当然也有windows版本)。由于它能力实在太强,有些公司甚至对他进行了隔离(quarantined)。比如rename掉,或者给000的权限。因为它很容易可以在服务器上开一个后门(backdoor),并且及其方便。
微信图片_20200902212551.jpg
那nc命令在什么地方呢?where is it?
# whereis nc
nc: /usr/bin/nc /usr/share/man/man1/nc.1.gz
它告诉我,文件在/usr/bin目录下。我们使用file命令来看一下它的属性。结果发现它是一个链接文件。
# file /usr/bin/nc
/usr/bin/nc: symbolic link to `ncat'
从这里我们能够看出,nc的全称是ncat:Concatenate and redirect sockets。这是一把瑞士军刀。
nc的参数非常非常多,如果列出来,会让你失去兴趣,白白错过了这么厉害的工具,也错过了进局子的机会。我们还是以案例来说明,这款不到1MB的命令,为什么俘获了xjjdog的芳心。
1. 服务器上安后门
下面的命令,将在机器上开放5879端口。服务端:
# nc -l -vv -p 5879 -e /bin/bash
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::5879
Ncat: Listening on 0.0.0.0:5879
这个过程叫做反弹shell,远程就可以使用nc命令连接,做一些事情。
客户端:
# nc -v 192.16.1.54 5879
Connection to 192.16.1.54 port 5879 [tcp/*] succeeded!
此时,执行任何shell命令,都可以正常运行。下面这张gif动画可以验证这个过程。
微信图片_20200902212600.gif
想要更霸道一点的么?我们需要借助mkfifo命令。
在服务器上,执行下面两个命令,这就构造了一个循环。
rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/bash -i 2>&1 | nc -l  5879 > /tmp/f
客户端nc连接以后,竟然直接出现了命令行操作终端!
$ nc -v 192.16.1.54 5879
Connection to 192.16.1.54 port 5879 [tcp/*] succeeded!
[root@localhost~]#
你可能会说,我客户端关掉之后,为什么服务端的命令也退出了?如果你想要服务端继续监听,可以加上参数-k。
2.文件和目录传送
还在用sftp?还是用rzsz?
这些工具虽然好用,但需要安装。有时候事情紧急,或者权限把的严,并没有这样的工具。
此时,nc可以来帮忙。
服务端同样监听一个端口,但是这次把重定向定向到一个文件。
nc -l 5879 > file
客户端就可以启动一个命令将文件发送过去。这次是使用反向的箭头。
nc -v 192.16.1.54 5879 < redis-5.0.5.tar.gz
文件传的飞快!而且由于没有rsa那一套的加密,速度更快了。
查看它们的md5,一模一样。
MD5 (redis-5.0.5.tar.gz) = 224cabf26d622f37528b398762e1578c

md5sum file
224cabf26d622f37528b398762e1578c  file
我知道你的脑子里现在在想着怎么传送目录了。这个过程很有意思。
我们把nc的输出,使用管道交给tar命令处理。xfvz和cvfz是一对参数,你应该猜到要怎么做了。
nc -l 5879  | tar xfvz -
没错,客户端的代码与上面的是相反的。不过这次,我们的nc命令接收了打包的文件。
tar cfz - redis-5.0.5 |  nc -v 192.16.1.54 5879
真的是非常巧妙。
3.网络连通性检测
没错,这是nc命令最常用的地方了。
如果你想要判断服务器的tomcat端口是否开启,不需要登陆到服务器上,然后再ps一下看一下进程,或者使用netstat -antl看一下监听的端口。
使用nc就可以了。
只需要简单的打上ip和端口,它就能知道结果。
# nc -vvv baidu.com 443
Connection to baidu.com port 443 [tcp/https] succeeded!
当然,它也可以扫描主机的端口开放情况。不过对程序员来说用的不多。
nc -vzw 2 192.16.1.54 8888-99994.防火墙穿透
比如下面这张图。你想要访问tongariro的这台机器,但是你是没有权限的。它只能通过aoraki的防火墙访问。同时,aoraki也只能接受来自ruapehu的请求。
微信图片_20200902212605.jpg
通过组合ssh命令可以达到这个效果。
ssh -A -t ruapehu.example.com ssh -A -t aoraki ssh -A tongariro
通过ssh的ProxyCommand,可以完成简单的配置。
使用下面的命令可以快速打通这个通道。
ssh -oProxyCommand="ssh host1 nc host2 22" host25.其他
你可以看到了。nc的这些能力,不是nc自身提供的,而是其他额外的命令。
比如,这里实现一个简单的时间服务器。web浏览器访问即可获取。
ncat -lkp 8976 --sh-exec 'echo -ne "HTTP/1.0 200 OK\r\n\r\nThe date is "; date;'
再比如,做一个远程视频服务。
微信图片_20200902212611.gif
服务端。
arecord -f cd -c 2 | lame -b128 - - | netcat -u your-ip 6881 | mpg123 -
客户端。
arecord -f cd -c 2 | lame -b128 - - | netcat -u -l 6881 | mpg123 -****
收藏 评论0 发布时间:2020-9-2 21:27

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版