什么是IIS?
IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
WebDAV (Web-based Distributed Authoring and Versioning) 是一种HTTP1.1的扩展协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。可以像在操作本地文件夹一样操作服务器上的文件夹,该扩展也存在缺陷,可以被恶意攻击者利用,直接上传恶意文件。
1.准备过程:
安装windows server 2003版本,准备iis写入工具,下载IIS6.0版本
2.复现过程:
我们首先在虚拟机中打开win server 2003 版本。
之后我们安装IIS6.0服务,进入网站配置界面
打开webDAV服务配置 Active Server pages(允许解析asp文件),提供文件写入权限。
我们尝试在物理机打开网站
说明服务已开启。
我们打开iis写入工具。尝试写入test.txt文件。
发现提示“您未被授予查看该页”。
后来发现未开启来宾用户足够的权限
我们新建一个asp一句话木马文件,先命名为shell.txt,写入网站根目录下。
然后使用iiswrite的mv功能。首先我们需开启网站主目录下的脚本资源访问功能
然后将根目录下的shell.txt修改为shell.asp
之后我们使用菜刀连接即可。
什么是短文件名?
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成对应的window 8.3短文件名。
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。
在Windows下查看对应的短文件名,可以使用命令 dir /x
攻击者使用通配符*和?发送一个请求到IIS,
当IIS接收到一个文件路径中包含“~”请求时,返回的HTTP状态码和错误信息不同。基于这个特点,可以根据HTTP的响应区分一个可用或者不可用的文件。访问构造的某个存在的短文件名,会返回404;访问构造的某个不存在的短文件名,会返回400(报错页面)。
我们在命令提示符使用 dir c:/x,即可看到我们创建的文件的短文件名。
可以看到网页回显404,说明网站根目录存在所猜解的文件名。
将数值数据改为1,1代表不创建短文件名格式。修改完成后,需要重启系统生效。
在网站下建立文件夹的名称中以.asp或.asa等作为后缀的文件夹,其目录内任何扩展名的文件都被IIS当作asp可执行文件去解析并执行.
举例:/xx.asp/xx.jpg为xx.asp目录下存在xx.jpg文件,但将会被IIS解析成asp文件去执行,与原文件的后缀无关.
我们在www下新建一个test.asp文件夹和test.jpg图像文件
在图像文件中写入任意字符。
我们直接访问图像文件,发现无法成功解析。
我们再将图片文件放入asp文件夹下重新尝试访问
发现网站将该文件解析成了asp文件进而成功执行。