当前位置: 首页 > article >正文

文件上传漏洞-通过.htaccess文件绕过

1.原理:

.htaccess 文件是 Apache Web服务器中用于配置目录级别指令的配置文件。通过这个文件,网站管理员可以进行各种配置,例如重定向、访问控制、URL重写等。然而,在某些情况下,恶意用户可能会尝试利用 .htaccess 文件中的配置来绕过安全限制。优先级较高,一般是修改后立刻生效。

2.这里以upload-labs(less-4)为例,我们先来看看靶场的源代码

$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",".ini");
        $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);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

可以知道这里把我们上一篇文章的等价文件名基本都加入到了黑名单里,这时候我们就可以先上传一个 .htaccess,因为他没有在黑马单里可以随便上传,代码如下,解析:

  • AddType 是一个指令,用于告诉 Apache 如何处理特定扩展名的文件。
  • application/x-httped-php 是要指定的 MIME 类型,表示这些文件将使用 PHP解析。
  • .txt 和 .jpg 是要应用此 MIME 类型的文件扩展名。

这条指令的作用是告诉 Apache服务器,将所有以 .txt 和 .jpg结尾的文件都当作 PHP 脚本来处理,而不是作为普通文本文件或图像文件。这意味着,即使它们有文本或影像文件的扩展名,服务器将尝试执行其中的 PHP代码。

AddType application/x-httped-php .txt .jpg

3.先将.htaccess上传上去,然后再打开抓包上传木马文件(1.php),然后将名字修改成1.jpg,因为刚刚的.htaccess已经上传到服务器,告诉服务器.jpg文件可以当作.php文件执行

上传成功接下来用蚁剑链接即可


http://www.kler.cn/a/375339.html

相关文章:

  • Python:入门基础
  • js动态修改样式(:root)
  • JAVA的设计模式都有那些
  • Linux RAID 技术详解:原理、配置、管理及故障处理
  • 苹果开发 IOS 证书生成步骤
  • centos7 安装python3.9.4,解决import ssl异常
  • Python-数据爬取(爬虫)
  • Web大型网站的性能测试要求和工具方法
  • Python数据分析入门知识基础和案例(万字长文)
  • Linux通过ifconfig命令ens33没有显示ip地址解决方式
  • select函数、I/O复用、并发服务器
  • 奥数与C++小学四年级(第十八题 小球重量)
  • 微服务基础-Ribbon
  • UE4安卓打aab包时,同时存在“gradle”、“arm64/gradle”两个Gradle工程的原因
  • Excel 单元格小数点精确位数机制
  • java随记
  • 基于深度学习的社交网络中的社区检测
  • Android启动流程_Zygote阶段
  • 音视频入门基础:FLV专题(18)——Audio Tag简介
  • Android面试八股文
  • 渗透测试练习题解析 7 (CTF web)
  • NVR监测软件/设备EasyNVR多品牌NVR管理工具/设备对城市安全有哪些具体益处?
  • 【JavaEE初阶】网络编程
  • NOIP 2024北京市报名通知
  • GPU 服务器厂家:中国加速计算服务器市场的前瞻洞察
  • Spring Cloud Function快速入门Demo