若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这篇具有很好参考价值的文章主要介绍了若依 4.7.6 版本 任意文件下载漏洞(审计复现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考链接

https://mp.weixin.qq.com/s/IrqLp2Z3c941NiN0fFcDMA

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这是一个最新版漏洞
若依 4.7.6 版本 任意文件下载漏洞(审计复现)

先说审计后结论,要实现 任意文件下载 漏洞,需要执行3次请求(Tips:需要先登录RouYi)

1、新增计划任务

2、执行新增的计划任务

3、访问下载文件接口

参考文章里给出 POC 1 和 POC 2(没有给出内部实现关键信息,尝试代码审计)

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

本地环境搭建

JDK 8u202

MySQL 5.5.29

RuoYi 4.7.6

首先去官网下载最新版本

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

选择最新版本

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

解压并部署,只需配置好mysql数据库即可

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

导入sql数据

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

springboot启动!

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

看一下登录密码,先去登录界面

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

默认账户密码已经填写好了,输入验证码即可登录

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

代码审计

根据参考文章,poc是与定时任务有关,先找到定时任务功能

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

尝试一下默认计划任务,点击编辑,查看该功能的作用

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

发现计划任务可以调用bean或以包全称调用方法

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

执行一次试试

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

发现终端有输出

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

找到调用 ryTask.ryParams('ry') 的 bean

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

所以计划任务是可以直接调用bean并执行对应的方法的,那返回看公众号内发的请求,发现跟换指定的bean

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

去查看一下指定 ruoYiConfig 的 bean 中 setProfile 方法的作用

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

发现修改的是当前类属性

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

是一个上传路径

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

那一般情况下,上传路径都是在配置文件中提前配置好的,找到配置文件,发现默认是 D 盘的某目录下

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

回到计划任务页面,添加一个新任务

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

填写好对应参数,修改成我们要下载的文件地址,cron表示式按照原有的测试计划任务模板填写即可

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

提交,追踪请求,发现提交到 /monitor/job/add 路径下

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

追踪请求链

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

发现有很多过滤

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

最重要的是最后的黑白名单过滤,打断点

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

进入第一个黑名单判断

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这里的 JOB_ERROR_STR 是黑名单列表

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

跟进到 containsAnyIgnoreCase 方法,发现只是对字符串进行黑名单判断,未作修改

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

继续跟进到下一个白名单判断

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

方法里面首先将传入的值进行了拆分,拆分后的值准备通过 getBean 的方式转换为 bean

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这里成获取到对象,将转换为bean的对象再进行白名单检测

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

跟进 containsAuyIgnoreCase 方法,这里是将对象包名传了进来,用来判断调用的是不是顶级包下的对象

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这里成功绕过,返回 true 绕过判断,进入到 service 层

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

发现只是将请求保存到了数据库

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

回到 计划任务页面,发现新增 Test 计划任务 成功

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

之前正常流程是需要执行一次计划任务,就会调用对应bean的方法,这里执行一次 Test 计划任务

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

发现请求到 /monitor/job/run 路径下若依 4.7.6 版本 任意文件下载漏洞(审计复现)

找到该路径

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

并打上断点,跟进到服务层

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

进入到服务层,首先通过ID取出之前存入的对象

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

跳到下一个断点,发现这里实际执行的是 StdScheduler 类的 triggerJob 方法

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

找到这个方法,发现是第三方包 quaryz 2.3.2 版本

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

去 google 查找到一下这个第三方包的文档,看实现的是什么功能,找到官方文档

https://javadoc.io/doc/org.quartz-scheduler/quartz/latest/index.html

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

就是以代理的方式去执行类的方法

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

执行成功,这里在完成最后一步操作,根据公众号发送的最后一个包,去请求文件

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

尝试访问,下载成功(这里这个文件实际存放在 C://Users/Test01/Desktop/target.txt ,之前由于我的环境没有E盘,所以前面的计划任务传参都要改成C盘,重新编辑计划任务后再执行一次即可,然后再下载)

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

但为什么这里要传 info.xml:.zip 呢,跟进到请求地址 /common/download/resource

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这里有过滤,打上断点,进入一个判断

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

跟进 checkAllowDownload 方法,这里进行 .. 过滤,还进行了后缀名过滤

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

查看 DEFAULT_ALLOWED_EXTENSION 后缀名白名单有哪些

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

这里的匹配规则是取最后一个 . 的后缀,所以取得 zip 去比较,在范围内,绕过白名单

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

回到最上层方法,这里通过 RouYiConfig.getProfile() 获取我们之前计划任务修改的地址,也就是 C盘的指定地址

然后在通过 StringUtils.substringAfter() 拼接 路径 和 文件名

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

跟进 substringAfter 方法,这里做了文件名判断,判断是否包含 / profile 路径名称,找不到对应路径所以返回 -1,所以返回为空

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

所以和空拼接后根据路径没有变化

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

然后以最后一个 / 符号拆分出来文件名字

若依 4.7.6 版本 任意文件下载漏洞(审计复现)然后跟进 writeBytes 方法,其实该方法就是去请求 downloadPath 中对应的文件路径,并写入到 reponse 中并返回给用户

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

进入 write Bytes 方法,请求文件,并以 Stream 流的方式写入到 os 中,os 就是 reponse 用于返回给前端用户。

 

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

所以这里的请求只需要绕过白名单即可,请求文件名即可以是 xxx.html、yyy.ppt、zzz.mp4,便可绕过白名单判断,并绕过文件名的路径判断,返回为空后去拼接根目录,便完成任意文件下载漏洞。

更改路径名称一样也能访问该文件

若依 4.7.6 版本 任意文件下载漏洞(审计复现)

芜湖完工!


总结:这种漏洞不可能通过黑盒测试出来,只能通过白盒测试,并且需要对站点代码和组件有一定的了解,才能通过代码审计的方式挖掘此洞。文章来源地址https://www.toymoban.com/news/detail-410474.html

到了这里,关于若依 4.7.6 版本 任意文件下载漏洞(审计复现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 致远OA SQL&任意文件下载漏洞(含批量检测POC)

    致远OA A6 test.jsp 存在sql注入漏洞,并可以通过注入写入webshell文件控制服务器 漏洞影响 致远OA A6 网络测绘 app=“致远OA6” 批量检测POC 当然扫描结果可能不是特别准确,可能因素是网络测绘工具根据语法收集的ip有出入,或者有waf检测到恶意流量跳转到防护页面等,状态码也是

    2024年02月07日
    浏览(63)
  • 【漏洞复现-通达OA】通达OA get_file.php 任意文件下载漏洞

    通达OA get_file.php文件存在任意文件下载漏洞,攻击者通过漏洞可以读取服务器敏感文件。 ● 通达OA2011 ● hunter app.name=\\\"通达 OA\\\" ● 特征

    2024年02月21日
    浏览(59)
  • 惠尔顿安全审计系统任意文件读取漏洞

    免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 Ⅰ、漏洞描述

    2024年02月22日
    浏览(37)
  • 任意文件下载(读取)

    目录 漏洞简介 产生原因 漏洞利用 常见敏感文件路径 Windows系统 Linux系统 Web应用 PHP ASP  ASPX JSP 漏洞利用方法 注意事项 漏洞测试 一些网站由于业务需求,往往需要提供文件查看或下载功能。一般来说在文件下载或查看功能处,当文件名参数可控,且系统未对参数进行严格过

    2023年04月21日
    浏览(40)
  • 惠尔顿 网络安全审计系统 任意文件读取漏洞复现

    惠尔顿网络安全审计产品致力于满足军工四证、军工保密室建设、国家涉密网络建设的审计要求,规范网络行为,满足国家的规范;支持1-3线路的internet接入、1-3对网桥;含强大的上网行为管理、审计、监控模块;用户访问功能,内容过滤功能;流量控制功能、带宽管理功能

    2024年02月22日
    浏览(47)
  • 记一次任意文件下载到Getshell

    任意文件下载(Arbitrary File Download)是一种常见的 Web 攻击技术,用于窃取服务器上任意文件的内容。攻击者利用应用程序中的漏洞,通过构造恶意请求,使应用程序将任意文件(如配置文件、敏感数据等)发送给攻击者。一旦攻击者成功利用这种漏洞,就可以从服务器上获取

    2024年02月08日
    浏览(44)
  • 解决从github下载资源慢的问题,加速下载任意文件

    如果你是一个开发者,你一定经常需要从github上下载一些开发软件或工具,但是你是否遇到过这样的问题:下载速度慢得让人抓狂,甚至有时候还会下载失败?你是否想过有没有什么办法可以让github下载变得快速而稳定呢? 今天,我就要告诉你一个简单而有效的方法,让你从

    2024年02月13日
    浏览(44)
  • 文件下载漏洞

    任意漏洞下载是因为一般的网站提供了下载文件功能,但是在获得文件到下载文件的时候并没有进行一些过滤,这就导致了漏洞的产生。 网站下载地址类似 https://www.test.com/upload/xiazai.php?file=/wenjian/123.doc格式网站有可能存在,因为文件名是作为一个参数传入的。如果下载地址

    2024年02月09日
    浏览(31)
  • 20-文件下载及读取漏洞

    1.文件被解析,则是文件解析漏洞 2.显示源代码,则是文件读取漏洞 3.提示文件下载,则是文件下载漏洞 利用条件 : (1)存在读文件的函数和操作 (2)读取文件的路径用户可控且未校验或校验不严 (3)输出了文件内容 危害 : (1)下载服务器任意文件,如脚本代码,服

    2024年02月05日
    浏览(31)
  • Redis各版本配置文件下载地址

    Redis配置文件下载地址

    2024年01月24日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包