一处有趣的php文件写入导致的getshell


在审计一个名为熊海CMS的时候,发现了一处比较有趣的文件写入导致的getshell,所以记录一下分享出来。虽然利用条件有些鸡肋,但在遇到CMS安装页未删除并且可以重复安装的情况下倒是一个getshell的思路。

关键代码如下:

include '../inc/db.class.php';
$db = new DBManage ( $dbhost, $dbuser, $dbpwd, $dbname, 'utf8' );
$db->restore ('seacms.sql');
$content = "<?php
\$DB_HOST='".$dbhost."';
\$DB_USER='".$dbuser."';
\$DB_PWD='".$dbpwd."';
\$DB_NAME='".$dbname."';
?>
";
$of = fopen('../inc/conn.info.php','w');
if($of){
 fwrite($of,$content);
}
echo "MySQL数据库连接配置成功!<br /><br />";

在安装时,会将数据库名,用户,密码等写入db.class.php文件,那就可以构造数据库名来getshell了。

我们可将数据库的名称改为:';phpinfo();// (经测试,mysql的数据名是可以有任意字符的)这样在安装时写入到db.calss.php的文件就变成了如下的样子:

20200429145638

这样直接访问安装后的CMS首页就可以执行写入的php代码了,因为不管哪个页面都引用了db.class.php这个配置文件。

20200429150738

如果是黑盒测试的话就需要不断尝试数据库名的payload,因为不同CMS写入配置文件时的格式不同。


文章作者: darkless
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 darkless !
评论
 上一篇
DiscuzX3.3 authkey可爆破漏洞复现 DiscuzX3.3 authkey可爆破漏洞复现
前言在看了一个师傅写的 Discuz_X authkey安全性漏洞分析文章后,对其中的某些点还是有些模糊,于是决定下载DiscuzX3.3将authkey可爆破漏洞复现下,尽可能的说清楚复现的每一步及其利用的工具和脚本。 漏洞详情 2017
下一篇 
PHP XXE 利用过程演示 PHP XXE 利用过程演示
XXE简介在理解什么是XXE之前首先要知道什么是XML,XXE的全称为XML External Entity Injection,就是XML外部实体注入。XML是一种通用的数据交换语言,当处理数据时没有限制外部实体的使用,就可能会导致攻击者
  目录