滲透測試從RCE到SSH登錄
前言
在滲透測試中,拿到 webshell 后執行命令總會碰到很多不便,而使用 ssh 登錄則會方便許多。
相比使用 webshell 工具執行命令,ssh 連接可以有命令提示、路徑補全、支持二次交互等優勢,本文記錄一個從 WEB RCE 漏洞到 SSH 登錄的姿勢。
過程
首先通過 Shiro 550 得到一個 shell

因為網站不出網,所以不能直接反彈 shell,通過 base64 寫入 webshell 到 web 目錄
echo |base64 -d > webapps/uploadImg/shell.jsp;ls -lah
架設代理
網站不出網,所以需要架設 socks 代理訪問 ssh 端口及內網主機,這里使用 Neo-reGeorg。
首次使用,先生成自己密碼的 neoreg 服務端代碼
python3 neoreg.py generate -k <your-password>
執行后在 neoreg_servers 找到對應服務端語言的文件,這里是 tunnel.jsp,然后通過上面的 shell 上傳到目標服務器 web 目錄上,再通過 neoreg 連接
python3 neoreg.py -k -u https://xxx.com/uploadImg/tunnel.jsp --skip -l 0.0.0.0 -p 30080 # -k 指定連接密碼,就是生成時用的密碼 # -u tunnel.jsp 的url # --skip 忽略https證書錯誤 # -l 本地socks服務監聽ip # -p 本地socks服務監聽端口
寫入 ssh 公鑰
為了盡量少修改服務器配置,通過寫入 ssh 公鑰可以不修改密碼或者破解密碼的情況下連接上 ssh。
這里使用xshell生成秘鑰,默認選項生成就可以了,shell會自動保存秘鑰對,當然使用ssh-keygen也是可以的

然后把生成的公鑰文件,復制到目標主機的 ~/.ssh/authorized_keys 文件中,如果不存在可以創建

連接 ssh
配置 ssh 連接 127.0.0.2

配置用戶名及公鑰連接,公鑰選擇前面生成那個

配置代理,使用上面 neoreg 構建的代理

成功連接 ssh

為什么連接 127.0.0.2
經過實踐發現,通過代理連接目標主機的內網 ip 172.xx.xx.33 連接不上,而連接 127.0.0.1 時則提示主機指紋改變的問題,需要重新寫入指紋到目標主機才能連接,然而非 root 用戶無法寫入,連接 127.0.0.2 則完美避開問題
