windows提权
提权常用查询命令
1 | |
windows 提权辅助脚本
检测系统补丁脚本 https://github.com/SecWiki/windows-kernel-exploits/tree/master/win-exp-suggester
检测可利用补丁exp https://www.adminxe.com/win-exp/#
查看补丁 https://github.com/chroblert/WindowsVulnScan
windows 内核提权exp https://github.com/SecWiki/windows-kernel-exploits
在线提权利用查询 https://lolbas-project.github.io/
提权辅助网页 http://hacking8.com/
查询补丁
hacking8在线查询补丁
wesng 查询补丁
https://github.com/bitsadmin/wesng
1 | |
WindowsVulnScan 查询补丁
https://github.com/chroblert/WindowsVulnScan
查询可写目录或文件
在确定可以执行cmd命令时,有些服务器会对目录进行权限设置,导致iis_user用户组没有权限对常见的 目录进行写入和读取,这时可以用扫描可写目录脚本对目录进行遍历扫描,得到可写目录 上传或下载 提 权exp 或替换文件 进行利用。
当cmd.exe不可用,选择有权限的目录上传cmd



lcx端口转发
1 | |
listen
1 | |
tran
1 | |
slave
1 | |

服务端执行 lcx.exe -slave 192.168.0.146 2333 127.0.0.1 3389
客户端执行lcx -listen 51 2333
系统内核溢出漏洞提权
CVE-2016-3225(MS16-075)提权
影响版本
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2016/ms16-075
利用文件
https://github.com/itm4n/PrintSpoofer
下载文件
https://github.com/uknowsec/JuicyPotato 上传到webshell的可执行目录
1 | |
CVE-2014-4113 (MS14-058)提权
Microsoft Windows下的 win32k.sys是Windows子系统的内核部分,是一个内核模式设备驱动程序,它 包含有窗口管理器、后者控制窗口显示和管理屏幕输出等。如果Windows内核模式驱动程序不正确地处 理内存中的对象,则存在一个特权提升漏洞。成功利用此漏洞的攻击者可以运行内核模式中的任意代 码。攻击者随后可安装程序;查看、更改或删除数据;或者创建拥有完全管理权限的新帐户。
影响版本
该漏洞影响所有Windows x64,包括Windows 7 和 Windows Server 2008 R2 及以下版本。
1 | |
CVE-2020-0787 提权
当Windows Background Intelligent Transfer Service (BITS)未能正确地处理符号链接时,存在权限提 升漏洞。成功利用此漏洞的攻击者可以覆盖导致提升状态的目标文件。要利用此漏洞,攻击者首先必须 登录到系统。然后,攻击者可以运行巧尽心思构建的应用程序,利用此漏洞并控制受影响的系统。
影响版本
https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2020-0787
下载地址
https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases
漏洞复现

metasploit提权
反弹shell
进入msf
1 | |
生成payload
1 | |
将生成的payload上传至服务器

kali打开监听
1 | |
运行exe文件

拿到shell

查看权限

msf
Windows 提权 exp 存储文件夹路径
/usr/share/metasploit-framework# cd modules/exploits/windows/local/
常见的提权模块如下:
- ms14_058 内核模式驱动程序中的漏洞库能允许远程代码执行
- ms16_016 WebDAV 本地提权漏洞(CVE-2016-0051)
- ms16_032 MS16-032 Secondary Logon Handle 本地提权漏洞
常用提权命令
- sysinfo 查看系统命令
- migrate 注入进程
- getuid 获取当前用户
- getprivs 尽可能提升权限
- getsystem 通过各种攻击向量来提升系统用户权限
基础命令
ps 列出进程
sessions 查看会话
background 把session放置后台
sessions -i number # 与会话进行交互,number表示第n个session,使用session -i 连接到指定序号的meterpreter会话已继续利用
interact id #切换进一个信道
back 返回主界面
shell 得到终端
search搜索模块
show 列模块
info 查看模块信息
提权
**搜索模块 **
1 | |
查看模块信息
1 | |
使用模块
1 | |
成功提权

维持权限
ps 列出进程号

写入进程
1 | |

反弹shell
1 | |
nc反弹shell
kali监听
1 | |
上传nc 到服务器 在服务器上执行nc
1 | |
powershell反弹shell
powercat是netcat的powershell版本
https://github.com/besimorhino/powercat
1 | |
kali监听
1 | |
nishang反弹shell
Nishang(https://github.com/samratashok/nishang )是一个基于PowerShell的攻击框架,集合了一些 PowerShell攻击脚本和有效载荷,可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell
Reverse TCP shell
靶机执行
1 | |
物理机python开启服务
1 | |
kali监听
1 | |
Reverse UDP shell
kali监听
1 | |
靶机控制端
1 | |
python反弹shell
使用python编写反弹shell,如果目标支持python3可以脚本直接执行即可
目标上没有安装python 可以使用命令打包成exe在上传执行
1 | |
kali监听
1 | |
靶机执行
1 | |
windows系统配置错误提权
系统服务权限配置错误
windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户 对此类系统服务调用的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权限。
1 | |
问题服务扫描
https://github.com/itm4n/PrivescCheck.git
本机开启http服务
靶机cmd运行
1 | |
1 | |
NT AUTHORITY\Authenticated Users 普通用户也能设置文件
普通用户可以对usosvc服务进行设置 s.exe是msf的后门程序
kali
msf生成后门文件并监听
1 | |
靶机cmd
关闭服务,绑定路径,重启服务
1 | |
成功拿到shell

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

不带引号的服务路径提权
当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则 系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到 的空格分隔的服务路径的第一个实例。
也就是说,运行服务的路径如果没有引号,则会将第一个空格前的内容加上.exe并执行
利用要求
服务无双引号且路径可写
使用命令扫描
1 | |
msf生成后门改名并监听并监听
1 | |

1 | |
上传文件,等待服务运行,或重启服务器

注册表键AlwaysInstall提权
Windows 系统自带 Windows Installer(安装服务),它的核心程序是 msiexec.exe,主要负责安装、配置、修复和卸载 MSI 格式的软件包。一般情况下,普通用户安装软件时,需要管理员权限。
如果 启用 AlwaysInstall策略,那么即使是普通用户(权限不高),也可以让 msiexec.exe 以 NT AUTHORITY\SYSTEM 权限 来执行安装操作。
开启
运行”中输入gpedit.msc,打开组策略管理器
计算机配置–>管理模板–>Windows 组件–>Windows Installer
将”永远以高特权进行安装”编辑,选择开启

同样在用户配置中也需要进行配置

通过命令查询
1 | |
拿到shell使用PowerUp检测注册表是否有设置 如果返回true证明可以利用
1 | |
上传脚本文件COMahawk64.exe,执行则可获得一个账户

本地dll劫持提权
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶 意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜 索:
1 | |
程序运行一般会加载系统dll或本身程序自带的dll,如果我们将程序执行时需要加载的dll文件替换成木马 程序,那么我们下次在启动程序时所加载的dll就是我们替换的那个木马程序了。
攻击过程:收集进程加载的dll-制作dll木马并上传-替换dll-启动应用后成功
使用火绒剑分析该进程执行时加载了哪些dll

msf生成dll木马并上传
1 | |
监听
1 | |

自动安装配置文件提权
网络管理员在内网中给多台机器配置同一个环境的时候,一般会使用脚本进行批量部署,也就是会使用 安装配置文件,这些文件中包含所有的安装配置信息,其中还有一些包含着本地管理员账号和密码。
执行如下命令,搜索Unattend.xml文件
1 | |
同理再找找有没有sysprep.inf、sysprep.xml这种应答文件
kali上还有利用模块 post/windows/gather/enum_unattend
第三方提权
sql server 提权
sql server主要依赖于sql server自带的存储过程。目的:sqlserver权限 —> 系统权限
提权方法
要执行系统命令,首先需获取sqlserver数据库的权限(一般是sa),然后借助数据库自带的存储过程进行提权,由开始的sqlserver权限提升到执行操作系统命令的权限。
xp_cmdshell执行系统命令
1.判断是否为sa权限,返回1则是
1 | |
2. 判断 xp_cmdshell 是否存在,1就是存在,0就是不存在
1 | |
当结果为0时,可以通过下列命令恢复
如果xp_cmdshell被删除,则可以通过下列命令重新加载。
1 | |
3. 开启 xp_cmdshell
1 | |
4. 执行系统命令
1 | |
mysql提权
udf提权
UDF(Userdefined function)可翻译为用户自定义函数,其为mysql的一个拓展接口,可以为mysql增添一些函数。
提权前提
- 获取mysql控制权限:知道mysql用户名和密码,并且可以远程登录(即获取了mysql数据库的权限)
- mysql具有写入文件的权限:mysql有写入文件的权限,即secure_file_priv的值为空
提权过程
- 查看mysql是否有写入文件的权限
1 | |
- 当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
- 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
- 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
- 上传UDF 的动态链接库文件
- Mysql版本大于5.1,udf.dll文件必须放在MySQL安装目录的lib\plugin文件夹下。(plugin文件夹默认不存在,需要创建)。
- Mysql版本小于5.1:
如果是 win 2000 的服务器,我们则需要将 udf.dll 文件导到 C:\Winnt\udf.dll 下。
如果是 win2003 服务器,我们则要将 udf.dll 文件导出在 C:\Windows\udf.dll 下。
- 查看插件的位置
1 | |
- 上传dll
dll路径为\sqlmap\data\udf\mysql
通过py解码
1 | |
写入
1 | |
- 创建自定义函数
1 | |
查询
1 | |
执行
1 | |
mof提权
利用了C:\Windows\System32\wbem\MOF目录下的nullevt.mof文件
该文件每分钟会去执行一次的特性,向该文件中写入cmd命令,就会被执行
利用条件
- 只使用于windows系统,一般低版本系统才可以用,比如
xp、server2003 - 对
C:\Windows\System32\wbem\MOF目录有读写权限 - 可以找到一个可写目录,写入mof文件
提权过程
在可写目录中上传mof文件。
把mof文件上传到
C:/wmpub/nullevt.mof把这个文件复制到
C:/Windows/System32/wbem/MOF/nullevt.mof目录下
1 | |
- 将下面这段代码复制到mof后缀的文件中
1 | |
G6FTP提权
G6 FTP Server 新一代的 FTP 服务器端软件,支持 RFC-959 标准并增强其中的某些功能,上传和下载都 可以续传,实时查看运行状态,占用带宽,还有很多功能。
原理
G6FTP的默认端口为8021,只侦听在127.0.0.1的8021端口上,所以无法从外部直接访问,需要进行端 口转发(使用lcx 工具(lcx 具有三个功能:监听、转发、端口转向))。
复现
- 在webshell访问 配置文件
C:\Program Files (x86)\Gene6 FTP Server\RemoteAdmin\Remote.ini - 将127.0.0.1的8021端口通过8427端口转发出去
1 | |
- 转发成功后,通过g6ftp软件进行连接,以管理员用户登入
- 创建用户,赋予全部权限
- 创建批处理文件.bat(创建用户加入管理员组),并上传
- g6ftp创建批处理任务
- ftp登录,执行批处理任务
1 | |
- 执行成功,成功创建administrator用户
UACbypass
UAC(UserAccount Control,用户账户控制)简言之就是在Vista及更高版本中通过弹框进一步让用户 确认是否授权当前可执行文件来达到阻止恶意程序的目的。
uac白名单
微软在用户账户控制中为一些系统程序设置了白名单机制,所有白名单中的程序将不再询问,以静默方式自动提升到管理员权限不弹出UAC框。
寻找白名单程序
在寻找白名单程序时,可以使用微软工具sigcheck和Strings。
白名单程序拥有一个共同的特性,就是Manifest数据中autoElevate属性的值为True。
Strings可以找出所有具有autoElevate属性的程序
https://learn.microsoft.com/en-us/sysinternals/downloads/strings
1 | |
模拟可信任目录
当启动的程序请求自动提升权限时,系统会先读取可执行文件中的Manitest信息,解析autoElevate属性字段的值。如果该字段存在并且值为True,就会认为这是一个可以自动提升权限的可执行文件。并且,系统会检查可执行文件的签名,这意味着无法通过构造autoElevate信息或冒充可执行文件名来实现自动权限提升。此外,系统会检查可执行文件是否位于系统可信任目录中,如c:\windows\system32目录。当这三个条件全部通过后,则允许程序自动提升权限,有任意一个条件不通过都会被系统拒绝。
即程序请求自动提升权限的条件:
文件Manitest中autoElevate属性的值为True
检查文件的签名
文件是否位于系统可信任目录中
系统在检查可信任目录时,相关函数会自动去掉可执行文件路径中的空格。如果可执行文件位于“C:\windows \system32”目录(在windows后有一个空格,下文统称“模拟可信任目录”)中,系统在检查时会自动去除路径中的空格,这样就通过了最后一个条件的检查。
基于此原理,攻击者根据可信任目录来创建一个包含尾随空格的模拟可信任目录,将一个白名单程序复制到模拟可信任目录中,配合DLL劫持等技术即可成功绕过UAC。
msf bypassuac
1 | |
bypass uac一般用在非administrator管理员用户下进行权限提升,方法主要是通过劫持uac白名单程序所加载的dll文件进行提权
参考文章
https://blog.csdn.net/qq_61553520/article/details/130970749
https://www.cnblogs.com/bonelee/p/16227518.html?utm_source=chatgpt.com
https://www.cnblogs.com/lcxblogs/p/14163338.html
https://blog.csdn.net/qq_44159028/article/details/130845430
https://blog.csdn.net/qq_44159028/article/details/121193134
https://www.freebuf.com/articles/web/264790.html
https://blog.csdn.net/bylfsj/article/details/102565893