IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 【文件上传绕过】——解析漏洞_apache解析漏洞 -> 正文阅读

[PHP知识库]【文件上传绕过】——解析漏洞_apache解析漏洞

一、实验目的:

1、通过本次实验掌握apache解析漏洞原理。
2、通过upload-labs-master闯关游戏Pass-04,掌握apache解析漏洞技术。

二、工具:

火狐/谷歌浏览器

三、实验环境:

靶?机: windows10虚拟机:192.168.15.133
??????upload-labs-master闯关游戏
??????phpstudy2013搭建网站
??????Apache服务器(wamp2.0

攻击机: 物理机

四、Apache 解析漏洞:

1.?漏洞原理:

??Apache 解析文件的规则是从右到左开始判断解析,如果后缀名不可识别文件解析,就再往左判断。比如test.php.a.b的“.a”和“.b”这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php

2.?影响版本:

apache 1.x
apache 2.2.x

查看apache版本
打开服务器的Apache\bin目录,复制目录地址:

进入命令行,切换到D:盘,cd到上面复制的路径下,输入下面命令:

命令:

httpd -v  //查看apache版本信息

3.?实验过程:

3.1?模拟实验:

1、在www目录下创建名为1.php.a.b的文件:
内容为:

<?php phpinfo();?>



2、然后在浏览器中打开此文件,成果展示:

3.2?upload-labs闯关游戏(Pass-04):

页面源码:

$is_upload = false;
$msg = null;  //判断文件上传操作
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) { //检查服务器上传目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。
        $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);//去除字符串::$DATA
        $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 . '文件夹不存在,请手工创建!';
    }
}

代码处理流程:声明一个数组,里面存放着文件上传的后缀名黑名单-->获得上传文件的后缀名,并移除两端空白字符-->删除文件名末尾的点-->截取文件后缀名-->所有的字符转换为小写-->去除字符串::$DATA-->首尾去空-->进行判断,如果不在黑名单里面就获取图片的临时存储路径-->重构文件路径和文件名-->对文件进行转存
1、上传上面创建的1.php.a.b文件到服务器,并复制图片链接,进行访问:

2、通过访问,发现1.php.a.b文件可以被解析为php脚本文件:

五、其余配置问题导致的漏洞:

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

修改配置文件:
2、在红框中加入AddHandler php5-script .php
3、重启phpstudy:

2、如果在 Apacheconf里有这样一行配置AddType application/x-httpd-php .jpg即使扩展名是jpg一样能以php方式执行。
在红框中加入AddType application/x-httpd-php .jpg
在这里插入图片描述3、重启phpstudy:

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 22:55:21  更:2021-07-22 22:55:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/5 20:52:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码