EMLOG PRO 2.5.9版本SQL注入漏洞CVE-2025-47785
EMLOG PRO是基于PHP语言和MySQL数据库的开源、免费、功能强大的个人或多人联合撰写的博客系统,栋科技网站基于该CMS搭建。
一、基本情况
EMLOG PRO是一款基于PHP和MySQL的功能强大的博客及CMS建站系统,资料显示,EMLOG Pro 2.5.9版本发布于2025年03月25日。
该版本优化了模板管理和注册用户个人中心,增加评论点赞相关数据和接口支持,并修复一处PHP8.2的兼容问题和SQL注入安全问题。
栋科技漏洞库关注到EMLOG PRO 2.5.9及更高版本存在参数过滤不严导致的SQL注入漏洞,漏洞追踪CVE-2025-47785,CVSS评分8.3。
二、漏洞分析
CVE-2025-47785漏洞存在于EMLOG PRO 2.5.9及更高版本中,漏洞源于admin/article_save.php中的origContent参数没有经过严格过滤。
具体而言,在相关版本中只要是普通注册用户就能够访问admin/article_save.php这个文件,该文件中的origContent参数未经严格过滤。
如此便导致了SQL注入的情况发生,导致admin管理员的账号密码被注入出来,从而被后台rce,然后被后端远程代码执行利用。
三、漏洞审计
1、代码直接通过$_POST['logcontent']来获取参数
之后通过$parseDown->text,extractHtmlData以及str_replace(["\r", "\n", "'", '"'], ' ', $excerpt);进行过滤但是没有过滤\
2、$origContent的值会被拼接到$logData数组中
3、updateLog以logData为参数来执行sql语句,而拼接到最后的$upStr就是LogData转为aaa='bbb'的格式再通过imload拼接的结果。
4、由于\并没用被过滤,那么我们就可以将$origContent赋值为123\这样就可以注释掉后面的引号,那么下一个参数其实就被跳出了引号
5、SQL注入成功
title='',alias='',content='123\\',excerpt='123\',cover='or extractvalue(0x0a,concat(0x0a,(select database())))#',author='2',sortid='-1',date='1743174725',top ='n',sortop ='n',allow_remark='n',hide='y',checked='n',password='',link='',template=''
综合而言:因为excerpt的引号被过滤导致cover='的这个引号和excerpt='的引号匹配从而导致参数的逃逸导致了sql注入
四、漏洞复现:
1、首先注册为普通用户
2、访问admin/article_save.php传如下Payload即可进行SQL注入
五、影响范围
EMLOG PRO <= 2.5.9
六、修复建议
EMLOG PRO >= 2.5.15,过滤\或者对输入进行addslashes转义
七、参考链接