前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件上传-文件名长度绕过白名单限制[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-11-03 10:17:15
2.7K0
发布2022-11-03 10:17:15
举报
文章被收录于专栏:全栈程序员必看

  在实际***中,当我们发现有文件上传的地方时,我们会尽可能地尝试所有的办法进行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.cn/180140.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单检查是什么限制
  • 根据限制类型进行尝试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档