HeyBoy's Blog

Hello World,Hey Boy~ [+] Menu


Windows提权常用方法思路总结

渗透测试

以下是总结的提权思路和方法,来自于小迪的课程。

先上张思维导图:

1.Webshell

如果已知cms,则找公开的拿webshell的方法。如果未知cms,则找模板编辑,sql执行,文件管理,文件上传,文件备份的功能点。如果有源码,可配合源码审计。

2.Windows系统提权

使用systeminfo命令进行补丁收集,使用开源工具查找可能存在的权限提升漏洞。

三款开源工具:https://github.com/chroblert/WindowsVulnScan,https://github.com/vulmon/Vulmap,https://github.com/bitsadmin/wesng

其中WindowsVulnScan是ps1脚本适用于Windows本地提权或服务器上有powershell的情况。Vulmap适用于Linux,Windows比较弱。wesng就是Windows Exploit Suggester – Next Generation (WES-NG),推荐使用。

除此之外,XP及2003,2000可使用at提权:新建计划任务,弹出cmd窗口。用于本地提权。

windows 7、8、03、08、12、16可使用sc提权,使用sc新建系统服务,内容为启动cmd,启动服务就启动了system权限的cmd。通常用于本地提权。

Win2003 & Win2008可使用ps提权,通过下载pstool,执行cmd。https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools,通常用于本地提权。

windows2008&7及older,可使用令牌窃取提升权限,通常用于本地提权。条件是取得主机的普通用户权限,可以msf实施。

windows2008 older,不包含2008,还可以使用进程注入提权,该方法比较古老了。使用的工具有pinjecter。2008以后,可以使用pexec64进行进程注入,不过成功率较低。原理是把模块注入至高权限的进程中,模块中会开启监听,再用nc连接就得到了shell。

如果主机为2012或10及older,存在MS16-075,可使用烂土豆提权。但需要拿到iis或mysql等服务类权限。如果是普通用户,比如users组或administrators组,可以直接尝试令牌窃取。烂土豆需要和令牌窃取配合使用,执行烂土豆exp,再执行令牌窃取。

如果服务器存在第三方软件,且该软件会被管理员经常使用,并且我们能够读写这些软件文件。则可以使用msf生成恶意的dll文件,在管理员启动软件的时候注入恶意的dll。这种方法叫dll劫持。攻击流程:收集服务器上的软件,对软件进行进程调试看加载了哪些dll,生成恶意dll并进行替换(禁止替换系统文件,最好是软件自带的dll),管理员启动软件,dll载入攻击成功。

如果系统中有服务的路径不带引号,我们也可以利用。比如:C:/program files/1.exe这个路径,我们可以构造C:/program.exe后门。启动服务的时候,是以system权限运行的。该方法通常用于本地提权。

如果系统中的服务权限配置不当,也会导致问题。比如我们拿到administrator,想提升至system。可以查看administrator能操作的服务(可用accesschk检测,微软官方有下载),然后使用sc命令将服务路径改为后门程序,再启动服务。系统便会以system权限去运行服务。该方法通常用于本地提权。

如果已有系统管理员权限,需要本地提权至system,可使用AlwaysInstalleLevated提权。该方式可以以system权限去运行msi安装包,需要管理员权限去开启组策略设置。

如果操作系统开启了组织管理并设置了自动安装,那么安装后会保留用户账户信息,可以进行查看,该方法叫Unattended Installs。msfpost/windows/gather/enum_unattend。这种方式比较鸡肋,一般不会用这个功能。

3.Windows主机数据库提权

除了access,其他数据库都能提权。

Mysql:

UDF提权,前提是拿到数据库的root,可通过读取网站配置,查看数据库文件,暴力破解。通过对mysql加载自定义的dll,新增用户自定义函数,从而执行命令。由于mysql继承了管理员权限,所以可通过该方式执行命令。

MOF提权,系统每过5s会自动读取mof文件并执行。通过sql写入mof文件,执行系统命令。

启动项提权:通过sql往启动文件夹中上传并写入后门。可使用msf实施。

sqlserver:

xp_cmdshell提权:如果有数据库的sa权限,通过开启xp_cmdshell执行系统命令,该函数在2005以后的版本默认是关闭的。

在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权,但该函数没有回显,需要使用重定向符把结果导出为文件。

如果xp_cmdshell和sp_oacreate都不行,可以尝试用沙盒提权。上面这些方法,都需要sa权限去开启对应的函数。

oracle:

一般和jsp配合使用,一般来说,jsp默认的权限就是system。

可使用oracleshell这个工具。oracle提权中,可以将数据库普通权限的用户提升至dba权限,并以oracle服务的权限执行系统命令。也可以直接把dba用户以oracle服务的权限执行系统命令。如果拥有一个oracle的注入点,可以用sqlmap直接执行系统命令,但没有回显,需要自行验证。

redis:

如果目标主机的redis没有做安全加固:以root身份运行,没有设置密码或弱口令,我们便可以利用。通过redis设置定时任务反弹shell,或者是通过redis写入ssh key,或者是通过redis写入webshell和自启动文件。

postgresql:

主要是cve-2019-9193和cve-2018-1058

Written by Jason Wang. Published on .