windows提权系列上篇

在渗透测试中,提升自己的权限是经常遇到的问题,往往在渗透中最容易获取的权限就是一个webshell,如果网站是架设在Windows系统上的,这时就可能遇到这样的问题,还有一种情况是在做横向渗透的时候,收集到一些可以远程连接桌面的帐号,这是也需要,在实际的渗透中有很多的地方会需要这个操作,这个系列就主要介绍各种提权的方式。

提权基础

在提权之前首先要做的是对系统的操作系统信息做一些信息收集,关于信息收集的介绍请看之前的文章《Windows环境下的信息收集》,这里简单提一下这几条命令:

systeminfo | findstr OS #获取系统版本信息

hostname #获取主机名称

whomai /priv #显示当前用户的安全特权

quser or query user #获取在线用户

netstat -ano | findstr 3389 #获取rdp连接来源IP

dir c:\programdata\ #分析安装杀软

wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁

REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获取远程端口

tasklist /svc | find "TermService" + netstat -ano #获取远程端口

溢出提权

溢出提权是在提权过程中最通用的,但是其利用的关键点在于目标系统安全补丁打的不够及时,才会让攻击者有机可乘,这里大概列一下比较新的溢出exp。

WINDOWS错误系统配置

有时候由于运营者的错误配置可能给我们提权提供便利,提高我们的提权成功率,下面就对这个方面的提权方法做一个简单的介绍。

可信任服务路径

“Trusted Service Paths”漏洞是由系统中的“CreateProcess”函数引起的,利用了windows文件路径解析的特性,并涉及了服务路径的文件/文件夹权限,存在缺陷的服务程序利用了属于可执行文件的文件/文件夹权限。如果权限合适,我们可以上传恶意可执行文件。简单讲就是查找系统服务文件中存在非引用路径。如果一个服务调用可执行文件,没有正确处理引用的全路径名,就可以利用这个漏洞。metasploit集成了trusted_service_path(http://www.zeroscience.mk/codes/msfsession.txt)漏洞利用模块。

产生原因

windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。例如,有如下的文件路径:

C:\Program Files\Some Folder\Service.exe

对于上面文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字向匹配的程序。操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。以上面的例子为例,windows会依次尝试确定和执行下面的程序:

C:\Program.exeC:\Program Files\Some.exeC:\Program Files\Some Folder\Service.exe

所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,服务一旦重启,我们的恶意程序就会以system权限运行(大多数情况下)。

利用步骤

1.检测目标主机是否存在该漏洞

wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\" |findstr/i /v """

如果存在一下结果则表示存在:

FABS - Helping agent for MAGIX media database	 Fabs	C:\Program Files (x86)\Common 
Files\MAGIX Services\Database\bin\FABS.exe /DisableUI     Auto

2.检查对有漏洞目录是否有写入的权限。使用Windows内建工具icacls查看路径中受影响文件夹的权限,(M)代表修改权限,(F)代表完全控制,(CI)代表从属容器将继承访问控制项,(OI)代表从属文件将继承访问控制项。

3.攻击。将我们需要执行的exe根据需要重命名并放置在可写入的有漏洞目录下,然后运行如下命令尝试重启服务,如果失败的话等待服务器重启时执行exe,成功提权后记得清理痕迹。

sc stop service_name
sc start service_name

假如我们的exe会弹回一个SYSTEM权限的meterpreter shell,但是我们新得到的会话很快就中断了。这是因为当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。我们所有需要做的就是在终止载荷进程之前,将它迁移到其它进程,也可以使用自动迁移set AutoRunScript migrate -f

系统服务的错误权限配置漏洞

Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。比如,JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。metasploit集成了漏洞利用模块exploit/windows/local/service_permissions。手工测试步骤如下:

1.检查易受攻击的服务.SERVICE_ALL_ACCESS的意思是我们对“Vulnerable Service”的属性拥有完全控制权。

accesschk.exe -uwcqv "Authenticated Users" * /accepteula

#"Authenticated Users"指Windows系统中所有使用用户名、密码登录并通过身份验
证的账户,不包括来宾账户Guest。也可以使用当前用户用户名来列出所以可以被当前
用户修改的服务。
#-->RW 360rp
#       SERVICE_ALL_ACCESS

2.查看可以完全控制的服务的属性。

3.修改服务配置执行命令。BINARY_PATH_NAME参数指向了该服务的可执行程序(360rps.exe)路径。如果我们将这个值修改成任何命令,那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行。

当尝试启动服务时,它会返回一个错误。这一点我们之前已经讨论过了,在Windows系统中,当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。上面的“net user”肯定是无法和服务管理器通信的,但是不用担心,我们的命令已经以SYSTEM权限运行了,并且成功添加了一个用户。

4.提权成功后修改服务配置,清理痕迹。

不安全的注册表权限配置

在Windows中,和Windows服务有关的信息存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 注册表项中。以服务360rp为例,服务对应的程序路径存储在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\360rp\ImagePath中,如果我们对这一键值有写入权限就可以修改服务对应的程序路径,让系统以SYSTEM权限运行我们的程序,从而达到提权的目标。如下所示,我们可以使用SubInACL(https://www.microsoft.com/en-us/download/details.aspx?id=23510)工具去检查注册表项的权限。建议本地安装后找到 subinacl.exe 拷贝到目标机器上运行。

subinacl.exe /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\360rp" /display

如果我们对注册表有写入权限,就可以修改注册表,使得服务启动时运行我们的恶意程序:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\360rp" /t REG_EXPAND_SZ /v ImagePath /d "C:\programdata\adduser.exe" /f

在下一次启动该服务时,adduser.exe将会以SYSTEM权限运行。成功提权后记得修改回配置。

不安全的文件/文件夹权限配置

可信任服务路径漏洞产生的原因就是不安全的文件夹权限以及“CreateProcess”函数。如果我们对系统服务对应的应用程序所在文件夹有写入权限,便可以直接使用恶意程序替换原来的可执行文件,从而完成提权。

任意用户以NT AUTHORITY\SYSTEM权限安装msi

AlwaysInstallElevated是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权限执行任意payload。msf集成了漏洞利用模块:exploit/windows/local/always_install_elevated 。详细利用步骤如下:

1.判断是否启用了AlwaysInstallElevated策略。当两个注册表键值查询结果均为1时,代表该策略已启用。

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

2.使用msfvenom生成恶意程序上传

msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi-nouac -o rotten.msi

3.运行恶意程序。

msiexec /quiet /qn /i C:\programdata\rotten.msi

# /quiet    安装过程中禁止向用户发送消息
# /qn       不使用GUI
# /i        安装程序

计划任务

可以使用如下命令查看计算机上的计划任务。

schtasks /query /fo LIST /v

使用如下命令可以查看指定目录的权限配置情况。如果我们对以高权限运行的任务所在目录具有写入权限,就可以使用恶意程序覆盖掉原来的程序。当计划任务下次执行时,就会以高权限运行恶意程序,进而完成提权。

accesschk.exe -dqv "D:\test" -accepteula

总结

本文作为这个提权系列的上篇,主要讲了提权的一些基础信息,提到了溢出提权、错误配置导致的提权等,由于作者还没完全完成这个系列的所有内容,所以可能有不全的地方,请大家理解,随后会慢慢放出作者已经完成的部分。

本文分享自微信公众号 - 信安之路(xazlsec)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏繁花云

[实例]利用php+mysql完成shell脚本的授权验证

作者最近这几天写了一个shell脚本准备进行出售,由于单独出售利润不大,决定将脚本按照IP进行授权,出售授权,这样可以增加利润。

21800
来自专栏Java3y

Linux进程管理

每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。

60200
来自专栏智能大石头

[netcore]CentOS安装使用.netcore极简教程(免费提供学习服务器) 新生命团队netcore服务器免费开放计划

本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用。

28200
来自专栏IT派

你知道 Python 这五个有趣的彩蛋吗?

当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西。通常,这意味着社区的贡献者会为该语言添加一些有趣和特别的彩蛋以及隐藏的特性(当然前提是不会增加在生...

13120
来自专栏繁花云

[记录]常用shell代码段

10200
来自专栏繁花云

[Linux]Centos7 zsh一键安装脚本

大多数的Linux用户偏爱Bash,因为发行版通常默认的就是它。 Bash确实是不错的Shell,但仍有用很多不尽人意的地方,如自动补全的功能不够强大,定位较...

22400
来自专栏繁花云

[备忘]liunx下shell脚本通过IP授权方法

IP=$(curl http://ip.6655.com/ip.aspx -x122.225.117.181:80)

11000
来自专栏FreeBuf

初识Linux渗透:从枚举到内核利用

许多人都认为Linux是最安全的操作系统,因此在对Linux的安全问题上也放松了警惕。那么事实真的如此吗?其实安全从来都只是相对的,Linux也不例外。虽然它加...

33070
来自专栏FreeBuf

利用白文件打造超级渗透测试后门程序的思路分享

计算机中的后门程序,品种多样。有Telnet、IFEO 、WebShell、注册表、Radmin等。大部分后门都会在一段时间内被AV检测到,并清除。通过修改木马...

13310
来自专栏FreeBuf

某入群题之命令执行字符限制绕过(WEB100)

某入群题又来啦!由于之前刚好做了下hitcon的两个命令执行绕过,问了下pcat能不能写这篇文章。然后他说随便我…..这里就记录一下。看题!

14940

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励