• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)


JieGe

Recommended Posts

  • Members
IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

复现的过程中 五种失败原因

第一种、端口和域名绑定问题

实际环境中,iis绑定的域名和端口可能不是默认的,比如:

  • 默认绑定
IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog
  • 非默认绑定
IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

If头信息中的两个url是要求和站点绑定相匹配的,否则只能收到一个502。这里所说的相匹配指的是if头中url的port必须与站点绑定的端口相匹配,而if头中的域名只需要和host头保持一致就好。

失败原因 POC中if头里面的域名及端口与绑定不一致时。

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

上图是端口不匹配的情况,下图是域名不匹配的情况

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog
  • 成功情况 :POC中if头里面的域名及端口与绑定一致时。(端口与实际端口一致,host的值与if中的域名一致)
IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

物理路径

根据CVE-2017-7269 IIS6.0远程代码执行漏洞分析及Exploit中提到:POC中If头中的第一个URL会被解析成物理路径,默认情况下是C:\Inetpub\wwwroot\,在覆盖缓冲区的时候填充的字符长度要根据物理路径的长度来决定,且物理路径长度 + 填充字符的个数 = 114。POC中的是按照默认的物理路径(19位)来计算填充字符的长度的,当物理路径的长度不为19位的时候就会收到一个500。(这里物理路径长度计算方法要加上最后的\

物理路径长度<19位

  • 失败情况 :物理路径长度小于19位。
IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog
  • 成功情况 :物理路径长度小于19位,且增加POC中padding的长度。

物理路径为c:\asp\其长度为7,因此POC需要增加12个a。

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

物理路径长度>19位

ROP和stackpivot前面的padding实际上为UTF8编码的字符,每三个字节解码后变为两个字节的UTF16字符,在保证Exp不出错的情况下,有0x58个字符是没用的。所以可以将前0x108个字节删除,换成0x58个a或b。

所以大概的POC是这样的:

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

 物理路径为C:\Inetpub\wwwroot\test\长度为24位,因此需要padding 90位,其中红框中ab的个数为90。

爆破物理路径长度

这个漏洞利用的成功与否,也取决于是否知道物理路径的长度。物理路径的长度可以根据上面已知的信息,来进行爆破:

物理路径长度 + 填充字符的个数 = 114

长度不匹配时返回500。

因为盘符占了3位字符(c:\),所以要爆破物理路径长度,可以将padding增加到111位,并依次减少,如果长度不匹配就返回500。判断长度的工具附在最后面。

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

多次执行错误ShellCode

 多次执行错误的shellcode会覆盖很多不该覆盖的代码,从而导致正确的shellcode也执行也返回500,提示信息为:参数不正确,也可能什么都不返回。该问题在巅峰极客比赛中也遇到过,我们控制的靶机什么都没动一会儿就全站500了。

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

EXP执行成功后

 当exp执行成功一段时间之后(大概十分钟到二十分钟左右,其间无论有无访问,被windbg挂起的时间不算),再对这个站点执行exp永远不会成功,同时返回400。

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

 遇到该问题的解决方案:

  • 1.找旁站,因为每个池都是独立的w3wp进程,换一个可能在其他池的进行尝试
  • 2.等待w3wp重启

Win03 x64

Win03 x64并不多见,此类型的不能直接用网上的POC进行攻击。

总结

IIS6_WebDAV远程代码执行漏洞(CVE-2017-7269)-Ti0s's Blog

附带爆破路径长度检测模式、指定路径长度检测模式脚本

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now