用户
搜索

[思路/技术] 文件上传总结

  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 248 天

    连续签到: 3 天

    [LV.8]以坛为家I

    i春秋-白帽高手

    Learning To Change The Life

    Rank: 6Rank: 6

    51

    主题

    873

    帖子

    655

    魔法币
    收听
    5
    粉丝
    4
    注册时间
    2016-6-15

    核心白帽积极活跃奖白帽高手春秋游侠幽默灌水王秦楚燕突出贡献魏

    发表于 2019-4-9 16:06:24 71280
    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_filesection,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 4649 46
    GIF : 47 49 46 38 39 61(GIF89a)
    PNG: 89 50 4E 47


    • 文件相关信息检测

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

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

    <?phpphpinfo();?>

    • 文件加载检测

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

    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种是因为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解析漏洞


    • 解析:
    • 任意文件名/任意文件名.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

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

    2.  xx.jpg%00.php


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

    nginx0.5.* [Success]
    nginx0.6.* [Success]
    nginx0.7 <= 0.7.65 [Success]
    nginx0.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

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

    评分

    参与人数 1魔法币 +5 收起 理由
    zzconfig + 5 很好

    查看全部评分

    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    发表于 2019-4-10 09:52:43
    感谢感谢,看了您的文章终于把.htaccess 文件攻击给弄明白了
    使用道具 举报 回复
    发表于 2019-4-10 10:53:43
    之前就有人发过pdf
    使用道具 举报 回复
    顶顶一下
    使用道具 举报 回复
    发表于 2019-4-10 16:06:18

    之前就有人发过pdf
    使用道具 举报 回复
    发表于 2019-4-10 16:45:52
    还是很厉害的 很多资深想不到
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫流光 这个网络他曾来过。
    使用道具 举报 回复
    发表于 2019-4-11 18:33:46
    感谢感谢,新手来学习一下
    使用道具 举报 回复
    感谢分享
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册