本地提权是指攻击者利用漏洞或其他手段获取本地系统的管理员权限或其他高权限,从而能够执行更多的操作,例如访问、修改、删除系统文件、安装恶意软件、窃取敏感信息等。
常见的提权思路有:
1. 服务配置错误
2. 文件或服务权限漏洞
3. 内核漏洞
4. 高权限运行的服务漏洞
5. 敏感信息泄漏
6. 总是在执行二进制文件之前提升特权的系统设置
7. 脚本中包含硬编码的凭证,以及许多其他内容
手动枚举
枚举用户账号
whoami #通用 id who w #Linux
查看用户组
net user <USERNAME> #Windows id who #Linux
查看其他账号
net user #Windows cat /etc/passwd #Linux
查看主机名
hostname #通用
系统版本和架构
systeminfo #Windows cat /etc/*-release cat /etc/issue uname -a #Linux
枚举进程、服务
tasklist /SVC #Windows ps axu #Linux
网络配置
ipconfig /all ipconfig /displaydns #DNS缓存 route print netstat -nao #Windows ip -a /sbin/route ss -anp netstat -nr #Linux
枚举防火墙规则
netsh advfirewall show currentprofile netsh advfirewall firewall show rule name=all #Windows iptables -L ufw #Linux
调度任务
schtasks /query /fo LIST /v #Windows Is -lah /etc/cron* cat /etc/crontab cat /var/log/cron #Linux
枚举安装软件及补丁
wmic product get name,version,vendor #通过Windows Installer安装的 wmic qfe get Caption,Description,HotFixID,InstalledOn #系统范围的更新 #Windows apt #Ubuntu、Debian rom #red hat dpkg -l #Debian #Linux
枚举可读写文件目录
accesschk.exe -uws "Everyone" "<DIR>" #Sysinternals工具包 Get-ChildItem "<DIR>" -Recurse | Get-ACL | ?{$_.AccessToString -match "Everyone\sAllow\s\sModify"} #Powershell,过滤字段可能需要改变 #Windows find /-writable -type d 2>/dev/null #Linux
挂载点
mountvol #Windows cat /etc/fstab mount #Linux
设备驱动和内核模块
driverquery.exe /v /fo csv #Windows lsmod /sbin/modinfo <MODNAME> #Linux
自动提升权限的二进制文件
reg query HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer #存在1即任何用户都可以使用特权账户运行Windows安装包 #Windows find / -perm -u=s -type f 2>/dev/null #Linux
自动枚举
自动化检查脚本
PEASS-ng
TODO: 实测一下
Windows 权限系统
Windows 从 Vista 开始进程运行在四个完整性级别上
1. 系统完整性进程:SYSTEM 权限
2. 高完整性进程:Administrator 权限
3. 中完整性进程:普通用户权限
4. 低完整性进程:权限严格受限,常用于沙箱进程
whoami /groups #显示当前用户的完整性级别
需要通过 UAC 用户访问控制切换完整性界别
powershell.exe Start-Process cmd.exe -Verb runAs #以Administer启用cmd
UAC 绕过
UAC 绕过只针对特定版本
常见的 UAC 绕过可通过 fodhelper.exe (<Win10 build 1709) 绕过
sigcheck.exe -a -m c:\windows\system32\fodhelper.exe #利用Sysinternal中的工具包查看manifest,某些版本是requireAdministrator,并且auroElevate
fodhelper.exe 的绕过可以有如下方法
使用 Process Monitor 检查该程序的执行过程
先启动 procmon.exe, 再运行 fodhelper.exe, 过滤筛选 fodhelper.exe 的执行操作
增加搜索 Reg 关键字的过滤规则,只显示 fodhelper.exe 的注册表相关操作
增加搜索 NAME NOT FOUND 报错消息过滤规则,表示 fodhelper 在访问不存在的注册表项
再将其筛选改成 SUCCESS,表示已经访问到的键值
以此反复找到一个可以利用的注册表运行任意指令
文件权限漏洞
通过替换某些高权限的系统程序,植入后门
Get-WmiObject win32_service | Select-Object Name,State,PathName | Where-Object {$_.State -like 'Running'} #查询所有服务路径 icacls "<FILE>' #F为完全控制
服务路径未引号闭合
如果有空格的文件路径未用引号闭合将会以空格为分割,寻找可执行文件
C:\Program.exe C:\Program Files\My.exe C:\Program Files\My Program\My.exe C:\Program Files\My Program\My service\service.exe
内核漏洞
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type" #检测系统版本、架构 driverquery /v #检测驱动(可以通过exploitdb搜索已知漏洞) type <DRIVERNAME>.inf #查看驱动信息
Linux 权限系统
文件权限漏洞
cron 调度任务等脚本执行后门漏洞
/etc/passwd 权限漏洞
如果文件全局可读写可添加管理员权限
内核漏洞
也同样可以通过 exploitdb 搜索已知漏洞