记一次畅捷通任意文件读取漏洞复现发现的问题

简介: 记一次畅捷通任意文件读取漏洞复现发现的问题

前言


在一次复现畅捷通任意文件读取漏洞的过程中,发觉这个“任意文件读取”漏洞其实暗藏了大坑。通过网上检索,一大堆的文章和工具都是copy只提到文件读取。


复现过程


1.首先就是用网上 公开的的poc试一下

/tplus/SM/DTS/DownloadProxy.aspx?preload=1&Path=../../Web.Config

ac6227d534d844021b03dfc7085818c4_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

成功读取到了文件内容

095908982d3a40dbf726006ad843da4e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

2.然后想通过读取源代码,来分析看看漏洞的成因。通过读aspx文件读取到的文件内容如下

698f0baa32c3ce560ae2508321807e09_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

3.通过网上查阅资料了解到,畅捷通系统是asp.net开发的,代码是采用了预编译。

简单说,就是提前将源码aspx文件转换成dll文件,这些dll文件保存在bin/ 文件夹下,当程序运行时,首先会加载bin目录下的程序。

当访问aspx文件时,会被对应的.dll文件处理。代码逻辑也是存储在dll中,不论aspx文件是否存在,只要dll文件存在,特定路由的功能就能正常处理。

而文件对应路径为:abc.aspx -> /bin/abc.dll

4.进一步利用读源码读取文件,成功读取相应的dll文件

0e79a2d9729e4f6f48200d56e9eabbb5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5.然后再次请求,去读上传接口的文件,出了大问题了。竟然报错报。

错提示:文件找不到了

0573c2796c09db85de247ee8968c9bbf_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


分析源码


网上找到了畅捷通源码,直接反编译DownloadProxy.aspx对应的dll文件

a41f373b976442580d4648ff8125767c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过源码看出代码逻辑很简单,首先是获取了Path参数,赋给变量text。

然后也没有经过任何过滤,到了最下边WriteFile()函数(向浏览器输出文件),就发生了任意文件读取。

但紧接着下一行就是  File.Delete()  ,通过字面意思也知道这是个文件删除函数。

由于Path参数可控,就能读取任何文件,但同样也会删除任何文件。

这明明就是一个 任意文件读取+删除 漏洞!


总结


对于别人的漏洞还是要自己分析复现下,copy的东西是方便省力,但效果不可控。像任意文件删除还是很危险的,在生产环境打这种漏洞,系统崩了可就麻烦了。


相关文章
|
存储 程序员 C语言
C语言变量命名规则
C语言变量命名规则
1019 0
|
Java Windows
【问题总结】【JAVA开发】(一)Intellj JVM启动报错
一)启动前提,最新社区版intellj 默认支持1.9 以上。将默认jdk20 替换成jdk8 出现以下问题 Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Unrecognized option: --add-opens
1152 0
|
编解码 搜索推荐 算法
Celero:一个 C++ 的基准测试管理库
对代码进行持续性开发和有意义的基准测试是一个复杂的任务。虽然测试工具本身(Intel® VTune™ Amplifier, SmartBear AQTime, Valgrind)与应用程序没有相关性,但是它们在某些时候对一些小团队,或者说是一些繁琐的工作来说还是很重要的。这个Celero项目,主要是要建仓一个小型的程序库,使它可以在加入 C++ 工程和对代码进行基准测试时能够非常容易地去重建,分享,并允许在独立的运行进程、开发者或者是工程间进行比较。Celero 使用一个与 GoogleTest 相似的构架,使得他的 API 很容易地使用,并融入一个工程中。当你在开发过程中进行自动测试时,自动
785 0
Celero:一个 C++ 的基准测试管理库
|
数据采集 安全 API
安全工具的无限联动——真香系列来啦~
安全工具的无限联动——真香系列来啦~
1112 0
|
网络协议 API 数据格式
HTTP 和 TCP 协议的主要区别
【10月更文挑战第25天】HTTP 和 TCP 在网络通信中扮演着不同的角色,各自具有独特的功能和特点,它们相互配合,共同为实现网络应用的各种需求提供了基础支持。
|
人工智能 自然语言处理 安全
国内如何使用claude?人工智能claude国内使用方法来了!
Claude AI 是由 Anthropic 公司开发的一款新一代 AI 助手,旨在成为更安全、更友好、更可靠的 AI 系统。它基于 Anthropic 对 AI 安全性的深入研究,并采用 “Constitutional AI” (宪法式 AI) 的训练方法,
|
API Docker 容器
如何免费获取 ChatGPT API Key?
上篇文章介绍了NextChat项目,只需配置ChatGPT API Key即可拥有私人ChatGPT网页应用。本文继续介绍免费获取API Key的来源——GPT_API_free,一个拥有13.6K Star的Github开源项目。需用Github账号绑定领取Key,支持gpt-3.5-turbo、embedding、gpt-4,但gpt-4每天限3次调用。GPT_API_free也提供付费版API,以支持项目持续运营。
7593 0
如何免费获取 ChatGPT API Key?
|
数据安全/隐私保护
域控制器升级的先决条件验证失败怎么办?
域控制器升级的先决条件验证失败怎么办?(内含步骤)
798 9
|
JSON 算法 API
【python】python指南(十三):FastAPI鉴权Authorization方法
【python】python指南(十三):FastAPI鉴权Authorization方法
945 0
|
Cloud Native Java Nacos
Nacos 1.4.1核心功能组件及使用入门
以上步骤提供了 Nacos 1.4.1 的基本使用概览,具体的配置和使用可能根据你的环境和需求有所不同。
539 6