Bluecms 代码审计,入门级别

本人是CSU18级小学生一枚,今天在此立下flag,以后每3~5天审计一个建站系统,并写下博客作为见证,直到独立审计出通用型漏洞,拿到CNVD证书。
今天要审计的是对入门比较友好的bluecms,代码较为简单,代码量也比较小,下面开始。
一、文件包含漏洞
Bluecms 代码审计,入门级别此次采用灰盒测试,边审计代码边进行验证
Bluecms 代码审计,入门级别搭建成功,进行代码审计的时候,自己搭建本地测试环境是相当必要的,这样可以对自己发现的漏洞进行验证。
我用的是Seay代码审计系统,先进行自动审计,省去我们一部分
时间。
Bluecms 代码审计,入门级别首先是这一处,很明显的文件包含漏洞,act参数在前端是表示用户的行为,当我们点击登陆的时候,就会进入这个页面,
Bluecms 代码审计,入门级别所以猜测,当我们支付的时候,应该就会是这样
Bluecms 代码审计,入门级别

Bluecms 代码审计,入门级别
Bluecms 代码审计,入门级别此处post接受act参数,但是并未对这个参数进行任何过滤,所以应该就是存在文件包含漏洞的,抓包进行测试
Bluecms 代码审计,入门级别我已经提前在www.a.com目录下建立好了一个1.php文件里面就是输出一些内容,
Bluecms 代码审计,入门级别
发送到repeater模块

Bluecms 代码审计,入门级别分析此处如果我们不进行截断的话,就会拼接上后面的index.php
Bluecms 代码审计,入门级别

此处进行说明:在php小于5.4之前的版本可以用多个点来截断
window下是259个’.'就可以进行截断
Linux下要4096个‘.’此外还有常见的“?”截断,或者是%00截断
Bluecms 代码审计,入门级别此处文件包含成功,文件包含漏洞一般是需要配合文件上传来使用,上传含有写木马的代码的图片,因为不论是什么后缀,都会被当成php来解析。

二、sql注入漏洞

在uploads目录下有一个ad_js.php
Bluecms 代码审计,入门级别这里初步看起来是没有任何过滤的,只是验证了一下ad_id参数是否为空,我们深入进去查看一下getone这个函数有没有进行过滤操作
Bluecms 代码审计,入门级别很明显这里是没有任何过滤操作的
基本可以判断存在SQL注入漏洞
前端复现尝试一下
Bluecms 代码审计,入门级别当我们随便传参进来,页面是正常的,下面进行注入测试
Bluecms 代码审计,入门级别order by 1页面返回正常

Bluecms 代码审计,入门级别
order by 1000页面报错,断定存在SQL注入漏洞,后面不再深入验证

三、SQL注入漏洞
Bluecms 代码审计,入门级别在PHP中getenv(参数)函数是一个用于获取环境变量的函数,在这个函数中获取到的ip并没有进行过滤,下面查看哪里调用了这个函数,后面的SQL语句是否直接执行
Bluecms 代码审计,入门级别很显然这里调用了getip这个函数,在执行SQL语句之前并未进行任何过滤,所以此处一定是存在SQL注入漏洞的
收获:想要审计出漏洞,一定要先搞懂站点哪一步进行了什么操作,对应文件和相关参数变化,这样才能深刻理解和挖掘漏洞
先审计到这里,后面应该还会有xss的漏洞等等