文件上传-文件名长度绕过白名单限制[通俗易懂]

文件上传-文件名长度绕过白名单限制[通俗易懂]  在实际***中,当我们发现有文件上传的地方时,我们会尽可能地尝试所有的办法进行webshell的上传,只要能上传webshell,就说明本次***至少成功了一半,后续就看获得的webshell的权限情况进行下一步的操作。对于文件上传漏洞的防护来说,主要分为以下两类:白名单限制和黑名单限制,对于黑名单的限制,我们只需要寻找一些较为偏僻的可执行后缀、大小写混写以及相关操作系统的特性(如windo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  在实际***中,当我们发现有文件上传的地方时,我们会尽可能地尝试所有的办法进行webshell的上传,只要能上传webshell,就说明本次***至少成功了一半,后续就看获得的webshell的权限情况进行下一步的操作。对于文件上传漏洞的防护来说,主要分为以下两类:白名单限制和黑名单限制,对于黑名单的限制,我们只需要寻找一些较为偏僻的可执行后缀、大小写混写以及相关操作系统的特性(如windows文件名后缀的最后会自动过滤空格以及.等)来进行绕过;对于白名单的限制来说,一般是结合解析漏洞、代码函数漏洞(icov(80-EF截断),造成00截断的相关函数)以及相关操作系统特性(如windows10文件名长度总共为223包括后缀,win2012的为237,linux ubuntu0.16.04.1文件名长度252等)来进行绕过!下面我们将以ubuntu0.16.04.1操作系统作为演示情况!


简单检查是什么限制

  首先我们输入php后缀进行测试,发现提示错误的文件后缀,如下图所示:
文件上传-文件名长度绕过白名单限制
  接着我们输入一个不存在的文件后缀进行测试,发现依旧提示是错误的后缀,如下图所示,到此我们可以简单认为本上传点是白名单限制上传,只允许特定后缀文件上传!
文件上传-文件名长度绕过白名单限制

根据限制类型进行尝试

  通过上面我们知道是白名单限制,并且通过前期信息收集发现webserver为Nginx,操作系统为linux(ubuntu),通过Nginx解析漏洞无法进行上传,所以我们使用构造超长文件名进行绕过本次的白名单限制上传。
  由于很多时候我们不知道具体的操作系统,所以我们只能使用很长文件名进行测试(如果有报错信息提示我们就可以慢慢构造出来,如果没有报错信息就只能慢慢尝试(可以自己先搭建一些常见的系统【win03 win08 win12 ubuntu redhat等】进行测试文件名长度为多少来进行逐一测试))。
  首先进行尝试超长字符,提示文件名过长,如下图所示,然后我们进行逐个递减,减到一个刚好能成功上传的地方。
文件上传-文件名长度绕过白名单限制
  通过最后得知,最长为252,如下图所示:
文件上传-文件名长度绕过白名单限制
  最后我们将jpg后缀前面的文件名末尾更换为.php来进行文件上传,文件上传成功,如下图所示:
文件上传-文件名长度绕过白名单限制
  最后我们通过访问进行验证是否可以正常解析该文件,从而获取webshell,通过访问可知,成功获取webshell,如下图所示:
文件上传-文件名长度绕过白名单限制

关于其他文件解析及上传参考此处

转载于:https://blog.51cto.com/eth10/2103563

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180140.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前端开发技术(vscode怎么下载)

    前言   在前端开发中,有一个非常好用的工具,VisualStudioCode,简称VScode。   都不用我安利VScode,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VScode比德芙还丝滑的强大功能所折服。   我是来给大家安利插件的,想做个比较全面的插件集合给大家。网上的我也看过一些,但是都比较零散,时间也久了一些,我结合最近的情况,总结一下,造福大家,才是我…

    2022年4月10日
    52
  • mybatis2级缓存_java二级缓存

    mybatis2级缓存_java二级缓存1.概述转载:MyBatis二级缓存全详解上一篇文章中我们介绍到了MyBatis一级缓存其实就是SqlSession级别的缓存,什么是SqlSession级别的缓存呢?一级缓存的本质是什么呢?以及一级缓存失效的原因?我希望你在看下文之前能够回想起来这些内容。MyBatis一级缓存最大的共享范围就是一个SqlSession内部,那么如果多个SqlSession需要共享缓存,则需要开启二级缓存,开启二级缓存后,会使用CachingExecutor装饰Executor,进入一.

    2022年9月20日
    0
  • 【OpenGrok代码搜索引擎】一、OpenGrok简介

    【OpenGrok代码搜索引擎】一、OpenGrok简介OpenGrok是一个快速的、非常有用的代码搜索和交叉引用引擎。它由Java语言编写而成。它可以帮助你快速的搜索,交叉引用和索引你的代码树。它可以很好的识别多种应用程序文件格式和代码版本控制工具。

    2022年4月30日
    43
  • Ubuntu20.04安装详细图文教程(双系统)[通俗易懂]

    Ubuntu20.04安装详细图文教程(双系统)[通俗易懂]Ubuntu安装前言最近想把自己开发环境换成linux的,想了一下还是ubuntu比较面向桌面,而且想熟悉使用一下Linux操作系统,决定使用ubuntu。开始了着手查找安装Ubuntu双系统的方法。安装有三种,虚拟机安装、wubi安装和U盘安装。第一种发挥不出硬件本身的性能,尝鲜还行。使用wubi–就是ubuntu提供的一种简便的安装系统方法,但是当时使用一直出错。所以我用了第三种,就出现了这篇博客。一、需要资源U盘一个(提前备份数据)Ubuntu20.04LTS镜像下载地址:清华源

    2022年5月16日
    67
  • Python正则表达式,这一篇就够了!

    Python正则表达式,这一篇就够了!之前我们讲解了正则表达式的起源、发展、流派、语法、引擎、优化等相关知识,今天我们主要来学习一下正则表达式在Python语言中的应用!大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习Python中关于正则表达式的函数。一、re模块聊到Python正则表达式的支持,首先肯定会想到re库,这是一个Python处…

    2022年5月6日
    63
  • css图片居中(水平居中和垂直居中)

    css图片居中(水平居中和垂直居中)css 图片居中 水平居中和垂直居中 css 图片居中分 css 图片水平居中和垂直居中两种情况 有时候还需要图片同时水平垂直居中 下面分几种居中情况分别介绍 css 图片水平居中利用 margin 0auto 实现图片水平居中利用 margin 0auto 实现图片居中就是在图片上加上 css 样式 margin 0auto 如下 divstyle text align center width 500px border greensolid1p divstyle text align center width 500px border greensolid1p

    2025年6月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号