zoukankan      html  css  js  c++  java
  • 中间件-文件解析漏洞笔记(多用于文件上传漏洞)

    IIS解析漏洞

    1. 目录解析漏洞(/test.asp/1.jpg) ---------IIS5.x/6.0
    2. 文件名解析漏洞(test.asp;.jpg)---------IIS5.x/6.0
    3. 畸形解析漏洞(test.jpg/*.php)-----------IIS7.0
    4. 其他解析漏洞---------windows环境

    Ngnix解析漏洞

    1. 畸形解析漏洞(test.jpg/*.php)
    2. %00空字节代码解析漏洞
    3. CVE-2013-4547(%20%00)

    Apache解析漏洞

    1. 文件名解析漏洞
    2. .htaccess文件

    目录解析漏洞(/test.asp/1.jpg)

    IIS5.x/6.0 中,在网站下建立文件夹的名字为*.asp、*.asa、*.cer、*.cdx 的文件夹,那么其目录内的任何扩展名的文件都会被IIS当做asp文件来解释并执行。

    例如burpsuite抓包创建目录 test.asp,那么 /test.asp/1.jpg 将被当做asp文件来执行。假设黑客可以控制上传文件夹路径,就可以不管上传后你的图片改不改名都能拿shell

    文件名解析漏洞(test.asp;.jpg)

    IIS5.x/6.0 中, 分号后面的不被解析,也就是说 yu.asp;.jpg 会被服务器看成是yu.asp。还有IIS6.0默认的可执行文件除了asp还包含这两种 .asa   .cer 。

    而有些网站对用户上传的文件进行校验,只是校验其后缀名。所以我们只要上传 *.asp;.jpg、*.asa;.jpg、*.cer;.jpg 后缀的文件

    就可以通过服务器校验,并且服务器会把它当成asp文件执行。

    畸形解析漏洞(test.jpg/*.php)

    微软发布了IIS7.0修补了IIS6.0的解析漏洞,没想到IIS7.0爆出更严重的畸形解析漏洞,于是微软急忙发布了IIS7.5

    在 IIS7.0中,在默认Fast-CGI开启状况下,我们往图片里面写入下面的代码

    <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[x])?>')?>

    将文件保存成test.jpg格式,上传到服务器,假设上传路径为/upload,上传成功后,直接访问/upload/test.jpg/x.php,此时神奇的畸形解析开始发挥作用啦。test.jpg将会被服务器当成php文件执行,所以图片里面的代码就会被执行。我们会神奇的发现在 /upload 目录下创建了一个一句话木马文件 shell.php 。

    临时解决办法:设置 cgi.fix_pathinfo为0

    这个解析漏洞和下面讲的Nginx的解析漏洞是一样的。

    其他解析漏洞

    windows环境下,xx.jpg[空格]  或 xx.jpg.  这两类文件都是不允许存在的,若这样命名,windows会默认除去空格,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单。若上传成功,空格和点都会被windows自动消除。

    Ngnix解析漏洞

    畸形解析漏洞(test.jpg/*.php)

    漏洞原因:

    · php的配置文件 php.ini 文件中开启了 cgi.fix_pathinfo

    · /etc/php5/fpm/pool.d/www.conf中不正确的配置security.limit_extensions,导致允许将其他格式文件作为php解析执行

    nginx<0.8.03环境中,我们新建一个文件,内容为:<?php phpinfo() ?> ,然后将其名字修改为:  test.jpg

    在浏览器中访问http://192.168.10.139/test.jpg  显示图片解析错误。在浏览器中访问 http://192.168.10.139/test.jpg/test.php ,显示:Access denied.

    原因在于,Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php 后,一看后缀是.php,便认为该文件是php文件,于是转交给php去处理。php一看 /test.jpg/test.php 不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回  Access denied. 。

    %00空字节代码解析漏洞

    原理Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码

    在以下版本的nginx中,我们在图片中嵌入PHP代码然后通过访问 xxx.jpg%00.php 来执行其中的代码

    ·  Nginx 0.5.*

    ·  Nginx 0.6.*

    ·  Nginx 0.7 <= 0.7.65

    ·  Nginx 0.8 <= 0.8.37

    Apache解析漏洞

    .htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。

    通过 .htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、

    允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,

    该文件默认开启,启用和关闭在 httpd.conf 文件中配置。

     .htaccess 文件生效前提条件为

    · mod_rewrite 模块开启

    · AllowOverride All

    #1:这个.htaccess的意思就是把所有名字里面含有shell的文件当成php脚本来执行

    <FilesMatch   "shell"> 

    SetHandler  application/x-httpd-php 

    </FilesMatchc>

    #2:这里代码的意思可以让 .jpg后缀名文件格式的文件名以php格式解析

    AddType application/x-httpd-php .jpg

     这样就可以上传访问了

  • 相关阅读:
    Java StringTokenizer Example
    java 删除字符串中的特定字符
    [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
    Uniform resource name
    [Python]网络爬虫(一):抓取网页的含义和URL基本构成
    coco2dx 精灵类
    window和nodejs作用域区别(待续)
    ubuntu开机遇到-您的当前网络有.local域,我们不建议这样做而且这与AVAHI网络服务探测不兼容。该服务已被禁用
    ruby中的reject和reject!
    ruby中将数组转换成hash
  • 原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12534216.html
Copyright © 2011-2022 走看看