今天和大家分享一下aspx网站的代码审计,漏洞类型为:未授权访问和任意文件下载。
本文作者:i春秋签约作家——非主流
今天看的源码文件就不共享给大家了,本文只作学习只用。
还是先看我们的文件夹目录和dll文件的目录:
这是网站根目录
正常打开,是会跳转到/2052/aspx/userlogin.aspx
Dll使用ILSpy反编译后,目录如下:
在代码审计中,类似未授权访问的漏洞是最好验证的,像一般aspx网站开发时,都会将dll中的类和页面与显示的aspx文件的名称命名一样说简单点,就是比如这里的jtgcweb.2052.aspx下的userlogin,就对应着文件夹2052/aspx/userlogin.aspx文件
话不多说,我们直接开始吧。
我们直接定位到存在未授权访问和任意文件下载漏洞的文件:/2052/Aspx/gw/download.aspx
文件说的很清楚,源码在这里
_2052_Aspx_Message_Download
通过源码,我们其实已经可以发现,好像并没有什么验证的脚本或是函数嘛。我们直接访问看看。既不报错,也不提示什么,单纯的一个无标题页,嗯,看来这个文件是可以直接在没有登陆的情况下请求到的。
接着分析上面的源码截图,学过asp的都知道,Request.QueryString()函数意指程序通过http的get方法进行参数传递,所以,这里我们便需要传递两个参数(分别是name和oid)进去,才可以完成这个if判断。
所以,我们暂时构造请求格式如下:
http://xxxxx/2052/Aspx/gw/download.aspx?name=1&oid=1
base.Response.AppendHeader(“Content-Disposition”, ”attachment; filename=” + base.Server.UrlPathEncode(text)); //这段代码的意思是指,从download.aspx文件所在的目录,开始下载文件,文件的名字从哪来?从text来,text的值又从哪来?从我们get请求中的name参数的值来。所以,我们试试get请求这个呢?
web.config文件在网站的根目录,download.aspx文件在2052/aspx/gw/目录下。
http://xxxxxxx/2052/Aspx/gw/download.aspx?name=../../../web.config&oid=/
这里为什么会报错呢?很奇怪啊,我们再分析分析源码看看。
哦,原来是这样,我们通过最后一句被传输的filename的值是通过str2和text的值拼接的。
Text的值,我们搞定了,但是str2的值呢,是通过str来决定的,也就是我们的oid参数,所以当我们将oid的值改为../的时候,str2指向的目录才是网站的根目录,那么我们现在再来试试?
http://xxxxxxx/2052/Aspx/gw/download.aspx?name=../../../web.config&oid=../
成功下载,我们打开看看呗?
很nice,所以,今天的任意文件下载漏洞和未授权访问漏洞,你学到了吗?