无聊日一个站的时候发现shell传上去但是403,但是运气爆棚,大荣神告诉我这个这站有iis put 写权限,果断用WVS扫一个下,扫出好多目录都有写权限。
先科普一下:
目前大家所见到的IIS写权限利用,其实说白了是菜鸟管理员对IIS的错误配置问题(2个错误配置造成):
1.WEB服务器扩展里设置WebDAV为允许;
2.网站权限配置里开启了写入权限。
至于WebDAV,看看百度百科的介绍:
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
很多微软自带的客户端工具可以发布与管理Web上的资源,就是通过WebDAV了;但是,正常的Web网站一般情况下是用不到的,因此,一般情况下根本没有必要允许WebDAV。
至于写权限,大家都明白,写权限就是允许PUT,与网站自身运行的权限无丝毫联系,如果开启了,那就是没有一点安全意识了。
这个问题本质上是一个配置错误。已经出来很多年了。现在不太常见了。
- web服务扩展的webDAV扩展要开启。
- 主目录里的权限要给写入权限,和脚本资源访问权限(没有脚本访问权限,可以利用iis解析漏洞)。 3.匿名用户要给写权限和修改权限。
图示如下:
ps://raw.github.com/litsand/litsand.github.com/master/_posts/pic/webdav.png" />
测试过程
使用桂林老兵的写权限利用工具和winsock expert抓包分析。
如果服务器没有开webdav扩展,put请求返回501 not implemented ,如果开了webdav,目录没有给写入权限,返回403 forbidden,如果目录有写入权限,用户没有给写权限,返回 401 unauthorized,如果条件都满足,返回201 created,表明文件成功上传。如果文件已经存在,则更新文件,返回 200.
利用思路
- 上传txt,move改名为asp或者利用iis的解析漏洞。
一次完整攻击的日志记录
2013-06-20 03:02:30 W3SVC1 192.168.100.22 PUT /yanshi.txt - 80 - 192.168.100.33 - 201 0 0 2013-06-20 03:02:49 W3SVC1 192.168.100.22 MOVE /yanshi.txt - 80 - 192.168.100.33 - 201 0 0 2013-06-20 03:03:23 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:03:23 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:03:31 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:03:33 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:03:58 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:03:59 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:04:00 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:04:00 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0 2013-06-20 03:04:03 W3SVC1 192.168.100.22 POST /yanshi.asp - 80 - 192.168.100.33 Mozilla/5.0+(Windows;+Windows+NT+5.1;+en-US)+Firefox/3.5.0 200 0 0
先通过put方法上传文件,然后使用move方法修改文件名。之后post数据跟webshell交互。检测到put跟move方法,就可以判断为上传木马的尝试,是否成功需要看服务器返回的状态码。
207 Multi-Status
关于move操作的时候返回207 的问题,参考资料里有提到。解决方案就是利用iis的解析漏洞。经过一番测试发现,之所以会出现这个问题,是由于服务器的配置问题。如果目录权限没有给脚本资源访问的权限,那么会返回207 同时body里面会说明是 403 forbidden,可以通过iis的解析漏洞解决。还有一种情况是匿名用户没有文件修改权限,这是body里说明是401 unauthorized,这种情况就没有办法了。