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

    文件上传漏洞是用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。

    绕过方法:

    绕过服务端检测:

    服务端的代码常检测request包中的三个点:MIME类型、文件后缀、文件内容。

    • 绕过MIME类型检测

             原理:检测图片类型文件上传过程中http包的Content-type字段的值,来判断上传文件是否合法。

             绕过方法:用burpsuite截取并修改数据包中文件的content-type类型,或者用大小写进行绕过;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    text/plain(纯文本)
    text/html(HTML文档)
    text/javascript(js代码)
    application/xhtml+xml(XHTML文档)
    image/gif(GIF图像)
    image/jpeg(JPEG图像)
    image/png(PNG图像)
    video/mpeg(MPEG动画)
    application/octet-stream(二进制数据)
    application/pdf(PDF文档)
    application/(编程语言) 该种语言的代码
    application/msword(Microsoft Word文件)
    message/rfc822(RFC 822形式)
    multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)
    application/x-www-form-urlencoded(POST方法提交的表单)
    multipart/form-data(POST提交时伴随文件上传的表单)

    不完善的黑名单扩展名:

    文件扩展名在黑名单中为不合法,一般有个专门的blacklist文件,里面会包含常见的危险脚本文件。

    绕过方法:

    • 后缀大小写绕过:在对后缀的判断中,如果只是对字符串进行单独的比较来判断是不是限制文件,可以采用后缀名大小写绕过形式。
    • 空格绕过:如果黑名单没有对后缀名进行去空处理,可以通过在后缀名后加空格进行绕过。
    • 双写绕过:如果黑名单是将问题后缀名替换为空,可以利用双写绕过。
     
    php2, php3, php4, php5, phps, pht, phtm, phtml

    绕过中间件检测:

    iis解析漏洞
    1 目录解析
    以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
    2 文件解析
    *.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
    IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx
    3 默认解析
    .asp .aspx .ashx .asa .cer这是系统默默认的后缀名
    Apache解析漏洞

    漏洞原理:Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php。

    nginx解析漏洞
    开启cgi:SCRIPT_NAME FASTCGI:
    www.xx.com/a.jpg/.php(任何不存在文件)-----可以解析为.php文件
    a.jpg:<?php phpinfo();?>
    a.php%00.jpg----解析为a.php

    配置问题导致漏洞:

    1.如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。

    2.如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。

    3.修复漏洞方法
    1.apache配置文件,禁止.php.这样的文件执行,配置文件里面加入

    1
    2
    3
    4
    <Files ~ “.(php.|php3.)”>
    Order Allow,Deny
    Deny from all
    </Files>
  • 相关阅读:
    leetcode 309. Best Time to Buy and Sell Stock with Cooldown
    leetcode 714. Best Time to Buy and Sell Stock with Transaction Fee
    leetcode 32. Longest Valid Parentheses
    leetcode 224. Basic Calculator
    leetcode 540. Single Element in a Sorted Array
    leetcode 109. Convert Sorted List to Binary Search Tree
    leetcode 3. Longest Substring Without Repeating Characters
    leetcode 84. Largest Rectangle in Histogram
    leetcode 338. Counting Bits
    git教程之回到过去,版本对比
  • 原文地址:https://www.cnblogs.com/lzkalislw/p/15496017.html
Copyright © 2011-2022 走看看