Notice
Recent Posts
Recent Comments
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
04-06 12:49
Today
Total
관리 메뉴

[W-12] IIS CGI 실행 제한 본문

인프라진단/진단 항목 정리

[W-12] IIS CGI 실행 제한

h4ckpr1n 2025. 9. 10. 13:01

진단 기준

IIS 구동 시, CGI 실행 제한 설정이 적절하게 되어있는지 확인.

 

CGI는 웹서버가 외부 프로그램을 실행해서 그 결과를 웹 응답으로 돌려주는 오래된 인터페이스.
예를 들어 IIS 설정에서 *.exe가 매핑돼 있다는 건, “웹에서 exe 실행 허용” 구조가 깔려 있다는 의미.

 

 

진단 방법

1. IIS 서비스 확인

1) 확인 방법

$ net start


2) 결과예시
-  수행중 : World Wide Web Publishing Service 
-  수행 X : 미출력

 

> 사용하고 있지 않으면 해당 취약점은 제외.

 

2. 핸들러확인 및 ISAPI/CGI 제한설정 확인

1) 확인 파일
 - %windir%\System32\inetsrv\config\applicationHost.config 혹은 각 사이트의 web.config 
 - 둘다 위 파일에서 설정.

 


2.1 핸들러 확인(CGI 연동 여부)

1) 확인 내용
 - 핸들러에 위험한 파일이 있는지 확인
 - 아래와 같이 되어있으면, EXE 파일에 대해서 실행 허용해둔것.

 - 아예 아무것도 연동이 안되어있으면 해당 항목 안전.

<add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" requireAccess="Execute" />

 

2.2 ISAPI/CGI 제한 설정 확인

1) 확인 내용
 - ISAPI 및 CGI 제한 등록 여부 확인
 - 아래와 같은 블록이 있으면 아래 파일에 대해서만 실행 허용 된 것.

<system.webServer>
  <security>
    <isapiCgiRestriction>
      <add path="C:\Windows\System32\inetsrv\asp.dll" allowed="true" groupId="ASP" description="Active Server Pages" />
      <add path="C:\Windows\System32\inetsrv\fcgiext.dll" allowed="true" groupId="FCGI" description="FastCGI Extension" />
    </isapiCgiRestriction>
  </security>
</system.webServer>



- 아래와 같이 notListedIsapisAllowed, notListedCgisAllowed 옵션에 대해서 false 설정되어 있거나, 설정되어있지 않을 경우(디폴트 false) 아래 리스트 파일만 실행가능한 파일로 지정해둔 것.

<system.webServer>
  <security>
    <isapiCgiRestriction notListedIsapisAllowed="false" notListedCgisAllowed="false">
      <add path="C:\Windows\system32\inetsrv\asp.dll" allowed="true" groupId="ASP" description="Active Server Pages" />
      <add path="C:\Windows\system32\inetsrv\webdav.dll" allowed="true" groupId="WEBDAV" description="WebDAV" />

 


3. 실행 가능 리스트에 있는 파일에 대한 권한 확인

- 위 리스트에 있는 파일에 everyone 권한이 없는지 검토

 

 

? 점검 방법 ?

 

 

아래와 같은 조건일 때, 양호 조건이라고 볼 수 있다.

1 .핸들러에 아무것도 연동되어있지 않음
2. 핸들러에 특정 파일이 연동되어있으나, ISAPI/CGI 제한 설정에 필요한 파일만 실행하도록 설정해두었으며 + 해당 파일들에 Everyone 권한이 없음

보통, ASP, ASP.NET, CGI 기능 설치하면 핸들러 설정이랑 ISAPI/CGI 제한 항목이 자동으로 추가된다. 해당 태그가 파일 내에 없으면 그냥 안쓰는거고, 서버 내에서 실행 파일이 실행 자체가 안돼서 안전하다고 봐도 된다.

 

예시를 통해 알아보자.

 

1. Handler 현황 확인

- .exe 파일에 대해서 실행하게 되어있음.

 

2. isapiCgiRestrion 현황 확인

- notListedIsapisAllowed / notListedCgisAllowed : 목록에 없는 CGI 프로그램을 이 서버에서 실행할 수 있는지 여부를 지정하는 옵션. 해당 옵션이 false 면, 아래 있는 파일들 외에 파일은 실행되지 않음(설정 안하면 디폴트로 FALSE)

- 현재 .false 로 설정되어있고, 실행가능한 파일 리스트를 설정해두었음

 

3. 실행 가능한 파일(리스트)의 Everyone 접근 권한 여부

- 실행 가능한 파일들에 everyone 접근 권한 확인 결과, everyone 접근 권한 없음 확인

 

> 결론 : .exe 파일에 대해서 실행되도록 매핑되었으나, isapiCgiRestrion 설정에서 특정 파일들 외에 실행되지 않도록 설정하고 있고, 실행 가능한 파일들에 대해 권한 설정도 잘되어있으므로 양호처리 

Comments