[JAVA代码审计]OFCMS路径遍历漏洞

文章目录

  • 写在前面
  • 分析

写在前面

今天分析的第二篇,当时在网上看到爆了这个漏洞那么就分析一下啦
[JAVA代码审计]OFCMS路径遍历漏洞_第1张图片
网上似乎没有人写,那就让本小可爱来吧

分析

漏洞点存在于后台的模板文件查看处
[JAVA代码审计]OFCMS路径遍历漏洞_第2张图片
漏洞函数位于com/ofsoft/cms/admin/controller/cms/TemplateController.java下的getTemplates函数,首先是接收这三个参数,当时是get传参方式

//当前目录
 String dirName = getPara("dir","");
 //上级目录
String upDirName = getPara("up_dir","/");
//类型区分
String resPath = getPara("res_path");

接下来这一行不用去管,反正等下我们都是通过目录穿越,这前缀都不重要
[JAVA代码审计]OFCMS路径遍历漏洞_第3张图片
再下面,咋不传参,直接进入else分支分析,主要是懒,能少写一个参数我就少写一个
[JAVA代码审计]OFCMS路径遍历漏洞_第4张图片
我们继续跟踪,只是简单的获取路劲,这里不想多看
在这里插入图片描述
我们回去继续跟踪File函数,由于学过nodejs,这里看着resolve能猜到是把两个参数的路径拼接,那到了这里就很明白啦,并且没有对传入的路径进行过滤,单纯指的是..符号
[JAVA代码审计]OFCMS路径遍历漏洞_第5张图片
接下来的代码也只是遍历目录获取文件名,之类的,并且读取,不偷懒还是来看看吧,这里接收了file_name参数,通过foreach循环遍历f,目的是确认此文件夹下面有这个文件,并赋值给了editFile参数
[JAVA代码审计]OFCMS路径遍历漏洞_第6张图片
接下来我们看到调用了readString方法
[JAVA代码审计]OFCMS路径遍历漏洞_第7张图片
我们能很清楚的看见,这里用了FileInputStream方法读取文件,并把文件内容写入缓存。我觉得这里比较好玩的是这个for循环的第二部分,还算是比较巧妙的方式呢
[JAVA代码审计]OFCMS路径遍历漏洞_第8张图片
最后返回用UTF-8编码的字符串
在这里插入图片描述
返回,再往下对敏感字符进行了替换,当然我也不知道有啥用,第一次分析Java,有知道的师傅麻烦下面评论区告诉我一下
在这里插入图片描述
最后把文件内容通过setAttr转调了this.request.setAttribute(name, value);,该方法可以将 各种数据传递给 View 并在 View 中显示出来。全程无参数过滤
因此我构造参数访问http://url/admin/cms/template/getTemplates.html?file_name=web.xml&dir=../../&dir_name=/,就得到了web.xml的文件
[JAVA代码审计]OFCMS路径遍历漏洞_第9张图片
分析完毕

你可能感兴趣的:(#,Java代码审计,#,训练打卡日记,安全学习)