IIS 서버 침투 테스트 및 열거 기술
Microsoft Internet Information Services (IIS) 서버는 자주 잘못 구성되어 보안 연구원과 버그 바운티 헌터에게 넓은 공격 표면을 제공합니다. 주요 요점은 기본 IIS 스플래시 페이지가 내부 IP 노출, 짧은 이름 열거, 원격 코드 실행(RCE)으로 이어질 수 있는 중요한 구성 파일 노출과 같은 더 깊은 취약점을 가릴 수 있다는 것입니다.
대규모로 IIS 대상 식별하기
IIS 서버는 수동 정찰과 능동 지문 인식을 사용하여 식별하고, 추가 테스트를 위한 대상 목록을 구축할 수 있습니다.
수동 탐색
- Shodan 쿼리:
ssl:"target.com" http.title:"IIS"또는org:"target" http.title:"IIS"와 같은 쿼리를 사용해 스테이징 서버와 잊혀진 관리자 패널을 찾습니다. - Google Dorking:
site:target.com inurl:aspnet_client또는site:target.com ext:aspx | ext:ashx | ext:asmx와 같은 IIS 전용 지표를 검색합니다. 스택된 와일드카드(예:site:*.*.target.com)를 사용하면 중첩된 서브도메인과 개발 박스를 드러낼 수 있습니다.
능동 지문 인식
- 응답 헤더:
nc또는openssl을 통한 원시 요청은 종종Server: Microsoft-IIS/10.0및X-Powered-By: ASP.NET헤더를 보여줍니다. - 자동 스캔:
httpx와 같은 도구를 사용해 대규모로 대상을 지문 인식할 수 있습니다:httpx -l targets.txt -td | grep IIS.
초기 정보 수집
IIS 서버가 식별되면 특정 요청을 통해 내부 인프라 세부 정보를 유출할 수 있습니다.
내부 IP 노출
특정 IIS 설정, 특히 Microsoft Exchange 또는 OWA 앞에 배치된 경우 HTTP/1.0 요청을 보내면 서버가 Location 헤더에 내부 IP 주소를 반환합니다. 이는 종종 X-FEServer 헤더와 함께 제공되어 서버의 내부 호스트명을 드러냅니다.
HTTPAPI 2.0 404 오류 처리
HTTPAPI 2.0 404 오류는 서버가 실행 중이지만 특정 Host 헤더가 필요함을 나타냅니다. 이를 우회하려면:
- SSL 인증서의 Subject 또는 Subject Alternative Name(SAN) 필드에서 올바른 호스트명을 확인합니다.
ffuf와Host헤더 워드리스트를 사용해 가상 호스트를 무차별 대입합니다.
고급 열거: IIS 물결표(~) 짧은 이름
IIS는 레거시 DOS 8.3 파일명 규칙을 유지하므로 디렉터리 목록이 비활성화돼도 공격자가 파일 및 디렉터리의 짧은 이름을 열거할 수 있습니다.
짧은 이름 탐색
shortscan이나 Burp Suite IIS 물결표 열거 스캐너와 같은 도구를 사용해 짧은 이름 조각을 식별할 수 있습니다(예: WEB~1.CON은 web.config, SITEBA~1.ZIP은 백업 파일).
짧은 이름을 전체 파일명으로 변환
짧은 이름은 처음 6문자만 제공하므로 전체 파일명을 추측하거나 외부 데이터를 활용해 해결해야 합니다:
- LLM: 짧은 이름 조각을 기반으로 가능한 전체 단어 목록을 생성하도록 대형 언어 모델에 프롬프트합니다.
- GitHub Dorking: GitHub 코드 검색(예:
path:/.ds_st)을 사용해 짧은 이름 패턴과 일치하는 실제 파일명을 찾습니다. - BigQuery: Google BigQuery를 통해 공개 GitHub 데이터세트를 쿼리해 짧은 이름 정규식과 일치하는 고유 경로를 찾습니다(예:
REGEXP_CONTAINS(path, r'(?i)(\/siteba[a-z0-9]+\.zip|^siteba[a-z0-9]+\.zip)')). - 무차별 대입:
crunch를 사용해 남은 문자 조합을 생성하고ffuf로 퍼징하며, 하이픈, 언더스코어, URL 인코딩된 공백(%20) 등 다양한 구분자를 테스트합니다.
고가치 대상 퍼징
일반 워드리스트는 IIS에 비효율적입니다. 퍼징은 .NET 전용 파일 및 확장자에 집중해야 합니다.
중요한 경로 및 확장자
고가치 대상에는 다음이 포함됩니다:
- 구성 파일:
/web.config,/web.config.bak,/appsettings.json,/connectionstrings.config. - 디버그 엔드포인트:
/trace.axd(ASP.NET 트레이스 뷰어)와/elmah.axd(오류 로그 뷰어)로, 요청/응답 로그와 자격 증명이 유출될 수 있습니다. - 확장자:
.asp,.aspx,.ashx,.asmx,.config,.json,.xml,.zip,.bak,.txt.
권장 워드리스트
효과적인 워드리스트에는 SecLists의 IIS.txt, Orwa의 iis.txt와 aspx.txt, Assetnote의 자동 생성 ASP/ASPX 리스트가 포함됩니다.
익스플로잇 및 우회 기술
web.config RCE 체인
web.config 파일에 접근하는 것은 중요한 발견입니다. 이 파일에는 ViewState를 서명·암호화하는 데 사용되는 머신 키가 포함돼 있습니다. 키를 확보하면 공격자는 ysoserial.net을 사용해 악의적인 직렬화된 ViewState 페이로드를 위조해 원격 코드 실행(RCE)을 달성할 수 있습니다.
쿠키 없는 세션을 통한 DLL 노출
공격자는 ASP.NET의 쿠키 없는 세션 구문 (S(X))을 악용해 디렉터리 제한을 우회하고 /bin 폴더에 접근할 수 있습니다. GET /(S(X))/b/(S(X))in/WebApplication1.dll와 같은 요청은 /bin/WebApplication1.dll으로 해석되어 공격자가 컴파일된 DLL을 다운로드해 dnSpy나 JetBrains dotPeek 같은 도구로 디컴파일할 수 있게 합니다.
경로 및 인증 우회
- 리버스 프록시 경로 혼동:
%2f(URL 인코딩된 슬래시)를 사용해 프록시 접근 제어를 우회합니다(예:/anything/..%2fadmin/). - NTFS 메타데이터 해킹: NTFS 대체 데이터 스트림을 요청해 IIS 7.5의 기본 인증을 우회합니다(예:
/admin::$INDEX_ALLOCATION/admin.php). - 파일 업로드 우회: 뒤에 점을 추가해
.aspx필터를 우회합니다(예:shell.aspx.). IIS는 파일을 제공하기 전에 점을 제거합니다.
HTTP 파라미터 오염(HPP)으로 WAF 우회
IIS와 ASP.NET은 중복 파라미터 값을 콤마로 연결합니다. 이를 이용해 페이로드를 여러 파라미터에 나눠 넣을 수 있습니다(예: ?param=<svg/¶m=onload=alert(1)>). 백엔드가 이를 재조합하면 WAF 탐지를 회피할 수 있습니다.
요약
이 가이드는 Microsoft Internet Information Services(IIS) 서버에 대한 고급 정찰 및 익스플로잇 기술을 상세히 다루며, 짧은 이름 열거, 구성 파일 노출, 그리고 WAF 우회 방법에 중점을 둡니다.