IRC, CGI

agnusdei·2025년 10월 8일

CTF

목록 보기
146/185

1) IRC (Internet Relay Chat)

정의

  • IRC는 실시간 텍스트 기반 통신을 위해 설계된 채팅 프로토콜입니다.
  • 1988년 Jarkko Oikarinen가 만든 초기 실시간 채팅 시스템으로, 전 세계 사용자들이 채널(Channel) 단위로 대화 가능.
  • 주로 TCP (Transmission Control Protocol) 를 이용하며, 기본 포트는 6667/TCP, SSL/TLS 연결 시 6697/TCP 사용.

핵심 구조

  1. 클라이언트(Client)

    • 사용자가 설치하는 IRC 클라이언트 프로그램 (mIRC, HexChat, Irssi 등).
    • 메시지 전송, 수신, 채널 관리, 상태 관리 담당.
  2. 서버(Server)

    • IRC 네트워크의 핵심.
    • 클라이언트 접속 관리, 메시지 라우팅, 채널 상태 유지.
    • 서버끼리 서로 연결하여 IRC 네트워크 형성.
  3. 채널(Channel)

    • IRC 상의 대화 공간. #channel_name 형식.
    • 퍼블릭 채널과 프라이빗 채널 구분 가능.
  4. 닉네임(Nickname)과 사용자 정보

    • 고유 닉네임 사용.
    • IRC 서버에 접속 시 사용자 호스트, 클라이언트 정보, 서버 정보 포함.

프로토콜 특징

  • 텍스트 기반 명령어: /join, /part, /msg, /nick, /quit 등.
  • 실시간성: TCP 연결을 유지하며 지속적으로 메시지 스트림을 송수신.
  • 확장성: IRCd(IRC daemon) 서버 소프트웨어 종류에 따라 기능, 명령어 확장 가능.
  • 보안: 원래 설계에는 인증과 암호화가 거의 없으므로 현대에는 SSL/TLS 사용 필수.

펜테스터 관점

  • 포트 스캐닝 대상: 기본 포트 6667, SSL 6697 등.
  • 취약점: 무차별 대입 로그인, 오픈 리레이(서버가 외부 메시지를 중계) 가능성, 버퍼 오버플로, 서비스 거부 공격.
  • 익명성 및 스푸핑: IRC 프로토콜 자체는 인증 약함. IP 익명화 프록시를 사용하면 추적 어려움.
  • 봇넷/자동화 악용 가능: IRC는 봇넷 C&C(Command & Control) 구조에 활용됨.

요약

  • IRC = 실시간 텍스트 채팅 프로토콜, 클라이언트-서버 구조, TCP 기반, 채널 단위 대화.
  • 단점: 암호화/인증 미비, DoS 취약, 현대 웹 환경에서는 포트 차단 문제 존재.

2) CGI (Common Gateway Interface)

정의

  • CGI = Common Gateway Interface, 웹 서버와 외부 프로그램/스크립트 간 인터페이스 표준.
  • 브라우저 요청 → 웹 서버 → CGI 프로그램 → 응답 반환 → 브라우저 출력 흐름을 담당.

동작 구조

  1. 브라우저

    • HTTP 요청(GET/POST 등)으로 CGI 스크립트 호출.
  2. 웹 서버

    • 요청을 CGI 스크립트로 전달.
    • 환경 변수(QUERY_STRING, REQUEST_METHOD 등) 통해 요청 정보 제공.
  3. CGI 프로그램

    • Perl, Python, PHP, Bash 등으로 작성 가능.
    • 요청 처리 후, Content-Type 헤더 포함 HTTP 응답 생성.
  4. 브라우저

    • 서버에서 전달받은 HTTP 응답 렌더링.
[브라우저] —HTTP—> [웹 서버] —CGI—> [스크립트/프로그램] —결과—> [브라우저]

특징

  • 언어 독립성: CGI 스펙만 지키면 어떤 언어로든 구현 가능.
  • 단기 프로세스 기반: 요청마다 새로운 프로세스 실행. → 성능 제한 존재.
  • 입력/출력 표준화: 표준 입력(stdin), 표준 출력(stdout) 활용.

펜테스터 관점

  • 취약점:

    • 명령어 주입(Command Injection): 사용자 입력을 쉘 명령어로 전달 시 가능.
    • 디렉터리 트래버설(Directory Traversal): 잘못된 경로 처리 시 서버 파일 접근 가능.
    • 정보 유출: CGI 오류 메시지에 서버 구조/환경 변수 포함 가능.
  • 보안 점검:

    • 입력값 검증 필수.
    • 실행 권한 최소화.
    • 출력 시 HTML/JavaScript 이스케이프 적용.

현대적 사용

  • CGI는 초기 웹 환경에서는 표준이었지만 현대 웹에서는 성능과 확장성 한계로 거의 레거시.
  • 대안: FastCGI, WSGI(Web Server Gateway Interface, Python), Node.js 기반 서버 등.

요약

  • CGI = 웹 서버와 외부 프로그램 연결 인터페이스, 언어 독립적, 요청마다 새 프로세스 실행.
  • 단점: 성능 제한, 초기 보안 설계 미흡, 현대 웹에서는 FastCGI/WSGI/Node.js 등으로 대체.

3) IRC와 CGI의 관계

  • CGI와 IRC가 결합하면 웹 브라우저를 통한 IRC 접속이 가능.
  • CGI 프로그램이 IRC 서버와 TCP 연결을 대행 → 브라우저는 HTTP/HTTPS만 사용 → IRC 접속 프록시 역할.
  • 대표 사례: CGIIRC, 웹 기반 IRC 클라이언트.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글