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

某小型CMS漏洞复现审计

SQL注入

漏洞复现:

登陆后台,点击页面删除按钮,抓包:

rid参数存在sql注入,放入sqlmap检测成功:

代码分析:

Ctrl+Shift+F检索路由:

定位具体代码,为删除功能:

发现deleteByIds调用了传参rid,跟进:

发现进入Dao层,此处依旧调用的deleteByIds,于是找ICommonDao接口实现类:

定位到该类,发现以ids参数接受原先用户传入的rid参数,并在new一个sql对象后,直接将ids参数进行拼接,并通过原生jdbc执行返回结果。

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

模板注入

内容管理-文件管理-themes-flatweb-about.html,选择编辑,插入payload:

<#assign
value=“freemarker.template.utility.Execute”?new()>${value(“calc.exe”)}

访问首页,点击关与我们:

执行命令,弹出计算机:

代码分析:

配置文件存在freemark

文件上传

漏洞复现:

这个CMS感觉上传文件路径不是很好找,所以上传时先找个合适的目录再点击上传文件。

文件管理处点击admin进入目录:

再点击文件上传:

通过上传jsp马,不过需要以jspx或者jspf后缀绕过上传。

代码分析:

上传时抓包,根据路由全局搜索:

定位到具体代码段:

用filePath参数接受path参数与file参数拼接,再从filePth参数中取出文件名赋值给fname参数。

跟进getSuffix:

发现只是以简单点来获取后缀。

检测是否为jsp文件后,如果不为则进入为空判断,并以FileOutputStream与write直接上传写入。

任意文件删除:

漏洞复现:

上传jsp马后,点击右方删除文件,抓包。

将下方数据包改为admin上级目录,删除我先前上传但没找到路径的test.jspx文件,删除成功:

代码分析:

根据数据包在IDEA全局搜索,定位到delete代码段:

该方法接收三个参数:path、name 和 data,这些参数通过 @RequestParam
注解从请求中提取,并进行简单拼接,赋值给file对象,此时file对象代表实际的文件名称。

跟进delete方法:

发现对传入的path参数进行了检查,继续跟进:

发现仅仅采用java自带的类java.security.AccessController下的checkPermission(Permission
perm)静态方法校验权限。

如果权限满足便直接通过fs.delete()方法删除,造成任意文件删除漏洞。


http://www.mrgr.cn/news/63772.html

相关文章:

  • 利用frp进行SSH端口转发(内网穿透同理)
  • 轻松完成大量文件管理任务,办公软件在线批量将多个文件夹修改为统一名称并按顺序添加数字序号的全攻略
  • 【Linux】操作系统初步理解与Linux指令入门
  • 《Python游戏编程入门》注-第4章2
  • 三种网络配置方法nmcli、ip、ifcfg文件
  • linux系统定时执行shell脚本请求接口保存文件
  • Ceisum无人机巡检视频投放
  • NET Core的AOP实施方法1 DispatchProxy
  • 【Linux】基础指令
  • ERROR: Failed cleaning build dir for numpy Failed > to build numpy ERROR
  • 一键切换暗黑模式,这些代码片段你不可错过
  • 直流电机在液压泵领域的应用
  • ubuntu运行gazebo导致内存越来越少
  • Android 同花顺面经
  • 面试题分享1
  • 【染色时间】
  • markdown/Latex分子,分母,除号,怎么编辑
  • 如何实现千万级数据表的快速分页查询
  • 题目:0的个数
  • 冰雪奇缘!中科院一区算法+双向深度学习+注意力机制!SAO-BiTCN-BiGRU-Attention雪消融算法优化回归预测
  • systemctl restart NetworkManager 重启后,文件/etc/resolv.conf修改失败
  • Java XML一口气讲完!(p≧w≦q)
  • 利用frp进行SSH端口转发(内网穿透同理)
  • 【每日C/C++问题】
  • 【数据库系统概论】第3章 关系数据库标准语言SQL(一)数据查询(超详细)
  • __init__.py __all__和 __name__的作用及其用法