網絡安全之Linux提權由淺入深

前言

在滲透測試與內網攻防中,提權(Privilege Escalation)是至關重要的一環。尤其在 Linux 環境中,權限的嚴格劃分雖然提升了系統安全性,但一旦攻擊者獲得了初始訪問權限,他們往往會試圖通過各種方式實現權限提升,從而控制整個系統、維持持久化訪問,甚至橫向移動至更多目標。因此,熟悉并掌握 Linux 提權技術,不僅有助于安全研究人員發現并修復潛在風險,也有助于紅隊在攻防演練中高效突破系統防線。

本篇文章將從實際出發,系統地介紹 Linux 中常見的提權方式,涵蓋信息收集、文件權限分析、內核漏洞利用、配置錯誤利用、SUID 和 sudo 權限濫用、定時任務劫持、Docker 環境逃逸等關鍵手段。文章不僅強調技術原理,還輔以典型示例和操作命令,幫助讀者建立完整的提權知識體系,提升在真實環境中的滲透測試能力與安全防護意識。

Linux提權原理

Linux 提權主要分為內核提權和其他類型提權。內核提權的優點是針對存在漏洞的內核版本通常可通用利用,但缺點是穩定性差,易導致 shell 丟失或系統崩潰。常見的提權思路包括:先上傳信息收集腳本,枚舉系統內核和配置;再結合系統開啟的服務,進行有針對性的提權操作。

權限劃分

用戶和組

用戶組在 linux 系統上起著重要作用,它們為選定的用戶提供了一種彼此共享文件的簡便方法。它們還使系統管理員可以更有效地管理用戶權限,因為他們可以將權限分配給組而不是單個用戶。

Linux 用戶分為管理員和普通用戶,普通用戶又分為系統用戶和自定義用戶。

1系統管理員:即 root 帳戶,UID 號為 0,擁有所有系統權限,它類似于 Windows 系統中的 administrator 帳戶,是整個系統的所有者。

2系統用戶:Linux 為滿足自身系統管理所內建的賬號,通常在安裝過程中自動創建,不能用于登錄操作系統。UID 在 1-499 之間(Centos 7 為 1-999 之間)。像上面的 sshd、 pulse 等等用戶即是此類用戶。它類似于 Windows 中的 system 帳戶,當然權限遠沒有 system 帳戶高。

3自定義用戶:由 root 管理員創建供用戶登錄系統進行操作使用的賬號,UID 在 500 以上(CentOS7 為 1000 以上)。它類似于 Windows 系統中 users 用戶組中的帳戶。

在 Linux 中的每個用戶必須屬于一個組,不能獨立于組外在 Linux 中每個文件有所有者、所在組、其它組的概念同樣,用戶組的信息我們可以在 /etc/group 中查看

/etc/passwd 文件

在 Linux 的 /etc/passwd 文件中每個用戶都有一個對應的記錄行,它記錄了這個用戶的一些基本屬性。系統管理員經常會接觸到這個文件的修改以完成對用戶的管理工作。

用戶名:密碼:用戶ID:組ID:用戶說明:家目錄:登陸之后shell
?

image.png



/etc/shadow 文件

/etc/shadow 文件是 Linux 系統中用于 存儲用戶加密密碼及相關賬號安全信息 的配置文件,它是 /etc/passwd 的安全擴展。

用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之后的寬限天數:賬號失效時間:保留
?

image.png



加密的密碼具有固定格式: $id$salt$encrypted

●id 表示加密算法,1 代表 MD5,5 代表 SHA-256,6 代表 SHA-512

●salt 為鹽值,系統隨機生成

●encrypted 表示密碼的 hash 值

文件權限

在 Linux 系統中,一切皆文件,包括普通文件、目錄、設備文件、套接字等。文件權限通過 rwx(讀、寫、執行)三種標志進行控制,對于目錄來說,r 表示可以查看該目錄下的文件列表(如使用 ls 命令),w 表示可以在該目錄下添加、刪除、重命名等操作,而 x 則表示是否可以進入該目錄成為當前工作目錄。如果缺少 x 權限,即使擁有 w 權限,也無法向目錄內寫入文件。

使用ls -l命令可以查看當前目錄文件的權限,ls -la可以查看當前目錄全部文件權限(包括隱藏文件)。
?

image.png



以-rw-r--r-- 1 root root 為例,分析每個符號代表的意思。

1第一個位置可以有以下符號- : 代表普通文件 d:代表目錄 l:代表軟鏈接 b:代表塊文件 c:代表字符設備

2剩下的表示的是文件所屬的權限 rw- 表示文件所擁有者的權限。 r-- 表示文件所在組的用戶的權限。 r-- 表示其他組的用戶的權限。

3后面的數據1代表 如果文件類型為目錄,表示目錄下的子目錄個數。如果文件類型是普通文件,這個數據就表示這個文件的硬鏈接個數。

4后面兩個root的分別含義是第一個為該文件所有者為root 用戶,第二個表示該文件所在組為root組。

特殊權限

在 Linux 系統中,除了常規的 rwx 權限外,還存在三種特殊權限:SUID、SGID 和 SBIT,常用于程序或目錄的特殊操作控制。

● SUID(Set User ID):應用于可執行文件,當該文件被執行時,臨時賦予執行者“文件所有者”的權限,而不是執行者本人的權限,常用于如 passwd 等系統命令。

● SGID(Set Group ID):作用類似于 SUID,不過是切換到“文件所屬組”的權限;若用于目錄,則新創建的文件會自動繼承該目錄的所屬組。

● SBIT(Sticky Bit):主要用于目錄,表示只有文件的所有者或管理員才有權限刪除或修改該目錄下的文件,常見于 /tmp 目錄,用于保護用戶的臨時文件不被其他用戶刪除。

信息收集

自動化工具

手動輸入命令還是很復雜的,一般還是直接上工具。

github地址
?

image.png



這里只是簡單介紹基本的信息,詳細的信息搜集會結合具體的提權方式。

手動收集

查看系統信息

用戶和群組

查找明文密碼

ssh 私鑰

Linux提權具體方法

這一部分將重點介紹幾種常見且實用的提權方式,包括內核漏洞提權、/etc/passwd 提權、Docker 提權、定時任務提權、SUID 提權以及Sudo 提權等。每種方法都將配合實際示例進行講解,幫助讀者更清晰地理解其利用思路與操作流程。

內核提權

概述

內核漏洞提權是利用 Linux 系統內核中存在的已知安全漏洞,獲取 root 權限的一種高效提權方式。由于 Linux 是開源系統,長期以來被廣泛研究,暴露出大量內核漏洞。提權過程通常包括三步:收集目標系統的內核版本信息,查找與之對應的可利用漏洞及 EXP,最后執行 EXP 實現權限提升。該方法適用于權限受限的普通用戶,提權成功率高,但也可能導致系統不穩定或崩潰,因此在實際操作中需謹慎使用。

EXP項目地址

1https://github.com/belane/linux-soft-exploit-suggester

2https://github.com/jondonas/linux-exploit-suggester-2

3https://github.com/PenturaLabs/Linux_Exploit_Suggester

4https://github.com/mzet-/linux-exploit-suggester

在本次演示中,我們將采用 第四個項目 。該工具能夠根據目標系統的內核版本,快速分析并推薦可用的本地提權漏洞,幫助滲透測試人員識別潛在的提權機會。它是一個高效的漏洞建議工具,適用于漏洞評估和漏洞利用的準備工作。

利用過程

運行腳本會獲得系統信息,然后提供可以利用的腳本地址。
?

image.png



Highly probable: 評估的內核很可能受到影響,并且 PoC 漏洞利用很可能可以直接使用,無需重大修改。

Probable: 利用可能有效,但很可能需要定制 PoC 漏洞利用以適應你的目標。

Less probable: 需要額外的手動分析來驗證內核是否受到影響。

Unprobable: 內核受到影響的可能性極低(該漏洞在工具的輸出中未顯示)。

下載命令

然后根據漏洞情況編譯運行就可以了。

/etc/passwd提權

概述

當系統錯誤地將 /etc/passwd 設置為可寫時,攻擊者可以向其中添加一個偽造的 root 用戶(UID 為 0)。通過這個賬號登錄后,就能直接獲取系統最高權限。該方法簡單有效,常見于配置不當的系統或靶機環境中。

利用特征

運行信息收集工具后,發現系統給出了明確的提權提示(工具詳情在前言提到的文章里面有)。

image.png

普通用戶檢查 /etc/passwd 文件權限時,發現該文件對當前用戶具有寫權限,為后續的提權操作提供了可行入口。具體各個字段代表的信息同樣可以參考前言部分的文章。

image.png

下面這張圖是沒有寫權限的

image.png


利用過程

生成偽造 root 賬號密碼串

使用 openssl 或 python 生成一個加密密碼,例如密碼為 123456
?

image.png


多種方式生成加密密碼。

構造賬號條目

例如添加一個名為 hacker 的 root 用戶

追加到 /etc/passwd 文件中

使用普通用戶直接寫入

切換到新賬號

Docker提權

概述

Docker 提權是指通過容器配置漏洞或不當設置,突破容器的隔離限制,從而獲得宿主機的 root 權限。常見的提權方式包括利用 --privileged 標志、掛載宿主機目錄、以及內核漏洞等。攻擊者可以通過這些漏洞突破容器的安全限制,實現從容器內提權至宿主機。

由于 Docker 提權方式繁多,這里主要關注兩種常見的風險:特權容器和掛載宿主機目錄的容器。后續將發布更詳細的 Docker 提權文章,進一步探討更多的提權方法。

利用特征

使用docker ps -a可以查看container_id
?

image.png


特權容器

容器如果以 --privileged 標志運行,將獲得宿主機的幾乎所有權限,可能導致提權風險。可以通過以下命令檢查容器是否以特權模式運行:

掛載宿主機目錄的容器

如果容器掛載了宿主機的敏感目錄(如 /etc、/root 等),容器中的惡意用戶可以直接訪問這些目錄,從而提升權限。可以通過以下命令查看容器的掛載信息:

利用過程

特權容器

如果容器以特權模式運行,容器內的用戶將獲得幾乎與宿主機相同的權限。這意味著容器內的用戶能夠執行與宿主機相關的操作,甚至修改宿主機的文件系統,帶來較高的提權風險。

掛載宿主機目錄的容器

當容器掛載了宿主機的敏感目錄(如 /etc、/root 等),容器內的惡意用戶可以修改這些目錄中的關鍵文件。特別地,容器中的用戶可以通過修改 /etc/passwd 等文件實現提權操作,具體方法可以參考**/etc/passwd提權**部分。

SUID提權

概述

SUID(Set User ID)是文件權限的一種設置,當一個文件具有 SUID 權限時,執行該文件的用戶將臨時獲得該文件擁有者的權限,通常是 root 權限。這種權限主要用于允許普通用戶執行某些高權限的操作,例如訪問或修改系統資源。然而,若某些二進制文件或實用程序錯誤地設置了 SUID 權限,攻擊者便可以利用這些文件提升權限,從而獲得 root 權限,造成安全風險。因此,正確管理和審查 SUID 權限的文件對于系統安全至關重要。

查找root權限的SUID文件

使用信息收集工具的提示。

image.png



查找是否有以 root 身份執行的二進制程序(即擁有 SUID 且屬主為 root),攻擊者可以借助這些程序嘗試“越權”執行某些操作,從而提升自身權限

高危 SUID 程序

以下是一些具有 SUID 權限時常被用于提權的高危可執行文件,這些程序多數收錄在 GTFOBins 中,通常可以直接利用提權:

/usr/bin/find:利用 -exec 參數執行任意命令,例如 find . -exec /bin/sh ; 即可提權/usr/bin/vim 或 vi:通過命令模式 :!sh 拿到 root shell/usr/bin/python 或 python3:使用 os.system("/bin/sh") 或 subprocess 模塊執行命令/usr/bin/perl:使用 system("/bin/sh") 拿 shell/usr/bin/env:可用 env /bin/sh 方式執行 shell/usr/bin/bash:如果帶有 SUID,可直接提權執行 /bin/bash -p

利用方式

如果通過上面的方法發現了系統中的敏感 SUID 程序,可以查閱相關命令或腳本實現提權操作。除此之外,還可以直接使用一些自動化工具來簡化流程。

AutoSUID 是一個開源項目,其主要目標是自動化地收集系統中的 SUID 可執行文件,并嘗試查找可用的提權方式。該工具實現了全流程的 100% 自動化,有效提高了提權的效率與成功率。

Sudo提權

概述

在 Linux 系統中,sudo 命令用于讓普通用戶以其他用戶(通常是 root)的身份執行命令。正常情況下,執行 sudo 需要輸入用戶自己的密碼,但為了運維方便,管理員可能會在 sudoers 文件中配置某些用戶或命令為無需密碼(NOPASSWD)即可執行。如果這些配置不當,攻擊者可能利用它們執行高權限命令,從而實現本地提權,因此 sudo 配置錯誤常常是提權的關鍵入口之一。

利用特征

通過信息收集工具可以快速掃描系統中存在的 SUID 程序和 sudo 權限配置。一旦發現存在已知的提權方式,工具通常會直接給出利用建議,例如:

image.png

手工測試結果

image.png

在正常環境中,系統可能存在多種語言設置,直接手工測試有助于我們理解提權原理和驗證工具提示的準確性。不過在實際滲透過程中,面對復雜多變的系統配置,還是建議優先使用信息收集工具,它們可以快速、全面地識別潛在的提權點,大大提升效率和成功率。

提權命令
具體使用哪個命令進行提權,需要參考信息收集工具的掃描結果。根據掃描結果,若發現用戶可以通過 sudo 執行 Python,通常可以使用以下命令:
其他命令
定時任務提權
概述

定時任務(cron job)是 Linux 系統中用于定期執行任務的工具,允許系統在指定時間間隔內自動運行命令或腳本。由于 cron 通常以 root 權限執行,如果攻擊者能夠修改 cron 配置文件或其執行的腳本或二進制文件,就可以利用 root 權限執行任意代碼,從而實現提權。攻擊者通過獲取對定時任務的控制,能夠在系統中以 root 權限運行惡意代碼,造成嚴重的安全威脅。因此,定時任務的安全配置和監控在系統管理中至關重要。


利用特征
前期信息搜集工具發現定時任務里面有test.py的文件

image.png

手工查看定時任務的命令vim /etc/crontab
查看test.py文件權限,發現任何用戶都可寫(具體判斷方法可以參考前言提到的文章)。

image.png

提權命令

#!/bin/bash# 使用 Shell 腳本啟動一個新的 bash shell 提權/bin/bash#!/usr/bin/python# 使用 Python 的 os.system 方法執行命令,啟動 bash 提權import os# 執行 /bin/bash 提權命令os.system("/bin/bash")#!/usr/bin/perl# 使用 Perl 的 exec 方法執行 bash 提權exec("/bin/bash");#!/usr/bin/ruby# 使用 Ruby 的 exec 方法執行 bash 提權exec("/bin/bash")#!/usr/bin/lua-- 使用 Lua 的 os.execute 方法執行 bash 提權os.execute("/bin/bash")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86420.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86420.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86420.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【streamlit 動態添加/刪除 輸入條目items】

如何動態添加添加條目呢?類似下邊的效果 pip install streamlit 代碼 app.py import streamlit as stdef rule_component(st_ph: st = st):## 添加解析規則, 動態添加元素if

量學云講堂王巖江宇龍2025年第58期視頻 主課正課系統課+收評

量學云講堂王巖江宇龍2025年第58期視頻 主課正課系統課收評資源簡介: 課程目錄: 江宇龍課程 31楓林陽-股票走勢中多空必爭的關鍵要地(1).mp4 32楓林陽-關鍵要地的直觀表現之畫線標準.mp4 33楓林陽-提綱舉領之量線學習的要點綱要.mp4 34楓林陽-主力攻…

Milvus【部署 03】Linux OpenEuler 環境在線+離線安裝及卸載

在線離線安裝及卸載 1. 在線安裝2. 離線安裝3. 卸載 1. 在線安裝 [roottcloud milvus]# yum install ./milvus-2.1.4-1.el7.x86_64.rpm安裝日志: OS …

< 自用文兒 在 Ubuntu 上安裝 Claude Code > 發現了“京東云 JDCloude” 有國內商業云中最低的網絡性能

Claude Code: 最近刷屏這個詞:Claude Code 以后叫 CC,它是 Anthropic 的一款智能編程工具,幾個特點: 在終端運行 像使用命令行工具一樣,無需圖形用戶界面 GUI深度理解整個代碼庫 使用自然語言 讓其修復 b…

Docker部署prometheus+grafana+...

Docker部署prometheusgrafana… prometheus官網 官網 https://prometheus.io/ 中文網址 https://prometheus.ac.cn/ Prometheus簡介 Prometheus(普羅米修斯)是一套開源的監控&報警&時間序列數據庫的組合,由SoundCloud公司開發。 Prometheus基…

Python爬蟲實戰:研究Spynner相關技術

1 引言 1.1 研究背景與意義 隨著互聯網的迅速發展,網頁內容呈現形式日益復雜。傳統的靜態網頁逐漸被動態網頁所取代,大量內容通過 JavaScript 動態生成或 AJAX 異步加載。這使得傳統爬蟲(如基于 Requests 庫的爬蟲)難以獲取完整的網頁信息,因為它們只能獲取頁面的初始 H…

人工智能訓練知識學習-TTS(智能語音合成)

人機對話——TTS(TextToSpeech) 概念: TTS技術,即文本轉語音技術,是一種將文字內容轉換為語音輸出的技術。它通過計算機程序和算法,將文本信息轉化為自然流暢的語音信號,讓用戶能夠聽到文字內…

【Java高頻面試問題】JVM篇

【Java高頻面試問題】JVM篇 類加載機制加載(Loading)連接(Linking)?初始化(Initialization)?使用(Using)與卸載(Unloading) 類加載器和雙親委派模型類加載器…

DBeaver的sql編輯器文本格式字體大小設置

DBeaver的sql編輯器文本格式字體大小設置。開始就沒有找到。早上比較清醒被我發現了。記錄下來

自學Java怎么入門

自學Java其實沒有想象中那么難,只要找對方法,循序漸進地學習,很快就能上手。下面我結合自己的經驗,給你整理一條清晰的學習路徑,咱們一步步來。 一、先了解Java能做什么 在開始之前,建議你先看看Java都能…

操作系統面試知識點(1):操作系統基礎

目錄 1.什么是操作系統: 2.操作系統有哪些功能? 3.常見的操作系統有哪些 4.用戶態和內核態 5.內核態權限這么高,為什么不還要用戶態? 6.用戶態和內核態是如何切換的? 7.系統調用 8,系統調用的過程 ???????1.什么是操作系統: (1)操作系統(OS)是管理計算機軟硬…

Linux 和 Windows 服務器:哪一個更適合您的業務需求?

在選擇服務器操作系統時,Linux 和 Windows 服務器是最常見的兩種選擇。它們各有特點,適合不同的業務需求和使用環境。本文將詳細分析 Linux 和 Windows 服務器的主要差異,包括成本、安全性、性能、定制化能力和用戶界面等方面,幫助…

CertiK聯創顧榮輝將于港大活動發表演講,分享Web3安全與發展新視角

CertiK聯合創始人、哥倫比亞大學教授顧榮輝,將于6月30日出席香港大學經管學院主辦的“Web3革新與商業機遇”活動,并發表主題演講《規模化Web3:面向全球受眾的創新與安全平衡之道》。 本次活動由港大經管學院高層管理教育主辦,Met…

SpringAI系列---【SpringAI如何接入阿里云百煉大模型?】

1.導言 阿里云百煉的通義千問模型支持 OpenAI 兼容接口,您只需調整 API Key、BASE_URL 和模型名稱,即可將原有 OpenAI 代碼遷移至阿里云百煉服務使用。 如果是要接入阿里云百煉模型,首先推薦使用Spring AI Alibaba,而不是使用Spri…

電子電氣架構 --- 實時系統評價的概述

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

Flink SQL執行流程深度剖析:從SQL語句到分布式執行

在大數據處理領域,Flink SQL憑借其強大的處理能力和易用性,成為眾多開發者的選擇。與其他OLAP引擎類似,Flink SQL的SQL執行流程大致都需要經過詞法解析、語法解析、生成抽象語法樹(AST)、校驗以及生成邏輯執行計劃等步…

什么是redis

Redis是一個開源的、基于內存的高性能鍵值存儲數據庫,廣泛用于緩存、消息隊列、會話存儲等場景。 - 核心特點: - 內存存儲:數據存儲在內存中,讀寫速度極快。 - 鍵值對:以鍵值對形式存儲數據,鍵通常是字…

《從0到1:C/C++音視頻開發自學指南》

開啟自學之旅:為何選擇 C/C 音視頻開發 在當今數字化時代,音視頻開發的應用場景極為廣泛,深刻融入了我們生活與工作的方方面面。從火爆的直播行業,無論是電商直播中主播與觀眾的實時互動,還是游戲直播里精彩賽事的實時…

學習日記-spring-day37-6.25

知識點: 1.使用utillist進行配置 知識點 核心內容 重點 Spring框架中utl名稱空間創建List 通過utl名稱空間創建并管理集合對象,實現數據復用 utl list與普通list賦值的區別; 名稱空間引入方法 無參構造器使用規則 當類中沒有其他構造器時&#x…

【Python練習】012. 使用字符串的upper()方法將字符串轉換為大寫

012. 使用字符串的upper方法將字符串轉換為大寫 012. 使用字符串的upper()方法將字符串轉換為大寫示例代碼運行結果代碼解釋 擴展:動態輸入字符串示例運行 何時使用upper方法基本用法示例忽略大小寫的字符串比較數據清洗標準化 注意事項 012. 使用字符串的upper()方…