解决读取IIS服务器绝对路径错误的方法
一段时间再看了《划时代脚本攻击》后感觉大受启发,从此对存储扩展产生了浓厚的兴趣。但是其中读取服务器web绝对路径一点我始终测试没有成功,只有在默认安装的时候才会正确读取。
也就是说注册表里面存储的只是在安装IIS时的web绝对路径,而如果用户对这个路径进行修改的话,注册表内的值仍然是不变的。因此即使你把木马按照臭要饭的那种方法上传上去也是没有办法找到并执行的。为了解决这个问题我找到了一个非常有效的方法,自然也是通过数据库的存储扩展完成的,但是这个存储扩展是xp_cmdshell,因此使用的时候要注意用户的权限和存储扩展是否存在的问题。通过我的测试发现,如果用户对web绝对路径进行修改的话再注册表内是找不到任何键值与之对应的。由于测试是在windows 2000advanced server中完成的,所以不敢保证2003中也是适用的。既然不能读取,那么我们就转换一种思路:自己定义一个虚拟目录,让他指向指定的目录就可以了。这样不久绕过了那个读取错误的问题了吗。具体做法如下首先执行SQL语句 exec master.dbo.xp_cmdshell ’cscript C:InetpubAdminScriptsmkwebdir.vbs -c localhost -w "1" -v "win","c:winnt"’ 这样就在默认的web服务器下面建立了一个虚拟目录win并且指向物理路径为C:winnt 但是这时自定义的这个虚拟目录还没有执行动态脚本的权限,为了能够正常的访问将要上传的木马文件,需要把这个权限附上,执行的SQL语句为 exec master.dbo.xp_cmdshell ’cscript C:InetpubAdminScripts/adsutil.vbs set w3svc/1/root/win/AccessExecute True’ 好了,现在你就可以使用备份数据库或者使用sp_makewebtask存储扩展的方法上传木马文件了。不过别忘了,使用完木马之后要把刚刚建立的虚拟目录删除了,要不然管理员发现就不好了。需要执行的SQL语句为 exec master.dbo.xp_cmdshell ’cscript C:InetpubAdminScripts/adsutil.vbs delete w3svc/1/root/win/’ 其它的操作就不属于本文的讨论范围了,如有需要请参见其他的相关文章。