subtitle test o_O

test message.

一、内网提权的手法?

内网提权首要的条件是获得接入内网的某台主机或硬件设备的初始权限,以在内网中进一步的权限维持、获取更多信息等为目的,故需要进行相应的权限提升操作。

权限提升的操作方式大概有以下两类:

  • 纵向提权:低权限用户获得高权限角色的权限。
  • 横向提权:获得同级别角色的权限。

内网设备中主要承载的操作系统为Windows或Linux,其主要提权手法也是基于该两大操作系统进行展开说明。其余产品可能会有其它漏洞造成提权相关,此处暂不概述。


1x01、Windows

Windows系统下,有四种用户权限,分别为:User、Administrator、System、TrustedInstaller,从左往右权限依次升高。

该系统常用的提权方式:

  • 内核漏洞提权
  • 错误的系统配置提权
    • 错误权限配置
    • 可信任服务路径漏洞
    • 计划任务提权
    • 不安全注册表权限
    • AlwaysInstallElevated 提权
    • 无人值守安装文件
  • 组策略首选项提权
  • BypassUAC提权
  • DLL 劫持提权
  • 令牌窃取
  • 第三方软件提权

1x02、Linux

该系统常用的提权方式:

  • 内核漏洞提权
  • 以root身份运行的程序
  • 滥用sudo
  • Suid配置错误
  • 写定时任务
  • 通配符注入
  • NFS服务提权
  • 路径配置错误
  • 第三方软件提权
  • 弱密码/重用密码/纯文本密码
  • 由root调用的可写脚本
  • ……

相关提权方式介绍

内核漏洞提权

通过系统本身存在的一些漏洞,未曾打相应的补丁而暴露出来的提权方法,依托可以提升权限的 EXP 和相应的方法进行提升权限。

错误的系统配置提权

错误权限配置

Windows 系统服务文件在操作系统启动时加载并执行,并调用可执行文件。理论上,低权限用户是没有对高权限服务调用的可执行文件写权限,但是,如果因管理员错误的配置,导致一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限。一般情况下,Windows 是以 System 权限执行的,因此,其文件夹、文件和注册表键值都是受到强访问控制机制保护的,但在某些情况下仍有些服务没有得到有效保护。(利用条件比较苛刻)

可信任服务路径漏洞

可信任服务路径漏洞利用了 Windows 文件路径解析的特性,如果一个服务调用的可执行文件没有正确地处理所引用的完整路径名,同时攻击者该文件路径有可写权限,攻击者就可以上传文件来劫持路径名。

例如 Windows 系统启动某服务时查找的文件路径为 C:\Program Files\Some Folder\Services.exe

对于该路径中的每一个空格,Windows 都会尝试并执行与空格前面的名字相匹配的程序,因此 Windows 会以依次如下顺序查找一下启动程序:

  • C:\Program.exe
  • C:\Program Files\Some.exe
  • C:\Program Files\Some Folder\Services.exe

此时如果我们对 C:\路径或者 C:\Program Files 有可写的权限,就可以上传 Program.exe 或 Some.exe 程序到相应目录下,当服务重新启动时,就会以 System 权限执行我们上传的恶意程序。

利用条件:

  • 服务路径未使用双引号
  • 服务路径包含空格
  • 我们有某一中间文件夹的写权限

计划任务提权

攻击者对以高权限运行的计划任务所在目录具有所写权限,就可以使用恶意程序覆盖原来的程序,这样,在计划任务下次执行时就会以高权限来运行恶意程序。

不安全的注册表权限配置

在Windows中,和Windows服务有关的信息存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services注册表项中,服务对应的程序路径存储在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\服务名\ImagePath,如果低权限用户对这个键值有写权限,那么就可以控制这个服务,运行我们的程序,拿到高权限。

AlwaysInstallElevated 提权

注册表键 AlwaysInstallElevated 是一个策略设置项,Window 允许低权限用户以 System 权限运行 MSI 安装文件,如果启用此策略设置项,那么任何权限的用户都能以 NT AUTHORITY\SYSTEM 权限来运行恶意的 MSI 文件

无人值守安装文件

一些 Windows 无人值守安装文件中含有用户的明文或 base64 编码后的密文。

常见位置:

  • C:\sysprep.inf
  • C:\sysprep\sysprep.xml
  • C:\Windows\system32\sysprep.inf
  • C:\Windows\system32\sysprep\sysprep.xml
  • C:\Windows\Panther\Unattend\Unattended.xml
  • C:\Windows\Panther\Unattend\Unattend.xml
  • C:\Windos\System32\sysprep\unattend.xml
  • C:\Windows\System32\Sysprep\Panther\unattend.xml

组策略首选项提权

Windows 2008 Server引入了一项新功能:策略首选项,组策略首选项使管理员可以部署影响域中计算机/用户的特定配置,通过在组策略管理控制台中配置的组策略首选项,管理员可以推出多种策略,例如,当用户登录其计算机时自动映射网络驱动器,更新内置管理员帐户的用户名或对注册表进行更改。

BypassUAC提权

User Account Control(UAC)是在 Windows Vista 以后版本中引入的一种安全机制,针对具有有限权限的账户。通过 UAC,应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员特别授予管理员级别的系统访问权限。UAC 可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。

DLL 劫持提权

动态链接库(Dynamic-Link-Library,缩写 dll)。在 Windows 中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即 DLL 文件,放置于系统中。当执行某一个程序时,相应的 DLL 文件就会被调用。一个应用程序可使用多个 DLL 文件,一个 DLL 文件也可能被不同的应用程序使用,这样的 DLL 文件被称为共享 DLL 文件。

令牌窃取

令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。

第三方软件提权

利用已安装的第三方软件相关漏洞进行提权。如SQLServer、MySQL等。

以root权限运行的服务

如果特定服务以root用户身份运行,并且我们可以使该服务执行命令,则可以root用户身份执行命令。

滥用SUDO

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。

Suid配置错误

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。

通配符注入

通配符是代表其他字符的符号。您可以将它们与任何命令(例如cat或rm命令)一起使用,以列出或删除符合给定条件的文件。还有其他一些,但是现在对我们很重要的一个是*字符,它可以匹配任意数量的字符。

例如:

  • cat * 显示当前目录中所有文件的内容
  • rm * 删除当前目录中的所有文件

NFS服务提权

网络文件系统(NFS)是一个客户端/服务器应用程序,它使计算机用户可以查看和选择存储和更新远程计算机上的文件,就像它们位于用户自己的计算机上一样。在NFS协议是几个分布式文件系统标准,网络附加存储(NAS)之一。

其中的Root Squashing(root_sqaush)参数阻止对连接到NFS卷的远程root用户具有root访问权限。远程根用户在连接时会分配一个用户“nfsnobody”,它具有最少的本地特权。如果no_root_squash选项开启的话,并为远程用户授予root用户对所连接系统的访问权限。在配置NFS驱动器时,系统管理员应始终使用“ root_squash”参数。

路径配置错误

.在PATH中表示用户可以从当前目录执行二进制文件/脚本。但是一些管理员为了避免每次都必须输入这两个额外的字符,他们在用户中添加.在他们的PATH中。对于攻击者而言,这是提升其特权的绝佳方法。

相关参考链接:

二、win10和Linux提权的漏洞有哪些,怎么利用?

与第一条问题高度重合。

漏洞与如何利用?分平台如下:

Windows 10提权漏洞相关(大部分漏洞Windows通用,其余的提权方式参考问一):

  • CVE-2021-33739 [Microsoft DWM Core Library Elevation of Privilege Vulnerability] (Windows 10, 20)
  • CVE-2021-1732 [Windows Win32k Elevation of Privilege Vulnerability] (Windows 10, 2019/20H2)
  • CVE-2020-0787 [Windows Background Intelligent Transfer Service Elevation of Privilege Vulnerability] (Windows 7/8/10, 2008/2012/2016/2019)
  • CVE-2020-0796 [A remote code execution vulnerability exists in the way that the Microsoft Server Message Block 3.1.1 (SMBv3) protocol handles certain requests, aka ‘Windows SMBv3 Client/Server Remote Code Execution Vulnerability’] (Windows 1903/1909)
  • CVE-2019-1458 [An elevation of privilege vulnerability exists in Windows when the Win32k component fails to properly handle objects in memory] (Windows 7/8/10/2008/2012/2016)
  • CVE-2019-0803 [An elevation of privilege vulnerability exists in Windows when the Win32k component fails to properly handle objects in memory] (Windows 7/8/10/2008/2012/2016/2019)
  • CVE-2018-8639 [An elevation of privilege vulnerability exists in Windows when the Win32k component fails to properly handle objects in memory] (Windows 7/8/10/2008/2012/2016)
  • CVE-2018-0743 [Windows Subsystem for Linux Elevation of Privilege Vulnerability] (Windows 10 version 1703/Windows 10 version 1709/Windows Server version 1709)
  • CVE-2018-8453 [An elevation of privilege vulnerability in Windows Win32k component] (>= windows 8.1)
  • CVE-2018-8440 [Windows ALPC Elevation of Privilege Vulnerability] (windows 7/8.1/10/2008/2012/2016)
  • 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)
  • MS16-111 [KB3186973]  [kernel api]  (Windows 10 10586 (32/64)/8.1)
  • MS16-034 [KB3143145]  [Kernel Driver]  (2008/7/8/10/2012)
  • MS16-032 [KB3143141]  [Secondary Logon Handle]  (2008/7/8/10/2012)

Linux 提权漏洞相关:

  • CVE-2022-0847
  • CVE-2022-0185
  • CVE-2022-0435
  • CVE-2022-0492
  • CVE-2019-14287
  • CVE-2021-3156
  • CVE-2021-26708
  • CVE–2018–18955  [map_write() in kernel/user_namespace.c allows privilege escalation] (Linux kernel 4.15.x through 4.19.x before 4.19.2)
  • CVE–2018–1000001  [glibc] (glibc <= 2.26)
  • CVE-2017-1000367  [Sudo] (Sudo 1.8.6p7 - 1.8.20)
  • CVE-2017-1000112  [a memory corruption due to UFO to non-UFO path switch]
  • CVE-2017-16995  [Memory corruption caused by BPF verifier] (Linux kernel before 4.14 - 4.4)
  • CVE-2017-16939  [UAF in Netlink socket subsystem – XFRM] (Linux kernel before 4.13.11)
  • CVE-2017-7494  [Samba Remote execution] (Samba 3.5.0-4.6.4/4.5.10/4.4.14)
  • CVE-2017-7308  [a signedness issue in AF_PACKET sockets] (Linux kernel through 4.10.6)
  • CVE-2017-6074  [a double-free in DCCP protocol] (Linux kernel through 4.9.11)
  • CVE-2017-5123  [‘waitid()’] (Kernel 4.14.0-rc4+)

Linux系列太多,此处仅列出仅5年相关漏洞的不完全编号,其余方式提权可借助问题一方式

三、内网渗透降权的作用?

使用sytem权限的进程可能会遇到以下问题:

1、无法获得当前用户的文件内容

例如无法捕获用户的屏幕

2、环境变量有差异

比如以下环境变量:

  • APPDATA
  • Temp
  • Tmp
  • USERDOMAIN
  • USERNAME
  • USERPROFILE

3、注册表有差异

参考链接:渗透技巧-程序的降权启动