Dedecms存在储存型跨站脚本漏洞

Posted wangtanzhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dedecms存在储存型跨站脚本漏洞相关的知识,希望对你有一定的参考价值。

0x00前言

开始从小的漏洞开始练习,搬运项目地址:

https://github.com/imsebao/Code-Audit

0x01

Dedecms是一款开源的php开源网站管理系统。 Dedecms会员功能carbuyaction.php中的address、des、email、postname参数存在存储型XSS漏 洞,攻击者可利用漏洞获得管理员cookie。 测试环境:DedeCMS-V5.7-UTF8-SP2 发布日期: 2017-03-15 官方最新版 漏洞利用条件:DedeCMS 开启shop模块

漏洞分析

漏洞触发点在 /plus/carbuyaction.php 文件 address 、 des 、 email 、 postname 参数过滤不严 导致xss漏洞触发。
漏洞文件代码在 carbuyaction.php 第 111 行

$address = cn_substrR(trim($address),200);
$des = cn_substrR($des,100);
$postname = cn_substrR(trim($postname),15);
$tel= preg_replace("#[^-0-9,\/\| ]#", "", $tel);
$zip= preg_replace("#[^0-9]#", "", $zip);
$email= cn_substrR($email,255);

这里 $postname 参数最然做了长度限制,但是我们开始可以利用最短xss payload 触发xss漏洞。 继续跟踪cn_substrR函数,在

/include/helpers/string.helper.php 第24行if ( ! function_exists('cn_substrR'))
{
function cn_substrR($str, $slen, $startdd=0)
{
$str = cn_substr(stripslashes($str), $slen, $startdd);
return addslashes($str);
}

这里只用 stripslashes 和 addslashes 函数进行了过滤,但是没有过滤xss攻击函数,导致漏洞触 发 漏洞

漏洞利用

前台用户登录下单,在街道地址填写xss跨站代码。

<svg/onload=alert(0)>

总结
也算是一种思路,不过之前看的几个cms,不仅仅使用了这个消毒函数,而且还多我们的输入做了很严格的正则过滤,还有实体编码。
总的来说,我们审计的时候看到这种过滤函数倒也没必要绝望,绕过的方法太多了。
比如:sql注入仅仅使用了这个函数过滤,却没有使用inval()来对数字限定,我们可以不使用‘闭合就可以绕过了。再比如宽字节注入也可以。
xss的话就像上面的我们可以使用xss函数。

以上是关于Dedecms存在储存型跨站脚本漏洞的主要内容,如果未能解决你的问题,请参考以下文章

跨站脚本攻击都有哪些类型

网页检测有漏洞怎么办?说是啥Dedecms wap跨站漏洞,怎么修复?

xss基础

URL存在跨站漏洞http host头攻击漏洞解决方案

网页检测有漏洞怎么办?说是啥Dedecms wap跨站漏洞,怎么修复?

跨站脚本漏洞常见类型