当我们成功拿下目标服务器的 WebShell 后,如果系统内核提权、数据库提权等常规手段都无法突破权限限制,那么第三方应用软件往往会成为我们的突破口。很多运维人员在部署服务器时,往往会忽略第三方软件的权限配置,导致攻击者可以利用这些软件的漏洞或配置缺陷完成权限提升。
本文将详细讲解几种常见的第三方应用软件提权方式,包括远控软件提权、Zend 组件提权以及 DLL 动态库劫持提权,帮助你全面掌握这类提权思路。
一、远控软件提权
很多服务器管理员为了方便远程管理,会在服务器上安装各类远程控制软件,而这些软件往往存在配置不当的问题,比如密码硬编码、注册表明文存储密码、未授权访问漏洞等,这些都成为了我们提权的可乘之机。
1.1 向日葵远程控制提权
向日葵是一款面向企业和专业人员的远程 PC 管理和控制服务软件,支持远程文件传输、远程视频监控等功能,被很多管理员用于服务器的远程管理。

影响版本
-
向日葵个人版 for Windows <= [11.0.0.33](11.0.0.33)
-
向日葵简约版 <= V1.0.1.43315(2021.12)
如何判断目标是否安装向日葵?
在拿到 WebShell 后,我们可以通过执行命令查看目标服务器的进程和服务,来判断是否安装了向日葵:
tasklist /svc
当查看到目标服务中存在 SunloginClient\.exe 或者 SunloginService 时,即可判断目标服务器中安装了向日葵。
漏洞利用步骤
向日葵运行状态下会自动随机开启一个大于 40000 的端口,端口范围一般在 40000-65535 之间。
- 端口扫描:使用 nmap 扫描目标服务器的该端口段,找到向日葵的服务端口:
nmap -p 40000-65535 10.0.0.102
-
验证端口:探测到端口后,尝试通过浏览器访问这些端口,找到向日葵的对外服务端口。
-
工具利用:找到正确的端口后,我们可以使用 Sunlogin 漏洞利用工具进行连接:
java -jar Sunlogin漏洞利用工具.jar
注意:连接目标地址直接输入 IP 地址和端口即可,不必带上http://。
如果想要手工利用该漏洞,可以参考这篇文章:向日葵远程控制代码执行漏洞复现
1.2 VNC 远程控制提权
VNC (Virtual Network Console) 是虚拟网络控制台的缩写,是一款优秀的开源远程控制工具,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美,默认端口为 5900。

提权思路
VNC 安装后,会在注册表中保留连接密码,我们可以通过读取注册表中的密码信息,破解后即可远程连接目标服务器,从而获得管理员权限。
利用步骤
- 读取注册表密码 我们有两种方式读取注册表中的 VNC 密码:
- 方式一:使用 ASP 大马 通过 WebShell 上传 ASP 大马(
dama\.asp,密码:Skull\.),访问大马后即可读取注册表中的 VNC 密码。
注意:该方式需要目标服务器运行 IIS 中间件,且 IIS 用户拥有读取注册表的权限,否则可能读取失败。
- 方式二:命令行导出注册表 如果大马无法使用,我们可以通过 WebShell 的虚拟终端执行命令,将注册表键值导出到文件:
cmd /c "regedit /e c:\123.reg "HKEY_LOCAL_MACHINE\software\RealVNC\WinVNC4" "
该命令会将 VNC 的注册表信息导出到 C 盘的123\.reg文件中,之后我们将该文件下载到本地。
- 密码破译 拿到导出的注册表文件后,我们可以使用
vncx4\.exe工具进行密码破译:
vncx4.exe -W
- 远程连接 破译得到密码后,我们就可以使用本地的 VNC 客户端远程连接目标服务器,从而获得管理员权限。
1.3 Radmin 远程控制提权
Radmin 是一款国外非常流行的远程控制软件,拥有极高的操作速度,即使在 3G 网络下也能顺畅操控远程计算机,默认端口为 4899。

提权思路
和 VNC 类似,Radmin 的密码也会存储在注册表中,我们可以读取注册表中的密码 Hash,破解后即可远程连接目标服务器。
利用步骤
- 读取注册表密码 同样,我们可以通过两种方式读取 Radmin 的密码:
-
方式一:ASP 大马 上传 ASP 大马后,直接读取 Radmin 的密码 Hash 值。
-
方式二:命令行导出注册表 通过 WebShell 执行命令,导出 Radmin 的注册表信息:
cmd /c "regedit /e c:\456.reg "HKEY_LOCAL_MACHINE\system\RAdmin\v2.0\Server\"
将导出的456\.reg文件下载到本地。
-
密码破解 Radmin 的密码是经过 MD5 加密的,我们可以通过在线 MD5 解密网站(比如cmd5.com)进行解密,得到明文密码。 当然,我们也可以直接使用支持 Hash 登录的 Radmin 客户端直接连接,无需解密。
-
远程连接 得到密码后,使用本地的 Radmin 客户端连接目标服务器,即可获得管理员权限。
1.4 ToDesk 远程控制漏洞
除了以上三款远控软件,ToDesk 作为近年来流行的国产远控软件,也曾曝出过安全漏洞,攻击者可以利用该漏洞实现未授权访问,从而提权控制服务器。 相关漏洞详情可以参考:
二、Zend 组件提权
Zend 是 PHP 的脚本引擎,是 PHP 的核心组件,它的作用是将 PHP 代码转换成可执行的机器码,同时 Zend Optimizer 还可以为 PHP 网站提供加速优化,很多使用 phpstudy 搭建的服务器都会默认安装该组件。
漏洞成因
Zend 组件存在一个权限配置缺陷:当服务器单独安装 Zend 组件后,Zend 会自动将其安装目录的权限设置为Everyone完全控制,这就意味着即使是低权限的 Web 用户,也可以对该目录下的文件进行修改、替换操作。
提权思路
我们可以利用该权限缺陷,替换 Zend 的动态库文件,当 Apache 服务重启时,就会加载我们的恶意动态库,从而执行任意代码,获得管理员权限。
利用步骤
phpstudy 环境下,Zend 组件的默认路径为:C:\\phpStudy\\php\\php\-5\.2\.17\\ZendOptimizer\\
-
上传工具 通过 WebShell 将
nc\.exe(网络连接工具)上传到目标服务器的 Zend 目录下。 -
替换动态库 将原有的
ZendExtensionManager\.dll重命名备份,然后使用 Zend 工具包生成一个带有后门的恶意ZendExtensionManager\.dll,上传到该目录下,该恶意 dll 会在加载时自动调用 nc.exe,反弹一个 Shell 到我们的主机。 -
等待服务重启 接下来只需要等待目标服务器重启 Apache 服务,Apache 就会加载我们的恶意 dll,从而触发后门。
-
连接 Shell 当服务重启后,我们就可以在本地使用 telnet 连接目标服务器的指定端口,获得管理员权限的 Shell:
telnet 10.0.0.129 1234
原理说明
所有的 dll 文件(动态库文件)在运行时,都需要依靠属主文件(exe)去运行。Zend 的 dll 文件是被 Apache 进程加载的,而 Apache 是以系统权限运行的,所以当我们替换了 dll 文件后,Apache 加载它的时候,就会以系统权限执行我们的恶意代码。
而且这种方式非常隐蔽:正常的任务管理器只能看到 Apache 的 exe 进程,而我们的恶意 dll 是运行在 Apache 进程内部的,普通用户很难发现。只有使用专业的 ARK 工具,比如 PCHunter 或者火绒剑,才能分析进程加载的模块,发现异常的 dll。

作为安全工程师,在分析进程模块时,需要重点关注蓝色的第三方模块,尤其是不带数字签名的;如果是红色的危险文件,就更需要提高警惕了。
Zend 提权的详细操作可以参考:第三方组件提权 - zend nc 提权
三、DLL 动态库劫持提权
什么是 DLL 文件?
DLL 文件,全称 Dynamic Link Library,是 Windows 操作系统中的动态链接库,用于为应用程序提供共享的功能和服务。它包含了一系列供多个应用程序共同使用的代码、数据和资源,当应用程序启动时,会加载对应的 DLL 文件来获取所需的功能。
什么是 DLL 劫持?
DLL 劫持,就是当应用程序加载 DLL 文件时,我们通过伪造一个同名的恶意 DLL 文件,放到应用程序的搜索路径中,让应用程序加载我们的恶意 DLL,从而执行任意代码。
一般来说,我们会选择第三方软件的目录来放置恶意 DLL,比如输入法、杀毒软件等,这些软件往往有自动升级、自动启动的功能,而且目录权限较低,容易写入。而系统软件的 DLL 一般带有数字签名,很容易被系统检测到,不建议使用。
利用步骤
- 生成恶意 DLL 我们可以使用 T00ls Lpk Sethc 工具来生成劫持用的恶意 DLL,该工具可以生成一个粘滞键后门的 DLL,方便我们后续远程登录。

在工具中,我们可以设置触发后门的热键,以及登录密码,然后生成恶意的LPK\.dll文件。
- 上传恶意 DLL 通过 WebShell 将生成的
LPK\.dll上传到目标服务器的第三方软件目录下,比如输入法的安装目录、中间件的目录等,这些软件在启动或者自动升级的时候,就会加载我们的恶意 DLL。
演示中如果上传到桌面,那么桌面上的任何程序启动时,都会被劫持。
-
触发后门 当 DLL 被加载后,我们就可以触发后门了:
-
首先,确保目标服务器开启了 3389 远程桌面服务。
-
本地打开远程桌面连接,连接目标服务器。
-
在登录界面,按五下 Shift 键,调出粘滞键设置。
-
鼠标放在粘滞键弹窗的最后一个句号位置,同时按下我们之前设置的热键,然后点击句号。
-
输入我们设置的密码,就可以无需账号密码,直接登录目标服务器,获得管理员权限。
注意:DLL 劫持有时候会有错误提示,如果运维人员不懂安全,很可能会忽略这个提示,从而让我们成功利用。
四、安全防护建议
看完了这些提权手段,我们也能发现,这些漏洞的根源,其实都是权限配置不当。想要防护这类攻击,最根本的就是做好权限配置:
-
文件目录权限:普通的文件目录,只配置读取和执行权限,不要给写入权限,避免攻击者替换文件。
-
网站目录权限:网站目录只给读取和写入权限,不要给执行权限,防止攻击者上传的木马被执行。
-
用户权限管理:不要给普通用户、Web 用户过高的权限,避免低权限用户可以修改系统目录、第三方软件目录的文件。
-
软件安全:及时更新第三方软件,修复已知的安全漏洞,同时不要随意给第三方软件的目录开放过高的权限。
五、总结
第三方应用软件提权,本质上都是利用了第三方软件的配置缺陷或者已知漏洞,总结下来无非就是两类:
-
远控类软件:这类软件的密码往往会保存在注册表键值或者配置文件中,我们只需要读取这些信息,破解密码后就可以远程连接,获得管理员权限;而对于存在未授权访问漏洞的远控软件,我们可以直接利用漏洞一键提权。
-
其他第三方软件:利用软件的目录权限缺陷,要么替换原有的合法文件,植入后门,等待软件启动时加载;要么通过 DLL 劫持的方式,伪造恶意 DLL,让软件启动时加载我们的后门,从而执行任意代码。
在渗透测试中,当常规提权手段失效时,不妨多关注一下目标服务器上安装的第三方软件,往往会有意外的收获。