自由的羽毛 发表于 2024-11-2 03:47:27

某小型CMS漏洞复现审计

SQL注入

漏洞复现:

https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657448.png
登陆后台,点击页面删除按钮,抓包:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657449.png
rid参数存在sql注入,放入sqlmap检测成功:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657450.png
代码分析:

Ctrl+Shift+F检索路由:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657451.png
定位具体代码,为删除功能:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657452.png
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657453.png
发现deleteByIds调用了传参rid,跟进:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657455.png
发现进入Dao层,此处依旧调用的deleteByIds,于是找ICommonDao接口实现类:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657456.png
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657457.png
定位到该类,发现以ids参数担当原先用户传入的rid参数,并在new一个sql对象后,直接将ids参数举行拼接,并通过原生jdbc执行返回结果。
【----帮助网安学习,以下全部学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权势巨子CISSP 认证测验指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
模板注入

内容管理-文件管理-themes-flatweb-about.html,选择编辑,插入payload:
${value("calc.exe")}
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657458.png
访问首页,点击关与我们:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657459.png
执行下令,弹出盘算机:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657460.png
代码分析:

配置文件存在freemark
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657461.png
文件上传

漏洞复现:

这个CMS感觉上传文件路径不是很好找,以是上传时先找个合适的目次再点击上传文件。
文件管理处点击admin进入目次:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657462.png
再点击文件上传:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657463.png
通过上传jsp马,不外需要以jspx或者jspf后缀绕过上传。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657464.png
代码分析:

上传时抓包,根据路由全局搜索:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657465.png
定位到具体代码段:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657466.png
用filePath参数担当path参数与file参数拼接,再从filePth参数中取出文件名赋值给fname参数。
跟进getSuffix:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657467.png
发现只是以简朴点来获取后缀。
检测是否为jsp文件后,如果不为则进入为空判断,并以FileOutputStream与write直接上传写入。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657468.png
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657469.png
恣意文件删除

漏洞复现:

上传jsp马后,点击右方删除文件,抓包。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657470.png
将下方数据包改为admin上级目次,删除我先前上传但没找到路径的test.jspx文件,删除成功:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657471.png
代码分析:

根据数据包在IDEA全局搜索,定位到delete代码段:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657472.png
该方法吸收三个参数:path、name 和 data,这些参数通过 \@RequestParam注解从请求中提取,并举行简朴拼接,赋值给file对象,此时file对象代表实际的文件名称。
跟进delete方法:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657473.png
发现对传入的path参数举行了检查,继续跟进:
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202411011657474.png
发现仅仅采用java自带的类java.security.AccessController下的checkPermission(Permissionperm)静态方法校验权限。
如果权限满足便直接通过fs.delete()方法删除,造成恣意文件删除漏洞。
更多网安技能的在线实操练习,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 某小型CMS漏洞复现审计