这里主要讲v2.0.8版本的XDcms中的一个基于错误的SQL注入漏洞,较v2.0.7版本而言修复了很多注入漏洞,使得注入漏洞大为减少。

至于CMS的下载配置等就不说了,直接审计吧~

先整体看,点击index.php,先判断是否存在文件config.inc.php,若不存在则重定向去安装;然后就是通过require()函数包含/system/common.inc.php文件:

查看/system/common.inc.php文件,看到很多都是定义变量,期间都有包含一些文件,每个文件都点击进去查看一下,其中最值得关注的就是最后的fun.inc.php:

查看该文件发现先包含了几个文件然后就是定义各个函数,其中一个global.inc.php文件显得比较重要,因为涉及到全局变量的东西:

进入global.inc.php文件中查看,有发现对接收的参数进行过滤的操作:

看到其中有两个对输入参数进行过滤的函数,进行查看,知道该函数的定义是在fun.inc.php中:

该过滤作用很强,几乎绕过不了,但是可以发现的就是调用该函数进行过滤时只是对GET方法进行过滤,在这里没有对POST等方法进行过滤,接着搜索一下关于$_POST的内容看看,其中POST很多都进行了过滤,但是有的会遗漏,其中有文件是涉及到SQL的delete语句便利用不到了,找到其中的一个文件\system\modules\member\index.php:

注意到$fields这个变量没有被过滤且是一个数组,因为该页面是注册页面的主页,所以通过注册一个用户的信息并用火狐的Live HTTP headers插件来进行抓包:

POST发送的内容为:username=aaaaaa&password=123456&password2=123456&fields%5Btruename%5D=aaaaaa&fields%5Bemail%5D=aaaaaa&submit=+%D7%A2+%B2%E1+

对field_sql变量调用var_dump()函数详细地显示出来,同时添加exit不让后面的代码执行,重新注册新账号:

可以看到field_sql数组变量的值为用户输入的field数组中truename和email的值,接着改为输出下一条语句:

该语句为:update c_member set `truename`='ccccca',`email`='ccccca' where userid=7

这里可以尝试进行注入,先搜索并查看一下query()函数的定义:

可以看到会输出错误信息,那么现在就把之前添加的代码去掉并注册email中含单引号的用户看看:

可以看到,显示错误信息。在这里就可以利用基于错误的构造语句来显示系统的信息:

(select 1 from(select count(*),concat(char(32,58,32),(select concat_ws(char(32,58,32),username,password,encrypt) from c_admin limit 0,1),char(32,58,32),floor(rand()*2))name from information_schema.tables group by name)b) #

放到phpmyadmin中去运行:

虽然报出多处错误,但是结果却出来了。下面将语句补充完整再测试一下:

update c_member set `truename`='ccscca',`email`='ccscca' where userid=1 and (select 1 from(select count(*),concat(char(32,58,32),(select concat_ws(char(32,58,32),username,password,encrypt) from c_admin limit 0,1),char(32,58,32),floor(rand()*2))name from information_schema.tables group by name)b) #

最后直接将语句添加到email中执行即可:

可见,管理员用户名和密码都显示出来了。

如果还有其他账号密码等信息,通过该limit的第一个参数逐一遍历出来即可。

防御方法:

该漏洞产生的原因在于没有对所有的POST提交过来的内容即$fields变量进行过滤从而导致漏洞的存在,直接通过调用safe_html()函数来过滤field_sql变量即可:

PHP代码审计实战之XDcms相关推荐

  1. php审计思路,PHP代码审计实战思路浅析

    原标题:PHP代码审计实战思路浅析 战略性的思考而非战术 对于面向过程写法的程序来说,最快的审计方法可能时直接丢seay审计系统里,但对于基于mvc模式的程序来说,你直接丢seay审计系统的话,那不是 ...

  2. java代码安全审计_《网络安全java代码审计实战》

    第1章 代码审计基础 1.1JavaWeb环境搭建 1.1.1JavaEE介绍 1.1.2JavaEE环境搭建 1.2JavaWeb动态调试 1.2.1Eclipse动态调试 1.2.2IDEA动态调 ...

  3. python文件审计系统_Python代码审计实战案例总结之CRLF和任意文件读取

    介绍 Python代码审计方法多种多样,但是总而言之是根据前人思路的迁移融合扩展而形成.目前Python代码审计思路,呈现分散和多样的趋势.Python微薄研发经验以及结合实际遇到的思路和技巧进行总结 ...

  4. python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取

    文章目录 介绍 CRLF和任意文件读取的审计实战 CRLF 审计实战 urllib CRLF漏洞(CVE-2019-9740和CVE-2019-9947) httplib CRLF 漏洞 任意文件读取 ...

  5. C#代码审计实战+前置知识

    C#了解 菜鸟教程:https://www.runoob.com/csharp/csharp-intro.html C# 基于 C 和 C++ 编程语言,是一个简单的.现代的.通用的.面向对象的编程语 ...

  6. 一个基于SpringBoot开发的RBAC系统,非常适合新手入门JavaWeb代码审计实战的系统,长文警告,要好好学习。

    嗨,大家好,我是闪石星曜CyberSecurity创始人Power7089. 欢迎大家搜索我的微信公众号:闪石星曜CyberSecurity 本文是[炼石计划@Java代码审计]内部圈子原创课程,现分 ...

  7. JavaWeb代码审计实战之迷你天猫商城系统详细分析版,实战应用级系统的Log4j2shell代码审计

    嗨,大家好,我是闪石星曜CyberSecurity创始人Power7089. 欢迎大家搜索并关注我的VX:闪石星曜CyberSecurity 本文是[炼石计划@Java代码审计]内部圈子原创课程,公益 ...

  8. 一次代码审计实战案例【思路流程】

    前言: 利用这个 CMS 看看能不能挖到漏洞,运气还是不错的挖到了两个,分别是 SSRF 与文件覆盖 GETSHELL,下面给大家讲解一下这次审计的思路过程.该 CMS 版本是 4.2.以下漏洞均被 ...

  9. PHP代码审计中你不知道的牛叉技术点

    一.前言 php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞.如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程. 入门php代码审计实 ...

最新文章

  1. MathType的公式Latex到Katex转换程序
  2. Oracle的ONS创建,Oracle 10gR2 RAC Clusterware ONS服务的管理
  3. flink报错org.apache.commons.cli.Option.builder
  4. java jsp中控件绑定_jsp页面常用控件
  5. 全国计算机等级考试题库二级C操作题100套(第15套)
  6. 梯度下降法和随机梯度下降法
  7. PLSQL 之类型、变量和结构
  8. ScrollReveal.js – 帮助你实现超炫的元素运动效果
  9. pipedreader_Java PipedReader connect()方法与示例
  10. mysql 允许用户远程_Mysql 允许用户远程操作
  11. 拆解百度自动驾驶最新动作:Apollo企业版和Apollo 3.5里的生意经和新风向 | CES 2019...
  12. CSS揭秘之多重边框连续的图像边框
  13. java结合opencv进行照片人脸检测
  14. Redmi Book14 pro 通过软件控制风扇转速和噪音
  15. 三款免费好用的Gif录屏神器
  16. python全栈教程 pdf_马哥python全栈+爬虫+高端自动化课程大纲 (2018版) 全套视频教程【MP4】【65.22GB】...
  17. 三星 4521 linux 驱动下载,三星4521f驱动
  18. 为马来西亚航空失联飞机祈福~~
  19. 计算机二级C语言编程题解读:计算学生成绩的标准差
  20. fffffffffffffffffffffffffffff

热门文章

  1. 灰度拉伸python,Python OpenCV实例:图像灰度拉伸
  2. JDK14+JAVAFX14+Maven定制jre打包瘦身,必成版
  3. Python-OpenCV之操作像素进行反色(反相)处理
  4. GitModel数学建模 —— 动手学数理统计
  5. iOS 9人机界面指南(一):UI设计基础
  6. 【大数据】【人工智能】【 区块链】
  7. 总结一周:变量,数据类型,循环,函数
  8. selenium自动登录QQ空间(无头、规避)
  9. 特技世家出身导演史考特沃夫亲上阵搏命悬空摄影
  10. STM32关于PVD低电压能检测的知识