Information Security ˗ˋˏ ♡ ˎˊ˗

OS/Web

[CentOS] Apache 웹 서버에서 CGI 모듈 적용하기(cgi-bin)

토오쓰 2022. 7. 1. 12:50

Apache 서버에서 CGI 모듈을 사용하는 방법을 살펴보려고 한다.

 

CGI 모듈이란?

CGI (Common Gateway Interface): 외부 프로그램과 통신하는 방법이다. 웹 사이트에서 동적인 페이지를 만드는 가장 흔하고 간단한 방법이다. 

관련된 모듈 관련된 지시어
mod_alias
mod_cgi
AddHandler
Options
ScriptAlias

 

Apache CGI 보안설정

CGI 스크립트들을 어느 디렉터리에서나 실행할 수 있도록 할 경우 악의적인 사용자가 CGI 프로그램을 업로드한 후 이를 실행하여 임의의 명령을 실행시킬 수 있다.

CGI 프로그램의 실행은 관리자가 지정한 특정 디렉터리에서만 가능하도록 제한할 필요가 있다.

 

 

해당 블로그에서는 취약한 환경을 만들기 위해 cgi-bin을 적용하는 방법을 설명하고 있다.

 


 

httpd.conf 파일에서 작업

1) Apache에서 CGI 모듈을 사용하도록 한다.

LoadModule cgid_module modules/mod_cgid.so #주석 풀기

 

 

2) alias_module 설정에서 cgi-bin 경로를 설정한다.

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

</IfModule>

 

 

3) Options에서 ExecCGI 설정

AllowOverride None :모든 허용을 하지 않는다. 즉 None 설정으로 이외의 다른 설정은 무시한다.

-해당 옵션을 All로 설정했을 때, “403 Forbidden Error”가 났다.

 

 

4) mime_module 설정 부분에서 cgi-script 파일에 대한 확장자를 지정

핸들러(처리기)를 지정하는 부분

<IfModule mime_module>
    AddHandler cgi-script .cgi .pl .py
</IfModule>

 

 

5) CGI 스크립트 작성

디렉터리: /usr/local/apache/cgi-bin/

#!/bin/bash
 
echo "Content-type: text/html"
echo ""
echo "Hello.<br/>"

 

 

6) 작성한 파일에 실행 권한

chmod a+x test.cgi

 

 

7) Apache 재시작

 

설정 완료!

 

 

 

참고

https://jisblee.me/board/view/0/1/199

https://anggeum.tistory.com/entry/Apache-HTTP-Server-v24-%EC%84%A4%EC%B9%98-Source-Compile

https://httpd.apache.org/docs/2.4/ko/howto/cgi.html