Java代码审计(1)ofcms

环境搭建

github:https://github.com/yuzhaoyang001/ofcms
下载后,直接用IDEA打开ofcms项目,配置tomcat,选择第一个工件
在这里插入图片描述
运行后,输入自己的数据库信息后,等待配置完成后,最后输入你的管理员密码即可
在这里插入图片描述

配置完成后,停止运行,编辑
ofcms-master/ofcms-admin/src/main/resources/dev/conf/db-config.properties文件,修改数据库配置,并修改文件db-config.propertiesdb.properties
在这里插入图片描述
最后重新运行,就大功告成了
在这里插入图片描述

任意文件读取

分析

ofcms-admin/src/main/java/com/ofsoft/cms/admin/controller/cms/TemplateController.java文件的getTemplates函数,可以看到从前台获取dir、up_dir、res_path值,直接把dir拼接到pathfile,并未对其处理,直接获取pathfile目录下的所有目录dirs和文件files,但是获取的文件后缀只能是html、xml、css、js
在这里插入图片描述
进而在从前台获取file_name参数,默认为index.html,在判断files是否为空,如果不为空,在循环所有文件files和file_name进行对比,有则返回该文件,无则返回所有文件files的第一个文件,最终读取该文件内容
在这里插入图片描述

验证

跳到admin目录下,假如不知道该目录有什么文件就随便输入file_name,请求后,左边会显示该目录下的所有文件(html、xml、css、js)
在这里插入图片描述
当file_name为空时,则读取的index.html
在这里插入图片描述
当该目录下没有file_name文件,则输出该目录下第一个文件(html、xml、css、js)
在这里插入图片描述

任意文件写入

分析

还是在该TemplateController.java文件里的save函数,从前台主要获取file_name、file_content两个参数,可以发现该函数的file_name是直接和pathfile目录拼接上的,所以是可以路径穿越的,导致文件可以写到任意位置下
在这里插入图片描述

验证

admin目录下写一个q.xml
在这里插入图片描述
利用任意文件读取,读取q.xml
在这里插入图片描述

SQL注入

分析

ofcms-admin/src/main/java/com/ofsoft/cms/admin/controller/system/SystemGenerateController.java文件的create函数,可以看到这里直接获取一个sql字符串,进而执行update函数
在这里插入图片描述
经过层层追踪,最终到了这里,发现直接用executeUpdate函数执行了,以为这个cms全部用的参数化查询方式,结果这里竟然没用
在这里插入图片描述

验证

sql=update of_cms_ad set ad_id=updatexml(1,concat(1,user()),1)
在这里插入图片描述

任意文件上传

分析

ofcms-admin/src/main/java/com/ofsoft/cms/admin/controller下的ComnController.javaUeditorAction.java文件中的uploadeditUploadImageuploadImageuploadFileuploadVideouploadScrawl函数都是可以进行上传的,可以看到用的都是getFile函数
在这里插入图片描述
跟进MultipartRequest函数里,再到wrapMultipartRequest函数,可以看到先对齐检验文件是否存在,不存在,则创建,创建失败就拜拜,创建成功继续往下,最后上传成功则生成uploadFiles
在这里插入图片描述
跟进isSafeFile函数,发现获取了上传文件名,并检验是否以sp或jspx结尾,这里我们可以利用windows或中间件文件上传特性来避免结尾为jsp或jspx
在这里插入图片描述

验证

upload函数利用1.jsp.进行绕过
在这里插入图片描述
editUploadImage函数也可以如此
在这里插入图片描述

总结

这里也是根据控制器看每一个接口走下来了,最终也是审出来了,还有一个freemarker模板注入漏洞因为我自己也没整明白,也就没办法分析了,洞大家肯定都会用,所以这里我就没写了,等以后审计能力够了,会在写的;还有就是上传jsp文件为什么执行不了,是因为存在jfinal过滤器,所以没有办法

大家可以关注菜鸡的公众号,有什么好想法也可以让我学习一下,有什么问题可以一块解决,由于二维码违规,下面是base64编码的文字

5b6u5L+h5YWs5LyX5Y+34oCc5a6J5YWo5re35a2Q4oCd77yM5Y+v5Lul55So5b6u5L+h5pCc5LiA5pCc77yM5q2j5Zyo5a6M5ZaE5LitLi4uLi4u

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全混子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值