再分析“隐藏虚拟目录”[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 cnbohu 的 blog

作者:阿酷   来自:http://www.coolersky.com/

看了一下冰狐的"隐藏虚拟目录曝光记",觉得还不错,就顺手向下分析了一下,全当狗尾续貂了。
    一、重述一下隐藏的步骤:
    1、在指定网站http://127.0.0.1的实际目录(如"f:\web\")下创建一个目录,如"coolersky";
    2、打开iis管理器,在coolersky目录下创建虚拟目录,如"cool",指向位置为f:\cool\;
    3、删除创建的coolersky目录;
    这样,在iis管理器中无法看到虚拟目录cool,却可以通过http://127.0.0.1/coolersky/cool/来访问虚拟目录,从而达到隐藏网站的目的。这应该算是ms的一个bug吧。
    二、win2k下的分析
    对于这个问题,冰狐给出的解决办法是使用pws工具来查看,但是个人认为并没有实际的意义。
    为什么这么说呢?我们知道:pws可以在win95/98下搭建web服务,在win2k-pro版中,延续了pws的部分内容,所以在c:\winnt\system32\inetsrv\下有pws.exe文件,可以比较方便的管理虚拟站点,当然我们隐藏在默认站下的虚拟目录也逃不过pws的管理。
    但是有几个人用win2k-pro版做自己的web服务器呢?!因为pro版没有办法创建新站点,而只能创建虚拟目录。而在win2k-ser,win2k-adv下,可以创建新站点,系统在c:\winnt\system32\inetsrv\下也没有自带pws.exe,即使从pro下拷贝一份,也只能管理默认站点的虚拟目录,对其他新建站点还是无能为力。
    为了方便分析,写一个监控目录和文件的程序,用来监控c:\winnt\system32\inetsrv\目录,一番操作后,监控窗口居然没有任何显示,而目录中也仅仅是metabase.bin一个文件被修改。但在重起iis或者使用pws编辑的时候,窗口会显示:

added    - metabase.bin.tmp
modified - metabase.bin.tmp
modified - metabase.bin.tmp
rename   - metabase.bin metabase.bin.bak
modified - metabase.bin.bak
rename   - metabase.bin.tmp metabase.bin

added    - metabase.bin.tmp
modified - metabase.bin.tmp
rename   - metabase.bin metabase.bin.bak
modified - metabase.bin.bak
removed  - metabase.bin.bak

    基本能说明操作的过程,而用ue打开metabase.bin文件,发现是用二进制写入的,搜索"c o o l e r s k y",倒是能看到

/ w 3 s v c / 3 / r o o t / c o o l e r s k y / c o o l /   

    但是这毕竟是我知道的情况下操作的,而管理员也不可能去这样去做。
    三、win2003下的分析
    在win2003下也存在这个问题,也没有了pws.exe,使用监控目录的程序,只监控c:\windows\system32\inetsrv\。多次监控后发现会出现如下内容(可能跟操作有关,不是每一次都有所有内容):

added    - metabase.xml.tmp
modified - metabase.xml.tmp
added    - history\metabase_0000000036_0000000000.xml
modified - history\metabase_0000000036_0000000000.xml
added    - history\mbschema_0000000036_0000000000.xml
modified - history\mbschema_0000000036_0000000000.xml
removed  - history\metabase_0000000026_0000000000.xml
removed  - metabase.xml.tmp
modified - history

    根据监控情况会发现,每打开一次iis,在c:\windows\system32\inetsrv\history下都会创建两个新文件mbschema_0000000036_0000000000.xml与metabase_0000000036_0000000000.xml,其内容分别是c:\windows\system32\inetsrv\mbschema.xml和c:\windows\system32\inetsrv\metabase.xml每打开一次数值增一;当超过10个时,会自动删除最早的。
    个人分析:在打开iis管理器的时候,创建metabase.xml.tmp,我们修改的部分会临时存放在这个文件中,接着系统创建metabase_0000000036_0000000000.xml文件,内容原始文档metabase.xml的内容;接着用metabase.xml.tmp文件的内容修改或覆盖metabase_0000000036_0000000000.xml,当然这个过程中系统还会重新生成changenumber、historymajorversionnumber、sessionkey、adminacl等值用以证实文件的合法性。其中changenumber为递增,historymajorversionnumber为当前的36,sessionkey为320字节,adminacl为496字节。在关闭iis管理器后,使用metabase_0000000036_0000000000.xml文件覆盖原始文档metabase.xml。
    打开metabase.xml文件:

<iisconfigobject    location ="/lm/w3svc/1724929141/root/coolersky">
</iisconfigobject>
<iiswebvirtualdir    
    location ="/lm/w3svc/1724929141/root/coolersky/cool"
    accessflags="accessread | accessscript"
    appfriendlyname="cool"
    appisolated="2"
    approot="/lm/w3svc/1724929141/root/coolersky/cool"
    dirbrowseflags="dirbrowseshowdate | dirbrowseshowtime | dirbrowseshowsize |
dirbrowseshowextension | dirbrowseshowlongdate | enabledefaultdoc"
    path="f:\cool"
>
</iiswebvirtualdir>

本文关键:再分析“隐藏虚拟目录”
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top