ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-03-05 12:51:01  阅读:279  来源: 互联网

标签:substrR 储存 postname cn xss 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函数。

标签:substrR,储存,postname,cn,xss,Dedecms,漏洞,过滤
来源: https://www.cnblogs.com/wangtanzhi/p/12419590.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有