利用已知漏洞进行Windows提权操作
土豆家族提权 https://mp.weixin.qq.com/s/OW4ybuqtErh_ovkTWLSr8w
msf 提权基本使用流程
后门被执行,msf 监听得到基于当前反弹 shell 的 Session,搜索当前系统存在的内核可提权漏洞,以及对应可用 exp 从而利用当前获取的 Session 来提权。
1 | # 生成反弹后门 |
当前受控机器在内网域环境下可能需要进行的下一步操作:
- 提权到 system 与内网其他主机进行交互
- 降权到域用户与内网其他主机进行交互
依靠服务提权
依靠服务将低权限提升为 System/Administrator 权限,创建服务,服务再创建程序,服务权限较高。
sc Windows 服务控制管理命令(适用于 windows 7、10、08、12、16、19、22,早期用 at 命令)
1 | # 创建一个名叫syscmd的执行文件服务 |
PsTools 工具提权
1 | # PsTools微软官方提供的系统排查工具 |
进程注入&令牌窃取
这两种本身不直接创造高权限,而是通过窃取或借用已存在的高权限
进程注入,核心通过寄生与伪装来提权
1 | # MSF或CS进行进程注入 |
令牌窃取,核心是通过盗用身份来进行提权
1 | # MSF或CS进行令牌窃取 |
Bypass UAC
User Account Control,用户账户控制
在运行部分程序时会弹窗提示用户确认执行当前软件,这里需要在不弹窗的情况下自动完成提权
核心是通过利用白名单的信任链,微软为了系统自身管理的便利,预置了一些系统自带的高权限程序(如 eventvwr.exe 事件查看器、fodhelper.exe 磁盘清理辅助等)这些程序 UAC 默认信任直接方行。
这些程序在运行过程中会读取注册表、调用子程序或加载 DLL,若可以篡改它们读取的配置,让其执行攻击代码则会成功提权。(寄生在白名单上)
利用工具 UACME 根据系统版本自动选择有效绕过方法,它会修改特定注册表的剪枝,将默认执行的命令指向创建的后门程序,然后 UACME 启动那个受信任的系统程序。
1 | # Akagi64.exe <Method_ID> <Path_To_Executable> |
MSF 和 PowerShell 里面也都内置了 bypassuac
DLL 劫持
根据下面的顺序进行搜索:
- 应用程序加载的目录
- C:\Windows\System32
- C:\Windows\System
- C:\Windows
- 当前工作目录 Current Working Directory,CWD
- 在 PATH 环境变量的目录(先系统后用户)
Windows 程序启动的时候需要 dll,若这些 dll 不存在,则可通过应用程序要查找位置防止恶意 dll 来提权。
关键在于目标是否是 exe 程序,该程序加载需要哪些 dll,这些 dll 是否可以操作
不带引号的服务
带有空格的目录,服务执行时不带引号,但是该服务的路径存在有空格的目录,会导致执行时系统将空格后的内容当做参数。
将后门文件放在空格前的目录,并命名为空格前的目录名,当启动该服务的时候就会导致执行该后门。
1 | # 利用Windows管理命令行工具筛选服务目标 |
不安全的服务权限
搜索是否能控制一些服务,由于管理配置错误,用户可能对服务拥有过多的权限,例如:若当前用户可以控制对应高权限的服务,修改当前服务所指向的执行文件,从而使脚本执行。
1 | # accesschk微软官方软件 |
自动化项目(自动扫描系统中上百种提权点)
1 | # 支持多种操作系统及启动方式 |
应用程序提权
除数据库之外包括当前主机安装的一些软件的漏洞,eg:sunlogin 向日葵远程代码执行漏洞等
利用数据库进行提权
需要获取到数据库的用户和密码,例如通过网站存在 SQL 注入漏洞,成功 getshell 后查看数据库的存储文件、备份文件,网站应用源码中的数据库配置文件,或采用工具或脚本进行爆破(可能需要先解决数据库外连的问题)
解决外连的方法:
- 利用已有 web 权限建立代理进行外连
- 执行 SQL 让数据库支持外连
MySQL
mysql 数据库中的 user 表,这里表示 root 用户只允许 localhost 连接,localhost 处改为 * 则为任意

1 | GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; |
SQLserver
1 | -- 修改服务器配置存储过程 |
Oracle
1 | ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE; |
注:重启数据库对业务存在较高危害,并且以上操作也是要较高数据库权限的用户才能执行的
MySQL
需要有 root 的数据库密码,若是 php 站,高版本需要 secure_file_priv 参数没有进行目录限制,能够写入正确的 plugin 目录
UDF 提权,用户自定义函数提权:通过编写调用系统命令的共享库文件(Windows 为 .dll,Linux 为 .so),将其导入到 MySQL 的 plugin 目录,然后创建指向该共享库的自定义函数。本质是利用 MySQL 的 UDF 机制,通过加载恶意动态库来执行系统命令,从而突破数据库沙箱限制,获取更高系统权限。
MOF 提权,托管对象格式提权:利用 Windows 系统中 C:/windows/system32/wbem/mof/ 目录下的 mof 文件会被系统定期(每隔 5 秒或每分钟)自动执行的特性。通过 MySQL 将恶意的 mof 文件写入该目录,mof 文件中包含 VBS 脚本,系统执行后就会以 SYSTEM 权限运行命令。需要将文件写入到 %SystemRoot%\System32\Wbem\MOF 目录。
启动项提权:通过 MySQL 将一段 VBS 脚本写入到系统的启动项目录下(如 C:\Documents and Settings\All Users\「开始」菜单\程序\启动)。当管理员重启服务器时,该脚本会被自动调用执行,从而获得系统权限。
- 需要知道启动项路径且有写入权限
- 必须等待或触发服务器重启
- 脚本中的命令需要有足够权限执行
反弹 shell:本质上仍属于 UDF 提权的一种,只是应用场景不同,在 MySQL 自定义函数中实现反弹 Shell 功能,让目标服务器主动连接攻击者的监听端口。当获得了 MySQL 的 root 密码且数据库可以外连,但没有 webshell 或 webshell 权限不足的情况
SQLserver
需要有 sa 密码(SQLserver 最高权限账户)
xp_cmdshell:一个存储过程,允许在 SQL 查询中直接执行 Windows 命令(默认关闭),执行命令 exec xp_cmdshell 'whoami'。
sp_oacreate:一个用于创建 OLE 自动化对象的存储过程,允许 SQL Server 调用 Windows 的 COM 组件。通过它创建一个 WScript.Shell 对象(类似 Windows 脚本宿主),利用这个对象执行命令。
CLR:CLR 集成允许在 SQL Server 内部运行 .NET 代码。攻击者编写一个包含恶意功能的 .NET 程序集(比如执行命令、反弹 Shell);通过 sa 权限将这个程序集导入到数据库中;在数据库里调用这个程序集的功能。
Oracle
Java Stored Procedures(Java 存储过程):Oracle 内部内置了一个 Java 虚拟机(JVM)。攻击者可以利用 DBMS_JAVA 包,在数据库里编写并运行 Java 代码。
1 | -- 创建 Java 类,调用系统命令 |
External Procedures(外部过程 extproc):调用外部的 C 语言动态库(类似 MySQL 的 UDF)。通过配置监听器(Listener)和 extproc 服务,数据库可以加载外部的 .dll 或 .so 文件。
DBMS_SCHEDULER / DBMS_JOB(任务调度):内置的任务调度系统,用于定期执行维护任务。若权限控制不当,可以创建一个“作业(Job)”,让数据库在特定时间执行操作系统脚本。
PostgreSQL
CVE-2019-9193:在 PostgreSQL 9.3 到 11.2 版本中,COPY 命令有一个功能叫 FROM PROGRAM,允许数据库直接运行系统命令并把结果存入表格。默认开启,且普通数据库权限就可以。
1 | -- 1. 清理现场:如果之前有过这张表,先删掉,防止报错 |
Redis
写秘钥 ssh 计划任务,反弹 shell
Memcached
key-value 缓存系统,由于它本身没有权限控制模块,服务被攻击者扫描发现,通过命令交互可直接读取 memcache 中的敏感信息







