BlueCMS版本号为:bluecms_v1.6
本地搭建环境后将源代码丢进seay源代码审计系统

搭建好环境后第一步先检查是否有重装漏洞,访问网站install位置,我的网址是:

http://192.168.92.142/bluecms/install/

丢进seay里面,有300多个
image.png

漏洞一:简单注入

image.png
可以看到$ad_id没有引号包裹,存在数字型SQL注入漏洞,接下来我们需要找到$ad_id参数的输入点,构造利用点
这里只对输入的$ad_id进行了空格的过滤(trim)

$ad_id = !``empty``(``$_GET``[``'ad_id'``]) ? trim(``$_GET``[``'ad_id'``]) : ``'';

而在adjs.php文件的开头引入了过滤文件
require_once `dirname(``_FILE
) .‘/include/common.inc.php’;`
 我们查看common.inc.php文件,有
image.png
若果没有开启GPC防注入的话,则对POST,GET,COOKIE,REQUEST参数都进行过滤,但是deep_addslashes
image.png
仅仅是在addslashes过滤函数基础上的一个修改,而addslashes函数是不能防止数字型注入的,回到刚才漏洞的注入点:

$ad = ``$db``->getone(``"SELECT * FROM "``.table(``'ad'``).``" WHERE ad_id ="``.``$ad_id``);

可以看到这里是数字型的注入,所以我们能够直接进行注入。
image.png

疑似漏洞

image.png
仔细一看进行过滤了,ann_id进行了数字的转换,cid也同样,intval()只获取变量的整数值

漏洞二:疑似任意文件删除漏洞

image.png
image.png
可以看出来,选择动作为unlink删除,传入id参数,先从数据库中将其删除,然后如果本地存在该文件也一并继续unlink删除。

添加一个1.txt到网站目录试试
image.png

http://192.168.92.142/bluecms/publish.php?act=del_pic&id=1.txt

删除了,不过需要登陆用户
image.png
这样可以删除服务器任意文件

疑似漏洞

image.png
都有intval过滤了,跳过
image.png

漏洞三:本地文件包含漏洞

image.png
image.png
去网站目录找一下有该目录文件,alipay,传输方式是post

image.png
构造一下user.php?act=pay
image.png

跳转到了支付宝的一个支付界面,接着我们尝试本地文件包含,先尝试%00截断和和windows下点+斜杠截断的方法,把本地phpstudy环境中php版本开到5.3.4以下,因为这两个截断在5.3以后的版本中已经全面修复了。
alipay同目录下创建1.txt文件,文件内容为:
image.png
无反应,加个 echo $_POST[‘pay’];看看回显什么
image.png
显示了\,应该添加了\避免被%00截断
image.png

windows下点+斜杠截断(240个连接的点进行截断,大于就对了)
image.png
成功包含

疑似任意文件删除漏洞

image.png在publish.php中删除,虽然其在数据库中即便没有找到该路径,但是程序选择了继续执行下去,但是在user.php中设置的是如果没有找到该路径,就抛出错误,同时不再继续进行,故这里不能进行任意文件的删除。

漏洞四:另外一处任意文件删除

image.png
把3.txt执行
image.png
image.png
image.png
成功
漏洞五:XFF代理ip
bluecms中获取用户IP地址是通过:xff

image.png
 实际上使用XFF是能够绕过的,大概看了一下,对于ban掉的IP也是通过XFF获取到的IP地址来判断的,并不安全
在guest_book.php文件中调用了获取到的IP地址存储到数据库中:

image.png
image.png
 $online_ip是在guest_book.php包含的common.inc.php文件中获取到的

$online_ip = getip();

  getip函数在common.fun.php中,上面我们显示过代码,这里不再赘述。
虽然整个代码里面开启了SQL防注入以及参数过滤,但是在PHP5之后使用$_SERVER取到的header字段不会受到GPC的影响,而在header注入中最常见也是程序员经常会忽略的地方就是user-agent,referer以及client-ip/X-Forwarded-For,我们这里就是利用这个特性钻了空子而注入。
先在网页上尝试留言
image.png
我这版本的留言不行
正常留言成功的

image.png

漏洞五:后台大量填写处存在XSS

我这版本首页留言板不给留言,只找到了后台一处xss
image.png
image.png
构造

//

image.png
image.png

首页flash
image.png
image.png
image.png
image.png
很多地方都存在,就不写了,太多了。