OFCMS代码审计-JAVA

admin 2024年5月19日01:16:29评论13 views字数 1505阅读5分1秒阅读模式

免责申明

本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。

0x00 前言

还是熟悉的开头啊,兄弟们,今天来一个OFCMS代码审计记录一下

0x01 信息搜集

        首先还是查看pom.xml文件,查看这套源码使用了哪些组件等信息,做一下简单的信息搜集。

OFCMS代码审计-JAVA

OFCMS代码审计-JAVA

简单查看过后发现该项目使用了

freemarker    - > 模板注入

Log4j      ->   之前爆的nday

JDBC    -> 链接数据库

fastjson   ->  之前爆的nday

......

拿到这些信息之后我们先记到小本本上,方便我们后去测试组件漏洞

0x02 审计流程

SQL注入漏洞

前面我们得知此项目使用的是JDBC进行操作数据库语句,那么在JDBC当中存在两个执行sql语句的方式

直接执行方式

    executeQuery()方式

预编译方式

    prepareStatement()方式

我们先去查看后台对应的功能点

OFCMS代码审计-JAVA

在代码生成这块存在一个新增语句,后们尝试行下OFCMS代码审计-JAVA

发现最终调用的是creater方法

对应文件在com/ofsoft/cms/admin/controller/system/SystemGenerateController.java

OFCMS代码审计-JAVA

首先跟进getPara方法

OFCMS代码审计-JAVA

通过request.getparameter方法封装到getpara方法当中用来获取用户的传参,然后传入到了Db.update方法当中,继续跟进update方法查看

OFCMS代码审计-JAVA

这里发现直接对sql传入的参数放入了  prepareStatement()当中,虽然这个是预编译的手段,但是我们可以控制整个语句,直接可以进行执行sql语句,并不是传统的那种sql语句当中的一部分可控,而是全部可控所以,这里存在一个sql注入漏洞

漏洞验证

OFCMS代码审计-JAVA

成功的得到了回显

任意文件读取

在文件

com/ofsoft/cms/admin/controller/cms/TemplateController.java

OFCMS代码审计-JAVA

这里接收传参的三个值分别为dir up_dir res_path参数,然后进行了简单的判断再44 477行代码进行了敏感操作,路径的拼接,没有经过任何的过滤那么我们现在知道了dir是可以进行跳目录的OFCMS代码审计-JAVA

继续向下走查看代码

OFCMS代码审计-JAVA

然后进行获取file_name参数然后传递给fileName变量最后判断filename是否不为空,再判断files是否为空,如果不是空那么进行遍历files内的全部文件然后和file_name进行比较有则返回无则返回files的第一个文,最终进行读取出来文件

最后我们知道了

dir是控制程序当前目录的

file_name是我们要读取的文件,如果没有那么会返回第一个文件

漏洞验证

OFCMS代码审计-JAVA任意文件写入

在同文件下还有一个save方法

OFCMS代码审计-JAVA先是去获取参数res_path然后进行了一个路径的获取再去接收dirs参数最后去判断一下dirName是否为空,如果不为空那么创建一个新的目录如果是空接收参数file_name参数并且再去接收一个file_content参数,进行了一个过滤之后创建新的一个目录,并且调用了方法FileUtils.writeString,对该方法进行跟进

OFCMS代码审计-JAVA这里进行实例化了OutputSeream类然后使用write进行了写入,并且将String转换为了数组形式

这里我们知道了res_path为写入路径

file_name为写入文件名称

file_content为写入的内容

漏洞验证

OFCMS代码审计-JAVA

成功的写入

这里的路径是通过断点调试之后找到的路径

0x03 审计结束!

至此完结

OFCMS代码审计-JAVA

原文始发于微信公众号(进击安全):OFCMS代码审计-JAVA

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月19日01:16:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   OFCMS代码审计-JAVAhttps://cn-sec.com/archives/2037879.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息