zoukankan      html  css  js  c++  java
  • 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函数。

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12419590.html
Copyright © 2011-2022 走看看