本地提权是指攻击者利用漏洞或其他手段获取本地系统的管理员权限或其他高权限,从而能够执行更多的操作,例如访问、修改、删除系统文件、安装恶意软件、窃取敏感信息等。
常见的提权思路有:
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搜索已知漏洞