入门KKCMS代码审计
2020-05-11 10:05:32 Author: xz.aliyun.com(查看原文) 阅读量:553 收藏

一、安装

安装过程不再赘述,安装后打开站点如下图所示
按CMS的介绍可以用来发卡或者来采集影视进行播放
由于是新手导向,所以可能会比较详细(入门)

其中部分文件


二、验证码重用

对比session和传入的verifycode是否相等

每次失败访问后,都会进行刷新跳转,然后重新执行一次JS代码,但是由于Burp默认不解析js,所以这里存在验证码复用的漏洞

搜索此参数,发现只在verifycode.php中才存在 $_SESSION['verifycode']
生成0——9的随机4位验证码。

此外,值得一提的是,许多站点存在验证码重用漏洞所用的代码和使用方法都和本文的案例一样。


三、前台不能拿shell的上传漏洞

由于此cms默认存在的编辑器为kindetior,并且easy代码审计显示存在一个文件上传

查阅代码,发现存在可以直接上传html页面,txt等页面

更详细的可以查看 https://www.cnblogs.com/backlion/p/10421405.html,本文不再赘述。


四、新手SQL注入采坑:

在admin/login.php 后台登录的地方看到a_name 和 a_password 没有经过处理就带入SQL语句中
以为存在后台万能密码

尝试万能密码Payload无果 头疼ing!!
尝试sqlmap 进行测试无果 头疼ing!!!
最后看了一下easy代码审计系统里自带的MySQL监控发现对引号进行了转义

可是查看上面的代码又没有发现什么处理传参的地方,最后才在上方注意带包含了一个inc.php

inc.php的内容

我们分别进入这四个文件进行审计,最后在library.php中发现

意思大概就是没有开启魔术引号的时候会将上述传参加上addslashes,因此在这里的们的双引号自然就会被加上反斜杠了(addslashes并不是万能的防护措施,具体可以去查阅百度)


五、前端SQL注入

输入一个引号发现回显不一样,审计此文件 /vlist.php

可以的清楚的看到没有任何防护措施,而由于传参方法为数字型,因此也没有使用双引号进行包裹,直接进入sql语句进行拼接

看到没有任何防护的措施直接上Sqlmap
另外此处其实是有上了如采坑点所说的addslashes的,但是由于没有使用双引号将$c_id包裹起来,所以我们无需使用双引号进行闭合,addslashes也就没有起到作用了。
(这里手工注入的时候,不好进行判断,因为他默认c_id会等于0,这会给我们的输入造成一定的的干扰)

$result = mysql_query('select * from xtcms_vod_class where c_pid=0 order by c_id asc');

六、后台SQL注入

进入后台,随便点点,寻找与数据库交互的地方(尤其是传参数为数字型的参数,因为我们在前面已经发现字符型的参数使用双引号包裹,而存在的addslashes会阻止一切字符型SQL注入),发现在会员管理处存在id=1

id=1 and 1=2

id=1 and 1=1 一个非常明显的sql注入漏洞

进入文件中进行查看,直接进行拼接

使用sqlmap进行注入,纳尼!这么明显的注入居然不存在???

不过我们可以通过自己判断来确定存在一个盲注,确定当前数据库的第一个字母为k
盲注代码不再赘述,这里仅做证明

全后台 delete注入

http://192.168.49.1/cms/kkcms/admin/cms_usergroup.php?del=2%20and%20sleep(5)

而后台的代码很简单,直接引入数字型的del参数,带入数据库,整个后台的删除功能都是这样写的
存在于整个后台文件的共12个文件存在delete注入


七、多处XSS漏洞

1、随便点击一个页面,寻找存在的get请求的参数,这就是我们寻找XSS漏洞的突破点

其中已发现的存在以下同样用法的XSS
template\wapian\movie.php
template\wapian\tv.php
template\wapian\zongyi.php
template\wapian\dongman.php

2、点击某处URL发现URL存在m、cat 、page 等参数

3、我们先查看movie.php 里的内容,发现包含了三个文件

4、跟进 include('template/'.$xtcms_bdyun.'/movie.php'); 中的$xtcms_bdyun是什么
全局搜索$xtcms_bdyun 发现为数据库中system表的某个字段

5、定位代码页面在template/wapian/movie.php,存在变量m,没有发现echo输出

6、只能根据页面关键字进行二次定位

7、根据页面文字信息进行定位,终于发现了相关的echo信息

8、根进getpageHtml函数 文件在system/function.php,其实代码写的有点乱,看不大懂,但是我们发现它并没有对传参进行完整的过滤(上文SQL踩坑处的addslashes不足以过滤xss),因此也就造成了XSS漏洞

成功弹框

此外,另外存在几处XSS,其原理也和上述XSS类似,输出点都在page点
例如:cat参数 存在XSS

area参数存在xss


八、留言板处前端+后端XSS双杀

在我决定弹反射型XSS弹到怀疑人生的时候,我陷入了沉思,我觉得应该要弹一个存储型XSS才够,因此我苦寻良久(easy代码审计工具中没有将可能存在存储型XSS漏洞的这个点显示出来),最后终于在book.php找到了(在首页上乱点没点到)

打开页面是一个留言框

对代码进行审计发现需要我们传入的内容需要存在汉字(\x7f-\xff)
如果不存在汉字,则弹出内容不合法
(此处的验证码无法显示,我们作弊一下跳过验证码验证,将验证码字段的!=改为==)

通过正则的校验后,直接进入数据库,并且包含了template下的book.php文件

跟进此文件,发现从数据库中取出,然后直接echo,产生xss

payload: 我<img src=1 onerror=alert(/xss/)>

后台的留言板块文件为cms_book.php


同样从数据库中直接取出数据,因此造成后台存储型XSS


九、第二个存储型XSS

在youlian.php下存在可以提交友情链接申请的功能

同样是经过一个addslsashes的过滤然后传入数据库中,这同样无法阻止XSS


传入后端 友链管理处,触发存储型XS


十、数据库信息泄露

本来是要测试是否存在重装漏洞的,却发现存在一个data.sql
打开网页发现存储的是默认创建的表结构和数据库信息,这是属于一个相对严重的信息泄露漏洞


十一、总结:

  • 1:新手在入门审计CMS的时候,要有思路的去寻找漏洞点,不要看到一个点觉得存在,然后就跳跃性-的转移文件审计代码,这样会导致效率很低。
  • 2:在审计CMS的时候,多注意一下是否默认存在开源软件或编辑器。
  • 3:seay代码审计工具里的MYSQL查询语句监控真的非常好用!
  • 4:注意一些非HTML或者PHP后缀的文件,可能存在信息泄露漏洞。
  • 5:审计CMS时,可以先从重装文件入手,因为这是整个CMS的开端。
  • 6:一个十分寻常的XSS背后可能经过了多层跟进,代码审计的魅力就在于此。
  • 7:本文比较简单,还望各位大佬多加海涵,也希望能够帮助一些刚入门代码审计的表哥们!

文章来源: http://xz.aliyun.com/t/7711
如有侵权请联系:admin#unsafe.sh