zoukankan      html  css  js  c++  java
  • OWASP Top 10之文件上传漏洞简析(二)

    0x01.

    在问题一(详见上文)中,获取文件后缀名$file_type = $_FIELS['file']['type'],通过和白名单比较,假如相同,则取上传文件的后缀名。上文说过,MIME头欺骗问题(这里不考虑重命名文件名问题),如果上传数据包修改Content-type的类型,$file_type就获取修改后文件类型。

    如:上传1.php=>burpsuite拦截修改数据包中的Content-Type为:image/jpg=>$file_type="image/jpg",$file_name="1.php"。

    1.GIF89a文件头绕过,程序规定只能上传gif文件,由于获取文件类型也是通过$file_type获取,程序判断上传文件头部信息是否符合白名单类型。

    伪代码:$filetype = fileHeaderRead($uploadFile);if $fileType =='GIF89a' echo 'upload success';

    修改上传webshell里的头部信息,由于GIF代码头部信息是GIF89a,所以webshell里代码:GIF89a<?php code?>

    2.黑名单绕过

    事先规定不允许上传的类型列表,asp|aspx|jsp|php|asa|....

    加入上传shell.cer,或者大小写绕过,shell.Asp/shell.pHp....

    3.后缀名解析漏洞

    IIS6.0/Apache/Nginx(php-fpm)

    常见shell.asp;.jpg,/shell.asp/shell.jpg,shell.php.xxx(apache从右往左解析,不识别,跳到下一个解析)

    4.0x00截断

    上传shell.php.jpg=>burpsuite拦截,在.php后加空格,在十六进制,对应的0x20修改为0x00(空),程序在处理这个文件名时,直接丢弃后面的.jpg,保存的文件名为shell.php

    5.apache重写文件.htaccess。move_uploaded_file()函数,在移动文件时,如果文件存在,新文件直接覆盖旧文件。

  • 相关阅读:
    SDN第三次作业
    SDN第二次上机作业
    SDN第二次作业
    第七次作业之总结篇
    第八次_计算器重构
    第六次作业之计算器图形界面化
    C++课程 second work _1025
    第五次作业--计算器项目之学习文件读取方式
    C++课程 first work
    第四次作业-计算功能的实现
  • 原文地址:https://www.cnblogs.com/developd/p/4666030.html
Copyright © 2011-2022 走看看