这周的审计任务,这次审计 xdcms 。

下面就开始审计之旅。

                                                                    环境搭建

审计CMS,首先环境搭建。

1,虚拟机/本机win7 32/64位,用wamserver或者phpstudy搭建环境。

2,xdcms_3.0.1 源码(已分享链接)放到WWW目录下面

3,安装,访问(  127.0.0.1/xdcms_3.0.1_utf8/xdcms_3.0.1_utf8/install  )。一路选择下一步,直到设置页面,创建数据库......安装完成。

点击同意,开始安装。

输入数据库账号密码(可以选择新建个数据库 xdcms ,不新建也可以,输入数据库的名称即可),点击进行下一步进行网站简单的设置

可以看到安装成功,请牢记您的管理员账户:xdcms , 密码 xdcms,进入后台管理。

                                                                            代码审计

首先可以拿出来 代码审计工具--Seay源代码审计系统进行自动审计,先看一下哪里容易出问题,从而可以不那么盲目。

发现 xdcms 的目录很简单,包括后台 admin ,cache , data , 系统system ,上传uploadfile。

自动扫描出了171个可疑漏洞。

SQL注入漏洞

现在先熟悉一下流程,可以看到能够进行注册登录。

那就注册一个账号orange,密码orange。

上面看到密码是进行了两次md5加密,接下来看 一下代码

/system/modules/member/index.php

上面的代码很容易读懂,函数是register_save(),注册保存。首先POST接收传过来的参数,判断是不是为空。

66行密码进行两次md5加密,可以看到并没有进行明显的过滤,但是在50行和72行看到了过滤函数safe_html(),下面就开始追踪一下这个函数,

function safe_html($str){
if(empty($str)){return;}
$str=preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/','',$str);
return htmlspecialchars($str);
}

分析一下这个过滤函数,只是简单的把上面看到的 select ,insert,update 等等替换成了空 。

在 safe_html 处虽然过了个SQL注入的敏感词,还过滤了=和*,但是没有考虑SQL注入敏感词的大小写,这里只过滤了小写,那么我们用大写绕过,这里过滤的=和*,我们可以使用不带*和=的常规保存SQL注入语句

这里利用报错注入来进行测试,bestorange' or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange

payload:username=bestorange' or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange&password2=bestorange&fields%5Btruename%5D=bestorange&fields%5Bemail%5D=bestorange&submit=+%E6%B3%A8+%E5%86%8C+

可以看到上面注入出来了管理员的账号密码,然后就可以进行登录。

因为这个CMS过滤的时候基本上是用到的是 safe_html() 函数,所以这个CMS的其他地方注入的利用方式都是一样的,利用方法像上面一样,问题都是出在 safe_html() 函数。

再看下登录处的SQL注入

路径:/system/modules/member/index.php

95行--127行

上面的程序也不是很难读,可以看到POST接收过来登录的账号密码,然后通过 safe_html() 函数 进行过滤,判断是否为空,进而在103行直接带入数据库查询。

这里仅仅通过 safe_html() 函数进行了过滤,所以很显然是存在注入的。

payload:username=bestorange'or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange&submit=+%E7%99%BB+%E5%BD%95+

getshell

通过上面注入得到的管理员的账号密码登录后台,成功进入后台管理系统,在  系统设置-->网站配置-->上传设置-->文件/图片上传格式限制。

添加php文件类型,然后进行上传即可。

XSS漏洞?

这里看一下xss漏洞,链接(http://127.0.0.1/index.php?m=form&c=lists&formid=7)(http://127.0.0.1/index.php?m=form&c=lists&formid=8)

这里是可以进行留言的,常规老套路,首先进行黑盒测试,输入:"><script>alert(a)</script><",可以看到是没有任何反应的,接下来去数据库看一下,表-->c_message,看到都被转义了

同样,上传简历的地方也是被转义了,简历的表-->c_resume,现在这里是找不出xss漏洞的,直接去分析下代码。

/system/modules/form/lists.php

留言的模块,就不详细解释了,直接看73--83即可。

输入的值遍历输出,重点在82.83行,看到了过滤函数:safe_replace(safe_html($value)),safe_html()这个函数上面讲过,追踪safe_replace()函数,

/system/function/fun.inc.php

33--46行可以看到,过滤和转义了%20,%27,%2527,*,",',;,<,>,{,},\\。

可以看到过滤以及转义的全面,基本上构造不出来这样的payload,因此我个人认为这里的xss漏洞是不存在的,如果你有好的payload,欢迎交流。

再看一下会员中心存在xss漏洞吗?

注册个账号orange用户,进行登录。

-->修改会员资料<--

输入:"/><script>alert("orange")</script><",是没有任何反应的,这个时候查看一下源代码。可以看到是被转义了。因为整个cms调用的是safe_replace()函数,因此这个xdcms是不存在xss漏洞的。

源码链接(链接: https://pan.baidu.com/s/1pKApFWv 密码: vx74)

本文链接(http://www.cnblogs.com/Oran9e/p/7944859.html),转载请注明。

任重而道远!

xdcms_3.0.1 | 代码审计的更多相关文章

  1. auxblogcms1.0.6|代码审计

    这周的审计任务,两天前的任务呀~拖延症呀~ 这次审计一个博客----auxblogcms1.0.6,网上也有所记载,我下面会做个总结. axublog是一款php个人博客系统,小巧强大的PHP+MyS ...

  2. axublogcms1.0.6|代码审计

    这周的审计任务,两天前的任务呀~拖延症呀~ 这次审计一个博客----auxblogcms1.0.6,网上也有所记载,我下面会做个总结. axublog是一款php个人博客系统,小巧强大的PHP+MyS ...

  3. 熊海cms v1.0 完全代码审计

    很久以前写的,写这个东西更多的是为了说明我自己的一个思路,即按照程序功能点进行代码审计, 这样经过一段时间训练,熟悉了某种功能的正确和错误实现方法,遇到类似的代码就可以很快看出是否有问题了 --- 0 ...

  4. 米酷CMS 7.0.4代码审计

    工具:seay源代码审计系统 源代码:网上很好找,这里就懒得贴上了,找不到的话可以给我留言 后面一段时间会深入学习安全开发,代码审计,内网渗透和免杀,快快成长. 审这个系统是因为在先知上看到一篇审它老 ...

  5. ref:web security最新学习资料收集

    ref:https://chybeta.github.io/2017/08/19/Web-Security-Learning/ ref:https://github.com/CHYbeta/Web-S ...

  6. Web-Security-Learning

    Web Security sql注入 MySql MySQL False 注入及技巧总结 MySQL 注入攻击与防御 sql注入学习总结 SQL注入防御与绕过的几种姿势 MySQL偏门技巧 mysql ...

  7. 机器学习算法之K近邻算法

    0x00 概述   K近邻算法是机器学习中非常重要的分类算法.可利用K近邻基于不同的特征提取方式来检测异常操作,比如使用K近邻检测Rootkit,使用K近邻检测webshell等. 0x01 原理   ...

  8. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  9. ZAM 3D 制作3D动画字幕 用于Xaml导出

    原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...

随机推荐

  1. zeebe 为微服务架构的工作流引擎

    zeebe 是灵活.轻量的基于微服务架构的工作流引擎 包含以下特性: 可视化的额工作流 审计日志以及历史 水平缩放 持久化&&容错 消息驱动 操作容易 语言无关 工作流基于标准bpmn ...

  2. 普林斯顿数学指南(第二卷) (Timothy Gowers 著)

    第IV部分 数学的各个分支 IV.1 代数数 IV.2 解析数论 IV.3 计算数论 IV.4 代数几何 IV.5 算术几何 IV.6 代数拓扑 IV.7 微分拓扑 IV.8 模空间 IV.9 表示理 ...

  3. 随机重拍与抽样(random_shuffle,random_sample,random_sample_n)

    //版本一:使用内部的随机数生成器 template<class RandomAccessIterator> void random_shuffle( RandomAccessIterat ...

  4. 爱今天 APP 闪退怎么办?

    爱今天 APP 闪退怎么办? 爱今天是一款简洁优秀的时间记录 APP. 但也有一些小 Bug,可能是因为不同的手机兼容问题,在添加时间时会出现闪退现象. 可能是因为自己修改了添加时间的方式. 可以通过 ...

  5. JDK动态代理实例

    最近看<深入浅出MyBatis技术原理与实战>这本书时,里面讲到Mapper接口的内部实现是通过JDK动态代理生成实现类,联想到之前看<SPRING技术内幕>这本书里也常常提到 ...

  6. 装饰模式Decorator Pattern

    1.主要优点 装饰模式的主要优点如下: (1) 对于扩展一个对象的功能,装饰模式比继承更加灵活性,不会导致类的个数急剧增加. (3) 可以对一个对象进行多次装饰,通过使用不同的具体装饰类以及这些装饰类 ...

  7. rsyn同步软链接保持不变

    #!/bin/bash rsync --port=873 -vzrtopgLK --progress --delete --password-file=/tuandai/rsync/rsync.pas ...

  8. C# ASCII与字符串间相互转换 (转)

    引言: 最近开始学习C#,在写串口助手小工具时遇到十六进制发送与字符发送之间转换的问题, 小弟通过网络各路大神的帮助下,终于实现正确显示收发,小弟菜鸟一枚,不足之处还望各位批评指正O(∩_∩)O! 其 ...

  9. NET设计模式 第二部分 结构性模式(9):装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern) ——.NET设计模式系列之十 Terrylee,2006年3月 概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特 ...

  10. [转]TA-Lib 安装

    转自:https://mrjbq7.github.io/ta-lib/install.html Installation You can install from PyPI: $ pip instal ...