1 概念

上传文件时,服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器。

2 危害

• 网站被控制,对文件增删改查,执行命令,链接数据库

• 如果服务器长久未更新,可以利用exp提权,导致服务器沦陷

• 同服务器的其他网站沦陷

3 导致漏洞原因

·服务器配置不当(iis6.0 put 直接写文件)

·本地文件上传限制被绕过(js验证)

·服务端过滤不严格被绕过(禁止php等,未禁php3、asa、cer、cdx等)

·文件路径截断(0x00、\0、?等字符,超长文件路径)

·文件解析漏洞到导致文件执行(iss,apache,nginx)

·开源编辑器上传文件漏洞(fckeditor自定义文件名、文件夹结合IIS6.0解析漏洞,ewebeditor可登陆后台配置上传文件类型)

4 利用条件

1、有文件上传功能   2、上传文件能够执行   3、上传文件路径可知

5 利用方法

• 找到上传点,尝试上传脚本文件

• 上传成功,访问上传的脚本文件

• 上传失败,采取过滤绕过方法

6 利用步骤

思路:

·什么语言?什么容器?什么系统?都是什么版本?

·都可以上传什么格式的文件?

·上传大的文件会不会重命名或者二次渲染?

6.1 客户端校验

js校验

浏览器审查元素,删除οnsubmit="return checkFile()"校验;

或 将上传马的类型改为指定类型,burp抓包后改回脚本类型上传

6.2 服务器检测

6.2.1 MIME检测(Content-type内容)

Burp suite 抓包,修改content-type为image/jpeg、image/gif、image/png或image/bmp

6.2.2 目录路径检测(path 参数相关内容)

00截断:

Currentfolder=xxx.php%00.gif

(原因:低层调用类似C语言,遇到0x00会自动截断)

6.2.3 文件扩展名检测(extension 相关内容)

黑名单机制

a)     大小写绕过

b)     名单列表绕过

asa、cer等后缀名可能黑名单没有列出

c)     特殊文件名

(windows中)burp抓包修改为test.asp.或test.asp_(下划线为空格),绕过验证,被windows系统自动去掉点和空格。

d)     0x00截断绕过

gettype(name)函数处理方式从后往前扫描扩展名,将test.asp .jsp(asp后面为0x00)识别为jpg

e)     .htaccess文件攻击

上传.htaccess文件,内容如下

SetHandler application/x-httpd-php

上传文件名为haha的任意名的PHP木马,菜刀链接即可

(通过一个.htaccess 文件调用php 的解析器去解析一个文件名中只要包含"haha"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以php 的方式来解)

f)      解析调用

接配合上传一个代码注入过的非黑名单文件即可,再利用解析调用/漏洞

g)     构造包含脚本的图片

方法1:桌面cmd命令下,执行copy 0000.png/b + hack.php/a hack.jpg

方法2:文件所在目录cmd命令下,执行 copy /b 0000.png + hack.php=hack.jpg

白名单机制

0x00 截断绕过

常见asp 的程序。用像test.asp%00.jpg 的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑漏洞进行攻击。

Iiis6.0中将木马名改为test.asp;1.jpg上传绕过。

6.2.4 文件内容检测(检测内容是否合法或含有恶意代码)

代码层检验最后一关

6.2.5 文件幻数检测

jpg文件开头写上JFIF FF D8 FF E0 00 10 4A 46 49 46   后加一句话木马

gif文件开头写上GIF 89a 47 49 46 38 39 61   后加一句话木马

png文件开头写上PNG 89 50 4E 47   后加一句话木马

6.2.6 文件相关信息检测

图像文件相关信息检测常用getimagesize()函数。需要把文件头部分伪造好,即在幻数的基础上还加了一些文件信息

类似如下结构

GIF89a

(...some binary data for image...)

(... skipping the rest of binary data ...)

6.2.7 文件加载检测

一般是调用API 或函数去进行文件加载测试

常见的是图像渲染测试,更严格的是进行二次渲染

6.3 web应用程序解析漏洞攻击

6.3.1 Apache解析漏洞

Apache解析文件名从后往前。

一个文件名为x1.x2.x3 的文件,Apache 会从x3 往x1 开始尝试解析如果x3 不属于Apache 能解析的扩展名,会尝试去解析x2 ,一直往前尝试,直到遇到一个能解析的扩展名为止。

可能影响的版本:

6.3.2 IIS解析漏洞

IIS6.0

目录名包含".asp"字符串,目录下所有文件都按照asp解析

只要文件名包含".asp",会有限按照asp解析

常见名称格式:

test.asp/任意文件名、test.asp;任意文件名、任意名/任意名.php

IIS7.0/7.5

对任意文件名只要在URL后追加字符串"/任意文件名.php"就会按照php方式解析。

6.3.3 Nginx解析漏洞

任意文件名,后面/加任意文件名.php解析攻击

低版本nginx,在任意文件名后面加%00.php解析攻击

已测试的影响范围:

Nginx 0.5.*、nginx 0.6.*、nginx 0.7<=0.7.65、nginx 0.8 <=0.8.37

6.4 小结

7 防御方法

• 上传文件的存储目录不给执行权限

• 文件后缀白名单,注意0x00截断攻击(PHP更新到最新版本)

• 不能有本地文件包含漏洞(include dama.jpg)

• 及时更新web应用软件避免解析漏洞攻击

nginx 上传文件漏洞_文件上传漏洞小结相关推荐

  1. nginx 上传文件漏洞_文件上传及解析漏洞

    注:本文仅供学习参考 文件上传定义: 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等. 这种攻击方式是最为直接和有效的, ...

  2. nginx 上传文件漏洞_文件上传漏洞,解析漏洞总结

    文件上传漏洞.解析漏洞总结 1.文件上传漏洞是什么 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.常见场景是web服务器允许用户上传图片或者普通文本文件 ...

  3. java 文件上传漏洞_文件上传漏洞(绕过姿势)

    文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识.俗话说,知己知彼方能百战不殆,因此 ...

  4. php post 漏洞_文件包含上传漏洞目录遍历命令执行漏洞

    制丨阿星 来源丨freebuff 作者丨Deutsh 文件上传漏洞: 一句话木马 一句话木马主要由两部分组成:执行函数与 接收被执行代码的变量 执行函数: eval() assert() create ...

  5. java 文件上传漏洞_文件上传漏洞(File Upload)

    简介 File Upload,即文件上传漏洞,通常是由于对用户上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马,病毒,恶意脚本等获取服务器的webshell权限,并进而攻击控制 ...

  6. 利用mysql实现上传和下载_文件上传表单 上传文件的细节 文件上传下载和数据库结合...

    1 文件上传表单 1)上传文件的本质是文本复制的过程 2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写 3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如: IE6 ...

  7. ftp 上传文件夹_建站上传下载FTP工具

    做网站的朋友,经常要在本地和服务器之间上传下载源码,给大家推荐两款好用的FTP上传下载工具,便于大家开发维护站点. 一.FileZilla FileZilla比其他任何一款FTP软件都要简单 多协议支 ...

  8. idea没有out文件夹_史上最详细没有之一的 Java JNI傻瓜级入门教程

    本文使用java的IDEA和visual studio2017来详细的一步一步演示java的JNI构建过程(eclipse+vs2017的教程在文末) 1.打开java的IDEA,file->n ...

  9. du -sh 如何找到最大的文件夹_线上故障如何快速排查?来看这套技巧大全

    简介:有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从服务器.Java应用.数据库.Redis.网络和业务六个层面分享线上故障排查的思路和技巧.较长,同学们可收藏后再看. 前言 线 ...

最新文章

  1. 使用pytorch将数据集分成一份一份的
  2. 初探swift语言的学习笔记五(线程)
  3. c++:结构体的应用
  4. span里面插入文字
  5. ajax 页面无刷新,Ajax的页面无刷新实现详解(附代码)
  6. Asterisk SIP连通测试(X-Lite eyebeam)
  7. oom 如何避免 高并发_如何设计这样一个高并发系统?
  8. Linux软件安装为什么名字不一样
  9. 初学者python笔记(字符串用法解析)
  10. 【转】Oracle当中扫描数据的方法
  11. 主板9针DB9串口插针、主板串口挡板延长线针脚定义
  12. iOS:fishhook原理分析
  13. LINUX分辨率修改
  14. [SQL]SQL server 常用代码
  15. 2022年低压电工考试及低压电工模拟考试题库
  16. 特来电支付中心总体介绍
  17. Total Variation
  18. Lotka–Volterra equation Competitive Lotka–Volterra equations
  19. 换个角度看“量子技术”,它离我们可能不再遥远
  20. 大数据学习路线-入门精简

热门文章

  1. html 图片的过渡效果,3个CSS3图片过渡动画特效
  2. 2023全国安全生产合格证其他生产经营单位主要负责人模拟一[安考星]
  3. 跟我学Android之一 概述
  4. 全球市场动荡持续,澳元和液化天然气(LNG)价格跌至近11年最低水平
  5. Airtest IDE 自动化测试15 - 如何让 Airtest 启动指定包名(start_app)
  6. 左右无缝轮播html,JS实现左右无缝轮播图代码
  7. 芭芭拉--金字塔原理——读后感
  8. 等级保护安全要求:二、三、四级内容及对比
  9. idea中web文件没有小蓝点问题解决
  10. JavaScript 循环控制语句