• nginx降权及匹配php


    1.nginx降权

    1.1 capabilities的介绍与运用

    1.2 用普通用户启动nginx

    1.3 root用户权限赋予

    1.4 查看普通用户的nginx权限

    1.5 查看nginx的欢迎网页

     2.nginx与php的相互匹配

    2.1 安装php及php-fpm包

    2.2 检查php-fpm服务运行状态

    2.3 php-fpm上的配置

    2.4 nginx上的配置

    2.4 检测nginx与php是否匹配成功


    1.nginx降权

    1.1 capabilities的介绍与运用

    Linux内核2.2之前,为了检查进程权限,将进程区分为两类:特权进程(euid=0)和非特权进程。特权进程(通常为带有suid的程序)可以获取完整的root权限来对系统进行操作,但是如此操作会导致普通用户的权限过大,使得攻击者也会拥有重要进程的root权限,十分危险。

    在linux内核2.2之后引入了capabilities机制,来对root权限进行更加细粒度的划分。如果进程不是特权进程,而且也没有root的有效id,系统就会去检查进程的capabilities,来确认该进程是否有执行特权操作的的权限。

    这样一来,权限检查的过程就变成了:在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。

    注意:如果Capabilities设置不正确,就会让攻击者有机可乘,实现权限提升。

    可以通过man capabilities来查看具体的capabilities。

    capability名称描述
    CAP_AUDIT_CONTROL启用和禁用内核审计;改变审计过滤规则;检索审计状态和过滤规则
    CAP_AUDIT_READ允许通过 multicast netlink 套接字读取审计日志
    CAP_AUDIT_WRITE将记录写入内核审计日志
    CAP_BLOCK_SUSPEND使用可以阻止系统挂起的特性
    CAP_CHOWN修改文件所有者的权限
    CAP_DAC_OVERRIDE忽略文件的 DAC 访问限制
    CAP_DAC_READ_SEARCH忽略文件读及目录搜索的 DAC 访问限制
    CAP_FOWNER忽略文件属主 ID 必须和进程用户 ID 相匹配的限制
    CAP_FSETID允许设置文件的 setuid 位
    CAP_IPC_LOCK允许锁定共享内存片段
    CAP_IPC_OWNER忽略 IPC 所有权检查
    CAP_KILL允许对不属于自己的进程发送信号
    CAP_LEASE允许修改文件锁的 FL_LEASE 标志
    CAP_LINUX_IMMUTABLE允许修改文件的 IMMUTABLE 和 APPEND 属性标志
    CAP_MAC_ADMIN允许 MAC 配置或状态更改
    CAP_MAC_OVERRIDE忽略文件的 DAC 访问限制
    CAP_MKNOD允许使用 mknod() 系统调用
    CAP_NET_ADMIN允许执行网络管理任务
    CAP_NET_BIND_SERVICE允许绑定到小于 1024 的端口
    CAP_NET_BROADCAST允许网络广播和多播访问
    CAP_NET_RAW允许使用原始套接字
    CAP_SETGID允许改变进程的 GID
    CAP_SETFCAP允许为文件设置任意的 capabilities
    CAP_SETPCAP参考 capabilities man page
    CAP_SETUID允许改变进程的 UID
    CAP_SYS_ADMIN允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等
    CAP_SYS_BOOT允许重新启动系统
    CAP_SYS_CHROOT允许使用 chroot() 系统调用
    CAP_SYS_MODULE允许插入和删除内核模块
    CAP_SYS_NICE允许提升优先级及设置其他进程的优先级
    CAP_SYS_PACCT允许执行进程的 BSD 式审计
    CAP_SYS_PTRACE允许跟踪任何进程
    CAP_SYS_RAWIO允许直接访问 /devport、/dev/mem、/dev/kmem 及原始块设备
    CAP_SYS_RESOURCE忽略资源限制
    CAP_SYS_TIME允许改变系统时钟
    CAP_SYS_TTY_CONFIG允许配置 TTY 设备
    CAP_SYSLOG允许使用 syslog() 系统调用
    CAP_WAKE_ALARM允许触发一些能唤醒系统的东西(比如 CLOCKBOOTTIMEALARM 计时器)

    由于这里我们的目标是为nginx降权,所以我们这里主要使用的capabilities指令为CAP_NET_BIND_SERVICE 用它绑定 nginx 的端口赋予普通用户nginx的端口权限。(nginx的默认端口为80)

    1.2 用普通用户启动nginx

     现在在普通用户的 /www/env/nginx/sbin目录即 nginx安装目录下无法启动nginx服务说明,说明现在普通用户没有nginx的使用权限。

    1.3 root用户权限赋予

    指令:setcap CAP_NET_BIND_SERVICE=eip nginx  

     使用 getcap 指令查看nginx的端口权限绑定成功

    注意:这里要更改nginx的所属关系为普通用户

    1.4 查看普通用户的nginx权限

    用普通用户启动nginx

     查看nginx程序的进程都为普通用户创建

     说明nginx的降权操作成功

    1.5 查看nginx的欢迎网页

     2.nginx与php的相互匹配

    2.1 安装php及php-fpm包

    1. apt install php
    2. apt install php-fpm

    2.2 检查php-fpm服务运行状态

    systemctl status php8.1-fpm

     2.3 php-fpm上的配置

    在php的安装目录下找到 php/8.1/fpm/pool.d/www.conf 的配置文件打开

      修改php监听的端口号为本机的9000端口

    取消所选框字段的注释  listen.allowed_clients 字段是允许监听的服务端,这里设为只允许本机监听,否则会触发 php-fpm服务的未授权访问漏洞。

    2.4 nginx上的配置

    在nginx的安装目录下找到 nginx/conf/nginx.conf 的配置文件打开

     找到所选框内关于与php相互匹配的注释,将注释取消,开通二者的匹配关系。

    2.4 检测nginx与php是否匹配成功

    在nginx/html 的目录下创建一个 index.php 文件:

    文件内容:

    1. phpinfo()
    2. ?>

    从浏览器的nginx界面打开 index.php 文件

    成功标志着nginx与php相互匹配成功。

  • 相关阅读:
    Vue3类与样式绑定
    《Hidden Markov Map Matching Through Noise and Sparseness》读书笔记
    aiops时代, 10分钟学会用AIAnsbile去调试ansible任务
    批量条件赋值、文本字段计算常用表达式
    Elasticsearch 安装与配置
    八叉树的范围和射线检测
    白领要预防肾结石的发生
    文件上传漏洞靶场-OSCP系列靶场过程
    Helm 基础入门 Helm介绍与安装
    【剑指Offer】19.正则表达式匹配
  • 原文地址:https://blog.csdn.net/m0_63306943/article/details/128049283