BlueCMS版本号为:bluecms_v1.6
本地搭建环境后将源代码丢进seay源代码审计系统
搭建好环境后第一步先检查是否有重装漏洞,访问网站install位置,我的网址是:
漏洞一:简单注入
可以看到$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文件,有
若果没有开启GPC防注入的话,则对POST,GET,COOKIE,REQUEST参数都进行过滤,但是deep_addslashes
仅仅是在addslashes过滤函数基础上的一个修改,而addslashes函数是不能防止数字型注入的,回到刚才漏洞的注入点:
$ad
= ``$db``->getone(``"SELECT * FROM "``.table(``'ad'``).``" WHERE ad_id ="``.``$ad_id``);
疑似漏洞
仔细一看进行过滤了,ann_id进行了数字的转换,cid也同样,intval()只获取变量的整数值
漏洞二:疑似任意文件删除漏洞
可以看出来,选择动作为unlink删除,传入id参数,先从数据库中将其删除,然后如果本地存在该文件也一并继续unlink删除。
添加一个1.txt到网站目录试试
http://192.168.92.142/bluecms/publish.php?act=del_pic&id=1.txt
疑似漏洞
漏洞三:本地文件包含漏洞
去网站目录找一下有该目录文件,alipay,传输方式是post
构造一下user.php?act=pay
跳转到了支付宝的一个支付界面,接着我们尝试本地文件包含,先尝试%00截断和和windows下点+斜杠截断的方法,把本地phpstudy环境中php版本开到5.3.4以下,因为这两个截断在5.3以后的版本中已经全面修复了。
alipay同目录下创建1.txt文件,文件内容为:
无反应,加个 echo $_POST[‘pay’];看看回显什么
显示了\,应该添加了\避免被%00截断
windows下点+斜杠截断(240个连接的点进行截断,大于就对了)
成功包含
疑似任意文件删除漏洞
在publish.php中删除,虽然其在数据库中即便没有找到该路径,但是程序选择了继续执行下去,但是在user.php中设置的是如果没有找到该路径,就抛出错误,同时不再继续进行,故这里不能进行任意文件的删除。
漏洞四:另外一处任意文件删除
把3.txt执行
成功
漏洞五:XFF代理ip
bluecms中获取用户IP地址是通过:xff
实际上使用XFF是能够绕过的,大概看了一下,对于ban掉的IP也是通过XFF获取到的IP地址来判断的,并不安全
在guest_book.php文件中调用了获取到的IP地址存储到数据库中:
$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,我们这里就是利用这个特性钻了空子而注入。
先在网页上尝试留言
我这版本的留言不行
正常留言成功的
漏洞五:后台大量填写处存在XSS
我这版本首页留言板不给留言,只找到了后台一处xss
构造
//
首页flash
很多地方都存在,就不写了,太多了。