查看原文
其他

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

雷石安全实验室 雷石安全实验室 2023-03-13

前言

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


复现过程

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

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

成功读取到了文件内容

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

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

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

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

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

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

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

错提示:文件找不到了

分析源码

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

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

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

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

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

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


总结

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


往期回顾

01
src漏洞挖掘浅谈
02

网络安全运营工作浅谈(一)



03

关于OPENVPN流量传输的测试及应用思考


雷石安全实验室

商务咨询:

0571-87031601

商务邮箱:

mtn@motanni.com


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存