信息收集分为两种方式:
手动收集、自动收集;
手动枚举一个系统非常耗时,然而这种方法允许更多的控制,并可以帮助识别自动化工具经常遗漏的更奇特的提权提升方式;
一、手动收集
1、枚举用户
Windows
whoami //我是谁
whoami /user //查看用户的SID
net user administrator //查询本地用户
net user administrator /domain //查询域用户
Linux
id
cat /etc/passwd
2、枚举主机名
这个主机名LINUX和Windows是一样的
Windows
hostname
Linux
hostname
3、枚举操作系统的版本和架构
Windows
systeminfo //查看系统信息
systeminfo | findstr /r /B /C:"OS" //蚁剑对中文不支持所以不加
systeminfo | findstr /r /B /C:"OS 名称" /C:"OS 版本" /C:"系统类型"
systeminfo > systeminfo.txt //将输出重定向到一个文本文件
Linux
cat /etc/issue 查看系统信息
cat /etc/*_release //(lsb_release、OS_release)
uname -a
uname -r
4、枚举进程和服务
利用进和服务提权需要具备的条件
(1)进程必须以特权用户(如root)用户,并且必须具有不安全的权限(可以进行编辑、改写相应的程序或脚本)
(2)或者允许我们以想不到的方式与之交互(典型的如设置了SUID的find程序,使用sudo运行more、less等程序)
Windows
tasklist /svc /FO LIST
//svc 显示进程对应的服务
//FO LIST 以列表的格式显示
Linux
ps aux
5、枚举网络信息
检查目标主机的(网络接口、路由、开放的端口等)
这些信息可以帮助我们确定被破坏的目标是否连接到多个网络,因此可以用作枢纽(pivot),如果存在特定的虚拟接口,则可能表示存在虚拟化软件(如Docker)或者软件
这将扩大网络的可见性
技巧:
注重查看监听在回环接口(127.0.0.1)的特权程序或服务,可以扩展我们的攻击面,并增加攻击特权升级的可能性
Windows
ipconfig /all //网络接口
route print //查看主机路由表
netstat -ano
//-a 查看活动的连接
//-n 以数字形式显示地址和端口
//-o 显示对应的进程(号)
tasklist | findstr "进程号" //查找对应的进程
Linux
ifconfig
ip a
ss -anp
-a 显示所有连接
-n 数字形式显示
-p 显示对应的进程
netstat -tnlp
6、 枚举防火墙的状态和规则
如果一个网络服务因为防火墙阻止而不能远程访问,那么通常可以通过lookback接口在本地访问它,如果我们可以在本地与这些服务交互,我们就可以利用他们升级我们在本地系统上的权限
此外,我们可以在次阶段收集有关入站和出站端口过滤的信息,一便在转向内部网络时方便端口转发和隧道
Windows
netsh advfirewall show currentprofile //查看防火墙的状态
netsh advfirewall firewall show rule name=all //查看防火墙的规则
Linux
iptables -L -n //查看防火墙规则,需要root权限
firewall-cmd --state //查看防火墙firewalld状态(最新版防火墙)
ufw status //(Ubuntu)查看防火墙规则的配置文件
目录:/etc/iptables
/etc/firewalld
7、枚举任务计划
攻击者通常利用任务计划进行提权攻击
需要具备的条件:
(1)找到以管理员用户(如root)运行的任务计划;
(2)这些任务计划调度执行的程序或脚本我们可以更改、编辑;
Windows
schtasks /query /FO LIST /v
Linux
crontab -l //查看当前用户的任务计划
cat /etc/crontab //查看系统任务计划配置文件
ls /etc/cron*
8、枚举安装的应用程序和补丁(版本、级别)
有时候,我们可能需要利用一个漏洞来升级我们的本地特权
Windows
WMIC //对Windows管理的一个命令行工具
wmic //查看已安装的应用(名称、版本、厂商)
wmic product get name,version,vendor //查看已安装的应用(名称、版本、厂商)
wmic os get osarchitecture //查看操作系统的架构
wmic logicaldisk get caption //查看分区
wmic qfe get Caption,Description,HotFixID,InstalledOn //查看系统安装的补丁
Powershell查看 (Windows平台下一种功能强大的命令行外壳程序和脚本环境)
powershell Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime
Linux
debian系列----dpkg -l
Centos系列----qa
9、枚举可以读/写的文件和目录
对文件的访问限制有缺陷有可能会创建一个漏洞,从而给攻击者授予更高的权限
这通常发生在攻击者可以修改在特权账户(如root)上下文中执行的脚本或程序
秘密文件(如/etc/passwd;/etc/shadow)如果被非授权用户读取,泄露账户信息
Windows
sysinternals:微软官方提供的系统工具集合
下载地址:https://learn.microsoft.com/en-us/sysinternals/
accesschk //检查用户(或组)对文件、目录、注册表、全局对象、服务所拥有的权限
下载地址:https://learn.microsoft.com/en-us/sysinternals/downloads/accesschk
用法:accesschk.exe /accepteula -uws "Everyone" "C:\Program Files"
accesschk.exe /accepteula -uvwqk HKML\System\Curr
-u 抑制错误消息
-w 是否有写入权限
-s 递归查看
/accepteula 同意/许可
-c 对Windows服务的检查
-k 对注册表权限的检查
accesschk.exe /accepteula -uws Users C:\*.*
accesschk.exe /accepteula -uwcav xiao miss svc
检查地权限用户(如xiao)对服务(如miss_svc)的权限
accesschk64.exe /accepteula -uwcqv administrator spooler
检查administrator用户对spooler服务的权限
icacls
icacls C:\phpstudy\www
关注三个权限
F 完全控制权限
M 修改(也可以修改权限)
W 写入
GET-Acl,它检索给定文件或目录的所有权限。Get-Acl不能递归运行
Get-Childitem首先枚举给定(如Program Files)目录下的所有内容
Linux
find / -writable -type d 2>/dev/null //查看当前用户拥有写入权限的目录
查找SUID提权
find / -perm -u=s -type f 2>/dev/null
find / -perm -4000 -type f 2>/dev/null
10、 枚举未挂载的磁盘或驱动器 ---被隐藏的分区
Windows
mountvol //查看系统中已挂载和未挂载的分区信息
wmic logicaldisk get caption //查看已挂载的分区信息
fsutil fsinfo drives
Linux
mount //查看所有已挂载的文件系统信息
cat /etc/fstab //查看开机自动挂载的文件信息
lsblk //列出所有可用的设备
11、枚举设备的驱动和内核模块
另一种常见的提权思路:涉及对设备驱动程序和内核模块的利用
Windows
Powershell
driverquery.exe //查询驱动程序的详细信息
Get-Wmiobjeck //列举驱动版本信息
Linux
lsmod //列出加载的内核模块
modinfo //查询模块的详细信息
12.枚举可以自动提权的程序
思路:权限提升的一种快捷方式
Windows
注册表AlwaysInstallElevated是一个策略设置,可以允许低权限用户以system权限安装(msi格式)
如果启用了这个设置,我们可以制作一个MSI文件并运行提高我们的权限。
如果你的笔记本查询后找不到,说明我们配置没有任何错误,反而是安全的。
reg query 查询注册表设置
reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer
reg query HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
如果启用了这个设置,我们可以制作一个MSI文件并运行提高我们的权限
Linux
SUID程序
find -perm -4000 -type f 2>/dev/null
find -perm -u=s -type f 2>/dev/null
sudo授权的程序
sudo -l
工具网站:https://gtfobins.github.io/
二、自动收集
Windows
Windows自动化提升工具
(1)WinPEAS
下载地址:https://github.com/carlospolop/PEASS-ng/releases/tag/20221204
添加一个注册表项,向WinPEAS的输出添加颜色
reg add HKCU\Console /v Virtua lTerminalLevel /t REG_DWORD /d 1
winpeas.exe quiet cmd fast
(2)PowerUp
PowerUp.psl脚本属于PowerSploit工具包的一个工具。能够扫描并识别Windows系统中的错误配置
(3)windows-privesc-check2.exe
下载地址:https://github.com/pentestmonkey/windows-privesc-check.git
-h
--dump //获取信息
Linux
Linux自动化提权工具
LinEnum: github.com/rebootuser/LinEnum
LinuxPrivChecker: github.com/sleventyeleven/linuxprivchecker
LinuxExploitSuggester: github.com/mzet-/linux-exploit-suggester