优化 “0day审计:微代码审计实战”

第一步:审视历史漏洞

泛微前台存在注入漏洞,特别是在 /js/hrm/getdata.jsp 页面上。关键漏洞点在于使用 Java 全局搜索关键字 request.getParameter(),并确保 Java 类中存在 executeSql 方法。

具体漏洞分析可参考这篇博客 https://www.cnblogs.com/0day-li/p/14637680.html。

第二步:流(Stream)分析

针对文件上传功能,关键类或方法往往与流相关。通过搜索关键词“Stream”,使用工具如 Sublime Text,全局搜索 new BufferedInputStream(,共计 285 处,涉及 133 个文件,主要集中在 Java 类中。

图片[1]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[2]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[3]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[4]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[5]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[6]-优化 “0day审计:微代码审计实战”-山海云端论坛

下一步是分析这些流的使用,重点关注:

  1. 获取 /mobilemode/skin 文件夹目录;
  2. 文件上传参数赋值给变量 i,默认为 0;
  3. 判断 SQL 查询的 imagefile 的 filerealpath、isaesencrypt、aescode 返回值;
  4. 将 SQL 查询到的 filerealpath 路径赋值给 str3;
  5. 创建新的文件实例,将 str3 赋值给 file2;
  6. 创建新的文件实例,将 /mobilemode/skin 和当前时间加 1L 后创建的文件实例赋值给 file3,如果文件夹不存在则创建(随机文件夹);
  7. 将 file2 和 file3 的路径加载到 upzip 方法,并创建压缩文件实例进行解压;
  8. 创建 BufferedOutputStream 和 BufferedInputStream 实例,BufferedOutputStream 实例将读取 file3 并设置根目录,而 BufferedInputStream 实例将通过 zipfile 对象获取流;
  9. 以 1024 字节为单位读取 BufferedInputStream 并写入 BufferedOutputStream 的流中,即解压文件,并刷新;
  10. 回到 _import 方法,判断 file3 下的 _.xml、.css 文件和 images 文件夹是否存在;
  11. 加载 file4 的值(xml 文件)到 readxml 方法进行读取,检查是否具有 id、name、previewImg、isEnabled、order、subCompanyId 的属性,并利用三元表达式进行判断,返回 skin(建议都不为空);
  12. 判断返回值是否为空并且 id 属性不能为空。
图片[7]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[8]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[9]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[10]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[11]-优化 “0day审计:微代码审计实战”-山海云端论坛

调用链:

通过全局搜索 SkinAction,定位到 classbean/com/weaver/formmodel/mobile/skin/SkinAction.java,在其中的 execute 方法中判断 action 参数等于 import 时,调用 _import 方法,并将 httpServletRequest 对象加载进去。

getAction 方法是通过继承自 MobileAction 并通过 HTTP 请求获取 action 参数的方式得到的。然后通过全局搜索 SkinAction,发现通过 joinActionUrl 方法调用,在第 2 行包含了 <%@ include file=”/mobilemode/init.jsp”%>,根据该方法构造出路径。

路径:

/mobilemode/Action.jspinvoker=com.weaver.formmodel.mobile.skin.SkinAction&action=import

图片[12]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[13]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[14]-优化 “0day审计:微代码审计实战”-山海云端论坛
图片[15]-优化 “0day审计:微代码审计实战”-山海云端论坛

最后,需要确保压缩包下必须存在 _.xml、.css 文件和 images 文件夹,且 xml 文件必须具有 id、name、previewImg、isEnabled、order、subCompanyId 的属性。

图片[16]-优化 “0day审计:微代码审计实战”-山海云端论坛

路径示例:/mobilemode/Action.jsp?invoker=com.weaver.formmodel.mobile.skin

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容