upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正

news2025/2/3 22:58:08

php任何后缀名解析

  • 背景:为了验证php解析不依靠后缀名,可以是任何后缀名,纠正upload-labs Pass-03(黑名单验证,特殊后缀)里所说的几个固定的后缀名理论是错误的。
  • 1 部署
    • 1.1 环境准备
      • 1.1.1 系统、内核(可以是任何系统)
      • 1.1.2 应用
    • 1.2 部署
      • 1.2.1 php部署连接如下
      • 1.2.2 nginx部署脚本如下:
      • 1.2.3 upload-labs部署
  • 2 验证php-fpm配置的后缀名是否生效

背景:为了验证php解析不依靠后缀名,可以是任何后缀名,纠正upload-labs Pass-03(黑名单验证,特殊后缀)里所说的几个固定的后缀名理论是错误的。

1 部署

1.1 环境准备

1.1.1 系统、内核(可以是任何系统)

 /etc/os-release
NAME="Fedora Linux"
VERSION="38 (Server Edition)"
ID=fedora
VERSION_ID=38
...
uname -a
Linux localhost.localdomain 6.6.7-100.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Dec 13 21:41:36 UTC 2023 x86_64 GNU/Linux

1.1.2 应用

php7.2 (可以是任意版本php,此次采用7.2是为了验证PHP远程代码执行漏洞复现CVE-2019-11043,结果没成功,原因是前端web应用我部署的是nginx,案例里docker容器里是Apache+php7.2)
相关连接:CVE-2019-11043

nginx (可以是任何版本nginx,预编译取消nginx用户是想验证默认编译好的user是否是nobody)

1.2 部署

1.2.1 php部署连接如下

编译安装 PHP 7.2.10

额外修改php-fpm内容如下:

security.limit_extensions = .php5 .phps .sy .php
加到配置最后即可,然后需要重启php-fpm

1.2.2 nginx部署脚本如下:

#!/bin/bash
#
#********************************************************************
#Author:                        Mr.Song
#QQ:                            1132197391
#Date:                          2020-12-01
#FileName:                     install_nginx.sh
#Description:          The test script
#Copyright (C):         2021 All rights reserved
#********************************************************************
SRC_DIR=/usr/local/src
NGINX_URL=http://nginx.org/download/
NGINX_FILE=nginx-1.25.1
#NGINX_FILE=nginx-1.18.0
TAR=.tar.gz
NGINX_INSTALL_DIR=/apps/nginx
CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`
. /etc/os-release

color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1" && $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "
    elif [ $2 = "failure" -o $2 = "1"  ] ;then
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo
}

os_type () {
   awk -F'[ "]' '/^NAME/{print $2}' /etc/os-release
}

os_version () {
   awk -F'"' '/^VERSION_ID/{print $2}' /etc/os-release
}

check () {
    [ -e ${NGINX_INSTALL_DIR} ] && { color "nginx 已安装,请卸载后再安装" 1; exit; }
    cd  ${SRC_DIR}
    if [  -e ${NGINX_FILE}${TAR} ];then
        color "相关文件已准备好" 0
    else
        color '开始下载 nginx 源码包' 0
        wget ${NGINX_URL}${NGINX_FILE}${TAR}
        [ $? -ne 0 ] && { color "下载 ${NGINX_FILE}${TAR}文件失败" 1; exit; }
    fi
}

install () {
    color "开始安装 nginx" 0
    if id nginx  &> /dev/null;then
        color "nginx 用户已存在" 1
    else
        #useradd -s /sbin/nologin -r  nginx
        color "创建 nginx 用户" 0
    fi
    color "开始安装 nginx 依赖包" 0
    if [ $ID == "centos" ] ;then
            if [[ $VERSION_ID =~ ^7 ]];then
            yum -y -q  install make gcc pcre-devel openssl-devel zlib-devel perl-ExtUtils-Embed
                elif [[ $VERSION_ID =~ ^8 ]];then
            yum -y -q install make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed
                else
            color '不支持此系统!'  1
            exit
        fi
    elif [ $ID == "rocky"  ];then
            yum -y -q install make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed
        else
        apt update &> /dev/null
        apt -y install make gcc libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev &> /dev/null
    fi
    cd $SRC_DIR
    tar xf ${NGINX_FILE}${TAR}
    NGINX_DIR=`echo ${NGINX_FILE}${TAR}| sed -nr 's/^(.*[0-9]).*/\1/p'`
    cd ${NGINX_DIR}
    #./configure --prefix=${NGINX_INSTALL_DIR} --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
    ./configure --prefix=${NGINX_INSTALL_DIR}  --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
    make -j $CPUS && make install
    [ $? -eq 0 ] && color "nginx 编译安装成功" 0 ||  { color "nginx 编译安装失败,退出!" 1 ;exit; }
    echo "PATH=${NGINX_INSTALL_DIR}/sbin:${PATH}" > /etc/profile.d/nginx.sh
    cat > /lib/systemd/system/nginx.service <<EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=${NGINX_INSTALL_DIR}/logs/nginx.pid
ExecStartPre=/bin/rm -f ${NGINX_INSTALL_DIR}/logs/nginx.pid
ExecStartPre=${NGINX_INSTALL_DIR}/sbin/nginx -t
ExecStart=${NGINX_INSTALL_DIR}/sbin/nginx
ExecReload=/bin/kill -s HUP \$MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target
EOF
    systemctl daemon-reload
    systemctl enable --now nginx &> /dev/null
    systemctl is-active nginx &> /dev/null ||  { color "nginx 启动失败,退出!" 1 ; exit; }
    color "nginx 安装完成" 0
}

check
install

配置如下:

location / {
            root   html;
            index index.html index.php;
            #index index.html index.php index.pht index.phps index.php5;
            try_files $uri $uri/ =404;
        }
        location ~ (.php|.php5|.phps|.sy)$ {
        #location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        include fastcgi_params;

        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_index index.php;
        fastcgi_param  REDIRECT_STATUS    200;
        fastcgi_param  SCRIPT_FILENAME /apps/nginx/html$fastcgi_script_name;
        fastcgi_param  DOCUMENT_ROOT /apps/nginx/html;
        fastcgi_pass localhost:9000;
        }

1.2.3 upload-labs部署

upload-labs源码

解压放入 nginx的html目录下即可

2 验证php-fpm配置的后缀名是否生效

get方法一句话木马如下:

<?php eval(@$_GET['sy']);

在这里插入图片描述

在这里插入图片描述
以上.sy结尾就是我在php-fpm所配置的.sy结尾的后缀名文件
需要注意的是前端代理nginx 路由需要标注后缀名否则会出现403如下:
在这里插入图片描述

未配置路由日志:
在这里插入图片描述

正常日志
在这里插入图片描述

如果nginx路由配置了,后端php-fpm未配置就解析不了,直接下载到本地了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1337517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab:解非线性方程组

1、基于问题求解非线性方程组 例&#xff1a; xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…

Vue实现响应式布局

前提准备&#xff1a;响应式布局有两种方法&#xff0c;看自己想要哪种。 方法一&#xff1a;百分比 用百分比去写元素的宽度&#xff0c;然后让子元素撑起父元素的高度 .parent {width: 50%; }.child {width:100%;height:100px; } 方法二&#xff1a;vh、vw vw、vh是基于视…

jQuery: 整理5---删除元素和遍历元素

1. 删除元素 span{color: white;padding: 8px;margin: 5px;float: left;}.green {background-color: green;}.blue {background-color: blue;}<span class"green">green</span><span class"blue">blue</span><span class"…

Java反序列化漏洞-CC6利用链分析

CC链之最好用的利用链CC6分析 经过之前对CC1链和URLDNS链的分析&#xff0c;现在已经对反序列化利用链有了初步的认识&#xff0c;这次来分析一个最好用的CC利用链——CC6。 为什么CC6是最好用的CC利用链&#xff0c;因为CC6不限制jdk版本&#xff0c;只要commons collection…

调优-mybatis saveBatch

一条一条插入&#xff1a; 批量插入&#xff1a; 批量插入-优化&#xff1a; 在url配置 # rewriteBatchedStatementstrue url: jdbc:mysql://localhost:3306/xi_ning?characterEncodingutf-8&serverTimezoneUTC&rewriteBatchedStatementstruerewriteBatchedState…

前端---盒子模型

1. 盒子模型的介绍 所谓的盒子模型就是把HTML页面的元素看作一个矩形盒子&#xff0c;矩形盒子是由内容(content)、内边距(padding)、边框(border)、外边距(margin)四部分组成。 盒子模型示意图如下&#xff1a; 2. 盒子模型相关样式属性 盒子的内容宽度(width)&#xff0c;…

vue子组件实时获取父组件的数据

其实在vue中实现子组件实时获取父组件的数据有6种方式. 1、props/$emit&#xff1b; 2、子组件向父组件传值&#xff08;通过事件形式&#xff09;&#xff1b; 3、使用vuex&#xff1b; 4、使用$attrs/$listeners; 5、provide/inject&#xff1b; 6、$parent/$children与ref。…

2024年了,造『论文解读』公众号,买个agent就够了……

大家好我是二狗&#xff0c;是夕小瑶科技说编辑部的一名作者。 我平时主要负责写AI资讯报道的文章。 二狗我在「赛博马良」平台方买了AI员工之后每次都非常顺利地在第一时间精准抓到爆&#x1f525;的选题。 比如当时Sam Altman被开除的事件&#xff0c;二狗我几乎是全网首发…

三甲基碘硅烷,预计未来几年市场将以稳定的速度增长

三甲基碘硅烷是一种无色透明液体&#xff0c;广泛用作有机化学中的试剂。它用于制备多种有机化合物&#xff0c;包括药物、农用化学品和特种化学品。由于最终用途行业的需求不断增加&#xff0c;预计未来几年全球碘三甲基硅烷市场将以稳定的速度增长。 全球碘三甲基硅烷市场分为…

15 款Python编辑器的优缺点,别再问我“选什么编辑器”

本文介绍了多个 Python IDE&#xff0c;并评价其优缺点。读者可以参考此文列举的 Python IDE 列表&#xff0c;选择适合自己的编辑器。 写 Python 代码最好的方式莫过于使用集成开发环境&#xff08;IDE&#xff09;了。它们不仅能使你的工作更加简单、更具逻辑性&#xff0c;…

词法语法语义分析程序设计及实现,包含出错提示和错误恢复

词法说明 (1)关键字 main, int, char, if, else, for, while, void (2)运算符 - * / < < > > ! (3)界符 ; ( ) { } (4)标识符 ID letter(letter|digit)* (5)整型常数 NUM digit digit* (6)空格 ‘ ‘ ‘\n’ ‘\r’ ‘\t’ 空格用来分隔ID,NUM,运算符,界…

如何在推文里添加下载链接

电脑上有一个文件&#xff0c;希望通过公众号推文分享给读者&#xff0c;我们该如何操作呢&#xff1f;大家都知道&#xff0c;公众号并没有提供相应的附件功能。 这些其实是很常见的需求&#xff0c;在公众号上发布招聘信息、招投标信息、宣传文章、政策解读的时候&#xff0…

SpringMVC 高级

1 SpringMVC 概述 三层架构 表现层&#xff1a;负责数据展示 业务层&#xff1a;负责业务处理 数据层&#xff1a;负责数据操作 概念 Spring MVC 是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。 MVC&#xff08;Model View Controller&#xff09;&#xff0…

论文解读--Doppler-Offset Waveforms for MIMO Radar

MIMO雷达的多普勒偏置波形 摘要 在多输入多输出(MIMO)雷达中&#xff0c;独立的波形从不同的位置发射&#xff0c;产生的反射经过处理形成一个比雷达物理孔径更大的“虚拟天线阵列”。本文研究了用于自适应MIMO GMTI雷达系统的多普勒偏置波形的设计。这种波形提供了良好的自适…

【Unity】GPU骨骼动画 渲染性能开挂 动画合批渲染 支持武器挂载

GPU骨骼动画视频介绍&#xff1a; GPU顶点动画和GPU骨骼动画实现原理及优缺点对比 性能优化 GPU动画是实现万人同屏的前置条件&#xff0c;在之前的文章中已介绍过GPU顶点动画的实现方法&#xff1a;【Unity】渲染性能开挂GPU Animation, 动画渲染合批GPU Instance_skinmeshren…

【数据结构】六、树和二叉树

目录 一、树的基本概念 二、二叉树 2.1二叉树的性质 2.2二叉树的存储结构 2.3遍历二叉树 先序遍历 中序遍历 后序遍历 层次遍历 2.4二叉树的应用 计算叶子数 前序遍历建树 根据序列恢复二叉树 计算树的深度 判断完全二叉树 三、线索二叉树 3.1线索化 四、树和森林…

中伟视界:燃气站的烟火、安全帽、抽烟、打电话检测等AI算法的工作原理详解

人工智能&#xff08;AI&#xff09;技术在各行各业中的应用越来越广泛&#xff0c;燃气站的安全管理也在逐步引入AI算法。本文将详细介绍AI算法在燃气站安全管理中的应用&#xff0c;包括烟火检测、安全帽识别、抽烟、打电话检测等方面的工作原理。 烟火检测是燃气站安全管理中…

盘古信息IMS-MOM制造运营管理系统,构建生产现场管理信息系统的最佳选择

在当今高度竞争的制造行业中&#xff0c;高效的生产管理是企业成功的关键。盘古信息IMS-MOM制造运营管理系统作为一款领先的管理系统其关键特性为制造企业构建生产现场管理信息系统提供了强大的优势。IMS-MOM不仅仅是一个软件系统&#xff0c;更是一种技术和管理手段的结合&…

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中&#xff0c;Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

Kubernetes的理论基础

k8s:kubernetes:8个字母省略&#xff0c;就是k8s。 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统。k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。分布式和集群化的方式进行容器管理。 1.15 1.18 1.20 1…