前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全杂谈-Windows下的几种提权方式的粗略汇总

安全杂谈-Windows下的几种提权方式的粗略汇总

作者头像
用户1631416
发布2019-09-24 14:09:38
9110
发布2019-09-24 14:09:38
举报
文章被收录于专栏:玄魂工作室玄魂工作室

本文转载在 订阅号 “安全初心”,欢迎关注。 作者:hl0rey 编辑:暮城之光 首先感恩父亲节,愿所有天下的父亲健康快乐。也感谢某兄弟的多番提点,打开了自己的一些心智,思维终究会在理想与现实中趋于平衡,不成佛不成魔。突然也在想一个问题,安全可以被证明吗?不安全可以被证明吗?留给大家思考。

随着系统管理员的安全意识的普遍提高,提权越来越成为广大渗透测试者所面临共同问题。本人水平有限,粗浅地总结了下几种提权方式,以及一些个人看法,并配合相应的演示。可能对实战没什么太直接的帮助,算是帮大家温习下基础吧。 实验环境是kali和win2008,有时候用win10,毕竟个人用户还是win10多啊。

一.利用漏洞

1.1.利用漏洞提权,简单快捷,瞬间从0到1,美滋滋。

windows系统被爆出了很多提权漏洞,通常来说及时打补丁就能防止黑客在本地利用漏洞提权。换言之就是没打补丁就能提权,另外windows平台上许多软件也被爆出提权漏洞,所以说枚举目标机上打了哪些补丁、操作系统的版本以及安装了哪些软件对于利用漏洞提权来说十分重要。

1.2.测试方法

用wmic来收集信息,wmic和powershell可是渗透利器。命令中的对象和属性名都不区分大小写。

1.2.1.获取当前系统名称
代码语言:javascript
复制
wmic os get caption
1.2.2.枚举补丁
代码语言:javascript
复制
wmic qfe get Description,HotFixID,InstalledOn

可以用cmd命令稍微筛选下(此处命令为查看是否打了ms17010和ms08067的补丁)

代码语言:javascript
复制
wmic qfe get Description,HotFixID,InstalledOn | findstr /C:"KB4013389" /C:"KB958644"

powershell https://github.com/rasta-mouse/Sherlock msf模块 得先获得一个meterpreter shell

代码语言:javascript
复制
use post/windows/gather/enum_patches

msf这个模块其实也是用wmic去枚举的补丁,然后做的筛选。其实可以与时俱进的优化一下。 可以看出是用wmic去枚举的补丁。

这个模块可以指定要检测的补丁号如果不指定的话,会有默认的几个补丁会检测,存在下面这个数组。可以通过在这数组里加自己自定义的补丁号和提示信息。

检测逻辑

1.2.3.枚举当前安装的软件
代码语言:javascript
复制
wmic product get name,version

1.3.举例

1.3.1.系统漏洞

最新的漏洞(CVE-2018-8120)

代码语言:javascript
复制
https://github.com/alpha1ab/CVE-2018-8120

这个补丁肯定没打,其实不用枚举。 用exp的时候注意下位数,一下就成功了,预感又要有一大批服务器要遭殃了

炒一个之前提到的冷饭(smb跨协议凭据反射) 欺骗system来认证,从而泄露凭证,这属于"社工"windows系统。 漏洞编号MS16-075,补丁编号KB3164038 。 在不打补丁,并且不启用smb签名的情况下可以用(待考证)。 烫手山芋

代码语言:javascript
复制
https://github.com/Kevin-Robertson/Tater

WPAD(Web Proxy Auto-Discovery protocol )是为了让浏览器自动发现代理服务器,使代理对于用户来说是透明的,也就是说让用户不用自己配置代理,感受不到代理存在。

代码语言:javascript
复制
https://www.ibm.com/developerworks/cn/linux/1309_quwei_wpad/

ie浏览器默认会去尝试自动获取配置,有的windwos服务也会去自动获取,比如windows更新服务。 Windows Defender updates服务是个高权限的服务,我们可以通过nbns欺骗让system通过http在假的 WPAD进行ntlm认证,我们再把凭据反射回smb协议,从而取得高权限。 烂土豆

代码语言:javascript
复制
https://github.com/breenmachine/RottenPotatoNG

GitHub上编译好版本只能弹个cmd.exe,需要自行修改main方法,让他可以执行自定义的命令。稍作修改即可。

烂土豆比烫手山芋更可靠,因为不用等待Windows Defender updates服务来上钩。所以说能用ms16-075,那就用烂土豆吧。win10系统记得先过uac,再提权。

1.3.2.第三方组件漏洞

win10pcap提权

代码语言:javascript
复制
http://www.freebuf.com/news/82310.html

二.DLL相关提权

2.1.DLL注入

这种方法提权,只能是在有漏洞的情况下吧

2.2.DLL劫持

powersploit下的powerup.ps1中的两个方法Find-ProcessDLLHijack、Find-PathDLLHijack。(路径太长显示不全。。。)

三.本地存储的密码

这个项目挺有趣的

代码语言:javascript
复制
https://github.com/AlessandroZ/LaZagne

这个远控,把上面那个项目作为一个模块加了进去

代码语言:javascript
复制
https://github.com/n1nj4sec/pupy/

powersploit里的powerup.ps1其中包括几种搜集本地密码的方法,就像之前一样,把脚本导入进去,直接调用方法就好。

代码语言:javascript
复制
Get-UnattendedInstallFile
Get-Webconfig
Get-ApplicationHost
Get-SiteListPassword
Get-CachedGPPPassword
Get-RegistryAutoLogon

3.1.自动应答文件

需要自动化部署一些服务的时候,能用到这个 msf模块

代码语言:javascript
复制
post/windows/gather/enum_unattend

3.2.其他程序的配置文件

发现包含敏感关键词的文件 在当前目录以及其子目录中,不区分大小写的查找:

代码语言:javascript
复制
findstr /si password *.txt

递归的搜索目录并且只显示文件名

代码语言:javascript
复制
C:\> dir /b /s unattend.xml

3.3.GPP

windows下这些场景需要存储和使用用户凭证

代码语言:javascript
复制
映射驱动(Drives.xml)
创建本地用户
数据源(DataSources.xml)
打印机配置(Printers.xml)
创建/更新服务(Services.xml)
计划任务(ScheduledTasks.xml)
更改本地Administrator密码

所有域的组策略存储在

代码语言:javascript
复制
\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\

也就是这几个路径

代码语言:javascript
复制
Services\Services.xml
ScheduledTasks\ScheduledTasks.xml
Printers\Printers.xml
Drives\Drives.xml
DataSources\DataSources.xml

powerspoit中的powerup.ps1的Get-CachedGPPPassword方法,也就是把这几个路径检测检测,还能自动解密。

四.配置不当的服务

获取服务的信息(获取本地以system权限启动的服务)

代码语言:javascript
复制
wmic service get name,pathname,startname | findstr /C:"LocalSystem"

4.1.服务相关注册表可被修改

windows下每当一个服务被创建的时候就会这个键下对应的创建一组键值,一般这组键值只有管理员才能访问,但是如果权限配置不当还是有可能提权的。

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services

其中的ImagePath的值指向的是服务的启动程序所在的位置,如果这个地方可以修改的话,也就能劫持这个服务了。

4.2.可执行文件可被修改

直接替换服务的可执行文件,劫持服务提权。 用accesschk来检测一下,可以修改的服务。

代码语言:javascript
复制
https://technet.microsoft.com/en-us/sysinternals/accesschk.aspx
代码语言:javascript
复制
accesschk.exe -uwcqv "你知道权限的用户" * -accepteula

也可用msf模块

代码语言:javascript
复制
exploit/windows/local/service_permissions

powersploit中的powerup.ps1 获取可以修改的服务

代码语言:javascript
复制
Get-ModifiableService

4.3.可执行文件路径未被引号包裹

如果服务的可执行文件路径未被引号包裹,那么在遇到空格的时候,会导致截断,例如C:\Program Files\ 1.exe,如果未被引号包裹,在服务启动过程中会尝试加载C:\Program.exe。所以查找到有缺陷的服务,在可写的路径下插入后门,重启服务即可提权。 msf模块

代码语言:javascript
复制
exploit/windows/local/trusted_service_path

powerup.ps1

代码语言:javascript
复制
Get-ServiceUnquoted

五.令牌操作

通过office漏洞拿到win10的shell,先过uac,然后直接就可以导入system的令牌,瞬间获得system权限。

不想用msf的话,可以参考这个链接 https://labs.mwrinfosecurity.com/blog/incognito-v2-0-released/

六.高权限安装

https://msdn.microsoft.com/en-us/library/aa367561 windows中有一项组策略配置(一个系统配置,一个用户配置两个配置都启用才行,并且相关的组策略对象都启用才行)可以让用户在运行.msi文件进行安装程序时,始终以system权限运行,而不是以当前用户的权限。 我感觉这个只有撞了大运才会碰上吧23333,但是在渗透测试中还是要尝试一下的。 涉及的注册表键值及查询方法是(只要值为1,则是启用状态)

代码语言:javascript
复制
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer

msf模块

代码语言:javascript
复制
exploit/windows/local/always_install_elevated

powersploit下的powerup.ps1脚本里有个Get-RegistryAlwaysInstallElevated可以检测是否存在高权限安装。

六.凭据爆破

爆破下高权限账户或者服务的口令。

文章详情:微信公众号“玄魂工作室”。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.利用漏洞
    • 1.1.利用漏洞提权,简单快捷,瞬间从0到1,美滋滋。
      • 1.2.测试方法
        • 1.2.1.获取当前系统名称
        • 1.2.2.枚举补丁
        • 1.2.3.枚举当前安装的软件
      • 1.3.举例
        • 1.3.1.系统漏洞
        • 1.3.2.第三方组件漏洞
    • 二.DLL相关提权
      • 2.1.DLL注入
        • 2.2.DLL劫持
        • 三.本地存储的密码
          • 3.1.自动应答文件
            • 3.2.其他程序的配置文件
              • 3.3.GPP
              • 四.配置不当的服务
                • 4.1.服务相关注册表可被修改
                  • 4.2.可执行文件可被修改
                    • 4.3.可执行文件路径未被引号包裹
                    • 五.令牌操作
                    • 六.高权限安装
                    • 六.凭据爆破
                    相关产品与服务
                    文件存储
                    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档