1) 利用sql server渗透
对于aspx站点一般后台都是sql server数据库,因此利用该漏洞的最简单的方法是直接获得数据库密码,直接登录数据库,利用sql server完成渗透。
http://www.test.org/DownLoadFileLow.aspx?FileName=Accompanying_Persons_Tour_Program.pdf
首先确定网站根目录下载web.config文件,aspx站点用根目录下的web.config文件保存配置信息
尝试确定根目录:
http://www.test.org/DownLoadFileLow.aspx?FileName=../web.config
错误信息:
该错误信息,确定网站的绝对路径(在后面的差异备份用到)
http://www.test.org/DownLoadFileLow.aspx?FileName=../../web.config
打开配置文件找到连接数据库项:
判断sql server 是否可以远程连接
可以远程连接
使用sql server连接服务器
登录成功:
已经获得网站的绝对路径,直接使用差异备份获得shell,即可.
使用菜刀 连接一句话
连接成功
完成渗透。
2) 下载dll文件
Aspx站点一般都会对后台源代码进行编译封装,保存到dll文件中,放到网站根目录的Bin文件夹下,因此,可以利用下载点下载dll文件,获得网站源代码。
一个下载点:
www.test.com.cn/DownLoad.aspx?fileName=%C4%EA%B6%C8%C9%F3%BA%CB%B1%ED.doc
两次回溯确定网站的根目录
发现数据库连接失败,不能使用上述方法,因此,尝试通过下载源码,渗透。
首先下载DownLoad.aspx文件,主要是想查看这个aspx站点是否将源代码放到dll文件,这样的话就可以直接下载dll获得整站(不准确)的源代码。
下载后打开: http://www.test.com.cn/DownLoad.aspx?fileName=../../DownLoad.aspx
在此尝试下载对应的DownLoad.aspx.cs文件
http://www.test.com.cn/DownLoad.aspx?fileName=../../DownLoad.aspx.cs
失败,说明本站点的源代码放到dll文件中,并且DownLoad.aspx对应的源代码是xkcms.webForm.DownLoad,现在主要来猜解一下dll文件名,由这个命令空间
xkcms.webForm.DownLoad可以知道DownLoad不是,只能一个一个猜测。
http://www.test.com.cn/DownLoad.aspx?fileName=../../bin/xkcms.dll
http://www.test.com.cn/DownLoad.aspx?fileName=../../bin/webForm.dll
猜测成功,dll是被编译过,直接使用.net reflector工具打开编译后的dll文件。
获得网站源代码如下:
首先看一下,download.aspx文件对应实现代码:
可以看出,没有对fileName参数做任何过滤直接下载请求文件,导致任意文件下载漏洞。
当然最关心的还是网站是否存在其他漏洞,最喜欢的当然是上传漏洞。
找到网站的上传位置
该上传页面没有对上传文件进行过滤导致可以直接上传,测试一下:
访问上传页面:
选择aspx后缀文件
然后到保存上传文件的路径下查看是否上传成功,
可见上传文件成功,直接将上传文件内容,改成aspx代码,即可获得webshell.
当然这是一个特例,注意安全的网站都不会这么差的,但是一般拿到源码总会找到漏洞,只要有时间…就不在举例子了.