asp.net虚拟主机的路径泄露问题

来源:互联网 发布:家庭网络 编辑:程序博客网 时间:2024/06/05 06:20

       学习asp.net的时候发现,asp.net会把站点的asp.net的代码作临时编译(我是这样理解的,可能这样的说法不是很对)放在WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files (如果使用的是2.0的frameworks,那么就是WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files了),由此引发一个问题:如果该主机是虚拟主机,则虚拟主机上的所有使用了asp.net的站点的路径信息都会被泄露!

       首先用VS2005随便建立一个website,写个hello world之类的aspx文件,执行一下,然后到刚才所说的目录下,找到website1(假设你新建的站点为website1),再进两层目录,可以看到后缀名为.cs或.xml的文件,用记事本打开,可以发现编译的信息:

#pragma checksum "E:/Liswa/WebSites/WebSite1/App_Code/db_class.cs" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "A233AE738DF284277D8E2E285EEE4D93"

这时就已经泄露了该文件来自E:/liswa/website1了.

   对于纯asp的虚拟主机来说,泄露路径可能造成的问题不大,因为各个站点可以用独立的用户启动,所以各个站点之间是不能互访的,但是asp.net的主机由于站点目录都要有network services的权限,而asp.net程序都是使用这个用户来执行,因此各站点间不能做到互相隔绝.(我配置asp.net虚拟主机时的对于asp.net的权限一直比较困惑,不知道这些复杂的关系应该怎么样才能做到最好,不过根据网上一些文章的意思,asp.net虚拟主机大都存在这样的问题,无法进行站点间的有效隔绝).因为只要知道另一站点的真实路径,asp.net木马就可以访问到另一站点.

     在实际的测试中,发现这个问题的确存在,在虚拟主机上进行我们文章开始时提到的目录,可以看到几乎所有站点都存在一个单独的目录.(还有一些没有单独的目录,但是在root目录下顺次跟下去,一样可以找到该相对站点的目录.对于一个入侵者,可能的做法是,得到某一站点的asp.net的webshell后,如果支持asp,那么上传个海洋木马,利用海洋木马的搜索文件功能,搜索目标站点的文件名.譬如目标站点上存在一个叫做liswa.aspx的文件,那么就可以搜索liswa,从而找到该文件对应的编译后文件所在路径(当然你也可以逐个目录地翻,但可以告诉你,如果虚拟主机上站点较多,那么你需要捡垃圾人员一样的细心才可能找到对应目录),然后随便找到一个后缀名为.cs或.xml的,打开它,就可以得到目标站点的真实路径了.再在webshell中输入得到的真实路径,那么目标站点的权限就得到了.

        由于对于asp.net的权限需求还不是很明了,暂时想不到有效的解决办法,只能祈求上帝减少虚拟主机上站点的漏洞了.

原创粉丝点击