【零基础学渗透】文件上传漏洞的常见方式汇总

【零基础学渗透】文件上传漏洞的常见方式汇总

相关阅读

往期内容

学习路径

文件上传漏洞基础

你需要掌握文件上传漏洞的成因及危害

文件上传漏洞绕过方式

  • 前台JS验证审计+绕过
  • content-type验证审计+绕过
  • phtml绕过
  • 覆盖 htaccess绕过
  • 大小写绕过
  • 后缀加空格绕过
  • 后缀加点绕过
  • 后缀加–$DATA绕过
  • 后缀..绕过
  • 双写绕过
  • GET00截断绕过
  • POST00截断绕过
  • 图片马绕过
  • exif_imagetype绕过
  • 图像二次渲染绕过
  • 条件竞争绕过
  • 条件竞争和解析漏洞绕过
  • 数组配合windows特性绕过

视频讲解

学习笔记

文件上传漏洞成因及危害

Web应用程序通常会有文件上传功能,例如论坛的附件上传,上传图片/头像/Zip压缩包等,只要被Web应用程序允许上传文件,就可能存在文件上传漏洞。在不对被上传的文件进行限制/过滤或者限制被绕过,从而上传恶意文件、可执行脚本到服务器上,进一步导致服务器沦陷

如何确认Web应用程序是否存在上传漏洞呢?例如论坛由PHP开发,用户可上传头像,也就是图片文件,但是没有对图片格式进行验证,比如能上传.php文件,这就是一个上传漏洞,上传的文件被当做脚本成功解析,就代表有上传漏洞。

文件上传漏洞成因

  1. 服务器配置不当 在不需要上传文件的情况下可导致任意文件上传,参考HTTP请求方法PUT
  2. 本地文件上传被绕过 只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改上传时发送的数据包就可以轻松绕过上传限制 a.抓包看,禁用JS插件(这个插件用作文件上传本地验证),现上传一个恶意文件,如果是本地限制,执行过滤的就是浏览器的js插件,禁用后就能上传恶意文件 b.如果是服务器限制,先把恶意文件传给服务器,然后服务器再返回过滤结果,这个时候单单禁用本地的js插件没什么用
  3. 过滤不严或被绕过 有些网站使用上传黑名单过滤掉一些可执行文件脚本的后缀,但是黑名单不全或者被绕过,也可导致恶意文件上传。如果使用白名单,仅允许名单内所包含的文件格式上传会更加安全。
  4. 文件解析漏洞导致文件执行
  5. 路径截断

文件解析漏洞

解析漏洞是指web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。该漏洞一般配合服务器的文件上传功能使用,以获取服务器的权限。

例如xxx.php.jpg看似是图片文件,实际解析被当做php文件

路径截断

上传的文件中使用一些特殊的符号,文件被上传到服务器时路径被这些符号截断,从而控制文件上传的路径。常见截断字符 \0 ? %00

例如xxx.php%00xx.jpg

IIS 5.x/6.0解析漏洞

目录解析

文件夹名称中带有.asp .asa等可执行脚本文件的后缀,其目录内(这个文件夹内)的任何扩展名的文件都会被IIS当做可执行文件解析并执行

例如:www.xxx.com/xx.asp/123.jpg

文件解析

IIS6.0下,分号;后面的不被解析

例如:www.xx.com/123.asp;jpg,实际被当做asp文件解析。6.0默认可执行后缀asp、asa、cer、cdx

IIS7.0/7.2/Nginx0.8.3以下版本畸形解析漏洞

在默认开启Fast-CGI情况下,访问http://www.xxx.com/xx.jpg/.php,被当做php解析

Apache解析漏洞

Apache对文件解析从右往左,如果遇到不可识别的后缀,再从左向右判断

例如xx.php.owf.rar,因无法解析rar和owf,就会从左开始,当做php文件

文件上传漏洞危害

上传漏洞与SQL注入或 XSS相比,其风险更大,如果 Web应用程序存在上传漏洞,攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。如果上传的文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为。

如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。甚至攻击者可以直接上传一个webshell到服务器上 完全控制系统或致使系统瘫痪。

uploads靶场学习

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。

温馨提示

1、每一关没有固定的通关方法,大家不要自限思维!

2、本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路。

3、实在没有思路时,可以点击查看提示。

4、如果黑盒情况下,实在做不出,可以点击查看源码。

图片[1]-【零基础学渗透】文件上传漏洞的常见方式汇总-FancyPig's blog

如何判断上传漏洞类型?

图片[2]-【零基础学渗透】文件上传漏洞的常见方式汇总-FancyPig's blog

靶场搭建

配置项配置描述
操作系统Window or Linux推荐使用Windows,除了Pass-19必须在linux下,其余Pass都可以在Windows上运行
PHP版本推荐5.2.17其他版本可能会导致部分Pass无法突破
PHP组件php_gd2,php_exif部分Pass依赖这两个组件
中间件设置Apache以moudel方式连接

靶场下载地址:https://github.com/c0ny1/upload-labs

Pass1:前台JS验证审计+绕过

Pass2:绕过content-type

知识补充:Apache文件名解析漏洞

知识补充:Apache其他解析漏洞(含Pass3:黑名单过滤绕过)

知识补充:IIS和nginx解析漏洞

Pass4:覆盖 htaccess绕过

Pass5:点空格点绕过

Pass6:大小写绕过

Pass7:后缀名加空格绕过

Pass8:后缀加点绕过

Pass9:$DATA绕过

Pass10:点空格点绕过(与Pass5方法类似)

Pass11:双写绕过

Pass12:GET00截断绕过

Pass13:POST00截断绕过

Pass14:图片马绕过

Pass15:getimagesize()绕过

Pass16:exif_imagetype绕过

Pass17:图片二次渲染绕过

Pass18:条件竞争绕过

Pass19:条件竞争绕过

Pass20:%00绕过

Pass21:MIME、数组、%00绕过

知识补充:IIS解析漏洞

© 版权声明
THE END
喜欢就支持一下吧
点赞29 分享
评论 共145条

请登录后发表评论