Windows云文件迷你过滤器驱动程序中的提权漏洞(CVE-2021-31969)
概述 云存储日益普及,Windows系统通过云同步引擎提供本地访问云端数据的漏洞理功能,该组件利用云文件迷你过滤器驱动程序(cldflt.sys)实现Cloud Filter API。码提然而,权漏cldflt.sys中存在一个整数溢出漏洞,洞原标记为CVE--,提权启行源码演示攻击者可借此权限提升,漏洞理执行代码。码提 深入理解云同步引擎 Windows 版本引入云文件API,权漏包括本机Win和WinRT API,洞原支持云同步引擎,提权管理文件和目录等任务。漏洞理云同步引擎在远程主机与本地客户端之间同步文件,码提允许用户通过Windows文件系统和文件资源管理器访问云端文件。权漏 云文件可能巨大,洞原但本地表示文件仅需存储头的几个字节。访问时,Windows会触发同步以使关联云文件可用。处理这些文件时,可能引发漏洞。 漏洞触发机制 攻击者通过几个关键步骤利用此漏洞:执行同步根注册,启动同步提供器与过滤器API间的通信。
获取目标目录句柄,使用FSCTL_GET_REPARSE_POINT获取重解析点数据。
将获取的数据长度设为零,通过FSCTL_SET_REPARSE_POINT_EX设置回,并使用云过滤器FSCTL请求占位符更新。
内核驱动程序漏洞 cldflt.sys负责处理云过滤器FSCTL,通过HsmFltProcessHSMControl函数实现,使用switch语句处理不同操作。对于代码为0xC的请求,函数最终调用HsmFltProcessUpdatePlaceholder。 处理流程包括分配缓冲区、检索重解析点数据、调用HsmpRpiDecompressBuffer解压缩数据。在HsmpRpiDecompressBuffer中,攻击者修改的长度值被处理,分配缓冲区时使用此值。但在解压缩时,传递给RtlDecompressBuffer的缓冲区大小比实际长度少字节,导致整数下溢,砼软件源码产生巨大缓冲区长度值,引发内核缓冲区溢出。 补救措施 微软通过检查确保检索到的长度不小于4,防止整数下溢,修复此漏洞。网络安全必备知识本地提权漏洞分析
网络安全学习之路,始于对本地提权漏洞的深度剖析。首探CVE--,一个微软新年的首个具有exploit的漏洞,深入探索了漏洞点定位与利用代码分析的难点。本文将逐步展开这一历程,带领读者深入理解这一漏洞。
官方信息揭示,此漏洞源于Windows Backup Service,允许经身份验证的攻击者提升至SYSTEM权限,实现任意文件删除,但复现不稳定。
面对利用代码的分析,我们首先复现尝试,却在虚拟机与路径问题上受阻。随后,通过补丁对比和代码分析,定位至sdrsvc.dll文件的CServerSet::RemoveObject函数被修改。在Windbg调试中,我们发现利用程序未能到达漏洞点所在的文件,从而未能确认漏洞的确切位置。
反思过程中,我们意识到忽视了动态监控方法,如procmon,以及对病毒分析流程的理解。补丁对比揭示,修复前后的差异在于CreateFileW函数的属性设置,从FILE_ATTRIBUTE_NORMAL变为FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE,使得临时文件创建与删除整合为单一操作。
通过补丁对比与原理分析,我们确认这是一个条件竞争漏洞,攻击者可利用临时文件创建与删除的间隙,替换系统文件,实现本地提权。任意文件删除至本地提权的深圳软件源码路径,需同时赢取两个条件竞争,增加了实现难度。
漏洞利用分为两部分:任意文件删除与本地提权。任意文件删除主要涉及Windows Installer服务与MSI文件的交互,攻击者需在特定时机删除并替换关键目录,以实现条件竞争。而本地提权过程,需在任意文件删除的基础上,利用Windows Installer服务的特性,实现系统文件的替换,从而达成提权目标。
通过详细分析,我们揭示了CVE--漏洞的全貌,从漏洞定位到原理分析,再到利用流程,为网络安全专业人士提供深入理解与应对策略。
一次艰难的渗透提权过程
某日,我接到了朋友的一条shell,任务是提权。拿到shell后,发现无法通过常见的工具如菜刀或蚁剑执行命令。深入分析后,我首先查看了phpinfo信息,发现是宝塔环境。联系开发工程师后,了解到Windows环境下提权较为困难,于是转向Linux环境探索。
在Linux环境下,我尝试利用putenv函数绕过某些限制。参考了P神的文章以及exploit-db.com上的POC,但未成功。经过多次尝试,我继续寻找解决方案。
在浏览GitHub时,我发现了利用LD_PRELOAD功能绕过某些限制的姿势。按照该姿势尝试了编译代码并上传调用文件,但在利用过程中,发现没有回显。经过进一步研究,我找到了利用LD_PRELOAD和putenv结合的源码买卖暴利方法,最终成功绕过限制。尽管成功,但这种方式在执行代码时存在不便,如缺乏回显和执行带参数命令时的错误提示。
在后续尝试中,我发现了利用LD_PRELOAD功能结合centos环境的更有效方法。通过阅读大佬的文章,我了解到了使用for循环修改LD_PRELOAD首个字符为\0,这一小动作能够让系统原有的LD_PRELOAD环境变量失效,从而实现绕过限制的目的。同时,作者提供了修复版的bypass.c代码,该代码能通过环境变量接收待执行命令行,从而实现安全的执行。
在研究过程中,我发现了利用mail()函数劫持getuid()的另一种方法。基本原理是在Linux环境中,mail()函数在执行过程中会默认调用系统程序/usr/sbin/sendmail,而sendmail会调用getuid()。通过LD_PRELOAD,可以劫持getuid()函数,进而执行恶意代码。我编写了一个原型为uid_t getuid(void)的C函数,内部执行攻击者指定的代码,编译为共享对象evil.so,并通过putenv()设定环境变量LD_PRELOAD为evil.so,最终利用mail()函数执行恶意代码。
成功利用后,我通过Python的反弹脚本执行命令并监听,实现了与目标服务器的交互。根据版本信息,我确认了目标系统的版本为2.6,属于较为旧的版本,因此可以利用脏牛漏洞进行提权。我选择在本地环境中编译并上传执行脏牛脚本,成功将root权限替换,实现了对目标服务器的登陆。
登陆后,我及时恢复了/etc/passwd文件,并学习了一篇关于后门的36鲸源码文章,了解了如pam补丁、隐藏文件、suid和inetd等可以用于创建后门的方法。同时,我安装了socat工具以连接后门。
为了实现横向渗透,我使用了metasploit工具。考虑到当前环境为外网服务器,我选择了生成Meterpreter会话并监听等待上线。然而,我意识到这并不是内网渗透的典型场景,因此决定将精力放在其他类型的内网渗透场景上,以便将来撰写相关文章。
完成任务后,我提醒自己清理痕迹,以避免被管理员发现或溯源。最后,我在凌晨两点抽支烟,准备洗洗睡,希望晚安时能得到一个平静的夜晚。
Chkrootkit 0.本地提权漏洞利用与防范研究
本文主要讨论了Chkrootkit 0.版本及其以下版本中存在的本地提权漏洞,以及其利用与防范方法。Chkrootkit是一种Linux rootkit检查工具,但在某些情况下,如/tmp目录未挂载noexec属性时,存在严重漏洞,允许本地攻击者获取对根框的访问权限。具体漏洞分析如下: 1.1 漏洞分析 在chkrootkit包中,Thomas Stangner发现了一个允许本地攻击者在特定条件下获取root权限的漏洞。该漏洞位于函数slapper()中,当$ file_port为空时,因为变量赋值缺少引号,导致将所有指定文件作为root用户运行chkrootkit时执行,从而获取root权限。 1.2 漏洞利用条件 要利用此漏洞,攻击者需在/tmp目录中放置一个非root所有者的可执行文件(例如名为'update'的文件),然后以root身份运行chkrootkit。由于Chkrootkit版本小于0.,且文件/tmp/update将以root身份执行,如果攻击者知道管理员定期运行chkrootkit(如通过查看cron.daily)且对/tmp有写访问权限,即可利用此漏洞获取root权限。 1.3 实际测试 通过将update.c文件编译为可执行文件,并上传至/tmp目录,使用root身份运行chkrootkit,可以验证漏洞的存在。执行后检查/tmp目录中的update程序,可发现已被设置为root权限。普通用户登录后,执行./update可直接获取root权限。 1.4 利用与防范方法探讨 防范此漏洞,建议进行以下步骤:查看系统是否存在chkrootkit(例如在CentOS中使用locate或ls –al /usr/sbin/chkrootkit命令)。
查找高权限执行文件(使用find / -perm + –ls命令,查看/tmp目录下的可疑文件,如update)。
设置/tmp目录无执行权限(确保文件和目录的权限设置安全)。
升级至最新版本(例如,最新版本为0.)以获取修复的补丁。
综上所述,虽然Chkrootkit提供了一定的安全性,但存在本地提权漏洞的版本需谨慎使用。确保系统更新至最新版本,加强权限管理,是防范此类安全问题的关键措施。Windows内网提权的十个方向
前言:此文档仅为内网提权技术思路记录,具体细节需进一步研究。
1、利用Windows系统漏洞:识别可提权漏洞编号,检查系统补丁是否齐全。
2、系统服务权限配置漏洞:关注Trusted Service Paths,注意服务路径解析时的潜在风险。
3、利用可信任服务路径漏洞:注意C:\Program Files\SysService服务位置解析时的路径尝试。
4、自动安装配置文件信息泄漏:排查配置文件中可能存在的本地管理员账号密码信息,如sysprep.inf和unattend.xml。
5、高权限计划任务:检查是否存在高权限账户执行的计划任务。
6、Empire自带模块:使用Empire内置的PowerUp部分模块进行提权检查。
7、利用组策略首选项漏洞:关注SYSVOL文件夹中可能保存的本地管理员密码,采取相应防御措施。
8、绕过UAC提权:合理设置UAC策略,避免权限提升。
9、令牌窃取提权:注意及时更新微软安全补丁,防止令牌窃取。
、无身份凭证获取权限:在内网主备DNS服务器均不可用时,利用Responder收集内网计算机凭证。
请在实际操作中严格遵守法律和道德规范,确保网络安全。
Windows中错误报告机制导致的提权漏洞(CVE--)
年月,黑客"SandboxEscaper"揭示了一个Windows Error Reporting (WER)组件中的未公开漏洞(CVE--),随后我发现了另一个可能被滥用提升系统权限的漏洞。尽管微软承认攻击者已利用此漏洞,但直到年5月才发布了相应的补丁。 这个漏洞的原理涉及到Windows的错误报告机制。WER工具通过收集和发送软硬件错误信息,协助微软为用户提供解决方案。当系统出错,错误报告会被存储在C:\ProgramData\Microsoft\Windows\WER\ReportQueue的目录中,所有用户可写入此目录。然而,这一灵活性也带来风险,因为高权限的exe会处理这些用户生成的文件,如果流程中存在漏洞,就可能导致权限滥用。 漏洞利用的关键在于Windows支持的文件链接功能,可以将文件指向其他位置。黑客可以通过创建链接,将WER目录中的文件指向系统文件,利用计划任务的system权限,从而实现权限提升。具体步骤如下:命令wermgr.exe -upload会读取并上传reportQueue下的错误报告。
遇到损坏的report.wer文件时,wermgr.exe会尝试删除它,通过kernel!GetFileSecurity和kernel!SetFileSecurity改变文件权限,这一过程可能被恶意利用。
尽管创建文件链接存在挑战,但攻击者可能通过覆盖可执行文件来尝试利用此漏洞,等待系统自动执行。这一漏洞的发现和讨论来自白帽汇,一个专注于信息安全的公司,他们提供了多种安全产品和服务,包括网络空间安全搜索引擎和应急响应服务。从零入门linux内核安全:脏牛提权漏洞分析与补丁分析(CVE--)
本文基于开源Linux系统内核代码及网络公开资料整理,旨在帮助读者理解Linux内核底层安全机制。文中提及的脏牛漏洞提权问题已修复。请读者遵守法律法规,本文内容仅用于教育与研究目的。
脏牛漏洞提权事件引起了广泛关注,它源于条件竞争导致的提权机制。然而,对于内核细节的理解可能存在门槛。本文将从原子操作这一基础概念开始,逐步解析脏牛漏洞的成因。
在讨论脏牛漏洞前,我们先理解原子性操作的概念。原子性操作指的是,使用C语言的一行代码描述的逻辑,在概念上被视为不可分割的操作。然而,从更底层的CPU执行层面来看,即使是看似原子的操作,也可能被分解为多条机器码执行,这些机器码在执行过程中可能受到其他线程的影响。
以内联汇编为例,看似简单的原子性代码实际上是多个原子性机器码指令的组合。尽管执行过程中任何一个操作数的值被视为常数,但在整个子例程的机器码集合层面,操作的顺序和执行顺序可能不满足多线程安全要求。这种理解有助于我们深入理解脏牛漏洞的原理。
接下来,我们将引入双校验检查if条件锁这一概念,这与脏牛漏洞的成因相关。在理解脏牛漏洞之前,了解安全调用类构造函数的策略是必要的。通过类的构造函数模拟内核页管理机制的一部分,我们可以构建一个类实例的管理系统,其中每个实例通过页表维护唯一指向,保证原子独占性。
在讨论如何安全地调用构造函数时,我们发现,尽管在自然语言思考下,人们可能会写出看似原子的操作逻辑,但实际上这种逻辑可能并不安全,因为它缺乏多线程保护机制。通过引入双校验检查if条件锁的概念,我们可以确保构造函数的调用在多线程环境中具有安全性。
回到脏牛漏洞的核心——私有副本(PRIVATE_COPY)。这里的PRIVATE_COPY指的是在物理内存中映射一块独立的副本,副本在读操作上与原件无关,但在写操作上,副本的创建并非一次性完成,而是根据实际需要进行。副本可以被任意写入,但不允许写回磁盘。对于内核的处理,当尝试从内存写回磁盘时,涉及到复杂的内核函数,如__get_user_pages()等,这些函数在处理COW页时存在关键逻辑,涉及到页错误处理、权限修改等。
在理解了原子操作、双校验检查if条件锁以及私有副本的概念后,我们可以更深入地分析脏牛漏洞的成因。通过巧妙地利用系统内核的页管理机制,攻击者可以构造特定条件,使得系统在处理文件映射时发生错误,从而实现提权。在具体实施时,需要创建多个线程进行竞争性操作,利用madvise函数和mmap函数进行内存管理,最后通过内核函数的漏洞利用实现提权。
综上所述,理解脏牛漏洞提权的过程涉及多个内核机制的深入理解,包括原子操作、多线程安全、文件映射机制等。通过掌握这些概念,我们不仅能够理解脏牛漏洞的成因,还能够评估系统安全性和内核代码的稳定性。
CVE--:基于错误报告机制的Windows提权漏洞
在年月8日,由@clavoillotte揭露的CVE--漏洞影响了Windows 和Windows Server ,虽然旧版本也可能受到影响,但未进行测试。此漏洞属于本地权限提升类型,允许攻击者利用Windows错误报告服务的特性进行权限滥用。
该漏洞的根源在于Windows错误报告服务在处理用户生成的报告时,会执行对普通用户可写文件的敏感操作,如重命名或移动只有SYSTEM权限才能访问的文件。这个过程在wermgr.exe以SYSTEM权限执行,而涉及的文件和目录可通过普通用户的WerFault.exe创建,无需通过符号链接。
攻击者可以通过构造NTFS junction(伪符号链接)控制操作目标,比如将Report.wer文件的操作影响扩展到C:\Windows\System\evil.dll。虽然存在技术难题,如确保报告文件的有效性和链接操作的时间,但通过oplocks可以解决。有PoC(Proof of Concept)示例演示了如何在Windows 上利用这个漏洞。
微软在年月发布了安全补丁,以修复这一漏洞。漏洞报告的流程如下:年9月日报告给厂商,日厂商确认,日表示将在次周二的补丁中修复,最终在月8日补丁发布并公开漏洞详情。
此漏洞由David Cash独立发现,白帽汇整理并翻译了相关信息,但所有观点和立场并不代表白帽汇。白帽汇专注于信息安全,提供网络空间安全搜索引擎、检索系统和安全讯息平台等产品,以及网络空间测绘、企业威胁情报等服务。
2024-12-28 15:33
2024-12-28 15:23
2024-12-28 14:48
2024-12-28 13:48
2024-12-28 13:19