Bluecms是一个地方网站的开源的cms,在很多地方性的网站上应用还是不少的,今天在逛seebug的时候看到了一个漏洞的公告。
有公告但是这里还没有详情,很好奇我就去下载了一套源码看了看,好像这个cms好久没有更新了,下载了一套目前看来最新的。
既然提到了这个文件,那我们直接看这个文件是做什么用的。我们访问这个页面可以看到这个页面就是一个留言功能,往往这种地方注入最常见。
然后我们看一下这个留言功能对应的数据库中的表,一般情况下看到功能对应的表之后再去看注入点更加有针对性。
这里就是这几个点,这里大体上看了一遍,发现前四个点不太容易注入,反而这个Ip字段可能有点问题。我们直接看一下这个点。
首先这个界面代码如下:
这里可以看到首先加载了comment.inc.php这个文件,我们看一下这个文件。
然后在这个文件中又加载了common.fun.php这个文件,我们打开这个文件可以看到,这个文件中定义了一系列的公共函数,如过滤函数。
然后我们往下看,这里看到了获取客户端Ip的函数也是在这里定义的。
这里我们可以看到没有做任何的处理,现在我们回到有问题的文件中。
这里是将留言内容插入到数据库的操作,这里我们可以看到,这个参数未经过滤直接插入到了数据库中,我们在提交数据的时候可以使用client_ip这个字段来伪造一个恶意字符串,执行操作之后可以看到在数据库中是可以插入的:
然后我们去访问这个留言页面的时候就会执行以下的操作:
这里就会查询A表的所有字段,然后这里就会将我们gest_book表中的所有字段查询出来,然后在这里进行sql拼接的时候字段中的#号就将这条sql之后的所有字符注释掉了,那么最后执行的sql就是SELECT '1','0','2','11','127.0.0.1',@@datadir
然后将查询到的结果显示到了页面上。
最近看到了很多这个地方出现注入的cms,开发者只注重了对页面上存在的输入点的过滤,往往会忽略了这种系统自带参数的过滤。
根据最近一段时间的测试,总结一下这些注入常在的位置点,之前那种id注入或者是万能密码什么的已经失效了。只能开辟新的入口:
1,在网站的后台程序中许需要用到访问者的IP地址,但是又没有对获取到的IP做相应的过滤,这种情况下容易导致被注入或者是后台xss的发生;
2,在用户注册的地方,一般用户注册的时候会现去检测用户名或者是手机号什么的是否已经存在,这个点容易存在注入;
3,这个地方就是cookie注入了,一般情况下cookie是由服务器自己生成的,对这个数据的信任度是相对较高的,有些开发者容易忽略对后续请求中携带的cookie做有效的过滤;
4,再就是报错注入,这里说的报错注入并不是说你看到了数据库的报错,而是业务层面的报错,这里虽然不能确定是报错注入,但是这里完全可以尝试一下是否变成bool注入,这个问题实际中也是出现过。
后续会分享一些案例。
*本文原创作者:sjy93812,转载请注明来组FreeBuf.COM