记录某微的0day挖掘过程

举报
亿人安全 发表于 2023/05/15 13:31:26 2023/05/15
【摘要】 前话:可以回看前文《java代码审计新-从0到无》,这里就不再诉述。第一:看历史漏洞泛微前台注入/js/hrm/getdata.jsp注入点前台注入https://www.cnblogs.com/0day-li/p/14637680.html,关键点java全局搜索“request.getParameter(”并且java类里面必须存在“executeSql”。第二:流Stream搜索文件上...

前话:

可以回看前文《java代码审计新-0到无》,这里就不再诉述。

第一:看历史漏洞

泛微前台注入/js/hrm/getdata.jsp注入点前台注入

https://www.cnblogs.com/0day-li/p/14637680.html,关键点java全局搜索“request.getParameter(”并且java类里面必须存在“executeSql”。
第二:流Stream
搜索文件上传的关键类或者方法,这里我直接搜索流(Stream),全局搜索new BufferedInputStream(,idea只能显示一部分可以利用sublime_text进行搜索,我就用后者搜索可以显示多点,不过这里不懂怎么指定后缀搜索,搜索出285处133个文件,主要看java类。

这里跟进到这个文件(类),可以用idea看会好看一点,也比较看得懂。

思路:
1:获取/mobilemode/skin的文件夹目录
2:file文件上传参数赋值给i,默认为0
3:判断sql查询imagefile的filerealpath,isaesencrypt,aescode返回是否有值
4:将sql查询到的filerealpath值赋值到str3
5:通过file实例获取str3赋值到file2
6:通过file实例获取/mobilemode/skin和当前时间+1L创建新的实例赋值到file3,不存在文件夹就创建(随机文件夹)
7:file2和file3的路径加载到upzip方法,并创建压缩文件实例进行解压
8:创建BufferedOutputStream和BufferedInputStream,BufferedOutputStream实例将file3读取并设置根目录,而BufferedInputStream实例将通过zipfile对象获取流
9:以1024字节读取BufferedInputStream并以1024字节写入BufferedOutputStream的流里,也就是解压的文件,并刷新。
10:回到_import方法,判断file3下的_.xml、.css文件和images文件夹是否存在
11:将file4的值(xml文件)加载到readxml方法进行读取,检查是否有id、name、previewImg、isEnabled、order、subCompanyId的属性并利用三元表达式进行判断,并返回skin。(建议都不为空)
12:判断返回值是否为空并且id属性不能为空,后面的就不关心了

调用链:
classbean/com/weaver/formmodel/mobile/skin/SkinAction.java(怎么搜索的?全局搜索)execute方法判断action等于import就加载_import方法,
并且将httpServletRequest对象加载进去,而这个getAction怎么来的?他这个方法是继承了extends MobileAction并通过http请求获取action参数,然后进行全局jsp文件搜索SkinAction,发现通过了jionActionUrl方法调用,在第2行包含了<%@ include file="/mobilemode/init.jsp"%>,根据里方法构造出路径。
 


路径:
/mobilemode/Action.jsp?invoker=com.weaver.formmodel.mobile.skin.SkinAction&action=import

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。