로그인

Language :
제목Apache 웹 서버 CGI 모듈 사용하기
글쓴이이지섭작성일2018-11-02수정일2024-08-09조회수10221

Apache 웹 서버에서 CGI (Common Gateway Interface) 모듈을 사용하는 방법이다.

 

1) 먼저 LoadModule 부분에서 아래와 같은 mod_cgid.so 부분의 주석(#)을 제거하여

  아파치에서 CGI 모듈이 사용되도록 한다.

  아파치 설정 파일 conf 폴더에 httpd.conf 파일에서 작업한다.

LoadModule cgid_module modules/mod_cgid.so

 

2) alias_module 설정 부분에서 아래와 같이 /cgi-bin/ 의 경로를 설정한다.

  모듈 설정 부분이 이미 httpd.conf 설정 파일에 들어 있으니 찾아서 입력해주면 되겠다.

  Apache 설정에서 # 은 주석이다.

<IfModule alias_module>
    #ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
    ScriptAlias /cgi-bin/ "/home/ubuntu/cgi-bin/"
</IfModule>

 

3) 위에서 설정한 디렉토리에 대하여 또 설정한다. Options 부분에 ExecCGI 가 있어야 한다.

  디렉토리 설정 부분을 새로 추가한다.

  /usr/local/apache2/cgi-bin/ 디렉토리 같은 경우는 httpd.conf 파일에 설정이 이미 들어 있다.

<Directory "/home/ubuntu/cgi-bin">
    AllowOverride All
    Options ExecCGI
    SetHandler cgi-script
    Require all granted
    Order allow,deny
    Allow from all
</Directory>

 

4) mime_module 설정 부분에서 cgi-script 파일에 대한 확장자를 지정한다. 핸들러(처리기)를 지정하는 것이다.

  mime_module 설정 부분을 httpd.conf 파일에서 찾아서 수정한다.

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

 

5) Java 환경의 Tomcat 서버와 연동을 하는 경우이면,

  uri 매핑 부분에서 cgi-bin 으로 시작하는 경로는 Apache 웹 서버에서 처리되도록 설정한다.

  (! : 느낌표를 맨 앞에 입력하여 배타 처리한다.)

!/cgi-bin/*=worker1

 

6) CGI 스크립트를 작성한다. bash 쉘 스크립트이다. 2) 번에서 설정한 디렉토리에 작성한다.

#!/bin/bash

echo "Content-type: text/html"
echo ""
echo "Hello.<br/>"

 

7) 위에서 작성한 파일에 실행 권한을 부여한다. owner, group, other 모두에서 실행될 수 있도록 한다.

chmod a+x test.cgi

 

8) 브라우저에서 /cgi-bin/ 경로로 위의 파일을 호출한다. Hello. 단어가 출력된다.

https://www.jisblee.me/cgi-bin/test.cgi

 

 9) C 언어로 cgi 프로그램을 작성할 수 있다.

  /cgi-bin/ 으로 설정한 디렉토리에 아래와 같은 소스(파일명 : hello.c)를 작성하고,

  gcc -o hello.cgi hello.c 와 같이 컴파일하여 실행 파일(hello.cgi)을 만들고 호출하면 되겠다.

#include <stdio.h>
int main()
{
        printf("Content-type: text/html%c%c", 10, 10);
        printf("Hello, World!");
        return 0;
}

 

10) CGI 취약점

  입력 값을 조작하여, 시스템 명령을 실행할 수 있는 취약점이 있다.

  꼭 필요한 경우에만 주의를 기울여 사용해야 하겠다.

 

댓글

이름               비밀번호 
내용
비밀번호를 확인합니다.

댓글 등록시 입력한 비밀번호를 입력해주시기 바랍니다.