代码审计之熊海cms v1.0

偶然发现有这么一个个人开发的小型cms,正巧想好好研究下代码审计,那就借这个cms来给我的代码审计开篇吧~

看了道哥和seay的代码审计书,总感觉自己缺少实际经验,看别人的代码审计总觉得很简单,自己审计才发现有很多小细节需要自己挖掘才能发现。。原本想给漏洞分类然后发出来,但是这样体现不出代码审计的思路,还是按照我实际的思路来写吧,漏洞类型可能重复~

拿到代码,首先看看有哪些明显的漏洞存在(掏出seay的代码审计系统~)

图片[1]-代码审计之熊海cms v1.0-安全小百科

一共34个可疑漏洞,下面对这些漏洞一一分析,看看哪些是有用的,另外除了这些已知的,看看有没有漏网之鱼~

1.文件包含漏洞

这是ID1和2的漏洞代码,这里参数r经过一次转义,直接就进入了include函数

一个典型的文件包含漏洞!

这里我在根目录下新建了一个test.php,内容为<?php phpinfo(); ?>

但是这里注意,代码所显示的文件为files目录下

图片[2]-代码审计之熊海cms v1.0-安全小百科

这里我们需要进行目录跳转,跳转到根目录后再包含我们作为测试的test.php

payload : http://127.0.0.1/?r=../test

然后我们继续参照seay审计系统给出的漏洞,可以发现在admin目录下存在大量sql注入漏洞,由于这是在admin目录,因此我们需要先获得后台登录账号密码,这里先放一放,看看后续有没有能够获取到管理员账号密码的漏洞,然后再来对这些漏洞进行验证性分析~

后续的漏洞经过实际测试没有明显的可行性,下面我们来对cms结构进行分析~

首先我们关注它的配置文件,其文件均在inc目录下,下面我们来对这个目录下的文件进行逐一分析,这个配置目录很重要!

2.越权漏洞

看到配置目录的第二个文件就已经发现问题了

这里对cookie进行验证,如果user存在则放过,如果不存在cookie,那么跳转到/?r=login这个网页,这是什么网页呢,,瞧一瞧~

图片[3]-代码审计之熊海cms v1.0-安全小百科

原来这是后台界面,,也就是后台的功能,就靠这一个cookie来进行认证,而且只要存在user,即默认为管理员。。。。

图片[4]-代码审计之熊海cms v1.0-安全小百科

可以看到后台几乎所有的管理页面都是采用这样一种认证方式,那我们来进行绕过!

这里就拿/admin/files/wzlist.php来举例子~

图片[5]-代码审计之熊海cms v1.0-安全小百科

这里我添加了认证,且这个user只需要存在即可。。

图片[6]-代码审计之熊海cms v1.0-安全小百科

可以看到这就登上去了。。之后在进行后台操作时,只需要加上这个user=xxx就可以像管理员一样了。。

之后在看配置文件时,没有发现什么亮点,就是一些普通的数据库连接、图片定义之类的~

3.sql注入

来了,脚本小子的最爱~

在基本看完所有的配置文件后,我们来看看其页面存不存在sql注入~

随便翻看网页,例如这里的http://127.0.0.1/?r=content&cid=18

让我来看看是如何来调用参数的,,这里r前面已讲过~,这里注重分析cid(这里像极了sql注入)

图片[7]-代码审计之熊海cms v1.0-安全小百科

对这个cid参数进行全文追踪,发现在调用一开始就采用了addslashes(),到这里注入基本已经gg,但是还有峰回路转~

接下来我去看后台登录页面,多少次万能密码直接登录的案例在我脑海里挥之不去~

这里的user和password都没有过滤参数,直接带进了数据库查询!

解释一下的这里的密码判断机制,首先按照我们输入的用户名,从数据库中进行查询,如果没找到报错,找到后根据其md5值与我们输入的password的md5值进行比较,如果不对报错。。

因此这里万能密码没什么作用,,但是有注入!
payload : ‘ or updatexml(1,concat(0x7e,(select concat(user,0x7e,password) from manage)),0)#

这里密码随意,,因为我们已经能够利用报错注入,来显示用户名密码~

图片[8]-代码审计之熊海cms v1.0-安全小百科

这里成功得到管理员账号密码~

到这里仿佛就已经可以登录进后台去getshell了,,不过这不是实际渗透,因此我们本着研究的精神,来继续对这个cms来进行分析!

4.xss漏洞

我们继续来看网页的各项功能,这里有个“联系”一下就吸引了我的眼球~

这里我们重点关注是否存在存储型xss漏洞!

这里经过实际测试,不需要经过管理员同意,可以直接显示~这大大方便了我们的测试啊~接下来看看能不能执行JavaScript,有无过滤~

图片[9]-代码审计之熊海cms v1.0-安全小百科

过滤了<script></script>。。。下面我们来对源码进行分析~

这里我大概卡了很长时间,因为我没有找到过滤函数,找来找去都没发现可以过滤<script>的功能函数,后来才发现是这个<textarea>搞得鬼!

这个<textarea>可以过滤标签,具体的原理参见:传送门

但是不要慌!这里的name、mail、url都没有进行过滤,我们可以直接提交js上去,不过这里我们需要注意闭合标签

这里经过实际测试,由于mail不在用户中显示,因此在这里插上xss在页面上不会引起不适~

图片[10]-代码审计之熊海cms v1.0-安全小百科

这里跟普通用户一样,但是我们的xss代码已经插上去了~

这时候我们模拟管理员打开留言列表~

图片[11]-代码审计之熊海cms v1.0-安全小百科

普通用户打开留言页面时:

图片[12]-代码审计之熊海cms v1.0-安全小百科

另外发现了一个鸡肋的反射型xss漏洞

这里的page参数经过一次转义,就直接带进了页面

payload : ?page=<script>alert(2)</script>

图片[13]-代码审计之熊海cms v1.0-安全小百科

用户端的页面我基本看了个遍,漏洞大抵相同~

下面我们来进入后台,看看有木有什么漏洞~

5.sql注入2

这里由于我们根据前面的漏洞已经拿到了管理员的账号密码,因此在seay代码审计系统中所显示的admin目录下的漏洞,我们也就可以来进行验证了!

这里拿admin/?r=newlink举例~

这里的参数同样没有经过过滤就直接insert进了数据库

payload :

图片[14]-代码审计之熊海cms v1.0-安全小百科

错误回显:

图片[15]-代码审计之熊海cms v1.0-安全小百科

6.csrf漏洞

这里管理员功能实在不多,,,就一一点开看了下~

突然看到一个删除文章的功能,点开页面抓包我仿佛看到了新大陆~

/admin/?r=wzlist&delete=18

补全的话就是http://127.0.0.1/admin/?r=wzlist&delete=18

这就是删除页面的链接,如果管理点击这个链接会发生什么呢。。我们来做一个测试

首先我退出管理账号,然后访问这个页面,根据前文的分析,这里一定会验证我user的身份,所以应该是返回登录界面

果然经过测试的确返回了登录界面~

下面我们登录进管理员,再点击这个链接~

图片[16]-代码审计之熊海cms v1.0-安全小百科

这里我登录进去,然后点击这个链接,文章就被直接删除了!

审计到这里,就要想怎么getshell了!

可是水平不济,经过多番尝试都没有getshell。。。。

那么审计到这里,就告一段落了~总结下,先看整体的cms框架,然后针对配置目录和功能目录去进行重点分析,最后再对后台来进行getshell分析~基本就是这样了。

相关推荐: 杰弗逊转轮加密原理详解

做CTF的crypto,经常会遇到一些加密解密,杰弗逊加密也是考察频率较高的一种加密方式 像今年的ISCC CTF中就有一条转轮加密题目: 加密表: 1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNA…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论