这周的审计任务,这次审计 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),转载请注明。

任重而道远!

转载于:https://www.cnblogs.com/Oran9e/p/7944859.html

xdcms_3.0.1 | 代码审计相关推荐

  1. [代码审计]齐博建站系统x1.0企业版代码审计

    文章目录 写在前面 齐博建站系统x1.0后台存在命令执行漏洞 齐博建站系统x1.0企业版前台反序列化漏洞 写在前面 复现2021 DASCTF July X CBCTF 4th赛题 齐博建站系统x1. ...

  2. PHP代码审计-sql注入

    文章目录 前言 sql注入 字符型注入 魔术引号 编码注入 base64编码 url编码 宽字节注入 过滤方法 代码审计实战 前言 最近想学代码审计了,但是我本身的代码水平不高,学的比较基础,适合入门 ...

  3. 估算带卷积核二分类0,3的网络的收敛时间和迭代次数

    制作一个网络分类minst的0和3求出这网络的迭代次数曲线表达式n(δ),和准确率表达式p-max(δ),用预期准确率去估算n,并推算需要的时间. 将minst的28*28的图片缩小到9*9,网络用一 ...

  4. ATTCK靶场系列(六)

    一.环境配置 vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/8/ emmm,我得吐槽 ...

  5. 神经网络收敛标准与准确率之间的数学关系

    制作一个带一个3*3卷积核的神经网络,测试集是minst的0和2图片集,将28*28的图片缩小成9*9,隐藏层30个节点所以网络的结构是 S(minst0)-(con3*3)49-30-2-(1,0) ...

  6. 用共振频率去进行图片分类的尝试

    假设有一种物质,这种物质的原子核的质子数和电子数可以不同,允许质子的带电量不同,并且质子带负电,同时这个原子的电子不满足鲍利不相容原理,环境温度是 (1/1.3806505)*10^23k,电子波的频 ...

  7. 收敛标准对迭代次数影响

    制作一个n*n的网络,将收敛标准分别设定在,0.001,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1,观察网络达到平衡时迭代次数的变化. 比如如图的 ...

  8. vue省市区三级联动mysql,js/json,html/jsp

    大家好,我是烤鸭: 省市区三级联动数据及页面: 测试的时候,发现少了几个地区,现在补上了,也优化了下排版. 如果你懒得复制和看的话,这里是打包的下载地址. 之前的资源地址也改了,http://down ...

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

    ZAM 3D 制作3D动画字幕 用于Xaml导出 原文:ZAM 3D 制作3D动画字幕 用于Xaml导出 原地址-> http://www.cnblogs.com/yk250/p/5662788 ...

  10. 将执行文件转化为bat批处理文件的工具(批处理文件方式提供)

    update 2006.4.25 15:20 支持64kb以上的执行文件/// @echo e 0100 4d 5a 90 0 3 0 0 0 4 0 0 0 ff ff 0 0 >>Da ...

最新文章

  1. 机器学习入门(05)— 使用 NumPy 实现 3 层简单神经网络
  2. react native redux 梳理
  3. 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python
  4. 文档工具GitBook使用
  5. 串口上升时间标准_JESD204B串行接口时钟需要及其实现
  6. Python基础教程— Struct模块
  7. shiro session 设置取不到_SpringCloud+shiro+前后端分离
  8. IO-00. Hello World! (5)
  9. 设计抗100亿请求的春晚红包系统
  10. [C#-Util]ObjectPool Prototype
  11. micropython是什么意思_MicroPython到底是啥-百度经验
  12. 一本名不符实的.NET书籍: Game Engine Toolset Development
  13. educoder MongoDB 文档的高级查询操作
  14. 金庸小说人物知识图谱构建——构建共现矩阵
  15. VMware解决黑屏
  16. 2020 年 Python 知识清单(数据分析)
  17. Spring Boot 支持 HTTPS 如此简单,So easy!
  18. 【大数据入门核心技术-HBase】(九)Hbase协处理器coprocessor
  19. Win10占用电脑内存过高
  20. 抖音表情包项目怎么变现?普通人如何制作表情包短视频月入过万?

热门文章

  1. 网络对抗技术——密码破解技术
  2. 使用docker优雅的部署你的nuxtjs项目
  3. javascript 搜索并高亮显示
  4. Go编程笔记(28)
  5. Json Formatter 1.0 Json格式化工具
  6. markdown语法中的空格_Markdown实用技巧-基础语法
  7. 多个同名进程linux获取对应pid,Linux Shell根据进程名获取PID
  8. 设计模式---观察者模式(C++)
  9. springcloud断点续传源码_SpringCloud 超大文件上传和断点续传的实现
  10. php 输入需要删除文本里的字符串_重新学习php基础之-安全E-mail(十九)