IIS - Internet Information Services
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
실행 파일 확장자 테스트:
asp
aspx
config
php
302 응답을 받는 모든 IIS 서버에서 Host 헤더를 제거하고 HTTP/1.0을 사용해 볼 수 있으며, 응답 내의 Location 헤더가 내부 IP 주소를 가리킬 수 있습니다:
내부 IP를 공개하는 응답:
.config 파일을 업로드하고 이를 사용하여 코드를 실행할 수 있습니다. 이를 수행하는 한 가지 방법은 HTML 주석 안에 파일 끝에 코드를 추가하는 것입니다: 여기에서 예제 다운로드
이 취약점을 악용하는 방법과 기술에 대한 더 많은 정보는 여기에서 확인할 수 있습니다.
내가 만든 목록을 다운로드하세요:
다음 목록의 내용을 병합하여 생성되었습니다:
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에서 새로운 namespaces를 찾아 접근하고 web.config 파일을 얻어 새로운 namespaces와 assemblyIdentity를 찾을 수 있습니다. 또한, connectionstrings.config 및 global.asax 파일에는 흥미로운 정보가 포함될 수 있습니다.\
.Net MVC 애플리케이션에서 web.config 파일은 "assemblyIdentity" XML 태그를 통해 애플리케이션이 의존하는 각 이진 파일을 지정하는 중요한 역할을 합니다.
web.config 파일에 접근하는 예시는 아래와 같습니다:
이 요청은 다음과 같은 다양한 설정 및 종속성을 드러냅니다:
EntityFramework 버전
웹페이지, 클라이언트 검증 및 JavaScript에 대한 AppSettings
인증 및 런타임을 위한 System.web 구성
System.webServer 모듈 설정
Microsoft.Owin, Newtonsoft.Json, 및 System.Web.Mvc와 같은 여러 라이브러리에 대한 Runtime 어셈블리 바인딩
이 설정은 /bin/WebGrease.dll과 같은 특정 파일이 애플리케이션의 /bin 폴더 내에 위치하고 있음을 나타냅니다.
루트 디렉토리에서 발견된 파일, 예를 들어 /global.asax 및 민감한 비밀번호를 포함하는 /connectionstrings.config는 애플리케이션의 구성 및 운영에 필수적입니다.
MVC 애플리케이션은 각 파일에서 반복적인 선언을 피하기 위해 특정 네임스페이스에 대한 추가 web.config 파일을 정의합니다. 이는 다른 web.config를 다운로드 요청하는 예에서 보여집니다:
사용자 정의 네임스페이스의 언급은 /bin 디렉토리에 있는 "WebApplication1"이라는 DLL을 암시합니다. 그에 따라 WebApplication1.dll을 다운로드 요청하는 내용이 표시됩니다:
이것은 /bin 디렉토리에 System.Web.Mvc.dll 및 System.Web.Optimization.dll과 같은 다른 필수 DLL의 존재를 시사합니다.
DLL이 WebApplication1.Areas.Minded라는 네임스페이스를 가져오는 시나리오에서, 공격자는 **/area-name/Views/**와 같은 예측 가능한 경로에 다른 web.config 파일이 존재할 가능성을 추론할 수 있습니다. 이 파일들은 특정 구성 및 /bin 폴더의 다른 DLL에 대한 참조를 포함하고 있습니다. 예를 들어, /Minded/Views/web.config에 대한 요청은 다른 DLL WebApplication1.AdditionalFeatures.dll의 존재를 나타내는 구성 및 네임스페이스를 드러낼 수 있습니다.
여기에서
다음과 같은 오류가 발생하면:
서버가 Host 헤더 내에서 올바른 도메인 이름을 받지 못했다는 의미입니다. 웹 페이지에 접근하기 위해서는 제공된 SSL 인증서를 확인해 보세요. 거기에서 도메인/서브도메인 이름을 찾을 수 있을지도 모릅니다. 만약 없다면, VHosts를 무작위로 시도하여 올바른 것을 찾아야 할 수도 있습니다.
이 기법을 사용하여 발견된 모든 폴더 내에서 폴더와 파일을 나열해 볼 수 있습니다(기본 인증이 필요한 경우에도). 이 기법의 주요 제한 사항은 서버가 취약할 경우 각 파일/폴더 이름의 첫 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
발견된 파일의 최종 이름을 찾는 좋은 방법은 LLMs에 옵션을 요청하는 것입니다. 이는 스크립트 https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py에서 수행됩니다.
기본 인증을 우회하기 위해 다음에 접근해 보세요: /admin:$i30:$INDEX_ALLOCATION/admin.php
또는 /admin::$INDEX_ALLOCATION/admin.php
이 취약점과 마지막 취약점을 혼합하여 새로운 폴더를 찾고 인증을 우회할 수 있습니다.
ASP.NET은 디버깅 모드를 포함하며, 그 파일은 trace.axd
라고 불립니다.
이는 일정 기간 동안 애플리케이션에 대한 모든 요청의 매우 상세한 로그를 유지합니다.
이 정보에는 원격 클라이언트 IP, 세션 ID, 모든 요청 및 응답 쿠키, 물리적 경로, 소스 코드 정보, 그리고 잠재적으로 사용자 이름과 비밀번호가 포함됩니다.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH는 다음 정보를 사용합니다:
validationKey
(문자열): 서명 검증에 사용할 16진수 인코딩된 키.
decryptionMethod
(문자열): (기본값 “AES”).
decryptionIV
(문자열): 16진수 인코딩된 초기화 벡터(기본값은 제로 벡터).
decryptionKey
(문자열): 복호화에 사용할 16진수 인코딩된 키.
그러나 일부 사람들은 이러한 매개변수의 기본값을 사용하고 사용자의 이메일을 쿠키로 사용할 것입니다. 따라서 ASPXAUTH 쿠키를 사용하는 같은 플랫폼의 웹을 찾고, 공격 대상 서버에서 당신이 가장하고자 하는 사용자의 이메일로 사용자 계정을 생성하면, 두 번째 서버의 쿠키를 첫 번째 서버에서 사용하여 사용자를 가장할 수 있을지도 모릅니다. 이 공격은 이 작성물에서 성공했습니다.
전체 보고서 여기: 코드의 버그가 사용자가 제공한 비밀번호를 제대로 확인하지 않았기 때문에, 비밀번호 해시가 캐시에 이미 있는 키에 해당하는 공격자는 해당 사용자로 로그인할 수 있게 됩니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)